lundi 27 juillet 2009

JetBrains Meta Programming System

JetBrains a annoncé la disponibilité de JetBrains MPS , un environement de développment dédié aux DSLs. Cet environement est la réponse, d'aprés cet article, aux besoins, mais également à ladifficulté de développer des DSLs.
Pour rappel, un DSL: Domain Specific Language, est un langage qui doit permettre d'implémenter les régles inhérentes à un domaine précis, comme la finance. Par exemple: un langage mathématique ne doit permettre que d'exprimer des opérations mathématiques.
D'aprés JetBrains, le fait que ce type de langage nesoit pas plus développer est dû à:
  • il n'y a aucun environement qui permet leur développement,
  • les langages étant basés sur des grammaires, combinés plusieurs DSL peut provoquer des ambiguités.
Avec MPS, JetBrains propose de resouvre ces problémes en ce basant, non plus sur des éditeurs traitant du texte, mais sur une représentation arborescente du langage, ce qui écarte tout risque d'ambiguité, puisqu'il n'y a plus de grammaire. D'aprés le site officiel, la faible courbe d'apprentissage et la rapidité de développement que permet l'outil, devrait imposer les DSLs comme une solution viable.

vendredi 24 juillet 2009

Google Plugin For Eclipse

Google fournit un plugin Eclipse pour la création d'applications web basées sur Google Web Toolkit et permettant de déployer les applications sur Google App Engine. Petit tour d'horizon de ce plugin bien pratique.

Installation

Pour installer le plugin, deux URLs sont disponibles suivant la version d'Eclipse:
  • Version 3.3: http://dl.google.com/eclipse/plugin/3.3
  • Version 3.4: http://dl.google.com/eclipse/plugin/3.4
Le plugin install la version 1.6.4 de GWT et la version 1.2.1 du kit Google App Engine par défaut.

Création d'un projet

La création se fait via le wizard en passant par le menu: File > New Project > Web Application Project ou en utilisant le bouton

Le wizard permet d'inclure/exclure GWT et/ou Google App Engine dans le projet. Il inclut par défaut les dernières versions des frameworks. Via les liens Configure SDKs... , il est possible de choisir une autre version du SDK installée sur la station.

GWT

MyTestProject
src/
com/
mytestproject/
MyTestProject.gwt.xml
client/
GreetingService.java
GreetingServiceAsync.java
MyTestProject.java
server/
GreetingServiceImpl.java
war/
MyTestProject.css
MyTestProject.html
WEB-INF/
web.xml
classes/
lib/
...GWT JARs...
Le plugin génère une application de base avec un service RPC de base. L'application permet d'envoyer une message via le service. Et celui-ci renvoi ce message avec des informations sur le serveur.
Pour le service, l'interface, les implémentations coté client et coté serveurs sont générés.

Google App Engine

MyTestProject
src/
log4j.properties
META-INF/
jdoconfig.xml
com/
mytestproject/
MyTestProjectServlet.java
war/
index.html
WEB-INF/
appengine-web.xml
web.xml
logging.properties
classes/
lib/
...App Engine JARs...
L'application générée donne accès à la technologie de persistance DataNucleus utilisée par GAE. Pour la partie présentation, puisque l'application est censé être une appli web, une servlet a été généré.
Le fichier appengine-web.xml permet de configurer le déploiement de l'application. Le fichier jdoconfig.xml contient la configuration du framework DataNucleus.

GWT et GAE

MyTestProject
src/
log4j.properties
META-INF/
jdoconfig.xml
com/
mytestproject/
MyTestProject.gwt.xml
client/
GreetingService.java
GreetingServiceAsync.java
MyTestProject.java
server/
GreetingServiceImpl.java
war/
MyTestProject.css
MyTestProject.html
WEB-INF/
appengine-web.xml
web.xml
logging.properties
classes/
lib/
...App Engine JARs...
...GWT JARs...
L'application offre des fonctionnalités similaires aux deux types de projet précédents.

Exécuter l'application en hosting mode

L'exécution de l'application en hosting mode, mode qui permet d'utiliser le debuger, il suffit de faire click droit sur le projet puis: Run As... > Web Application.
La console, qui permet de monitorer l'activité serveur, s'ouvre:

Puis le hosted browser, un navigateur intégré:

Remarque: il est prévu pour la version 2 de GWT, que le hosted browser soit remplacé par le navigateur par défaut du système hôte.

Déployer l'application Google App Engine

Le déploiement d'une application GAE se fait simplement en clickant sur l'icône pour ouvrir la boite de dialogue:
Il faut posséder un compte GAE pour pouvoir déployer une application, et donc posséder un compte utilisateur Google. Le plugin doit d'abord être configuré avec l'identifiant de l'application GAE: Properties > Google > App Engine > Application ID. Aprés avoir clické sur le bouton Deploy, le plugin compile et package l'application, qui est ensuite envoyée sur la plate forme.
L'application est alors utilisable.

Conclusion

Malgrés la possibilité d'intégrer les outils de GWT tel junitCreator comme outil externe d'Eclipse, je regrette l'abscence de ces outils du plugin. La volonté de Google était apparement de fournir le plus rapidement possible un outil permettant de developper des applications GWT. Du coup, le nice to have a été mis de coté. Ce sera, je l'espére, pour la prochaine version. La raison de cette abscence peut aussi être expliqué par les bugs (dans la version 1.6.4 du SDK) produits par ces scripts.

dimanche 5 juillet 2009

Google Chrome for Linux

Google décline toutes responsabilités des dégats pouvant être causés par un crache de Chrome, qui est actuellement disponible pour les développeurs dans sa version Linux. Si mes versions de développement étaient aussi stable, je n'aurai jamais d'appréhension les veilles de mise en production.
Cela fait trois semaines que je ne me sers que de ce navigateur, et, pas de crache, encore mieux que ça, tous mes sites habituelles s'affichent parfaitement, que ce soit ma messagerie Microsoft Exchange ou les applications de Google tel GMail, il n'y a pas le moindre défaut ou fragment de JavaScript mal interprété. Et en plus, c'est vraiment rapide.
La seule chose que j'ai pû constaté est que les fichiers WSDL ne sont pas affichés, j'en déduis que c'est le cas pour tous les formats XML. Mais ce n'est qu'une version de dev.