IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GWT et Vaadin Java Discussion :

GWT est-il du Java ? [Débat]


Sujet :

GWT et Vaadin Java

  1. #1
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut GWT est-il du Java ?
    Suite à mon post sur la création de bibliothèques GWT-compatible, un débat est lancé :

    GWT émule en effet certaines fonctionnalités de Java pour les traduire en Javascript dans l'environnement d'un navigateur web standard, et il faut en permanence songer que l'exécution est en dehors d'une JVM. Importez simplement une bibliothèque quelconque, comme JDOM, et vous aurez des messages d'erreurs en pagaye.

    La question est donc lancée : doit-on affirmer qu'un programme client GWT est fait en Java ? Cela n'introduit-il pas trop de confusions, d'espoirs déçus et de temps perdu ?

  2. #2
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Points : 66
    Points
    66
    Par défaut
    Personnellement, je dirais qu'un programme client GWT est écrit en JAVA mais n'est pas du Java.
    Tout d'abord javascript est mono thread contrairement à Java ce qui peut changer pas mal de chose dans certains cas.

    Ensuite, il y a suffisamment de personnes qui ne savent pas si leur code tourne coté client ou serveur (meme du php ou un applet java). Si on commence a dire que c'est du JAVA je crois que ca va embrouiller les gens plus qu'autre chose.

    Enfin il n'y a pas certaines fonctions de java tels que les formatter par exemple (doit y'en avoir bien d'autres très utiles mais je n'ai pas été confrontées à celles ci).

  3. #3
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Je recopie ici ce que j'avais écrit sur les principales différences GWT/JVM :

    • GWT utilise directement les composants du navigateur : il utilise le DOM interne, ainsi que l'objet XmlHttpRequest- et donc ne connait ni Sax, ni JDOM, si le java.net.HttpClient
    • GWT n'utilise pas de fonctions System : java.util.Locale est incompatible avec GWT car est capable de lire une Locale par défaut dans le System de la JVM
    • GWT ne peut évidemment pas lire un fichier : il est donc malheureusement impossible d'utiliser directement les ResourceBundle pour internationaliser son code.
    • GWT ne gère pas les Charset : le fonctionnement est trop différent entre la JVM et le navigateur. Je ne suis pas spécialiste, mais concrètement, les fonctions de type public byte[] getBytes("UTF-8") ne fonctionneront pas. Cela rend les fonctions de types MD5 et base64 sont pour l'instant incompatibles.
    • GWT n'émule pas tout : une fonction assez simple comme Class.getSimpleName() n'est pas émulée. Voici la liste des fonctions émulées.


    A mon avis, excepté l'anecdotique getSimpleName(), toutes ces limitations sont bien justifiées, et l'équipe de GWT a fait du bon boulot . On frôlerai le génie si les Charset communs étaient gérés, si l'internationalisation était moins contraignante et si XMLParser connaissait XPath (et si possible dans les deux semaines, j'ai un job à finir ).

    Et il me semble que les navigateurs Safari gèrent maintenant les méthodes Http PUT et DELETE....

  4. #4
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    au final il y a autant de différences entre le java utilisé par GWT et la JDK, qu'il y a de différences entre le javascript et la JRE

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  5. #5
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Le mot Java recouvre beaucoup de choses :
    • un langage (avec sa syntaxe, son typage, ...)
    • un compilateur qui transforme le source en byte code
    • une machine virtuelle qui exécute le byte code
    • un écosystème avec ses outils et ses librairies, ...
    • une marque ...


    Je crois qu'il serait salutaire de garder à l'esprit que GWT permet d'écrire un code Javascript avec une syntaxe à la Java qui s'exécute dans un navigateur. Pour preuve, si on écrit une application sans partie serveur, au final, pas besoin de JVM, juste du js/css/html.

    Cela évite ainsi de vouloir tout faire dans un client web ...

    Toutes les librairies JAVA sont adaptés à un domaine et il y a donc des limites. Personne n'essayera d'utiliser un bouton GWT ou un bouton SWT dans une application Swing (enfin, j'espère)

    Le problème le plus sournois (et rien qu'à lire ce forum, il en a troublé plus d'un) c'est leur émulation partielle du JDK (avec les mêmes noms de classes)
    Si d'autres noms avaient été utilisés, cela aurait été moins perturbant d'un côté mais plus d'un autre. C'est le cas par exemple du framework WebObject qui a ses NSArray (List), ses NSDictionnary (Hashtable) et c'est lourd.

    En revanche, on mettra à leur crédit la création par défaut d'une partie cliente (le code JAVAscript *) et d'une partie serveur (le code full JAVA).
    • Le code JAVAscript côté client doit être du code "GWTCompatible", c'est à dire doit faire référence à du code lui même GWTCompatible (des librairies GWT, les classes du toolkit et leur émulation partielle du JDK)
    • Le code JAVA côté serveur (dossier serveur par défaut) peut faire référence à toutes les librairies JAVA que l'on souhaite.


    Une fois ceci en tête, il n'y a pas de souci mais je t'accorde que l'on peut vite être perdu si on ne structure pas son code :
    • ici, c'est ce qui sera exécuté dans le navigateur (donc en js)
    • là, c'est ce qui sera exécuté sur le serveur (donc en java)

    ...
    Et la structuration du code, c'est ce qui manque à ceux qui ne sont par architecte dans l'âme.
    Rappelons que GWT est un toolkit (boite à outils) et pas un framework (qui est un cadre de travail).

    Pour répondre à ta question : GWT est-il du Java ?

    Posée ainsi, la question est délicate.
    Elle revient à se demander : Est-ce que cette boite à outils appelée GWT est elle du Java ?

    Sachant qu'il peut être généré à partir d'autres langages, est-ce qu'un byte code de JVM est du Java ?
    Pour faire moi aussi une analogie, je dirai que le JAVA de GWT est à V8 (et autre moteur javascript) ce que Groovy, Scala, JPython, ... sont à la JVM (autre syntaxe mais même runtime)

    Avec GWT, Javascript devient comparable à du byte code. C'est le résultat d'une compilation d'un code source Java en un langage interprété par une machine virtuelle (Moteur Javascript dans un cas, JVM dans l'autre).

    Si tu juges un code appartenir à un langage X vis à vis de ses pairs (autre code (librairie) en langage X) alors :
    • Si tu compares le code source Java de ta partie cliente GWT à d'autre code sources de librairies Java, il te semblera compatible (ça ressemble à du café, ça a le gôut du café, ... mais des fois, il est amer ). La réponse est donc un petit oui.

    • Si tu compares le code résultant de la compilation de ta partie cliente GWT à d'autre code résultant de la compilation de librairies Java, il sera parfois compatible (librairies JAVAscript "GWT compatible" écrites en Java et compilée par GWT) et parfois pas (bytecode de librairies Java compilée par Javac). La réponse est donc un petit non.


    * par JAVAscript, j'entends code JAVA qui sera traduit en javascript (code que je nomme par ailleurs code Java "GWT Compatible").

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Points : 15
    Points
    15
    Par défaut
    N'oublions pas le but de GWT, qui est de générer le code javascript. alors à mon avis malgré qu'il est en java, mais il pourra pas faire toutes les fonctionnalités incluses dans la JDK.
    Je suis d'accord qu'il est en java mais ce n'est pas du java.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Points : 28
    Points
    28
    Par défaut
    Bonjour

    Je suis assez d'accord avec anawak2002. Avec GWT, on écrit du Java, un peu sur le modèle Swing. Avec des limitations de compatibilité avec la JRE 1.5, mais :
    - On ne compile pas. C'est un "compiler" Java2Javascript qui transforme le code Java en Javascript.
    - GWT n'est qu'un "outil" de création RIA, utilisant le Java comme langage de description des interfaces.

    Enfin, c'est ce que je pense après cela que j'ai réalisé pour mon job.

  8. #8
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Je pars du principe que si on considère que le langage final n'est pas celui de départ (ici du Java) alors rien n'est du Java. On fait tous de l'assembleur... Ce qui compte quand on dit Java, c'est la compétence dans le domaine, cela veut donc dire qu'une personne codant en GWT fait du Java et sûrement pas autre chose.

    Mais ce n'est que mon avis

  9. #9
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Ce que tu dis n'est pas faux ! (Par contre, avec ta tournure de phrase, je l'ai bien compris qu'à la deuxième relecture )

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  10. #10
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Autre tournure :
    Une première embauche faisant du GWT (surtout) client sera t-il capable de développer un projet java en Swing ou en J2EE ?
    A t-on besoin d'un expert Java pour être un expert GWT ?

  11. #11
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Le terme expert est un peu fort mais j'imagine quand même qu'un développeur ayant fait un peu de Java Swing sera plus à l'aise pour faire des ihm javascript via GWT que s'il devait coder à la main en javascript.

    D'ailleurs, c'est ce que disent par exemple ces développeurs.

    Cela n'empêche pas que ta question de départ est légitime car si on oublie ce qu'il y a derrière, on comprend pas qu'on ne puisse pas utiliser toutes les librairies java.

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  12. #12
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Venant du Java Web (J2EE) et non-Web (SWT, Eclipse Platform), cela ne fait qu'une journée que je fais du GWT et je trouve ça extrêmement simple. Je pense que les principes les plus difficiles à prendre en main sont ceux de Module ou non.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/04/2008, 11h24
  2. Réponses: 2
    Dernier message: 06/03/2008, 21h20
  3. Où est OpenGL dans Java 1.6?
    Par troubleshooting dans le forum 3D
    Réponses: 1
    Dernier message: 27/06/2007, 16h16
  4. Est-ce que JAVA répondra à mes besoins?
    Par bilboestpapa dans le forum Langage
    Réponses: 5
    Dernier message: 28/02/2006, 15h01
  5. [Moon Edit] Est ce du Java ?
    Par Rekiem dans le forum Général Java
    Réponses: 4
    Dernier message: 21/01/2006, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo