Latest Posts

Latest Posts

Sortie d’Apache Camel 2.4

Sortie d’Apache Camel 2.4

Deux mois seulement après la sortie d’Apache Camel en version 2.3.0, une nouvelle version 2.4.0 vient tout juste de sortir. Elle vient compléter un changelog déjà très fourni sur la version précédente et apporte son lot de corrections, améliorations et nouveautés :

  • Un support plus poussé d’OSGI avec la prise en charge de la norme Blueprint et la création d’un namespace XML adapté permettant de définir des routes Camel. Ce namespace est pour le moment uniquement exploitable via l’implémentation Blueprint ‘Apache Aries’ utilisée par le projet ‘Apache Karaf’. A noter que la définition d’errorHandler n’est pas possible pour le moment.
  • Un moteur de routage asynchrone non bloquant complet: tous les patterns d’intégration sont supportés ainsi que différents composants: JBI, NMR, CXF, Jetty et Netty.
  • La version de Spring utilisée par Camel passe à la 3.0.3 marquant ainsi la fin du support de la branche 2.0 (La version 2.5 étant encore supportée). Le support de Spring Security pour sa part change également de version et passe à la 3.0.3.RELEASE.

La version 2.3.0 proposait déjà de nombreuses améliorations majeures telles que le support des Property placeholders qui manquaient cruellement, ainsi que le support d’un nombre conséquent de nouveaux composants (camel-exec, camel-nagios, camel-netty, camel-spring-spring-security, camel-crypto, …).

Le projet Camel devrait à coup sûr continuer à faire parler de lui dans les prochains mois, tout en s’imposant un peu plus comme un acteur majeur dans le milieu des frameworks d’intégration.

Intégration de Grails avec Google App Engine

Intégration de Grails avec Google App Engine

En navigant sur le blog « Le Touilleur Express« , je suis tombé sur un article passionnant décrivant l’intégration de Grails avec Google App Engine. Bien que l’article ait quelques mois, il n’en reste pas moins intéressant, et permet de se faire une bonne idée de la chose.

Une vidéo issue des « Google IO 2009 » présente Groovy, Grails, ainsi que son intégration avec le Googles App Engine. La vidéo parle d’elle même. Si vous connaissez déjà Groovy, vous pouvez sauter le premier tiers de la vidéo pour se focaliser sur l’intégration avec GAE.

Le lien vers l’article de Grails + Google App Engine:

Une introduction à Grails:

Un tutorial en trois parties basée sur une démo originale de Wicket:

Liens:

Si vous avez déjà créer une application basée sur Grails et tournant sur Google App Engine, n’hésitez pas à en faire part dans les commentaires.

Ajout du flux Twitter

Ajout du flux Twitter

Vous pouvez maintenant suivre mes Tweets depuis la sidebar du blog.

Pour accéder directement à mon flux Twitter, c’est par ici:

  • http://twitter.com/alexiskinsella

Vous pourrez y retrouver entre autre des tweets techniques ou bien des bonnes adresses. Ce widget Twitter vient compléter le widget Delicious qui recense déjà bon nombre de bookmarks techniques et de trouvailles du web.

Sortie de la librairie Logging4ME – v1.0.2

Sortie de la librairie Logging4ME – v1.0.2

Logging4ME sort en version 1.0.2 et propose maintenant de paramétrer le système de log grâce à un fichier de configuration XML et l’usage de Kxml.

Voici ci-dessous un exemple de fichier de configuration :

< ?xml version="1.0" encoding="UTF-8" ?>

<logging4me xmlns="http://logging4me.helyx.org/logging4me-1.0.0.xsd" thresholdLevel="DEBUG" debugMode="false">

	<!-- Layouts -->
	<layout name="pl" class="org.helyx.logging4me.layout.pattern.PatternLayout">
		<property name="pattern" value="|%T|%L|%C|%D{yyyy/MM/dd, HH:mm:ss.ZZ}| " />
	</layout>
	
	<!-- Appenders -->
	<appender name="console" class="org.helyx.logging4me.appender.ConsoleAppender">
		<property name="thresholdLevel" value="INFO" />
		<property name="layout" value="pl" />
	</appender>

	<!-- Categories -->
	<category name="org.helyx.logging4me" level="DEBUG" />
	
</logging4me>

Ainsi qu’un fichier d’exemple de chargement de la configuration XML avec J2ME:

		LoggerConfigurer loggerConfigurer = new XmlConfigurer("/org/helyx/logging4me/test/logging4me.xml");
		loggerConfigurer.configure();

Liens utiles du projet:

  • Le site du projet est à l’adresse suivante: http://basics4me.helyx.org/ .

    Vous y trouverez toutes les informations liées au développement du projet: Sources, Javadoc, Couverture de test, métriques, rapports Maven, …

  • Un wiki est disponible ici. Il propose des informations complémentaires: Exemples, Intégration de la librairie à votre projet, …
  • Pour télécharger le projet, cela se passe à l’adresse suivante: http://wiki.helyx.org/doku.php?id=basics4me:downloads
  • Un BugTracker est disponible à l’adresse suivante pour remonter toute anomalies ou suggestions : http://issues.helyx.org
  • Le projet est inscrit sur ohloh à l’adresse suivante: http://www.ohloh.net/p/Basics4ME.

Si vous souhaitez utiliser cette librairie pour votre développement, n’hésitez à me faire part de vos retours par mail, via le bugtracker, ou bien les commentaires du blog.

Sortie de la librairie J2ME Logging4ME

Sortie de la librairie J2ME Logging4ME

Je travaille depuis un certain temps sur différents projets J2ME, et certains d’entre eux arrivent aujourd’hui à maturité. Le temps est donc venu de les releaser et de proposer une première version publique.

La sortie de la librairie Java pour J2ME Basic4ME a déjà fait l’objet d’un post il y a quelques jours.

Aujourd’hui, c’est au tour du projet Java pour J2ME « Logging4ME » d’être présenté et releasé:

Logging4ME est une librairie de logging spécialement adaptée pour J2ME, distribuée sous license Apache, et sa première version publique est la 1.0.1.

La librairie a été pensée dès le début des développements pour être spécialement adaptée aux problématiques J2ME. Elle est donc parfaitement compatible avec l’environnement J2ME/MIDP, et propose de nombreuses fonctionnalités classiques des librairies de log:

  • Une API de log classique et simple utiliser
  • Support de tous les niveaux de logs
  • Gestion des catégories de logger par hiérarchie ou bien par mot clé
  • Gestion de l’additivité pour la gestion des catégorie de loggers par hiérarchie
  • Configuration des layout, dont l’implémentation « PatternLayout », permettant de configurer finement l’affichage des logs
  • Support des Appenders, dont le « ConsoleAppender », et le « FileAppender »
  • Possiblité d’étendre les fonctionnalités de la librairie (Custom Layout, custom Appender)

Il existe déjà différentes implémentations de gestion des log adaptées pour J2ME. Microlog fait aujourd’hui référence pour l’éco-système J2ME, cependant il faut bien trouver chaussure à son pieds. Logging4ME propose donc une implémentation nouvelle, simple et légère de gestion des logs.

Listing des projets de gestion des logs pour J2ME:

  • Microlog
  • log4me – Note: Le projet semble abandonné (Pas mis à jour depuis Août 2006)
  • Jadabs-Log4j-J2ME – Note: Le projet semble abandonné (Pas mis à jour depuis Nomvembre 2004)
  • Et bien sûr: Logging4ME

Liens utiles du projet:

  • Le site du projet est à l’adresse suivante: http://logging4me.helyx.org/ .
    Vous y trouverez toutes les informations liées au développement du projet: Sources, Javadoc, Couverture de test, métriques, rapports Maven, …
  • Un wiki est disponible ici. Il propose des informations complémentaires: Exemples, Intégration de la librairie à votre projet, …
  • Pour télécharger le projet, cela se passe à l’adresse suivante: http://wiki.helyx.org/doku.php?id=logging4me:downloads
  • Un BugTracker est disponible à l’adresse suivante pour remonter toute anomalies ou suggestions : http://issues.helyx.org
  • Le projet est inscrit sur ohloh à l’adresse suivante: http://www.ohloh.net/p/Logging4ME.
  • Si vous souhaitez utiliser cette librairie pour votre développement, n’hésitez à me faire part de vos retours par mail, via le bugtracker, ou bien les commentaires du blog.

Bookmarks Delicious

Bookmarks Delicious

Utilisant depuis quelques temps les bookmarks Delicious, j’ai décidé d’ajouter un widget Delicious pour afficher les bookmarks les plus rescents  dans la sidebar.

Vous pourrez ainsi consulter régulièrement les liens que je souhaite partage dans la sidebar du site.

Vous pouvez cependant consulter directement mes bookmarks Delicious en suivant ce lien : 

Le plugin WordPress proposant le widget utilisé pour afficher les bookmarks Delicious est disponible à l’adresse suivante:

Le blog devient polyglotte

Le blog devient polyglotte

Quelques nouveautés ont fait leur apparition sur le site depuis peu pour améliorer le contenu du blog ainsi que son ergonomie.

Ainsi le contenu des articles et le thème du blog sont maintenant proposés en français, mais également en anglais. Un sélecteur dans la sidebar du thème permet de choisir la langue de lecture du blog.

Les articles qui n’ont pas été traduits en anglais, peuvent l’être maintenant grâce à un lien « Google Translate » proposé dans l’en-tête du contenu de l’article.

Cette internationalisation du blog est possible grâce au thème multilingue  « Arras » (Pour lequel il a quand même fallu adjoindre et mettre à jour un fichier de traduction disponible ici), ainsi qu’au plugin ZdMultiLang qui permet d’internationaliser les catégories, le contenu des articles, les tags, etc…

Sortie de la librairie J2ME Basics4ME

Sortie de la librairie J2ME Basics4ME

Basics4ME est une librairie J2ME qui propose de fournir différentes fonctionnalités à ce jour manquantes dans les différentes versions de MIDP.

La version 1.0.5 correspond à la première release publique de cette librairie. Le projet est distribué sous licence Apache. La librairie tire certaines fonctionnalités directement du projet Apache Harmony, ce qui est un gage de la qualité du code fourni dans cette librairie.

Ce projet est né du besoin de regrouper au cours du développement d’un projet annexe de certaines fonctionnalités vraiment basiques manquantes dans les librairies de base J2ME/MIDP. Basics4ME n’a pas de dépendances vers d’autres librairies, les classes proposées sont donc utilisables sans difficultés.

Vous trouverez dans la librairies Basics4ME entre autre un support adapté pour J2ME des classes suivantes: :

  • ‘java.util.Properties’, permet l’accès à des fichiers de propriétés, très utile pour le support de préférences ou de l’I18N
  • ‘java.io.BufferedInputStream’, permet la lecture par buffer pour la lecture optimale de contenu
  • ‘java.io.BufferedReader’, permet la lecture par ligne d’un contenu texte

Les classes Properties et BufferedReader sont des classes nécessaires dans un très grand nombre de projets. Basics4ME fournit donc un support pour J2ME/MIDP.

J2ME imposant certaines limitations, vous ne retrouverez pas ces classes dans le pacakge java.*, mais dans le package de base du projet: org.helyx.basics4me.* . Les fonctionnalités y sont classées par packaging.

Liens utiles du projet:

  • Le site du projet est à l’adresse suivante: http://basics4me.helyx.org/ .
    Vous y trouverez toutes les informations liées au développement du projet: Sources, Javadoc, Couverture de test, métriques, rapports Maven, …
  • Un wiki est disponible ici. Il propose des informations complémentaires: Exemples, Intégration de la librairie à votre projet, …
  • Pour télécharger le projet, cela se passe à l’adresse suivante: http://wiki.helyx.org/doku.php?id=basics4me:downloads
  • Un BugTracker est disponible à l’adresse suivante pour remonter toute anomalies ou suggestions : http://issues.helyx.org
  • Le projet est inscrit sur ohloh à l’adresse suivante: http://www.ohloh.net/p/Basics4ME.

Si vous souhaitez utiliser cette librairie pour votre développement, n’hésitez à me faire part de vos retours par mail, via le bugtracker, ou bien les commentaires du blog.

Android, retour d’impressions

Android, retour d’impressions

Après quelques semaines d’utilisation, je commence à me faire une idée des capacités de la plateforme et de ses qualités ert défauts! Et il y a de quoi parler, à commencer par l’émulateur. Ce dernier m’a semblé de prime abord de très bonne facture, mais il s’impose vite la conclusion suivante: l’émulateur propose des performances catastrophiques! Le PC sur lequel je développe est un portable Athlon XP 3000+, ok il n’est pas tout neuf, mais cela reste honorable, étant donnée que l’ordinateur dispose de 1,5Go de RAM et d’un disque 5400 tpm, les performances restent donc correctes. Cependant, dès que l’émulateur est lancé, le pourcentage d’utilisation CPU monte à 95 % très facilement et le pc ne répond pas vraiment bien (C’est le moins qu’on puisse dire) . Ce qui me trouble le plus reste les performances des programmes exécutés sur l’émulateur. Je ne suis pas arrivé à des performances correctes sans faire des concessions importantes sur le design applicatif et encore avec difficulté.

Je comprend l’angoument autour de la plateforme, mais également pourquoi on voit si peu de programmes disponibles (Je ne pense pas que ce soit lié au concour Android de Google uniquement). La source du problème n’est pas tant dans la plateforme que dans les performances de l’émulateur qui ont de quoi dégouter du développement sur Android et pousser à explorer les progrès fait sur J2ME et les JVM MIDP de Sony et Nokia qui semblent d’ailleurs très intéressant.

Même si les constructeurs proposent des machines performantes, il va falloir que Google fasse un effort sur son émulateur pour proposer des performances acceptables sur son émulateur. Dans le cas contraire, il se pourrait que certains développeurs soient rebutés. Pour l’instant j’en fait parti.

Autre bémol et de taille: c’est l’obscurantisme des API de la plateforme et le peu d’explications qu’on peut trouver. On est bien trop amené à essayer de deviner comment utiliser les API.  Les API étant complètement nouvelles, elles obligent le développeur à un apprentissage nouveau. De plus les API sont complexes et accrobatiques à utiliser. Souvent élégantes dans le concept, il faut tout de même avoir de bonnes notions de développement pour les exploiter correctement.

j’appuye cette petit analyse sur un retour d’expérience réel , j’ai essayé d’exploiter des API REST simples et cela me pose trop de difficultés pour en rendre le développement sympathique: j’ai plus tendance à m’arracher les cheveux entre la complexité des API et les performances de l’émulateur.

Gageons que la plateforme est encore jeune, et des best practices Android simples et efficaces  apparaitrons, mais pour le moment ce n’est pas la panacé. Et un travail urgent est à faire sur les performances de l’émulateur. Pour am part, le constat est simple: j’arrêtele développement Android ou bien j’achète un nouveau PC…

Un dernier mot: Je suis en 1280 et l’émulateur prend une grande partie de mon écran! C’est quand même assez embêtant. Google est capable de penser des API complexe, mais pas à un détail aussi simple.

A noter: les JVM de Sony et de Nokia embarquent aujourd’hui tout un ensemble d’extensions intéressantes, sur lesquelles je reviendrais un autre fois, mais qui permettent de développer facilement aujourd’hui des applications intéressantes sans vraiment de difficultés particulières. Les problématiques d’antant n’existent plus vraiment sur MIDP aujourd’hui.

Depuis quelques jours, j’ai un W910 de Sony, et il faut dire que je suis impressionné par les progrès effectués et la diversité des API MIDP proposées (Sensor API, Content handler API, MMAPI, Bluetooth API, …). De plus, les JVM sony, par exemple, en sont à leur 8ème génération, ce qui en fait un choix de plateforme proposant de nombreux avantages (performances, stabilité, support d’API étendues, …) et un choix pour le moment bien plus sûr qu’Android.

Ma conclusion, est donc la suivante: comme de nombreuses personnes, je suis rentré dans le jeu des Buzz (IPhone /Android), mais rien ne vaut les valeurs sûres telles que MIDP ou le DotNet CF ou bien la plateforme de dev Symbian ou Palm. Attendons donc quelques mois que la plateforme Android murisse et que les premiers modèles sortent avant de trop en dire sur Android. N’oublions pas, entre autre, pour le moment qu’Android repose sur une plateforme Linux qui n’est compatible ni Symbian, ni Windows Mobile, ni Palm. Le marché est de ce fait extrêmement restreint. De la même manière que l’Iphone, le marché Android risque de rester une niche un certain temps. L’arrivée de l’IPhone et d’Android ne font que segmenter le marché et rendre la tâche plus difficile pour les sociétés travaillant dans le domaine de la mobilité. Il existe au bas mot 6 plateformes importantes: Midp, Windows Mobile, Symbian, Palm, l’IPhone et Android!

N’hésitez pas à faire part de vos impressions!

Nouvelle version du plugin maven-android-plugin

Nouvelle version du plugin maven-android-plugin

Pour rappel: le plugin maven ‘maven-android-plugin‘ propose ue intégration des outils Android avec Maven.

Après une courte utilisation du plugin en mode multi-modules, j’ai repéré un petit problème d’utilisation lorsque les commandes maven sont lancées depuis un projet parent. Ce problème hélas rendait très gênant l’utilisation en mode multi-module de maven. L’auteur a heuresement apporté les corrections nécessaire et le plugin est donc maintenant utilisable en mode multi-modules. Je conseille donc à tout le monde de l’essayer. Il a beau être dans la sandbox des plugins maven j’espère bien qu’il sera supporté à terme pour sortir de la sandbox et fournir un support complet Maven pour Android.

A noter: L’auteur du plugin indique uniquement le chemin du projet en utilisant un lien vers ViewVC, mais pour l’installer il faut bien le checkouter depuis un client subversion, puis l’installer en tapant la commande Maven: ‘mvn install‘. Cette URL est hélas visible nul part…

L’url svn du plugin est la suivante:

http://svn.apache.org/repos/asf/maven/sandbox/trunk/plugins/maven-android