Blog Excilys » Grails – Épisode 1 – Présentation

download Blog Excilys » Grails – Épisode 1 – Présentation

of 4

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/