Posts Tagged ‘Java’

What’s Next Paris, Jour 1

Monday, June 6th, 2011

Les 26 et 27 mai se déroulait au Grand REX une conférence java organisée par Zenika. Les intervenants se sont succédé pendant 2 jours sur des sessions de 60 à 90 minutes.

Cloudfoundry

Le premier à se prêter à l’exercice était Adrian Coyler, le CTO de springsource.
Dans sa présentation, il insiste sur les nouveaux besoins : de nouveaux modes d’interactions, de nouvelles façons d’accéder aux applications et donc de nouvelles façons de développer (langages récents, frameworks innovants) et déployer. Ainsi la virtualisation permet de gérer les besoins de dimensionnement des applications beaucoup plus rapidement. Les applications “sociales” sont aussi de plus en plus nombreuses.

Ainsi il présente le concept de PaaS et l’offre dans ce sens de springsource vmware : Cloud Foundry. Clound Foundry est open source (cloudfoundry.org), supporte plusieurs langages (Java, Grails, Rails, Ruby, JavaScript avec node.js). Clound Foundry propose également plusieurs services tels que MySql, MongoDB, Redis, …

3 formats sont proposés :

  • le cloud public, par exemple pour déployer des applications ‘sociales’
  • un cloud privé, que l’on peut installer sur ses serveurs
  • puis le micro cloud que l’on peut installer sur son poste de travail pour tester !

Il nous montre ensuite comment interagir avec le cloud depuis une interface en lignes de commandes ou bien une vue de STS (l’IDE springsource basé sur eclipse).

Une réserve est tout de même émise sur la ‘scalabilité’. Ce n’est pas parce qu’une application est sur le cloud qu’elle est ‘scalable’. Le ‘design to scale’ prend alors toute son importance.

Pour conclure je reprendrai son “PaaS, this is where things are going”.

Orion

Boris Bokowski, ingénieur chez IBM et leader technique sur eclipse, a commencé sa présentation par le constat que beaucoup de choses étaient aujourd’hui réalisées dans le navigateur web : les spécifications, le suivi d’anomalies, la consultation du contrôle de version, la navigation dans le système de fichier,…
Bref, tout sauf l’IDE !

Il parle ensuite de la difficulté de développer et d’intégrer des plugins dans les IDE. Pareil pour les compilations en script avec lesquelles les dépendances sont difficilement gérables.

C’est donc le pari d’Orion que d’amener l’IDE dans le navigateur. Très vite, Boris passe à la démonstration pour nous présenter les fonctionnalités déjà implémentées.
Ainsi on trouve la classique indentation de code, le formatage, la complétion de code (simpliste), le debugging, la gestion de configuration (avec le support de git), …

L’intérêt majeur est en fait l’intégration très simplifiée de plugins grâce aux standards du web. Ainsi on peut utiliser des services proposés par d’autres sites comme google page speed, des générateurs de css, du formatage de code, des validateurs de normes de développement, des outils de génération d’expressions régulières, bien sûr le debugging avec par exemple firebug sous firefox,…
Il apprécie aussi, avec le sourire, le fait que la gestion des onglets est maintenant gérée par l’éditeur du navigateur et non plus par l’IDE.

Orion propose une version bêta publique pour chaque millestone et prévoit une première release pour juin.

Clojure

Howard Lewis Ship, le créateur d’entre autres Tapestry, HiveMind et Cascade, a fait une présentation du langage fonctionnel Clojure, qui s’exécute dans la JVM. La session était d’un haut niveau et la syntaxe du langage ne rendait pas la tâche aisée pour le néophyte.
C’était donc une première approche de ce langage avec quelques exemples de fonctions pourtant répandues dans ce genre d’exercice, mais qui auraient tout de même mérité que l’on s’attarde un peu plus sur chacun d’entre elles.

Gestion de la mémoire

Une session sur la gestion de la mémoire, du processeur jusqu’au langage java en passant par l’OS, qui m’a laissé perplexe (même si cela m’a rappelé quelques cours d’architecture). Aux dires des personnes qui avaient invité Jevgeni Kabanov, le CTO de JRebel, c’est au 4ème visionnage de la session que l’on comprend vraiment ce que raconte cet intervenant survolté.

SQLFabric

L’après-midi a continué par la présentation de SQLFabric. J’ai surtout retenu qu’aujourd’hui, tout le monde ne développait pas un site qui gère des centaines de milliers d’utilisateurs avec des péta octets de données et donc qu’il ne fallait pas tomber dans le choix systématique et à la mode du NoSQL.

WebSockets

La journée s’est finie par une brillante présentation des WebSockets par Brad Drysdale de chez Kaazing.

Brad commence par le constat que nos applications web ne font pas du temps réel, ou alors de façon vraiment pas efficace et/ou très coûteuse en bande passante ou encore en passant par des plugins. Mais ces solutions de contournements ne sont pas prêtes pour le “cloud” car elles ne sont pas “scalables”.

L’enjeu est donc d’avoir des connexions “full duplex” entre les clients et le serveur et non plus comme aujourd’hui simplement “half duplex” en faisant du polling, du long polling ou encore du streaming.

La réponse à toutes ces problématiques est donc l’utilisation des websockets, qui viennent avec HTML5.

En effet le mécanisme implique une consommation drastiquement diminuée de la bande passante (2 octets en plus par trame une fois le protocole négocié contre au minimum 800 octets pour chaque trame HTTP).
Les autres avantages abordés sont la standardisation du protocole, du full duplex sur une seule socket, le support des firewalls, proxy et routeurs sans problème, la possibilité de récupérer des données depuis plusieurs sites, un seul port ouvert (le même que HTTP), et enfin la possibilité de sécuriser les flux comme HTTPS le fait, via TLS.

Et voilà, un an déjà !

Saturday, April 16th, 2011

Anniversaire Duchess FranceLe 14 Avril, Valtech accueillait l’anniversaire de Duchess France.

Une soirée très animée organisée principalement autour du Trivial Java, un jeu basé sur des questions de la certification Java et quelques thèmes plus ouverts (Veille Techno, Histoire, Frameworks, Agile). Il a permis à chacun de réviser ses connaissance et d’apprendre tout en s’amusant. Une technique très efficace.

Des cadeaux ont également été offerts à quelques chanceux et l’équipe gagnante est repartie avec des jolies mugs Duchess France.

Duchess France a aussi annoncé l’organisation d’un événement récurrent, La Marmite dont le but sera de mettre les mains dans le code, participer à des projets Open Source et améliorer sa pratique des outils. Bien sûr les autres actions, l’Avant JUG, les groupes de travail, le blog, le calendrier restent d’actualité.

Vous trouverez plus d’information sur le site de Duchess France.

Premier anniversaire de Duchess France

Friday, March 25th, 2011

Le 14 Avril, Valtech accueille le premier anniversaire de Duchess France dans l’auditorium du 103 rue de Grenelle.

Cette communauté a été crée dans le but de rendre les femmes qui font du développement Java plus visibles et pour contribuer à lutter contre certains stéréotypes. En un an Duchess France a permis à des dizaines de développeuses Java de se mettre en contact, de s’entraider et favorisé leur intégration dans d’autres communautés de développeurs Java telles que le Paris JUG. Duchess France est ouverte à tous.

Cette première soirée organisée par Duchess France commencera à 19h par une courte présentation des projets pour l’année à venir puis place à une série de jeux sur Java et à des surprises jusqu’à 22h.

Vous trouverez toutes les informations et le lien pour l’inscription sur le site de Duchess France. Cette soirée est ouverte à tous les passionnés du langage Java, hommes ou femmes.

Venez améliorer vos connaissances Java en vous amusant !

 

 

 

 

 

Gae : Leçons pour celui qui passera après moi ou si vous vous intéressez à GAE, Maven, Jersey, Rest …

Monday, January 24th, 2011

Je vais vous faire part dans ce nouveau billet de mon incommensurable expérience sur GAE et d’un écosystème particulier, le mien. Pour reformuler, ce que je vous propose ici est un REX. J’ai toujours adoré cet acronyme, très parlant, d’une phonétique explosive. C’est le genre de document qui revient vous mordre même une fois que vous l’avez mis à la niche. Pour ceux qui ne connaissent pas, c’est un document que l’on vous demande de rédiger quand vous vous êtes planté pour ne pas vous planter une deuxième fois. De manière plus positive, on a toujours dit que c’est en tombant que l’on apprends à marcher.
(more…)

Retour sur Devoxx 2010

Wednesday, November 24th, 2010

Valtech était à Devoxx 2010, une longue semaine de travail et de discussion et un retour d’Anvers fatiguée mais bourrée d’idées.

Emmanuel Bernard, Hibernate

Tout d’abord félicitations à Stephen Janssen et à l’équipe de Devoxx : un cinéma avec des fauteuils confortables, une logistique pour 3 000 personnes, des conférences intéressantes sur des sujets variés et la retransmission sur Parleys pour que ceux qui n’ont pas fait le déplacement puisse profiter des meilleures présentations.

Devoxx 2010, c’est un programme quotidien très chargé (5 jours de 9h30 à 22h pour les plus assidus et jusqu’à 6 salles en parallèles) donc énormément de sujets et je ne reviendrai pas sur tout en détail.

C’est aussi beaucoup de discussions entre les sessions et plus tard en soirée sur les langages, notre métier et diverses choses qui font que des réseaux se forment.

Que contenait la fournée 2010 ?

D’abord les annonces officielles d’Oracle sur Java EE 6 et Java SE 7 ainsi que sur le devenir d’Open JDK. Open JDK restera et Java sera plus simple, plus pratique et plus facile à utiliser. Plusieurs présentations JPA/Hibernate viennent compléter ce tableau. Les évolutions les plus attractives de Java SE comme le projet Lambda (langage fonctionnel) ou le projet Jigsaw (modularité et gestion des dépendances) sont reportés à Java SE 8. La vie semble reprendre après une période difficile.

Un gros thème NoSql cette année, même si ça n’est pas strictement du Java. Cloudera (Hadoop, HBase), Cassandra, MongoDB, Infinitest et plusieurs grands site Web utilisateurs de bases NoSql avaient fait le déplacement. Des présentations assez inégales mais qui donnaient l’opportunité aux développeurs Java de découvrir cet univers. Dans ce thème aussi une présentation très intéressante des fondamentaux du cache distribué et Ehcache The essence of Caching.

Autre gros thème cette années, les interfaces utilisateur avec des sujets sur Android, HTML5 et Flex avec la même préoccupation qui revient constamment “On n’est pas obligé de faire des IHM moches avec Java”. Une très belle présentation de Romain Guy et Chet Haas Dive into Android avec du code en live et des explications sur le graphisme avec Android.

DevOps

Bien sûr quelques sujets sur les fondamentaux Java sur les bonnes pratiques du développeur, avec un zeste de Cloud cette année? J’ai un peu zappé car d’autres sujets mon plus intéressé mais j’ai un peu regretté de n’avoir pu accéder à aucune  des présentations de Joshua Bloch (Effective Java, Java Puzzle), trop de monde à chaque fois. Un peu de Scala et de Groovy/Grails mais les langages n’étaient pas très représentés.

Dans  les présentations plus processus une mention spéciale pour From Dev/Ops to DevOps. Amazing the difference one character can make (en photo). DevOps est un mouvement émergeant qui vise à rapprocher les équipes de développement et les opérations (la production en français) pour mieux résoudre les problèmes de déploiement et de suivi de production. Le sujet avait aussi été abordé au CITCON en relation avec le Continuous Deployment (aussi présent à Devoxx mais on doit faire des choix vu le nombre de sujets et je ne l’ai pas vue). On en reparlera !

Et pour finir un peu d’humour les derniers jours avec les enregistrements Live des podcasts Java Posse et Les Cast Codeurs.

On attend avec impatience l’édition 2011, mais en attendant voilà des dizaines de pistes à explorer avant l’années prochaine.

Le Paris JUG fête ses deux ans avec une soirée spéciale !

Friday, February 5th, 2010

juggyanniversaireLe Paris JUG fête ses deux ans avec une soirée spéciale !

Le Paris JUG est le groupe d’utilisateurs du langage Java qui se retrouve mensuellement à Paris.

Cette soirée aura pour thème l’Open Source en France. Les représentants de Obeo, XWiki, Développons en Java, jCaptcha, eXo Platform, jax-doclets, Play! framework serons là pour vous présenter leur projet et vous pourrez les retrouver sur les stands pour discuter avec eux.

La  soirée d’anniversaire aura lieu le Mardi 9 février, de 18h45 à 23h00 exceptionnellement dans les locaux de la Sorbonne Paris IV dans le 17ième. Elle sera suivie d’une 3ième mi-temps qui aura lieu au Dôme de Villiers (4 Avenue de Villiers, 75017 Paris).

N’oubliez pas de vous inscrire 2ième anniversaire du Paris JUG pour l’accès à la conférence et si vous le souhaitez pour la 3ième mi-temps.

L’équipe du JUG vous attend nombreux et nombreuses pour cette soirée exceptionnelle.

2ème anniversaire du Paris JUG

Tutoriel Android : Mise en place de l’environnement de développement Android 1.6r1 Eclipse Galileo (3.5)

Thursday, October 22nd, 2009

Ce tutoriel a pour objectifs de mettre en place un environnement de développement Android 1.6 sous Eclipse.
A la fin de ce tutoriel vous saurez :

  • Mettre en place Eclipse 3.5 avec le plugin Android
  • Créer une application Android
  • Déployer une application Android dans l’émulateur de votre choix

Installer Eclipse Galileo

Rien de plus simple, il suffit de le télécharger à http://www.eclipse.org/downloads/ et de choisir la version “Eclipse IDE for Java EE Developers” pour votre système d’exploitation.
Une fois téléchargé, pour l’installer il vous suffit de le dézipper !

Installer Android SDK 1.6r1

Commencez par vous rendre à l’url : http://developer.android.com/sdk/ et choisissez la version correspondant à votre plateforme.
Pour l’installer, c’est comme Eclipse, il suffit de dézipper l’archive dans le répertoire de votre choix; dans le cadre de ce tutoriel, j’appellerai ce répertoire $ANDROID_HOME_DIRECTORY.

Astuce : pour avoir accès aux outils Android dans votre “Path” (variables d’environnement), vous pouvez ajouter le répertoire $ANDROID_HOME_DIRECTORY/tools à votre Path. Sous Windows : dans les propriétés de l’ordinateur(raccourci : Windows+Pause ou clique droit sur le poste de travail -> propriétés) cliquez sur l’onglet “Avancé”, de là, sélectionnez “Variables d’environnement” et ajoutez votre chemin d’installation $ANDROID_HOME_DIRECTORY/tools à votre path.
Vous pourrez ainsi avoir accès aux outils android dans toute fenêtre de commande.
Pour tester, ouvrez une fenêtre de commande : Démarrez -> Executer->cmd, et tapez adb, vous devriez avoir ceci :

C:\Documents and Settings\anthony.dahanne>adb
Android Debug Bridge version 1.0.20
 
-d - directs command to the only connected USB device
returns an error if more than one USB device is present.
-e - directs command to the only running emulator.
returns an error if more than one emulator is running.
-s - directs command to the USB device or emulator with
the given serial number
-p - simple product name like 'sooner', or
a relative/absolute path to a product
out directory like 'out/target/product/sooner'.
If -p is not specified, the ANDROID_PRODUCT_OUT
environment variable is used, which must
be an absolute path.
devices - list all connected devices

Si vous ne voulez pas / pouvez pas mettre à jour votre chemin, vous pourrez toujours accéder à l’outil adb par exemple en tapant dans la fenêtre de commande : $ANDROID_HOME_DIRECTORY/tools/adb (en remplaçant ADB_HOME_DIRECTORY par votre répertoire d’installation du SDK Android)

Installation du plugin Eclipse Android SDK

Démarrez Eclipse, et créez un nouveau workspace en choisissant un répertoire au choix (le workspace contiendra tous vos projets)
Juste après, rendez vous dans “Help->Install new software…”
Cliquez sur “Add new site” pour ajouter le site du plugin Android : choisissez le nom que vous souhaitez, et l’url suivante : https://dl-ssl.google.com/android/eclipse/

Ceci étant fait, sélectionnez les 2 cases : DDMS et android tools for eclipse, cliquez sur next, acceptez la licence et c’est fini !

Ecllipse vous demande de redémarrer, acceptez, et au redémarrage d’Eclipse configurez votre plugin Android en allant dans Window->Preferences->Android, de là indiquez votre $ANDROID_HOME_DIRECTORY
Vous pouvez maintenant créez un nouveau projet Android 1.6

Astuce : si vous utilisez eclipse galileo derrière un proxy, vous serez confrontés à des problèmes de connexion, pour les résoudre, consulter : http://blog.dahanne.net/2009/07/01/eclipse-galileo-3-5-problemes_proxy/
Astuce : si vous préférez, vous pouvez télécharger le plugin sans passer par le “Update Manager d’Eclipse”, dans ce cas là, décompresser à la racine de votre instalaltion d’Eclipse le’archive suivante : http://dl.google.com/android/ADT-0.9.3.zip

Au redémarrage d’Eclipse, il vous sera demandé de configurer Eclipse pour qu’il sache où se trouve le SDK Android :

Pour cela, vous devez vous rendre dans Window->Preferences->Android et indiquer le répertoire de votre SDK
C’est bon, vous êtes prêt pour créer votre premier projet Android !

Création de votre premier projet HelloAndroid

Nous allons pour cela utiliser le plugin eclipse Android.
Cliquez sur File->New->Android Project (ou alors File->New->Project et sélectionner Android Project)
Rentrez les informations de votre projet, en particulier, choisissez la version 1.6 de l’API (la plus récente à ce jour, Donut); cependant, sachez que tous les possesseurs de téléphone Android n’ont pas encore mis à jour vers Donut, vous pouvez alors choisir la version 1.5 (Cupcake) pour un maximum de compatibilité

Astuce : vous aurez sans doute remarquer la présence de 2 autres options : Google APIs; ces versions, embarquent, en plus des librairies standards d’Android, les APIs des produits propriétaires Google, comme, par exemple, l’API Maps (si vous voulez afficher une carte Google Maps dans votre application, vous devrez donc choisir Google Api)

Cliquez sur “Finish”, le plugin vous génère alors votre projet, dans mon cas HelloAndroid
Nous allons commencer par observer la classe HelloAndroid.java, qui constitue l’unique activité (considérez pour l’instant qu’il s’agit d’un écran; est une activité une classe qui hérite de Activity) de votre projet :

package com.valtech.helloandroid;
 
import android.app.Activity;
import android.os.Bundle;
 
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Astuce : vous vous rendrez compte, en suivant la classe Activity avec ctrl+click que vous n’avez pas accès au code source des classes Android.
Or le projet est open source, il serait dommage de se passer d’une telle aide !
Pour voir le code source sous eclipse, telechargez ce fichier zip : http://rgruet.free.fr/public/android-1.5-cupcake-src.zip (il contient les sources d’Android 1.5) et renommez le en sources (sans suffixe de nom de fichiers)
Ensuite, copiez le dans $ANDROID_HOME_DIRECTORY/platforms/android-1.5

Et c’est fini ! Essayer donc un ctrl+click dans Eclipse sur n’importe quelle classe du framework Android, et vous verrez le code source ! (après éventuellement un redémarrage d’Eclipse)

Idem pour la version 1.6, vous pouvez télécharger les sources de cet emplacement : http://rgruet.free.fr/public/android-1.6_r1-donut-src.zip (à renommez en sources dans $ANDROID_HOME_DIRECTORY/platforms/android-1.6)

Le code de HelloAndroid.java stipule qu’à la création de l’activité, on va définir son contenu avec la mise en page (layout) main.

Astuce : R.layout.main est défini dans une classe générée, R qui se présente (pour le moment) ainsi :

public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
}

Toutes les valeurs définies dans ce fichier représentent des ressources, souvent définies sous la forme de fichiers XML (ainsi la valeur main correspond à main.xml dans le dossier res/layout)
Pourquoi est ce fait ainsi ? car les ressources sont traduites en code compilé, ce qui optimise l’empreinte mémoire de vos applications.

Le layout (mise en page) de votre activité est donc définie dans res/layout/main.xml :

Je vous laisse retrouver la valeur de @string/hello dans les ressources !
On voit ici que un TextView (un label) a été défini, ainsi, lors du déploiement de HelloAndroid, on devrait s’attendre à voir un écran avec un label

D’ailleurs pour que cette activité soit activée, elle doit être référencée dans le manifest de votre projet : AndroidManifest.xml

Vous l’avez compris, le manifest est le fichier le plus important de votre projet : il référence toutes vos activités (et bien plus !)
Nous pouvons maintenant passer au déploiement du projet dans un émulateur.

Déploiement de votre projet Android

Votre projet peut être déployé sur un téléphone équipé d’Android, ou sur un émulateur.
Pour celà, cliquez droit sur votre projet et sélectionnez “Run as Android Application.”

Comme il s’agit de votre premier déploiement, le plugin Android vous propose de créer une nouvelle instance d’émulateur: un AVD (Android Virtual Device) :

Une fois votre AVD paramétrée, cliquez sur “Create Avd”, votre AVD est créée, vous pouvez alors la sélectionner pour déployer votre projet sur cette dernière ! (après éventuellement avoir fait un “Refresh”)

Astuce : il n’est pas nécessaire de redémarrer votre AVD à chaque modification de votre projet !En cliquant sur Run as Android application, votre projet se re déploiera dans votre AVD existante.

Astuce : pour changer l’orientation de votre AVD , composez Ctrl+F11
Astuce : il existe plusieurs “skins” pour votre AVD : en effet, si vous souhaitez créer votre AVD avec une skin différente, par exemple celle proposée par Archos pour leur futurs tablet pc android, vous pouvez télécharger la skin : http://appslib.com/download/a5_horiz.zip, la dézipper dans $ANDROID_HOME_DIRECTORY/platforms/android-1.5/skins

En redémarrant Eclipse, et en cliquant sur l’icone du téléphone, vous pourrez créer une nouvelle AVD qui correspondra à une cible Android avec une plus haute résolution que celle d’un téléphone: idéal pour tester vos applications sur plusieurs cibles différentes !
Pour modifier votre configuration de lancement, allez dans Run-> Run configurations …, et sous l’onglet Target de votre projet, vous pourrez choisir quelle sera l’émulateur à lancer par défaut !

Astuce : vous pouvez aussi renseigner d’autres options à votre émulateur, comme la vitesse du CPU, un éventuel proxy à lui préciser , etc… dans le champ “Additionnal Emulator Command Line Options”, toutes les options sont sur http://developer.android.com/guide/developing/tools/emulator.html
Astuce : si votre projet Android est défini comme étant un projet android 1.6, il faut le déployer dans un AVD (émulateur) version 1.6 ! (un projet Android 1.5 se déploie aussi bien dans un AVD 1.5 que 1.6)

Félicitations ! Votre premier projet, HelloAndroid, est déployé dans votre émulateur !

Références :

Cours du soir Android : la présentation et les TPs

Thursday, October 22nd, 2009

Mardi 27 Septembre 2009, j’ai animé un cours du soir (durée 2h. environ) dans les locaux de Valtech, à destination des consultants Valtech Technology Consulting.
On était presque une dizaine, et dans une atmosphère conviviale et intéressée (plusieurs membres de l’audience avait leur téléphone Android sur eux, çà aide !), j’ai déroulé ma présentation, dont voici les diapositives (format  OpenOffice OpenDocument sous licence Creative Commons) et les TPs :

  • cours_du_soir_android_22_09_2009
  • workspace_android
  • En gros, nous avons parcouru :

    • l’environnement de développement sous Eclipse
    • les activités et les intents
    • le broadcastReceiver de SMS

    Le prochain cours du soir sera présenté par Sadek Drobi et parlera de Scala, vivement la semaine prochaine !

    Jazoon 09 : 3ème et dernier jour, Jeudi 25 Juin

    Thursday, June 25th, 2009

    Ouverture de la journée, 9:00 – 9:45 par Adrian Colyer

    Cette présentation avait pour but de nous décrire ce qu’il est probable d’arriver dans l’écosystème Java pour les années à venir, car Java est bel et bien là pour durer en entreprise.
    Un axe de progression présente les langages dynamiques comme Groovy, JRuby, Scala et Clojure.
    Parmi ceux là, Groovy est peut être le mieux placé car c’est celui qui s’intègre le mieux à la JVM, la réutilisation de classes Java y est plus aisée. (il faut aussi garder à l’esprit que SpringSource détient désormais les projets Groovy et Grails).
    Pour les frameworks Web du futur sur la JVM, le présentateur mise sur Grails (qui repose sur Groovy), Rails (qui repose sur Ruby et donc JRuby) ou encore Lift (écrit en Scala); il a aussi mentionné l’avantage de Grails qui s’intègre à Spring facilement, Spring étant d’ailleurs vastement déployé en entreprise, cela risque de faciliter l’adoption massive de Grails…
    Enfin, il a terminé sa présentation en évoquant OSGi et Spring DM : le futur des applications d’entreprise se situe certainement dans le “nuage”, à savoir des applications facilement déployables et facilement dimensionnables (pouvoir passer de 1 à 1M d’utilisateurs)

    The android runtime environment, 10:30 – 11:20, by Joerg Pleumann

    L’orateur a d’abord présenté la plate forme Android comme une alternative à Windows Mobile et Palm.
    Elle est basée sur un noyau linux, avec les drivers nécessaires (audio, video, etc…)
    Ensuite, vient au dessus le runtime android et des librairies (de plus ou moins haut niveau).

    Dalvik VM

    La dalvik VM tourne sur un CPU entre 250 et 500MHz, avec au moins 64 Mo de Ram (comme un PC de 1999)
    La VM Dalvik est plus efficace que la JVM standard car elle utilise des registres explicitement.
    L’auteur nous a comparé le résultat obtenu par une compilation d’un bout de code Java vers du bytecode Dalvik et vers du bytecode JVM : c’est sans appel, le résultat est bien plus léger (30% de lignes en moins) sur Dalvik.
    Un binaire Dalvik est stocké sous forme de fichier DEX; un fichier Dex peut contenir plusieurs classes Java (réduisant ainsi les imports), et n’est pas compressé dans un Jar.
    Il vient de sortir aujourd’hui un SDK pour utiliser JNI (et donc exécuter du code natif ARM) sur la plateforme Android, la plateforme elle même utilise JNI pour toutes sortes d’optimisations (ré implémentation des regex, de la sécurité, etc..)

    Les “Core Libraries”

    dalvik vm specific libraries : dalvik.*
    java compatibility libraries : java.* et javax.*
    des librairies apache (surtout pour http) : org.apache.*
    Ces librairies sont moitié issues du projet Apache Harmony, moitié écrites exprès.
    On peut considérer ces librairies comme fournissant un sous ensemble de J2SE 5.0.
    On peut résumer en disant qu’avec Android on peut ré utiliser nos connaissances sur le langage et sur les outils (enfin, de mon expérience Android certaines choses, comme les composants sont à découvrir, d’ailleurs la prochaine présentation en dit plus long dessus !)

    Android Application Model, 11:30 – 12:20, par Dominik Gruntz

    Dans Android, il y a 4 types de composants : les activités, les services, les content provider et les broadcast receivers.

    Activity

    Il s’agit typiquement d’un écran, dont la définition tient juste en une classe, utilise les intents pour communiquer avec les autres activités : intent qui peut être lancé en attendant un retour, ou pas.
    Ainsi, on peut définir des intent filters qui permettent de décrire quelle est l’application qui rattrape tel intent. (par exemple le navigateur rattrape l’intent URL)
    Il existe d’ailleurs à ce propos une spécification en cours sur les intents : http://www.openintents.org
    Chaque activité a un cycle de vie contenant les étapes suivantes : new, running, paused, stopped, killed; il existe d’ailleurs des méthodes pour chaque étape (onCreate, onStop, etc…)
    Pour chaque activité, un process avec un unique thread est créé; les actions sont dispatchées par Looper.loop sur une queue.
    Si une activité ne répond pas à un événement en moins de 5sec, le système détecte une anomalie et propose à l’utilisateur de tuer l’application.

    Service

    Une application, qui contient plusieurs composants, est contenue dans un APK (android package)
    Un service tourne en tâche de fond, et peut communiquer avec des activités (si elles sont issues du même package, la communication est intra process, sinon, elle est inter process et nécessite que le service soit déclarer dans un fichier AIDL : Android Interface Definition Language)

    Content Provider

    Fournit du contenu, c’est l’unique moyen d’échanger des données (que ce soit en base SQlite, sur fichier ou sur un stockage distant) entre applications Android.

    Scalable Agile Web Development: REST meets JCR meets OSGI, par Michael Marth

    Dans cette présentation, nous avons pu voir en action le framework web Apache Sling, qui vient de sortir de l’incubateur Apache.
    Un bref rappel de JCR (Java COntent Repository, JSR 270) : est utilisée pour accéder à du contenu stocké soit sur base/système de fichiers/etc…; le contenu peut être versionné, il se présente sous la forme d’un noeud ayant des droits et appartenant à 1 groupe.
    Apache Sling présente une interface REST, la possibilité de scripter ses pages en langages dynamique (Ruby, Groovy, Scala, etc…), est déployé dans OSGi et puise son contenu dans un repository JCR !
    Pendant la démo, les démonstrateurs ont pu mettre en avant les possibilités de Sling : branchement/débranchement de bouts du framework (grâce à OSGi), création/consommation du contenu en utilisant du REST, ajout de contenu via un explorateur de fichiers monté sur Webdav (merci JCR) et dynamisation de pages HTML avec du Groovy.
    Belle démo, çà donnait vraiment l’impression de quelque chose facile à utiliser, propre (grâce aux URLs REST qui ressemblent comme deux gouttes d’eau aux URI du contenu sur JCR); bref un projet à suivre !

    The charm of Mockito: Test Spies in action, 14:30 – 15:20, par Szczepan Faber

    Dans l’audience, une majorité d’utilisateurs d’EasyMock ( la moitié des 60 spectateurs dont moi !), 2 ou 3 utilisent JMock, 5 utilisent Mockito.
    Szczepan, l’auteur de Mockito a alors codé , en TDD, une classe dictionnaire, qui dépend d’un traducteur.
    Qui dit dépendance dit difficulté pendant les tests; enfin quand on utilise pas de frameworks de mock.
    L’orateur a alors commencé à écrire son test de dictionnaire, en mockant le traducteur avec EasyMock et en l’injectant dans la classe dictionnaire.
    On retrouve alors le createMock/expect/replay/assert/verify classique d’EasyMock; il a ensuite d’ailleurs refactoré son code pour déplacer les phases de replay et de verify dans une méthode annotée @After ainsi que la pahse de création d emock dans un @Before (selon lui beaucoup d’utilisateurs d’EasyMock font çà pour ne pas sans cesse répéter ces phases dans chaque test de la classe de Test).
    Avec Mockito, çà donnait plutôt du mock/when/assert/verify, un peu plus sympa, d’autant plus que l’orateur utilisait des tempaltes eclipse, qui, à l’écriture d’un test, écrivaient en commentaires : given/when/then, les piliers du BDD.
    Alors qui est le meilleur ? Mockito ou EasyMock ?
    Et bien Mockito s’en tire avec un léger avantage :
    *la syntaxe, plus concise et plus proche du BDD, permet aux développeurs de ne pas s’emmêler les pinceaux avec une syntaxe difficile dont on ne se souvient pas toujours…
    *le “good point of failure” de Mockito joue en sa faveur : quand votre test échoue, dans Eclipse on peut retrouver tout de suite la ligne en échec et la raison de l’échec est claire.
    C’est tout ? et bien fondamentalement les 2 sont d’excellents frameworks de Mock, Mockito a quand même l’avantage d’être jeune (entre 1 et 2 ans) et déjà complet, et en plus il fait des émules dans d’autres langages (Python, javaScript, C++, etc…)
    Szczepan a conclus en disant ces quelques mots : “Faites du TDD et d’excellents tests avec les outils qui vous conviennent”.
    Je crois qu’on est tous d’accord !

    Eclipse Galileo and JBoss Tools, 16:30 – 16:50, par Max Andersen

    Galileo (Eclipse 3.5) est une version majeure d’Eclipse.
    A ne pas rater lors de sa sortie : (en fait il est déjà téléchargeable sur eclipse.org !)

    • Eclipse Memory Analyzer : un outil pour analyser la consommation mémoire d’Eclipse, à utiliser conjointement avec Jmap
    • Le nouvel éditeur XML /XSL : avec requetage XPath des noeuds
    • Le nouveau P2 (le eclipse update manager) : çà y est, il marche, et bien en plus ! Même en mode déconnecté il n’est plus nécessaire de dézipper les plugins et features (dropins), téléchargeables une archive compatibles avec P2, sur le site de votre plugin !

    Jazoon 09 : sessions du Mercredi 24 Juin

    Wednesday, June 24th, 2009

    Ces sessions ont eu lieu durant Jazoon 09, le Mercredi 24 Juin 2009. You can read the original english transcript here.

    Ouverture de la journée par Danny Coward , architecte en chef chez Sun 9:00 – 10:00

    Bon je suis arrivé un peu en retard mais voici de quoi çà parlait :

    Java 7

    Nouvelles fonctionnalités Java SE 7 (sort en 2010) : modularité , l’opérateur null safe ?. qui permet de ne pas avoir de NullPointerException quand on fait : MonObjet?.monAttribut, une nouvelle API pour java.io (çà a l’air d’être très bien : on parcoure un répertoire et on est rappelé par une callback lorsque l’on rencontre un fichier avec tels attributs, par exemple); vous voulez en savoir plus ? c’est par là : http://openjdk.java.net/projects/jdk7

    Java FX

    La nouvelle version est Java FX 1.2, elle tourne sur tous les OS (dont Linux et Solaris, une télé LG, des téléphones qui vont sortir dans quelques mois), fournit des nouveaux composants graphiques (que l’on peut personnaliser avec des feuilles de style CSS), de nouveaux layouts, et une meilleure performance.
    On a eu droit, en fin de présentation, à des démonstrations d’applications JavaFX : sympa, surtout avec les composants videos (si vous avez vu la démo de parleys.com en Java FX au 1er anniversiare de ParisJug, vous avez déjà vu çà !)

    OSGi and Java Modularity, 10:30 – 11:20, par Peter Kriens

    Une application Java, de base, n’est pas modulaire ! pourquoi ? car on ne peut pas cacher les interfaces au runtime, et il est souvent inefficace de fournir un système de protection…
    Avec OSGi, on peut cacher les interfaces de son choix, et, en utilisant le MANIFEST de son jar, on peut spécifier explicitement les interfaces exportées.
    Avec un bundle OSGi( un jar !) on peut spécifier dynamiquement quels sont les autres bundle dont on dépend; si ce dernier n’est plus disponible, OSGi enlèvera ce chemin de dépendance, s’il redevient disponible, OSGi rétablira cette dépendance .
    Un problème de taille : d’autres implémentations de modularité existent en Java (Guice, Jigsaw) et dans la JSR 294, il n’y a pas de choix précisé… La conséquence pour le programmeur ? Problèmes de dépendance entre bundles OSGi / Guice/ Jigsaw à venir…

    Next generation Wikis: Mixing Content-Oriented Applications with Wikis, 11:30 – 12:20, par Vincent Massol

    Avant, il y avait : Wiki 1.0 : juste pour du texte…
    Maintenant, avec Wiki 2.0, il y a : images, videos, comments, notes, les données peuvent être structurées ou non, provenir de différents sites webs, etc…
    Ensuite Vincent a présenté une démo de XWiki : en particulier comment créer une application pour saisir ses congés : un peu de code (velocity mais aurait pu être groovy apparemment) pour créer le formulaire ainsi que le modèle de cette application, reste à savoir à qui s’adresse cette fonctionnalité : pour des fonctionnels ou des développeurs ? (j’ai pas pensé à poser la question…)
    Pour conclure, Vincent nous dévoilait les prochaines fonctionnalités de XWiki : fusion entre CMS et wiki, une vision mobile, des connexions aux réseaux sociaux, collaboration temps réel (comme dans google wave), etc…

    JavaFX Rich Internet Applications connected to GlassFish Java EE 5 services, 16:00-16:20, par Ludovic Champenois – Sun Microsystems

    Après avoir présenté la console d’admin de Glassfish V3 et nous avoir rappelés les principes de REST (méthodes HTTP, les ressources, etc…) ainsi que les annotations REST dans Java EE6; Ludovic a présenté les quelques lignes de code Java nécessaires pour créer un service REST (code Java EE6 à l’aide de Netbeans bien sûr), comment le tester à travers curl (curl -HAccept:application/xml http://localhost/domain), un navigateur ou encore… la console d’admin de GlassFish V3 (Admin Backend Tester)
    Enfin, écriture d’une application JavaFX qui consomme ce service, en quelques lignes de Java FX Script le tour était joué !
    La présentation s’est terminée avec une présentation d’applications JavaFX … qui a dit que Sun mettait JavaFX en avant ? ;-)

    JavaFX / Android: Competing technologies or the ideal partnership? , 16:30 – 16:50 par Mike Mannion and Andreas Hölzl

    Cette présentation a été présentée comme une pièce de théâtre (un peu comme la présentation que j’ai co animé avec Yannick Ameur et Stéphane Malbéqui aux XP Days : “Tdd avec ou sans mocks”) : 2 développeurs se retrouvent autour d’un bon café à comparer leurs applications (en fait 2 fois la même : permet de se connecter avec des services web flickr, last fm, youtube) : l’une créée en JavaFX, l’autre créée avec Android.

    • Interface graphique : en Java FX faite avec PhotoShop ou Illustrator par des designers, avec Android, décrite en XML
    • Interface Graphique (encore) : Android fournie BEAUCOUP plus d’API de hauts niveaux que JavaFX : ici 1 galerie était utilisée
    • Langage : il faut apprendre JavaFX Script, alors qu’avec Android, c’est du Java 5 (avec des packages en moins, certes…)

    Pour finir, les orateurs nous ont confié que si Sun disait vouloir supporter Android il y a un an, et bien… toujours aucun support à l’horizon ! Quoiqu’il en soit, JavaFx Mobile ne semble vraiment pas faire le poids en terme d’APIs face à Android !

    Jazoon 09 c’est pas fini, çà continue demain !