Quelle(s) bibliothèque(s) supplémentaire(s) utilisez-vous avec GWT ?
Bonjour,
La boîte à outils GWT développée par Google souffre de quelques limitations.
- Celle-ci reste assez pauvre en composants graphiques.
- Les principes de l'architecture MVP sont difficiles à implanter.
- Le modèle de communication entre le client et le serveur ne profite pas des avantages des services web de type Rest.
L'équipe Java vous propose ainsi un sondage concernant les bibliothèques externes que vous utilisez pour GWT.
Profitez de ce sondage pour apporter vos témoignages sur telles ou telles bibliothèques tierces. N'hésitez pas également à nous faire découvrir une bibliothèque qui ne serait pas mentionnée.
Merci pour votre participation.
Gwt , gwt designer et sansha gxt
J’utilise GWT depuis 2 ans, le trio GXT, GWT et GWT designer permet une grande flexibilité pour la création des vue RIA, malheureusement la version GXT 3, n’est pas compatible avec GWT designer.
J’aurais préféré un produit unique GWT qui intègre un « WRAPPER » avec un model sur eclipse « what you see is what you get ».
Nous utilisons beaucoup de librairies GWT
(Totale transparence : je travaille chez Arcbees)
De notre côté, nous utilisons GWTP pour tous nos projets clients.
Le MVP nous permet d'avoir une architecture "clean" au niveau client et d'avoir essentiellement toute notre logique dans la partie des présenteurs et de la réutiliser pour nos différentes vues.
Un autre des bénéfices de cette approche est que notre code client est testable plus aisément (puisque nous réalisons principalement des applications web riches, il y a parfois beaucoup
de logique côté client).
Sinon, lorsqu'on a besoin que l'utilisateur fasse un ou plusieurs choix, nous utilisons GWT-Chosen, que l'on peut styler à notre goût (la version 3.0 est maintenant adaptée au mobile,
alors c'est super dans le cadre d'applications responsive).
Pour que nos sites webs soient bien indexés par les moteurs de recherche, nous utilisons GWT-SEO.
Pour ce qui est de nos designs, nous travaillons fort à rester le plus proche possible du HTML natif dans nos UiBinder, GWT étant tout d'abord un outil
de développement, et pas un outil de design.
De plus, on a des gains en efficacité grâce à ça (cf. cette conférence )
La communauté GWT a donc développé une librairie appelée GQuery (que je n'ai pas vu mentionnée) qui nous permet de travailler de façon très
similaire à JQuery, mais avec GWT (donc Java) plutôt que JavaScript.
Dans les autres librairies qui ont été mentionnées, nous utilisons aussi guava-gwt (pour la concision du code) et gin (pour l'injection de dépendances), ce qui nous aide à rendre notre
code plus testable et modulaire.
Finalement, pour la communication REST (et la sérialisation/désérialisation), nous ne pourrions pas nous passer de la librairie Rest-Dispatch, qui permet de faire
très aisément des appels REST depuis une application GWT.
Pour ceux qui sont intéressés par les pratiques de développement recommandées pour des applications professionnelles
en GWT, je vous encourage à visionner la conférence de Julien Dramaix au Dev Fest 2014 à ce sujet :
https://www.youtube.com/watch?v=L-jh-yyaHPU.
Par ailleurs, comme dit plutôt, GWT 2.8-SNAPSHOT et GWT 3.0 semblent très prometteurs en ce qui a trait à l'intéropérabilité complète avec JavaScript.
De plus, si je peux me permettre, en tant qu'entreprise, notre raison d'être est de développer des outils open source qui aident les développeurs à faire leur travail
de façon plus "clean" et plus efficace, alors n'hésitez pas si vous voyez des choses qui pourraient être améliorées, nous sommes à l'écoute!
P.S. Je crois que c'est GXT Sencha (et non pas Sancha)
Bibliothèque GWT utilisées
Bonjour, pour ma part je suis aussi adepte du zéro-framework, et au fur et à mesure des missions je construis et utilise mes propres outils (eat your own dog food).
Niveau MVP, je construis ma lib à chaque fois, pour coller au besoins du projet.
Pour la communication client-serveur, j'utilise en général GWT-RPC, mais pour certains projet j'ai dû implémenter une couche RPC de zéro, pour communiquer avec un serveur PHP notemment et pour être plus efficace que GWT-RPC aussi.
Ceci dit, voici les bibliothèques que j'utilise :
- GwtQuery parfois pour manipuler le dom, mais je l'utilise de moins en moins,
- Dagger 2 pour l'injection de dépendances. Avant son arrivée la lourdeur de bibliothèques telles que GIN me rebutait, mais Dagger 2 est vraiment plus léger et plus pratique à débugguer (le code généré est visible et donc débuggable)
- hexa.binding pour le databinding entre objets du modèle et UI. Je l'utilise même pour déclencher les appels de services dans mes nouvelles applis (une modif dans un DTO sera répercutée sur le serveur),
- hexa.css pour m'interfacer facilement avec des outils comme Sass ou Less et pour pouvoir changer dynamiquement de thème. Cet outil me fournit aussi un accès hyper-simple à pas mal de bibliothèques CSS de base : bass-css, font-awesome, foundation, pure et skeleton.
- hexa.reflect pour avoir un peu de réflection sur certaines classes (c'est très utile parfois !).
- j'utilise à profusion les générateurs gwt pour générer du code métier. A ce sujet, avec l'arrivée prochaine de GWT 3, je passe progressivement des générateurs GWT à la JSR 269 (Pluggable Annotation Processing API), qui est bien plus rapide (mais moins puissante)
- j'ai un peu utilisé Gwt-Bootstrap qui est très sympa lorsque le design pas ne compte pas mais quand il est important que l'apparence soit claire...
- évidemment au besoin, j'adapte des bibliothèques pur-java à GWT (JBullet par exemple pour faire des simulations physiques -> jeux vidéos. Niveau WebGL j'avais wrappé moi-même mais je suis sur qu'il existe de bonne bibliothèques maintenant, quelqu'un connaît-il ?)
- pour faire du stockage offline, j'utilise SQL.js wrappé. Si je devais refaire un logiciel à capacité "offline", je choisirais aujourd'hui probablement de wrapper lovefield de google.
- pour faire des graphiques, j'aime utiliser gwt-d3
- pour créer les UI, j'utilise encore les widgets avec deux trois classes qui me fournissent une interface "fluent" pour l'assemblage des widgets, et souvent UiBinder mais en mode HtmlElement...
Sinon je voudrais rebondir sur les commentaires au sujet de GWT. En effet les outils javascripts sont de plus en plus performants et donne une super productivité (en tout cas en début de projet). Pour ma part, avant de commencer un projet j'essaye d'anticiper grosso-modo sa volumétrie en terme du nombre de lignes de code. Si ce nombre dépasse largement 20000, je saute sur GWT sinon je code en Javascript ou Typescript.
Du coup j'ai une question : quelqu'un connaît-il une application écrite et *maintenue* en Javascript, disons d'au moins 100000 lignes de code ? Si un tel projet existe, avez-vous un retour d'expérience concernant les aspects de maintenance et évolution ?
Voilà, merci beaucoup !
Arnaud Tournier
www.lteconsulting.fr