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 :

Brouillon de FAQ


Sujet :

GWT et Vaadin Java

  1. #1
    Responsable Java

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    juillet 2005
    Messages
    13 863
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : juillet 2005
    Messages : 13 863
    Points : 71 522
    Points
    71 522
    Par défaut Brouillon de FAQ
    Bonjour à tous,

    Cela fait un moment que j'ai un projet de FAQ GWT mais je le reporte continuellement aux calanques grecques ...
    Je ne sais même plus où j'ai mis ce que j'avais commencé

    Bref, j'ai donc décidé aujourd'hui d'en créer une ici.
    Je vous encourage à poster des questions/réponses si le cœur vous en dit.
    Notez cependant que c'est un brouillon, que c'est perfectible et que par conséquent, la rédaction de la FAQ finale se fera avec l'approbation de l'équipe Java (Structuration du contenu, Corrections, etc...)
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  2. #2
    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 105
    Points
    4 105
    Par défaut L'internationalisation
    Comment localiser mon application GWT ?
    Démarche à suivre

    Comment supporter différentes langues ?
    Certains modules de librairies GWT sont internationalisés, c'est à dire que les libellés de certains composants existent dans différentes langues.
    Pour que le compilateur GWT génère autant de permutations qu'il y a de langues (anglais, allemand, français par exemple), il faut ajouter à votre fichier de module (module.gwt.xml par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <inherits name="com.google.gwt.i18n.I18N"/>
    <extend-property name="locale" values="en"/>
    <extend-property name="locale" values="de"/>
    <extend-property name="locale" values="fr"/>
    Comment tester une langue ?
    Il faut ajouter un paramètre locale spécifiant le code iso de la langue à l'url d'appel de votre module. En hosted mode, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:8888/module.html?locale=fr
    Comment définir la langue par défaut ?
    Il faut ajouter une balise <meta> dans la balise <head> de la page html de votre application (module.html par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta name="gwt:property" content="locale=fr">

    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.

  3. #3
    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 105
    Points
    4 105
    Par défaut Notions d'architecture
    GWT est une boite à outils qui permet d'écrire des applications web en Java.

    Qu'est ce qu'une application web ?
    Une application web est déployée sur une ou des machines (serveurs physiques) où des logiciels "écoutent" (serveurs logiques) :
    • un serveur http appelé aussi serveur web tel que apache, ...

    • un serveur d'application qui peut jouer le rôle de serveur http
      • conteneur de servlet tel que tomcat, jetty, ...
      • serveur JEE tel que glassfish, weblogic, websphere, jboss, ...
      • module applicatif relié au serveur http tel que php, ...


    • un serveur de gestion de base de données (SGBD) tel que mysql, posgres, oracle, ...


    Lorsqu'un client http (navigateur web) se connecte via une adresse (url) à votre serveur physique, c'est le serveur http présent qui répond. (S'il ne devait en rester qu'un, ce serait lui )
    Sa réponse consiste à envoyer des données au client par le réseau (en utilisant le protocole http : c'est à dire le langage commun qu'ils parlent pour se comprendre )
    Ces données sont :
    • statiques : des fichiers stockés sur le serveur
    • dynamiques : un flux texte ou binaire généré en "live" par un serveur d'application qui lui même les fabrique suivant votre logique applicative (code) en utilisant des données provenant de fichiers ou de base de données.

    Ce sont des évidences pour certains mais ont besoin d'être rappelées pour comprendre où GWT opère !

    Qu'est ce que la partie cliente d'une application web ?
    C'est toutes les données qui sont envoyées au client !
    Certains pourront avoir d'autre définition mais dans le cas de gwt, celle là nous suffira.

    Qu'est ce que la partie serveur d'une application web ?
    Tout ce que ne voit pas le client, c'est à dire que tout le reste appartient au serveur !
    Par exemple, cette partie comporte tout le code Java (jsp, java, ...) compilé en byte code (.class) et interprété par la JVM du serveur.

    Qu'est-ce qui différencie une application web GWT d'une application web JEE ?
    • Les applications JEE classiques sont "server-side" :
      l'interface utilisateur est fabriquée dynamiquement sur le serveur par la JVM qui interprète du byte code Java pour générer un flux html envoyé au client.
      Remarquez :
      • le code HTML peut être statique (comme les images, les css, les js) mais il est généralement dynamique.
      • le code HTML envoyé au client représente à la fois les données et la représentation de ces données (la vue)


    • Les applications GWT sont "client-side" :
      l'interface utilisateur est fabriquée dynamiquement sur le client par le moteur JS du navigateur qui interprète du code Javascript et modifie le DOM
      Remarquez :
      • le code Javascript permettant de représenter les données (la vue) a été généré par GWT en une ressource statique récupérée sur le serveur et mis en cache par le navigateur.
      • le code (JSON/XML/RPC) envoyé au client représente uniquement les données


    Qu'est-ce qui différencie une application web GWT d'un site web HTML/CSS/Javascript ?

    Presque rien !
    • Les deux sont composées de fichiers statiques HTML/CSS/JS récupérés à la première connexion sur le serveur, mis en cache et interprété par le navigateur.
    • Il peut y avoir aucune communication après ce téléchargement initial. Il y a alors juste une partie cliente au pouvoir très limité (La seule partie dynamique est permise par le javascript)
    • Il peut y avoir une communication serveur avec n'importe quelle autre technologie (php, asp, java ...) du moment où les échanges sont standard (XML, JSON, HTML, ...)

    La différence apparaît lors du développement :
    • Les sites web HTML/CSS/JS sont écrits en HTML, CSS, JS. Pour la partie dynamique, l'utilisation de librairie Javascript aide au développement mais comme Javascript est un langage interprété, non typé et disposant de peu d'outils, il reste difficile de construire une application entièrement avec lui.

    • Les applications GWT sont écrites en Java par composition de Widgets comme on le fait en Swing et c'est le compilateur GWT qui se charge de traduire ce code Java en code HTML, CSS, JS. L'utilisation du langage Java et de ses nombreux outils rend plus facile le développement.
      De plus, si la partie serveur est développée en Java, la communication peut être est facilitée grâce au RPC (appel de procédure distante)


    Qu'est-ce qui distingue GWT des autres technologies ?

    • Sa productivité pour le développement de clients applicatifs riches puisque la partie serveur reste classique (juste un connecteur RPC pour Java)
    • Son approche "client-side" qui déporte la construction de l'interface utilisateur sur le client et après le chargement initial permet de n'échanger que des données avec le serveur.
    • Son compilateur qui permet de fabriquer du code multi-navigateur et d'optimiser les transferts (compression, ressources bundle, ...)

    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.

  4. #4
    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 105
    Points
    4 105
    Par défaut Structure d'un projet GWT
    A quoi correspond le fichier "module.html" d'un projet GWT ?
    C'est le point d'entrée de votre application GWT.
    Il sera envoyé au client et c'est lui qui appelle le code JS généré par GWT.
    C'est cette page qui est manipulée dans votre EntryPoint.
    Elle peut être renommée, il faudra juste veiller à bien utiliser son nom dans l'url d'appel (et dans les paramètres d'exécution du hosted mode)

    A quoi correspond le fichier "module.gwt.xml" d'un projet GWT ?
    C'est un fichier apportant des informations au compilateur GWT tel que les autres modules à utiliser, l'emplacement des sources, ...
    Il peut être renommé, il faudra juste veiller à bien utiliser son nom dans les autres modules où il est appelé (et dans les paramètres d'exécution du hosted mode de ce module)

    Où trouver une description du fichier XML des modules ?
    Module XML files

    A quoi correspond le dossier "client" d'un projet GWT ?
    Le dossier qui contient le code Java qui sera compilé en Javascript par le compilateur GWT et interprété par le navigateur.
    Il correspondant à ma définition de "client" donnée précédemment : les données envoyées au navigateur.

    A quoi correspond le dossier "server" d'un projet GWT ?
    Le dossier qui contient le code Java qui sera compilé en byte code par le compilateur Java et interprété par le serveur d'application.
    A part la servlet des services RPC, cette partie reste du Java classique et les forums JEE peuvent aider.

    A quoi correspond le dossier "public" d'un projet GWT ?
    Le dossier qui contient les ressources statiques : images, css, ...

    Peut-on renommer les dossiers par défaut d'un projet GWT et quelles incidences cela a t'il ?
    Oui, on peut tous les renommer en respectant les conventions des noms de packages Java.
    Le nom du dossier "serveur" n'a aucune incidence s'il est libre.
    Les noms du dossier "client" et du dossier "public" doivent être modifiés dans le fichier de votre module (module.gwt.xml par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <source path="client"/>
    <public path="public"/>
    Ils peuvent ne pas apparaître parce que ce sont des noms par défaut !

    Peut-on ajouter d'autres dossiers "client", "serveur", "public" ?
    Oui.
    Pour dossier "serveur", c'est du java classique donc package classique.
    Pour les dossiers "client" et "public", il faudra là encore penser à les ajouter au fichier de votre module (module.gwt.xml par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <source path="client"/>
    <source path="data"/>
    <public path="public"/>
    Cet exemple montre qu'on a ajouté un dossier source "data" et indique au compilateur GWT d'aller chercher des fichiers Java dedans. On peut faire l'analogie avec le classpath et dire que ces dossiers constituent le sourcepath ! N'oubliez pas que GWT compile votre code client en JS et il lui faut donc tous les sources Java des dépendances.

    Personnellement, je conserve les dossiers "client" et "serveur", le premier contiendra l'interface utilisateur (front-end), le second les implémentations des services (back-end) et j'ajoute un dossier "data" pour les données qui transitent entre les deux.
    Pour résumer :
    • client : code Java transformé uniquement en javascript, pas besoin de byte code (non visible du serveur).
    • data : code Java transformé à la fois en javascript par le compilateur GWT et en byte code par le compilateur Java (visible des deux côtés)
    • server : code Java transformé uniquement en byte code par le compilateur Java (non visible du client)


    Peut-on ajouter des sous-packages "client" ?
    Oui à condition que vos sous packages contiennent du code Java qui pourra lui aussi être compilé en Javascript.
    • Si dans votre module, aucune balise source n'est indiquée, les sources de du dossier "client" et de tous ses sous dossiers sont vus par le compilateur.
    • Si dans votre module, vous avez déclaré des balises sources, les sources de ces dossiers ainsi et de leurs sous dossiers sont vus par le compilateur.

    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.

  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 105
    Points
    4 105
    Par défaut Petits détails cosmétiques
    Comment utiliser un autre thème graphique ?

    Utiliser une des 3 variantes proposées en commentant les autres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <inherits name='com.google.gwt.user.theme.standard.Standard'/>
    <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
    <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
    Pourquoi je ne peux pas modifier par CSS les couleurs des bordures des panneaux GWT ?
    Parce que ce sont des images. Il faut fabriquer d'autres images.

    Où trouver d'autres thèmes graphiques pour GWT ?
    Il existe une petite application qui permet de fabriquer un thème avec votre couleur préférée.

    Comment installer ce thème graphique "couleur" généré ?
    • Copier le fichier gwttheme.jar généré dans le dossier war/WEB-INF/lib de votre projet GWT.
    • Ajouter la ligne <inherits name='com.sensei.themes.couleur.Couleur'/> dans votre module.gwt.xml
    • Désactiver le style par défaut en retirant la ligne <inherits name='com.google.gwt.user.theme.standard.Standard'/>
    • Ajouter la librairie gwttheme.jar dans le classpath de votre projet GWT. (Faites Add Jar... et aller pointer sur le jar précédemment placé dans war/WEB-INF/lib )
    • Décompresser le contenu du dossier public (gwt\couleur\...) de gwttheme.jar dans le dossier war de votre projet.



    Comment définir l'icône à côté de l'URL ?
    1. Une solution consiste à créer un fichier image "favicon.png" et le placer à la racine de votre application (directement dans le dossier war)

    2. Une autre solution consiste à créer une image icon.png et d'ajouter un lien vers cette image dans le fichier html de votre module (module.html par exemple)
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <link rel="shortcut icon" type="image/png" href="mod/img/icon.png" id="icon" />
      • mod représente le nom du dossier de compilation de votre module. Par défaut, c'est le nom du module préfixé par le nom du package.
        Il peut être renommé avec l'attribut rename-to de la balise module de votre module (module.gwt.xml)
        Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <module rename-to='mod'>
      • img peut être un dossier ajouté après la compilation ou bien un sous dossier du dossier public qui sera recopié à chaque compilation.

    Comment modifier l'icône à côté de l'URL par programmation ?
    Vous noterez l'id "icon" dans la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <link rel="shortcut icon" type="image/png" href="mod/img/icon.png"  id="icon" />
    Il permet de le modifier par cette méthode ajoutée à la classe entry-point déclarée dans votre module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        /**
         * Définit l'icone de la page.<br>
         * 
         * @param iconPath L'emplacement de l'icone.
         */
        public void setIcon(String iconPath)
        {
            if (iconPath != null)
            {
                this.iconPath = iconPath; 
                Element element = DOM.getElementById("icon");
                DOM.setElementProperty(element, "href", iconPath.toString());
            }
        }
    Comment se faire une belle petite page d'attente en attendant que le code JS soit chargé ?

    index.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      	<head>
    	    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    		<link rel="shortcut icon" type="image/png" href="gui/images/favicon.png" id="icon" />
    		<link rel="stylesheet" type="text/css" href="gui/styles/loading.css" />
    	    <script type="text/javascript" language="javascript" src="gui/gui.nocache.js"></script>
    	    <title>Chargement en cours ...</title>
      	</head>
    	<body style="overflow: hidden">
    	    <div id="loading">
    	        <div class="loading-indicator">
    	           <img id="loading-img" src="gui/images/loading.gif" width="32" height="32"/>
    	           Merci de patienter<br/>
    	           <span id="loading-msg">Chargement en cours ...</span>
    	        </div>
    	    </div>
    	</body>
    </html>
    loading.css :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #loading
    {
      position: absolute;
      left: 45%;
      top: 40%;
      margin-left: -45px;
      padding: 2px;
      z-index: 20001;
      height: auto;
      border: 1px solid #ccc;
    }
     
    #loading .loading-indicator
    {
      background: white;
      color: #444;
      font: bold 13px tahoma, arial, helvetica;
      padding: 10px;
      margin: 0;
      height: auto;
    }
     
    #loading-img
    {
      margin-right:8px;
      float:left;
      vertical-align:top;
    }
     
    #loading-msg
    {
      font: normal 10px arial, tahoma, sans-serif;
    }
    loading.gif :
    Vous mettrez l'image que vous voudrez, moi, je l'ai généré avec cet outil et ces paramètres :
    Indicator type : Indicator Big
    Background color : FFFFFF
    Foreground color : 000000

    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
    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 105
    Points
    4 105
    Par défaut La compilation
    Pourquoi GWT a besoin des sources ?
    GWT, c'est principalement un compilateur qui transforme du code Java en code Javascript.
    Comme tout compilateur, il a donc besoin de fichiers sources (.java). Le byte code (.class), il s'en moque. Non seulement, produire du code JS à partir du byte code serait une gageure mais en plus, l'approche JSNI qui permet d'appeler du code natif JS consiste à inclure ce code js dans le source java (fonctions natives).

    Pourquoi dois-je indiquer dans mon module GWT où se trouve mon code source et comment faire ?
    Parce qu'il a besoin de savoir où il se trouve (cf question précédente) et qu'il ne peut pas le deviner tout seul !
    Utiliser le classpath comme sourcepath serait un problème car s'il y a bien du code Java (pour les objets circulant entre client et serveur) qui sera à la fois compilé par GWT et par Javac, il y a aussi dans le classpath du code non compilable par GWT.
    Par défaut, le code source est recherché dans un dossier "client" qui se trouve au même niveau que votre fichier de module.
    Vous pouvez le déclarer explicitement par une balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <source path="client"/>
    Pourquoi GWT ne trouve pas ou ne peut pas utiliser certaines librairies ?
    • Côté serveur, c'est du Java classique, il faut que les librairies (.jar) soient dans le classpath et qu'elles contiennent du byte code (.class).
      Vous pouvez utiliser toutes celles que vous voulez et GWT s'en moque.

    • Côté client, souvenez vous que le code Java est transformé en Javascript et GWT veut des sources.
      • Pour votre code, c'est expliqué dans une autre Q/R.
      • Pour les librairies, les vôtres comme celles de tiers, il faut qu'elles soient compatible GWT,
        c'est à dire dont le source est visible et transformable en Javascript par le compilateur.


    Comment savoir si une librairie est compatible GWT et comment l'intégrer dans mon projet ?
    • Les fichiers jar de ces librairies doivent donc contenir des fichiers .java.
      (Dans les premières versions, le jar devait comporter un index des classes contenues, cet index peut être généré lors de la création du jar)

    • Ces librairies doivent être des modules GWT et il faudra les inclure dans le fichier de votre module :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <inherits name='com.extjs.gxt.ui.GXT'/>


    Pourquoi dois-je inclure dans mon module du code fourni par GWT ?
    Comme les import en Java, il est probable que cela soulage le compilateur, on importe que le nécessaire.
    Et rappelez vous, c'est parce que le compilateur GWT fabrique du javascript qu'il y a
    • un sourcepath en plus du classpath,
    • des inherits en plus des import.


    Pourquoi certaines classes du JDK provoque des erreurs à la compilation ?
    Parce qu'encore une fois, même ces classes ont besoin d'être convertis en javascript.
    La solution choisie par Google est de les émuler et cette émulation ne peut être faite que partiellement (il y a des choses qu'on fait en java et qu'on ne peut pas faire en javascript au sein d'un navigateur)

    Comment connaître les classes du JDK qui sont émulées ?
    Une page les référence.

    C'est quoi l'erreur "No source code is available for type" ... "did you forget to inherit a required module?" ?
    [ERROR] Line XX: No source code is available for type fr.societe.projet.xxx.MaClasse; did you forget to inherit a required module?
    GWT ne trouve pas le code source de la classe fr.societe.projet.xxx.MaClasse.
    Si fr.societe.projet est votre module, vérifiez que le dossier xxx est bien un dossier source déclaré dans votre module :
    Pourquoi ça compile pas ?
    Si ça ne compile pas, il est fort probable que l'erreur provienne d'un de ces cas :
    • Le compilateur ne trouve pas vos fichiers sources Java (vérifiez qu'une balise source pointe bien vers un dossier contenant vos fichiers)
    • Le compilateur ne trouve pas le fichier de votre module (vérifiez que celui indiqué aux paramètres du compilateur porte le bon nom)
    • Il y a des erreurs de syntaxe Java détectées généralement par votre IDE (corrigez les)
    • Il y a des erreurs de références à du code que le compilateur ne peut pas compiler car il ne trouve pas les sources (vérifiez que votre code source fait référence à des librairies compatibles GWT et à des classes émulées du JRE).

    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.

  7. #7
    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 105
    Points
    4 105
    Par défaut Installer GWT dans un IDE
    Pour développer en GWT, que faut il ?

    Il faut un environnement de développement Java :

    Si le développement "à la main" est possible (il faudra suivre les instructions sur leur site), l'utilisation d'un IDE (les deux premiers sont gratuits) est recommandée (refactoring, debuggage, ...)

    Il faut le toolkit GWT !


    Quelle est la dernière version de GWT ?

    C'est la 2.0.4


    Où télécharger GWT ?


    Comment installer GWT sous Eclipse 3.5 ?
    • Allez dans le menu "Help > Install new software"
    • Cliquez sur le bouton "Add"
    • Copiez dans "location" l'url http://dl.google.com/eclipse/plugin/3.5
    • Faites OK, cochez les composants à ajoutez et suivez les instructions d'eclipse.


    Comment installer GWT sous Netbeans ?

    http://maksud.iblogger.org/2009/08/05/gwt-in-netbeans/

    ... si une bonne âme passe par là , a un lien ou un rapide résumé, je me ferai un plaisir de mettre à jour ...

    Comment installer GWT sous ... ?
    ... idem pour votre IDE favori

    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.

  8. #8
    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 105
    Points
    4 105
    Par défaut Livres
    Quels sont les livres anglophones sur GWT ?



    Quels sont les livres francophones sur GWT ?

    [ame="http://www.amazon.fr/GWT-applications-interactives-Toolkit-versions/dp/2100531824/ref=sr_1_1?ie=UTF8&s=books&qid=1258965343&sr=8-1"]Dunod # GWT (Olivier Gérardin)[/ame]


    Quels sont les livres allemands sur GWT ? (pour nos amis suisses)

    [ame="http://www.amazon.fr/Das-Google-Toolkit-Michael-Seemann/dp/3897217198/ref=sr_1_55?ie=UTF8&s=books&qid=1251738340&sr=1-55"]O'reilly Vlg. Gmbh & Co # Das Google Web Toolkit (Michael Seemann)[/ame]

    [ame="http://www.amazon.fr/Das-Google-Toolkit-Ralph-Steyer/dp/3939084212/ref=sr_1_4?ie=UTF8&s=books&qid=1251738773&sr=1-4"]Software # Das Google Web Toolkit (Ralph Steyer)[/ame]

    [ame="http://www.amazon.com/GWT-im-Einsatz-Adam-Tacy/dp/3446412417/ref=sr_1_22?ie=UTF8&s=books&qid=1251738122&sr=1-22"]Hanser Fachbuchverlag # GWT im Einsatz (Adam Tacy)[/ame]

    [ame="http://www.amazon.com/Google-Web-Toolkit-Martin-Marinschek/dp/3898644715/ref=sr_1_11?ie=UTF8&s=books&qid=1251738179&sr=1-11"]Dpunkt.Verlag GmbH # Google Web Toolkit (Martin Marinschek)[/ame]


    Quels sont les livres anglophones sur EXT-GWT ?

    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.

  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 105
    Points
    4 105
    Par défaut Les liens
    Comment faire un lien interne en GWT (<a href="#ancre">Cliquez ici</a>) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Hyperlink link = new Hyperlink("Cliquez ici", "ancre");
    Comment utiliser un lien comme un bouton (<a href="javascript:alert("coucou");">Lien qui exécute une action locale</a>) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Hyperlink link = new Hyperlink();
    link.setText("Lien qui exécute une action locale");
    link.addClickHandler(new ClickHandler()
    {
                @Override
                public void onClick(ClickEvent event)
                {
                    Window.alert("coucou");
                }
    });
    Comment faire un lien externe qui ouvre le document dans la fenêtre courante (<a href="http://www.developpez.com">Le site développez.com</a>) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Hyperlink link = new Hyperlink();
    link.setText("Le site développez.com");
    link.addClickHandler(new ClickHandler()
    {
                @Override
                public void onClick(ClickEvent event)
                {
                    Window.Location.replace("http://www.developpez.com");
                }
    });
    Comment faire un lien externe qui ouvre le document dans une nouvelle fenêtre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Hyperlink link = new Hyperlink();
    link.setText("Le site développez.com");
    link.addClickHandler(new ClickHandler()
    {
                @Override
                public void onClick(ClickEvent event)
                {
                    Window.open("http://www.developpez.com", "Developpez", "");
                }
    });
    Comment modifier le stylepar défaut des liens?

    Modifier le style par CSS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .gwt-Hyperlink
    {
    	cursor:pointer;
    }
    Pourquoi j'ai un "warning" GWT sur mes liens ?
    Pour vous prévenir des tentatives d'attaques XSS à ce qu'il paraît (quand on quitte votre domaine pour aller sur un autre)

    Comment enlever ce "warning" GWT ?

    En ajoutant l'url (ou un modèle d'url) dans la liste blanche.
    Cela se fait dans les arguments de compilations GWT avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -whitelist "^http[:][/][/]www[.]developpez[.]com"

    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
    Membre à l'essai
    Profil pro
    Inscrit en
    janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Luxembourg

    Informations forums :
    Inscription : janvier 2009
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Je suis l'auteur du futur livre de Dunod, qui devrait sortir vers le 18 novembre.
    Ce livre couvrira GWT 1.7 et 2.0 (selon ce qui en est connu aujourd'hui).

    Il est déjà en pré-commande chez Amazon: Créer des applications web interactives avec Google Web Toolkit (1.7 et 2.0)

  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 105
    Points
    4 105
    Par défaut Les librairies
    Pourquoi des librairies JS sont concurrentes de GWT ?

    Ce qu'il faut comprendre, c'est que pour faire des effets dynamiques dans le client, faire de la communication asynchrone (AJAX), il faut avoir recours à du code javascript.
    L'API javascript de base n'est non seulement pas super riche mais en plus diffère suivant les navigateurs.
    Pour masquer ces différences, factoriser du code, gagner en productivité, créer des composants, des librairies JS plus évoluées ont été produites (Ext-Js, JQuery, Dojo, YUI, ...).

    GWT est concurrent de ces librairies parce qu'il vise les mêmes objectifs.


    Quels sont les avantages et inconvénients de GWT par rapport aux librairies JS ?

    Même s'ils existent, les bons développeurs JS sont plus rares que les développeurs Java. Et il en est de même pour les outils (IDE, débugger ...)

    Même si certaines libraires JS contournent le problème en proposant d'inclure juste les modules qui nous intéressent, on est souvent amené à embarquer plusieurs kilooctets de JS pour uniquement quelques fonctions qui nous intéressent. Une force de GWT est via son compilateur de fabriquer un JS qui n'embarquera que les fonctions qu'on utilise.

    L'inconvénient, c'est qu'il est de part son statut un peu à part et il se bat seul contre tous ... De plus, les librairies JS étant plus anciennes, elles ont plus d'expérience.

    Pourquoi des librairies GWT complémentaires ont été développées ?

    GWT est un toolkit qui contient entre autre :
    - un compilateur qui convertit du code Java en code Javascript/HTML/CSS
    - une API (des classes et interfaces Java) qui permet d'interagir avec le document html dans le navigateur (le DOM, les JS, les CSS, ...)

    Comme pour l'instant, l'équipe GWT s'est plus concentrée sur le compilo que les widgets de la mort qui tue, des manques apparaissent dans l'API en comparaison à des librairies pure Javascript.
    Des librairies GWT ont donc été développées pour répondre à ces lacunes.


    Quelle sont les différences entre les librairies "wrapper" et les librairies "pure gwt" ?

    Il y a deux sortes de librairies GWT :

    • La première qui consiste à utiliser une librairie JS existante et touffue (ext-js, smartclient, ...) et à coder des classes Java/GWT qui encapsulent (wrapping) les composant JS natifs (utilisation massive de JSNI de GWT)
      L'avantage, c'est que ces librairies ont vite été développées (GWT-EXT pour ExtJS, SmartGWT pour SmartClient). Le seul intérêt pour les utilisateurs, c'est ainsi d'avoir une richesse fonctionnelle (de nombreux composants) disponible rapidement, tant qu'il n'existe pas d'alternatives en pur GWT.
      L'inconvénient, c'est qu'en plus du code JS généré par GWT, l'application doit embarquer également tout le code JS des librairies encapsulées. Cet inconvénient peut paraître mineur mais les nombreux fichiers de SmartClient ont été gênant sur GAE.
      L'autre inconvénient, c'est que lors du débuggage, les outils de GWT ne peuvent pas aller plus loin que les classes de wrapping et si le bug est dans la librairie JS sous jacente, c'est la galère ...

    • La deuxième consiste en une librairie qui n'est qu'une surcouche de GWT.
      Ainsi, on continue de profiter des avantages de GWT (débuggage, envoi au client uniquement du code utilisé, ...)
      Cette deuxième solution qu'on qualifiera de pure gwt n'a que des avantages sur le long terme.
      Son seul et principal défaut, c'est que c'est long a écrire et il y a donc moins d'alternatives possibles pour avoir certaines fonctionnalités.


    Quelles librairies GWT choisir ?

    Le jour où on disposera de une ou plusieurs librairies pures GWT qui répondront vraiment à l'ensemble des besoins, il n'y aura plus vraiment besoin d'utiliser des librairies GWT qui encapsulent des librairies JS.

    Malheureusement, il faut prendre en considération la réalité :
    • l'API GWT de base est limitée
    • il existe actuellement beaucoup plus de bonnes/riches librairies JS que librairies pure GWT.
    • les librairies JS continuent de s'améliorer en parallèle ...
    • certaines librairies pure GWT (mosaic) manquent d'uniformité, d'effet glossy.
    • la seule alternative actuelle qui tient la route en comparaison est EXT-GWT (réécriture de Ext-Js en pure GWT contrairement à l'abandonné GWT-EXT qui n'était qu'un wrapper) n'est pas exempte de défauts : La licence peut être un frein, son code et son processus de mis à jour manquent encore de professionnalisme (même si elle s'améliore).

    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
    Membre régulier
    Profil pro
    Inscrit en
    avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par benwit Voir le message
    [[*]la seule alternative actuelle qui tient la route en comparaison est EXT-GWT (réécriture de Ext-Js en pure GWT contrairement à l'abandonné GWT-EXT qui n'était qu'un wrapper) n'est pas exempte de défauts : La licence peut être un frein, son code et son processus de mis à jour manquent encore de professionnalisme (même si elle s'améliore).[/LIST]
    Je voudrai savoir exactement l'histoire de licence. En fait, j'ai regardé sur le site de EXT-GWT et j'ai trouvé deux types de licence : un commercial et l'autre est opensource licence. Est ce que je peux utiliser ce dernier sans aucune contrainte.

    Merci d'avance.

  13. #13
    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 105
    Points
    4 105
    Par défaut
    En fait, par problème de licence, je pensais à la licence originale de ext-js qui a été modifiée en cours de route.

    Pour la licence actuelle de gxt (ext_gxt), on ne peut pas leur empêcher de faire du business.

    De ce que j'ai compris (d'autres corrigeront sinon), c'est que la licence open source nous oblige à livrer nos sources si on livre notre produit à un tiers.
    Par exemple, si on écrivait un cms qui utilisait leur librairie et qu'on voulait fournir ce cms en tant que produit, on devrait également fournir notre code source.

    Maintenant, si je m'en sers pour construire un site hébergé sur mes serveurs où des utilisateurs viennent se connecter, je fournis un service et pas un produit. Pourquoi devrai-je fournir tout le code de mon site ?

    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.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par benwit Voir le message
    Maintenant, si je m'en sers pour construire un site hébergé sur mes serveurs où des utilisateurs viennent se connecter, je fournis un service et pas un produit. Pourquoi devrai-je fournir tout le code de mon site ?
    En fait, je suis dans ce cas de figure (développer un site hébergé sur un serveur et ce service sera consulté par des utilisateurs).

    Donc d'après j'ai compris je dois quand même fournir mes codes sources?

    Merci.

  15. #15
    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 105
    Points
    4 105
    Par défaut
    Dans ce cas de figure, pour moi, c'est NON mais peut être que je me trompe ?

    Dans ce cas, à qui devrais-je fournir mes sources ? Je ne vois vraiment pas ???

    Dans la licence Open Source, il est question d'une exception pour des applications à destination de l'utilisateur :

    This Exception is intended to be used for end-user applications and is not intended to be applied to software development libraries or toolkits, as per section 2(d) below
    Si je fournissais une librairie/toolkit qui utilisait leur lib, je devrai livrer les sources ou passer par la licence commerciale mais dans le cadre d'une application destinée à des utilisateurs, je pense que je ne suis pas concerné.
    Enfin, c'est mon interprétation.

    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.

  16. #16
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : février 2003
    Messages : 596
    Points : 639
    Points
    639
    Par défaut
    Comment utiliser des accès au base de données avec GWT en mode dev sous Jetty ?

    voici deux liens expliquant les démarches, je n'ai pas encore eu le temps de tester mais ça a l'air intéressant.

    http://dotclear.placeoweb.com/post/DataSource-Jetty-GWT

    http://dotclear.placeoweb.com/post/G...2EE-DataSource

  17. #17
    Nouveau Candidat au Club
    Inscrit en
    janvier 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : janvier 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut erreur à la compilation
    Bonjour à tous et excusez mon intrusion ,depuis 2 semaines je galère sur un projet gwt sous netbeans 7.2

    voici mon fichier Main.gwt.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd"> 
    <module> 
    <inherits name="com.google.gwt.user.User"/> 
    <entry-point class="org.yournamehere.client.MainEntryPoint"/> 
    </module>
    et là voici mon erreur
    < [ERROR] Line 23: No source code is available for type org.skan.entities.Ecloe; did you forget to inherit a required module?
    >
    et lorsque j ajoute dans le fichier Main.gwt.xml la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <source path="org.skan.entities"/>
    et la nouvelle erreur est
    <
    Finding entry point classes
    [ERROR] Unable to find type 'org.yournamehere.client.MainEntryPoint'
    [ERROR] Hint: Previous compiler errors may have made this type unavailable
    [ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly

    >
    Merci pour toutes vos contributions

  18. #18
    Membre à l'essai
    Profil pro
    Consultant BPM
    Inscrit en
    janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant BPM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2013
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Tu aurais du créer un sujet pour poser ta question, je ne pense pas que celui-ci soit fait pour ça.

    Pour ton problème, à quoi correspond le contenu de org.skan.entities.Ecloe ? est-ce un jar contenant des widgets ?
    S'il s'agit d'un jar tu peux faire un
    <inherits name="org.skan.entities.Ecloe"/>
    Bien sûr cela signifie que ton jar embarque ses sources.

Discussions similaires

  1. Merci de nous aider à créer des ressources (FAQ et sources)
    Par Community Management dans le forum Evolutions du club
    Réponses: 29
    Dernier message: 19/10/2015, 01h35
  2. [FORMS] Chemin des icones (intégré FAQ 150 QR)
    Par jerome62 dans le forum Forms
    Réponses: 2
    Dernier message: 30/07/2002, 09h32

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