Blog Excilys » Grails – Épisode 1 – Présentation
Transcript of Blog Excilys » Grails – Épisode 1 – Présentation
-
8/18/2019 Blog Excilys » Grails – Épisode 1 – Présentation
1/4
Blog Excilys » Grails – épisode 1 – Présentation
http://blog excilys com/2009/12/11/grails-episode-1-presentation/[11/04/2016 09:03:11]
Langages, Architectures & Méthodologies
À propos
11/12/2009 Cyril BROUILLARD CommenterAllez aux commentaires
http://grails.org
http://groovy.codehaus.org/
Accueil > Non classé > Grails – épisode 1 – Présentation
Grails – épisode 1 – Présentation
Introduction
Lorsque j’ai abordé Grails pour la première fois, j’ai d’abord été franchement réticent.
En effet, comment ne pas se méfier d’un outil qui “génère tout” – du contrôleur à la vue en passant par les services. Comment aborder Groovy ? Comme un “nouveau langage” ? Est-ce vraiment utilisable dans un cadre professionnel ?
C’est bien connu, il n’y a que les imbéciles qui ne changent pas d’avis : j’ai décidé de tester ce framework.
Et j’ai été agréablement surpris (bluffé serait le mot exact) ! J’ai pu réaliser un bugtracker complet (avec suivi des tickets, export en PDF, Excel,CSV, suivi des problématiques clients, une IHM Web2.0 (ajax), de la recherche full-text indéxée).
Tout cela en moins de 2 mois et seul sur le projet !
Tout au long de cette série d’article (il y en aura 5 au total), je vais vous faire part de mon expérience Grails. Nous allons commencer par une brève introduction aux grands principes de ce framework pour ensuite étudier un cas concret : une application de gestion d’albums musicaux. Nous allons faire évoluer cette application pour finalement aboutir à un logiciel fonctionnel (bien que relativement simple).
Mais commençons par le début…
Grails – Qu’est ce que c’est ?
Grails est un web-framework open-source dit “de développement rapide”. Il est basé sur des technologies éprouvées et très utilisées dans le monde professionnel Java/JEE comme Spring, Hibernate ou encore Sitemesh. Grails est bâti sur le langage Groovy.
Groovy présente l’énorme avantage d’être entièrement compatible avec Java. Groovy s’exécute en fait directement dans une VM Java: le compilateur produit du byte-code Java. Les avantages ?
la réutilisation de code déjà existant est transparente (librairies, autres frameworks Java, business code, …)
un développeur Java apprend à utiliser Groovy en très peu de temps (en mixant du code Java et Groovy, l’apprentissage se fait en douceur)
En résumé, Grails nous promet un développement d’application web ultra rapide.
Ok ! On démarre ?
Maintenant que nous avons une vague idée de ce qu’est Grails et parce que la pratique remplacera toujours mille mots, installons et utilisons Grails pour la première fois. Pour pré-requis, assurez vous qu’une JVM est installée sur votre machine (récente de préférence).
Installation de Grails
Téléchargez le package sur le site officiel: http://grails.org/Décompressez cette archive dans le répertoire de votre choix
RSS
Archives
février 2015 (2)
juillet 2013 (1)
juin 2013 (1)
mai 2013 (1)
avril 2013 (1)
mars 2013 (1) janvier 2013 (3)
décembre 2012 (6)
octobre 2012 (5)
septembre 2012 (1)
juin 2012 (1)
mai 2012 (3)
janvier
Tags
AJAX android bonnes pratiques clean-code cloud code propre déploiement entreprise flex framework web google gorm grails groovy gwt gwt-rpc hibernate java java 6 javascript JQuery json JSP JUG Liferay Liferay Portal mapping maven open source
performances php Portal proxy rest SAML scala series-grails-albums series-symfony-plum series-ymca Servlet spring symfony test tomcat tutoriel
Blog Excilys
Type text to search here...
http://blog.excilys.com/a-propos/http://blog.excilys.com/author/cbrouillard/http://blog.excilys.com/http://blog.excilys.com/category/non-classe/http://grails.org/http://blog.excilys.com/feed/http://blog.excilys.com/2015/02/http://blog.excilys.com/2013/07/http://blog.excilys.com/2013/06/http://blog.excilys.com/2013/05/http://blog.excilys.com/2013/04/http://blog.excilys.com/2013/03/http://blog.excilys.com/2013/01/http://blog.excilys.com/2013/01/http://blog.excilys.com/2012/12/http://blog.excilys.com/2012/12/http://blog.excilys.com/2012/10/http://blog.excilys.com/2012/10/http://blog.excilys.com/2012/09/http://blog.excilys.com/2012/09/http://blog.excilys.com/2012/06/http://blog.excilys.com/2012/05/http://blog.excilys.com/2012/01/http://blog.excilys.com/tag/ajax/http://blog.excilys.com/tag/android/http://blog.excilys.com/tag/bonnes-pratiques/http://blog.excilys.com/tag/clean-code/http://blog.excilys.com/tag/cloud/http://blog.excilys.com/tag/entreprise/http://blog.excilys.com/tag/entreprise/http://blog.excilys.com/tag/entreprise/http://blog.excilys.com/tag/deploiement/http://blog.excilys.com/tag/entreprise/http://blog.excilys.com/tag/grails/http://blog.excilys.com/tag/grails/http://blog.excilys.com/tag/grails/http://blog.excilys.com/tag/groovy/http://blog.excilys.com/tag/framework-web/http://blog.excilys.com/tag/google/http://blog.excilys.com/tag/gorm/http://blog.excilys.com/tag/grails/http://blog.excilys.com/tag/java/http://blog.excilys.com/tag/gwt/http://blog.excilys.com/tag/gwt-rpc/http://blog.excilys.com/tag/gwt-rpc/http://blog.excilys.com/tag/hibernate/http://blog.excilys.com/tag/java/http://blog.excilys.com/tag/liferay/http://blog.excilys.com/tag/liferay/http://blog.excilys.com/tag/liferay/http://blog.excilys.com/tag/java-6/http://blog.excilys.com/tag/liferay-portal/http://blog.excilys.com/tag/liferay-portal/http://blog.excilys.com/tag/liferay-portal/http://blog.excilys.com/tag/liferay-portal/http://blog.excilys.com/tag/liferay-portal/http://blog.excilys.com/tag/liferay-portal/http://blog.excilys.com/tag/jsp/http://blog.excilys.com/tag/jug/http://blog.excilys.com/tag/liferay/http://blog.excilys.com/tag/maven/http://blog.excilys.com/tag/maven/http://blog.excilys.com/tag/maven/http://blog.excilys.com/tag/liferay-portal/http://blog.excilys.com/tag/mapping/http://blog.excilys.com/tag/maven/http://blog.excilys.com/tag/open-source/http://blog.excilys.com/tag/portal/http://blog.excilys.com/tag/open-source/http://blog.excilys.com/tag/performances/http://blog.excilys.com/tag/saml/http://blog.excilys.com/tag/performances/http://blog.excilys.com/tag/php/http://blog.excilys.com/tag/portal/http://blog.excilys.com/tag/proxy/http://blog.excilys.com/tag/rest/http://blog.excilys.com/tag/saml/http://blog.excilys.com/tag/scala/http://blog.excilys.com/tag/series-grails-albums/http://blog.excilys.com/tag/series-grails-albums/http://blog.excilys.com/tag/series-symfony-plum/http://blog.excilys.com/tag/series-ymca/http://blog.excilys.com/tag/series-ymca/http://blog.excilys.com/tag/tutoriel/http://blog.excilys.com/tag/tutoriel/http://blog.excilys.com/tag/tutoriel/http://blog.excilys.com/tag/tutoriel/http://blog.excilys.com/tag/spring/http://blog.excilys.com/tag/symfony/http://blog.excilys.com/tag/test/http://blog.excilys.com/tag/tomcat/http://blog.excilys.com/tag/tutoriel/http://blog.excilys.com/http://blog.excilys.com/http://blog.excilys.com/tag/tutoriel/http://blog.excilys.com/tag/tomcat/http://blog.excilys.com/tag/test/http://blog.excilys.com/tag/symfony/http://blog.excilys.com/tag/spring/http://blog.excilys.com/tag/servlet/http://blog.excilys.com/tag/series-ymca/http://blog.excilys.com/tag/series-ymca/http://blog.excilys.com/tag/series-symfony-plum/http://blog.excilys.com/tag/series-grails-albums/http://blog.excilys.com/tag/series-grails-albums/http://blog.excilys.com/tag/scala/http://blog.excilys.com/tag/saml/http://blog.excilys.com/tag/rest/http://blog.excilys.com/tag/proxy/http://blog.excilys.com/tag/portal/http://blog.excilys.com/tag/php/http://blog.excilys.com/tag/performances/http://blog.excilys.com/tag/open-source/http://blog.excilys.com/tag/maven/http://blog.excilys.com/tag/mapping/http://blog.excilys.com/tag/liferay-portal/http://blog.excilys.com/tag/liferay/http://blog.excilys.com/tag/jug/http://blog.excilys.com/tag/jsp/http://blog.excilys.com/tag/json/http://blog.excilys.com/tag/jquery/http://blog.excilys.com/tag/javascript/http://blog.excilys.com/tag/java-6/http://blog.excilys.com/tag/java/http://blog.excilys.com/tag/hibernate/http://blog.excilys.com/tag/gwt-rpc/http://blog.excilys.com/tag/gwt/http://blog.excilys.com/tag/groovy/http://blog.excilys.com/tag/grails/http://blog.excilys.com/tag/gorm/http://blog.excilys.com/tag/google/http://blog.excilys.com/tag/framework-web/http://blog.excilys.com/tag/flex/http://blog.excilys.com/tag/entreprise/http://blog.excilys.com/tag/deploiement/http://blog.excilys.com/tag/code-propre/http://blog.excilys.com/tag/cloud/http://blog.excilys.com/tag/clean-code/http://blog.excilys.com/tag/bonnes-pratiques/http://blog.excilys.com/tag/android/http://blog.excilys.com/tag/ajax/http://blog.excilys.com/2012/01/http://blog.excilys.com/2012/05/http://blog.excilys.com/2012/06/http://blog.excilys.com/2012/09/http://blog.excilys.com/2012/09/http://blog.excilys.com/2012/10/http://blog.excilys.com/2012/10/http://blog.excilys.com/2012/12/http://blog.excilys.com/2012/12/http://blog.excilys.com/2013/01/http://blog.excilys.com/2013/01/http://blog.excilys.com/2013/03/http://blog.excilys.com/2013/04/http://blog.excilys.com/2013/05/http://blog.excilys.com/2013/06/http://blog.excilys.com/2013/07/http://blog.excilys.com/2015/02/http://blog.excilys.com/feed/http://blog.excilys.com/feed/http://grails.org/http://blog.excilys.com/category/non-classe/http://blog.excilys.com/http://groovy.codehaus.org/http://grails.org/http://blog.excilys.com/author/cbrouillard/http://blog.excilys.com/a-propos/http://blog.excilys.com/a-propos/http://blog.excilys.com/
-
8/18/2019 Blog Excilys » Grails – Épisode 1 – Présentation
2/4
http://blog excilys com/2009/12/11/grails-episode-1-presentation/[11/04/2016 09:03:11]
Blog Excilys » Grails – épisode 1 – Présentation
http://blog excilys com/2009/12/11/grails-episode-1-presentation/[11/04/2016 09:03:11]
Faites pointer une variable d’environnement GRAILS_HOME sur le répertoire d’installationTestez l’installation
1 grails help
Création d’un projet
Lancez la commande
1 grails create-app ourapp
Grails va créer pour vous un dossier “ourapp” dans lequel un squelette d’application aura été généré. Même si cela n’a pas grand intérêt pour le moment, vous pouvez lancer le projet:
1
2
cd ourapp/
grails run-app
La commande “run-app” s’occupe:
de construire votre applicationde lancer un conteneur dédié à votre application (Jetty dans la version Grails 1.1.x, Tomcat pour la future version 1.2)
Si le port par défaut (le classique 8080) ne vous convient pas, vous pouvez le changer:
1 grails -Dserver.port=9999 run-app
Utilisez votre navigateur favori : http://localhost:8080/ourapp/ (en remplaçant le numéro de port par celui que vous avez choisi)
Analyse du p ro jet
Voilà notre squelette d’application en place. C’est bien… Mais comment les choses sont-elles organisées ? Jetons un coup d’œil dans le répertoire “ourapp”. Voici l’organisation d’un projet Grails:
La partie la plus importante de l’application se trouve dans le dossier grails-app. Dans ce dossier seront définis les services, les contrôleurs, les vues, la configuration, …
Le dossier test parle de lui-même tout comme pour web-app. Notez que c’est dans le dossier web-app que le répertoire WEB-INF se situe.
Le dossier lib contiendra toutes les dépendances (JAR). Ces dépendances peuvent être copiées manuellement ou récupérées via un gestionnaire de dépendances (Maven ou Ivy). Ce genre de gestionnaire n’est pas intégré par défaut dans Grails (nous verrons plus tard que cette carence peut être très rapidement corrigée grâce au système de plugins).
Le dossier src pourra contenir toutes vos classes supplémentaires, qu’elles soient Groovy ou Java.
Voilà donc une des premières force de Grails mise en évidence (même si elle n’est absolument pas spécifique à Grails): l’organisation est dite COC (Convention Over Configuration). Inutile de chercher telle ou telle partie de code, par convention, vous savez qu’elles sont à un endroit bien défini.
La suite au prochain numéro !!
Voila les premières bases (légères je vous l’accorde) posées. Dans le prochain épisode, nous allons
2012 (1)
décembre 2011 (2)
novembre 2011 (3)
octobre 2011 (1)
septembre 2011 (2)
août 2011 (1)
juin 2011 (1)
mai 2011 (1)mars 2011 (1)
février 2011 (1)
janvier 2011 (2)
décembre 2010 (2)
septembre 2010 (1)
août 2010 (2)
juillet 2010 (1)
juin 2010 (4)
mai 2010 (4)avril 2010 (3)
février 2010 (5)
janvier 2010 (10)
décembre 2009 (5)
novembre 2009 (4)
octobre 2009 (3)
septembre 2009 (1)
Reproduction
Le contenu de ce blog fourni par le Groupe Excilys est mis à disposition selon les termes de la licence Creative Commons Paternité 2.0 France.Basé(e) sur une oeuvre à blog.excilys.com.Les autorisations au-delà du champ de cette licence peuvent être obtenues à cette adresse.
http://localhost:9999/ourapp/http://blog.excilys.com/2012/01/http://blog.excilys.com/2011/12/http://blog.excilys.com/2011/12/http://blog.excilys.com/2011/11/http://blog.excilys.com/2011/11/http://blog.excilys.com/2011/10/http://blog.excilys.com/2011/10/http://blog.excilys.com/2011/09/http://blog.excilys.com/2011/09/http://blog.excilys.com/2011/08/http://blog.excilys.com/2011/06/http://blog.excilys.com/2011/05/http://blog.excilys.com/2011/03/http://blog.excilys.com/2011/02/http://blog.excilys.com/2011/01/http://blog.excilys.com/2011/01/http://blog.excilys.com/2010/12/http://blog.excilys.com/2010/12/http://blog.excilys.com/2010/09/http://blog.excilys.com/2010/09/http://blog.excilys.com/2010/08/http://blog.excilys.com/2010/07/http://blog.excilys.com/2010/06/http://blog.excilys.com/2010/05/http://blog.excilys.com/2010/04/http://blog.excilys.com/2010/02/http://blog.excilys.com/2010/01/http://blog.excilys.com/2010/01/http://blog.excilys.com/2009/12/http://blog.excilys.com/2009/12/http://blog.excilys.com/2009/11/http://blog.excilys.com/2009/11/http://blog.excilys.com/2009/10/http://blog.excilys.com/2009/10/http://blog.excilys.com/2009/09/http://blog.excilys.com/2009/09/http://www.excilys.com/http://www.excilys.com/http://creativecommons.org/licenses/by/2.0/fr/http://creativecommons.org/licenses/by/2.0/fr/http://blog.excilys.com/http://transpose_email%28%27blog%27%2C%27excilys.com%27%29/http://transpose_email%28%27blog%27%2C%27excilys.com%27%29/http://blog.excilys.com/http://creativecommons.org/licenses/by/2.0/fr/http://creativecommons.org/licenses/by/2.0/fr/http://www.excilys.com/http://www.excilys.com/http://creativecommons.org/licenses/by/2.0/fr/http://blog.excilys.com/2009/09/http://blog.excilys.com/2009/09/http://blog.excilys.com/2009/10/http://blog.excilys.com/2009/10/http://blog.excilys.com/2009/11/http://blog.excilys.com/2009/11/http://blog.excilys.com/2009/12/http://blog.excilys.com/2009/12/http://blog.excilys.com/2010/01/http://blog.excilys.com/2010/01/http://blog.excilys.com/2010/02/http://blog.excilys.com/2010/04/http://blog.excilys.com/2010/05/http://blog.excilys.com/2010/06/http://blog.excilys.com/2010/07/http://blog.excilys.com/2010/08/http://blog.excilys.com/2010/09/http://blog.excilys.com/2010/09/http://blog.excilys.com/2010/12/http://blog.excilys.com/2010/12/http://blog.excilys.com/2011/01/http://blog.excilys.com/2011/01/http://blog.excilys.com/2011/02/http://blog.excilys.com/2011/03/http://blog.excilys.com/2011/05/http://blog.excilys.com/2011/06/http://blog.excilys.com/2011/08/http://blog.excilys.com/2011/09/http://blog.excilys.com/2011/09/http://blog.excilys.com/2011/10/http://blog.excilys.com/2011/10/http://blog.excilys.com/2011/11/http://blog.excilys.com/2011/11/http://blog.excilys.com/2011/12/http://blog.excilys.com/2011/12/http://blog.excilys.com/2012/01/http://localhost:9999/ourapp/
-
8/18/2019 Blog Excilys » Grails – Épisode 1 – Présentation
3/4
Blog Excilys » Grails – épisode 1 – Présentation
http://blog excilys com/2009/12/11/grails-episode-1-presentation/[11/04/2016 09:03:11]
Arborescence d'un projet Grails
Non classé convention over configuration, grails, groovy, jetty, series-grails-albums, tomcat
Commentaires (5)Trackbacks (4)Commenter Trackback
Pierre-
Yves RICAU
14/12/2009 à 10:27 | #1
Répondre | Citer
Un premier article bien rédigé qui présage d’une suite intéressante !
Aura t’on le plaisir de pouvoir tester l’application sur Google App Engine ?
Alexis THOMAS
23/12/2009 à 10:23 | #2
Répondre | Citer
Après l’ajout de GRAILS_HOME, il faut aussi modifier le PATH (“%GRAILS_HOME%\bin on Windows or $GRAILS_HOME/bin on Unix”).
Cyril
23/12/2009 à 20:26 | #3
Répondre | Citer
Ah oui en effet ^^ c’est un oubli de ma part ! Merci !
aborder le coté pratique d’un point de vue très concret puisque l’objectif sera d’écrire une application complète et fonctionnelle visant à gérer une collection d’albums musicaux.
Ressources
Site officiel de Grails : http://grails.org/
Le tag sur le SVN Google Code: http://excilys.googlecode.com/svn/projects/grails-albums/tags/grails-albums_article_1/
1
Meta
Connexion
Flux RSS des articles
RSS des commentaires
Site de WordPress-FR
http://blog.excilys.com/category/non-classe/http://blog.excilys.com/tag/convention-over-configuration/http://blog.excilys.com/tag/grails/http://blog.excilys.com/tag/groovy/http://blog.excilys.com/tag/jetty/http://blog.excilys.com/tag/series-grails-albums/http://blog.excilys.com/tag/tomcat/http://blog.excilys.com/2009/12/11/grails-episode-1-presentation/trackback/http://grails.org/http://excilys.googlecode.com/svn/projects/grails-albums/tags/grails-albums_article_1/http://excilys.googlecode.com/svn/projects/grails-albums/tags/grails-albums_article_1/http://blog.excilys.com/wp-login.phphttp://blog.excilys.com/feed/http://blog.excilys.com/comments/feed/http://www.wordpress-fr.net/http://www.wordpress-fr.net/http://blog.excilys.com/comments/feed/http://blog.excilys.com/comments/feed/http://blog.excilys.com/feed/http://blog.excilys.com/feed/http://blog.excilys.com/feed/http://blog.excilys.com/wp-login.phphttps://www.addtoany.com/share#url=http%3A%2F%2Fblog.excilys.com%2F2009%2F12%2F11%2Fgrails-episode-1-presentation%2F&title=Grails%20%26%238211%3B%20%C3%A9pisode%201%20%26%238211%3B%20Pr%C3%A9sentation&description=http://excilys.googlecode.com/svn/projects/grails-albums/tags/grails-albums_article_1/http://excilys.googlecode.com/svn/projects/grails-albums/tags/grails-albums_article_1/http://grails.org/http://blog.excilys.com/2009/12/11/grails-episode-1-presentation/trackback/http://blog.excilys.com/tag/tomcat/http://blog.excilys.com/tag/series-grails-albums/http://blog.excilys.com/tag/jetty/http://blog.excilys.com/tag/groovy/http://blog.excilys.com/tag/grails/http://blog.excilys.com/tag/convention-over-configuration/http://blog.excilys.com/category/non-classe/http://blog.excilys.com/wp-content/uploads/2009/12/arbo_grails_project2.png
-
8/18/2019 Blog Excilys » Grails – Épisode 1 – Présentation
4/4
Blog Excilys » Grails – épisode 1 – Présentation
http://blog.excilys.com/2009/12/11/grails-episode-1-presentation/[11/04/2016 09:03:11]
BROUILL
NAFIA
31/01/2014 à 00:17 | #4
Répondre | Citer
Agréable début en Grails . Personnellement je viens de basculer de JavaJEE vers le monde de grails groovy suite une refonte de l’app back de notre entreprise en remplacement la partie UI de grails (GSP) par angularJS ??? et ca fait pas plus qu’un mois.
NAAMA
31/01/2014 à 00:18 | #5
Répondre | Citer
Agréable début en Grails . Personnellement je viens de basculer de JavaJEE vers le monde de grails groovy suite une refonte de l’app back de notre entreprise en remplacement la partie UI de grails (GSP) par angularJS ??? et ca fait pas plus qu’un mois..
S'abonner aux commentaires
Grails – épisode 2 – Création du domaine Création et utilisation de webservice avec Java 6
Nom (requis)
E-Mail (ne sera pas publié) (requis)
Site internet
Remonter ;) Copyright © 2009-2015 Blog Excilys Theme by Excilys based on iNove. Valid XHTML 1.1 and CSS 3.
Envoyer un commentaire
http://blog.excilys.com/comments/feed/http://blog.excilys.com/2009/12/14/grails-episode-2-creation-du-domaine/http://blog.excilys.com/2009/12/10/creation-et-utilisation-de-webservice-avec-java-6/http://www.excilys.com/http://www.neoease.com/http://validator.w3.org/check?uri=refererhttp://jigsaw.w3.org/css-validator/check/referer?profile=css3http://jigsaw.w3.org/css-validator/check/referer?profile=css3http://validator.w3.org/check?uri=refererhttp://www.neoease.com/http://www.excilys.com/http://wordpress.org/http://blog.excilys.com/2009/12/10/creation-et-utilisation-de-webservice-avec-java-6/http://blog.excilys.com/2009/12/10/creation-et-utilisation-de-webservice-avec-java-6/http://blog.excilys.com/2009/12/14/grails-episode-2-creation-du-domaine/http://blog.excilys.com/2009/12/14/grails-episode-2-creation-du-domaine/http://blog.excilys.com/comments/feed/http://blog.excilys.com/comments/feed/