Tag: Java
Bootcamp d'Initiation Android au GDG Rennes

Vendredi dernier je suis allé à Rennes pour animer le premier événement du tout nouveau GDG Rennes, un bootcamp d'initiation à la programmation sur Android.
La séance s'est très bien passé, avec une vingtaine de geeks bien motivés pour apprendre les bases du développement sur Android. L'organisation était parfaite, l'endroit (la Cantine Rennes) était parfait pour ce type d'atelier, et les pizzas étaient bonnes, alors qu'est-ce qu'on peut demande d'autre ?
Voici donc les slides de ma présentation :
Le code source des exemple se trouve dans mon dépôt GitHub.
Bilan du déplacement à Paris de hier
Bilan très positif du déplacement à Paris de hier.
Des bonnes impressions confirmées, un hackaton très productif, quelques décisions de prises, et en bonus un p'tit dessin dans le train au retour...
Du point de vue du code, je me faisais quelques réflexions :
- Plus je touche MongoDB, plus ça me plaît !
- AngularJS est sympa pour des petits trucs, mais surtout c'est une vraie tuerie lorsqu'on l'utilise sur un vrai projet, où on peut bien profiter de son énorme potentiel.
- Même si Play! me plait beaucoup, je trouve Rails plus adapté à ma façon de travailler. Je suis peut être trop vieille école...
- Et quoi dire de plus de Thrift. A la base il permet de gagner un temps fou au dev et au refactoring, et de ne pas avoir à coder des tonnes de tuyauterie, le tout avec des performances d'enfer. Et si on le couple avec MongoDB en utilisant le ThriftMongoBridge de +Sébastien Lambour cela devient une vraie bête de guerre...
Publié via Google+
J’ai besoin d’une appli web rapidement
Voici les slides de la présentation sur le développement rapide d'applications web sur la JVM que j'ai fait jeudi dernier pour le FinistJUG :
FinistJUG

FinistJUG, par Mik
Depuis que j'ai lancé le blog en 2006, jamais LostInBrittany n'était resté en sommeil aussi longtemps, presque trois mois sans poster. Les raisons ont été multiples et variées, comprenant entre autres un gros dégât des eaux et un déménagement et des projets divers. Je me suis même posé la question de si j'allais continuer, ou si il valait mieux de laisser le blog sombrer dans un état zombie, et me contenter de Twitter et Google+ pour communiquer avec le monde. Mais après des hésitations, j'ai fini par me dire que LostInBrittany était devenu une partie de moi, et qu'il fallait le remettre en route
Et quelle meilleure occasion pour relancer LostInBrittany que la Devoxx 2011 ? Car cette année j'ai à nouveau la chance de pouvoir aller à celle qui est devenue la plus importante conférence Java de l'année (merci Oracle, quand même).
Du point de vue technologique, la Devoxx est une expérience superbe, on prend plein des yeux avec les différents projets, les conférences, les échanges. Mais la Devoxx a aussi un autre intérêt, celui de rencontrer plein de monde, d'échanger avec des gens venant des horizons très divers, unis par une même passion pour le développement.
Et cela nous amène au titre de ce billet, FinistJUG. Car c'est l'année dernière à Devoxx, après avoir beaucoup discuté avec des gens des différents JUGs français, que j'ai décidé de créer Java User Group finistérien, FinistJUG. A l'époque je pensais que cela se ferait rapidement, mais le projet a pris de retard à fur et à mesure que les semaines et les mois passaient. Heureusement que le mois dernier, grâce à un collègue de travail, j'ai rencontré Mik, un architecte Java brestois qui avait un projet semblable de création de JUG à Brest. On a mangé ensembles, on a échangé sur nos projets respectifs et on a décidé de fusionner nos efforts pour réussir à que le FinistJUG devient réalité.
Le projet démarre bien pour le moment : les papiers sont dans la préfecture, on compte faire la prmière session courant décembre, avec un rendez-vous plus informel au retour de Devoxx, la semaine prochaine on présentéra le JUG dans l'Open Coffee de Brest (en visioconférence depuis Anvers), on a un accord de principe avec l'ENIB pour pouvoir faire nos sessions dans leur amphi...
Si vous voulez vous tenir informés, même si je posterai des informations ici, il y a un site web et un compte Twitter.
En vrac
Après presque deux semaines de silence, je reprends aujourd'hui le blog avec un billet méli-mélo...

Formation développement iPhone
J'ai passé la semaine à Paris dans une formation de développement sur iPhone. Etant surtout un développeur Java, je m'était naturellement orienté vers le développement Android, et je n'avais jamais pris le temps de faire des vrais projets pour les téléphones à la pomme. Suite aux différents tutoriels que j'avais fait, j'avais beaucoup d'à prioris sur le développement iPhone, pas toujours positifs. Maintenant, après ces quatre jours de formation, j'ai nuancé un peu plus mon avis.
En effet, même si je continue à trouver l'environnement de développement Xcode inférieur à Eclipse sur la plupart d'aspects, le développement sur iPhone est plus agréable que ce que j'espérais. Même si je continue à trouver les terminaux Apple affreusement fermés et chers, j'avoue qu'ils sont jolis, bien construits, très sexys. Même si je continue à préférer mon Motorola Milestone sur Android, je dois admettre que, en terme d'interface, de fluidité, de bling bling, les iPhones et iPads ont encore une longueur d'avance.
Bref, je pense qu'il va falloir que je passe un peu de temps à essayer de faire quelque chose sur la plateforme iOS...

Paris
Comme chaque fois que je passe quelques jours à Paris, l'un des effets collatéraux du voyage est de me rappeler pourquoi j'aime bien habiter en province. La grande ville est bien pour passer un weekend, quelques jours au plus, mais le métro, la foule et le rythme de vie parisienne ne sont plus faits pour moi...

Wordpress 3.1 Reinhardt
Tiens ça fait longtemps que je n'ai pas fait de billet sur Wordpress, reprenons donc cette habitude de laquelle mes collègues prennent un plaisir malin à se moquer... :rasberry_ee:
Depuis mardi dernier, une nouvelle version de Wordpress est disponible, Wordpress 3.1 Reinhardt. Avec cette version, l'évolution de Wordpress de simple moteur de blog à un CMS à part entière devient de plus en plus évidente, avec des fonctionnalités comme les types de article personnalisables (jusqu'à présent on n'avait que des billets et des pages) qui permettent de définir de taxonomies complexes. En plus, l'interface d'administration a été revue, avec multitude de petits changements qui rende nt plus simple la gestion du blog : l'interface d'édition des billets a été simplifiée, un nouveau workflow pour la gestion des liens internes, une nouvelle barre d'administration, des nouveaux thèmes...

Pour l’anecdote, suivant l'habitude de Wordpress, le nom en code de cette version (Reinhardt) est un hommage à un musicien de jazz, dans ce cas le franco-belge Django Reinhardt, l'un des créateurs du jazz manouche.
Narizones
Le weekend dernier, avant de partir à Paris, j'ai eu le temps d'avancer la peinture des dernières figurines imprimées en 3D que j'avais reçu de Shapeways en fin de l'année dernière. Voici quelques photos de ces narizones :
Je suis assez content du rendu de la peinture sur ces petits narizones, même si la texture rugueuse résultante de l'impression 3D demande du boulot de préparation plus importante qu'une miniature classique.
De retour de Devoxx, et de l'usage de Twitter

Comme je vous disais dans mon dernier billet, cette semaine je suis allé à Devoxx à Anvers, le rendez-vous incontournable de la communauté Java européenne, auquel cette année se son joindre aussi beaucoup de participants outre-atlantiques, peut être déçus par la nouvelle version de Java One.
L'expérience était bien enrichissante. J'ai découvert des choses, j'ai comparé ce qui se fait ailleurs, j'ai discuté avec beaucoup de monde, bref j'ai passé cinq jours en immersion avec 3000 développeurs Java, du pur bonheur. Je suis revenu avec des idées et des projets pleine la tête, et avec une envie folle de mettre des idées en pratique, de faire avancer des choses, de partager mon enthousiasme.
Les sujets phare dans la Devoxx de cette année ont été :
-
NoSQL et cloud computing: une bonne douzaine de sessions sur ces thèmes, avec des sessions sur Hadoop, HBase, Pig & Hive, MongoDB, Cassandra, Voldemort, la mouvance DevOps... C'est la partie que j'ai trouvé la plus intéressante, où je considère que j'ai appris le plus de choses.
-
Les langages alternatives tournant sur la JVM (Scala, Groovy, Fantom...) et les différentes frameworks (GWT, Wicket, Play!, Grails...)
-
Le futur de Java, le JDK 7 et ce qu'on pourrait attendre du JDK 8.
-
Android, avec plusieurs sessions centrées sur la plate-forme et le développement d'applications tirant profit des capacités des derniers modèles.
-
JavaFX, qui après compte il n'est pas peut-être né mort comme on le pensait...
Je comptais faire des résumés journalier sur le blog, un peu comme j'avais fait pour JavaOne 2008, en prenant des notes pendant les différentes sessions de la conférence, et en mettant les photos sur Flickr le soir. Mais c'était sans compter avec Twitter, mon Android et l'excellente connexion WiFi que les organisateurs avaient mis à notre disposition. Du coup, j'ai préféré twitter chaque session à laquelle j'ai assisté, pour remonter l'information d'une façon plus directe et plus rapide qu'en prenant les notes pour bloguer le soir.
Ce curieux comment Twitter a changé la façon comme on vit les conférences. Au JavaOne 2008, Twitter existait déjà (par exemple, mon compte a été créé le 23 mai 2007), mais son usage était loin d'être aussi généralisé que à l'heure actuelle.
Maintenant, avec Twitter plus l'adoption massive des smartphones1, le live-twitting est devenu une pratique standard et omniprésente, au point que pendant les pauses entre deux sessions, l'écran géant de chaque salle montrait un mur de tweets dans lequel il s'affichaient en temps réel les tweets avec le l'étiquette #devoxx. De cette façons, tout en suivant chacune des sessions auxquelles j'assistais, je twittais ce qui me semblait le plus intéressante, en accompagnant les tweets avec des photos prises avec mon téléphone2. Au même temps, en lissant les messages twittés sur #devoxx, j'ai plus ou moins suivi en temps réel les points clés des différentes sessions qui se déroulaient en parallèle. Avec ça, la conférence était encore plus intéressante, même si assez fatigante, car suivre des conférences en anglais, le tout en twittant et en lissant des twitters sans perdre le fil de la session demandait pas mal de concentration.
Maintenant j'ai commencé à réunir mes tweets et mes notes, et à essayer de mettre ça en forme pour pouvoir faire un compte-rendu cohérent au travail, et essayer de voir ce qui peut être mis en application des maintenant, ce qu'il faut tester, et comment peut-on tirer les bonnes leçons de ce que j'ai vu et entendu à Devoxx. Mais cela est une autre histoire...
1 Le taux d'adoption des smartphones parmi les assistants à Devoxx était simplement impressionnant. Lors d'une session, le speaker a posé directement la question, et il n'y avait pas une dizaine de personnes sans smartphone dans la salle. Curieusement, ou pas trop étant donné qu'il s'agisait d'une conférence de développeurs Java, les téléphones Android étaient prédominants.
2 Les photos prises avec mon Android ont été toutes ratées, avec une résolution bien trop petite pour être exploitable. Je n'ai pas encore trouvé le pourquoi, quoi que je soupçonne la version beta d'Android 2.2 que j'ai flashé sur mon Motorola Milestone il y a une quinzaine de jours. De fois je me dis que je devrais arrêté de jouer avec des betas... mais je m'ennuierais sinon.
Cap sur Devoxx

La semaine prochaine je serai à Anvers, pour Devoxx 2010, conférence qui grâce à Oracle est devenue le plus important rendez-vous de l'année dans le monde de Java.
Je pars donc dimanche matin vers Anvers, et je reviens vendredi prochain. J'espère avoir le temps d'écrire quelques billets en racontant la conf au jour le jour, mais ce qui est sûr c'est que je vais live-twitter mon séjour, avec le hashtag #devoxx.
En autre ordre de choses, Oracle persiste dans son attitude méprisable vis à vis de la communauté de logiciel libre autour de Java. Avec leurs actions, ils montrent soit une effroyable méconnaissance de l'écosystème Java et du logiciel libre en général, soit ce qui serait pire, une volonté acharnée de saborder le langage et la plate-forme même. Le dernier exemple, pas plus tard que mardi dernier, l'annonce de la future sortie de plusieurs versions de la machine virtuelle Java, afin de monétiser la JVM.
Afin de me joindre donc aux voix qui réclament que Oracle change d'attitude vis à vis de Java, je vais donc me suivre l'appel de James Gosling et porter pendant la conférence un t-shirt [Java doit être libre](<a href=). Sauf que à la place du Duke inspiré de celui de Gosling que j'avais préparé la dernière fois, cette fois je me suis amusé un peu avec Blender et j'ai préparé un Duke en 3D.

Avec du papier transfert et un fer à repasser (que je n'utilise que dans des occasions spéciales comme celle-ci), j'ai maintenant deux beaux t-shirts pour Devoxx 2010 !
Java doit être libre

Si vous travaillez de près ou de loin avec le langage Java, vous êtes sûrement au courant du feuilleton politico-juridico-technologique autour du langage depuis l'acquisition de Sun parOracle l'année dernière.
L'un des premiers chapitres était le départ de James Gosling, le concepteur de Java. Après, les actions d'Oracle autour de Java sont devenus de moins en moins claires, de il y a eu le procès contre Google sur l'utilisation de la JVM sur la plate-forme Android.
En réponse, Google a annoncé que ils n'iront pas à JavaOne. Cette absence est très symbolique, compte tenu que beaucoup d'anciens employés de Sun, parmi lesquels des grands noms de Java comme Joshua Bloch travaillent à présent sur Google. Mais lorsqu'on sait que James Gosling ne sera pas là non plus, on voit à quelle point Oracle a réussi à se couper du noyau dur des développeurs du langage.
Les actions d'Oracle sont vues par beaucoup de développeurs Java comme une attaque contre la communauté de logiciel libre autour de Java. Lundi dernier, James Gosling a posté sur son blog un billet en proposant un t-shirt à porter lors du prochain JavaOne, pour rappeler à Oracle ses engagements de libérer Java.
Pour apporter ma petite pierre au bâtiment, j'ai fait une version française du motif du t-shirt :

Je n'ai pas retouché le dessin de Mr Gosling, je suis parti de zéro avec Inkscape. Cependant, le dessin est sont idée, il est donc propriétaire, et s'il me demande de retirer ma version je le ferai sans hésitation.
Je compte me faire un t-shirt à titre personnel, et si Mr. Gosling m'autorise, je vais le proposer aussi en t-shirt sur Comboutique et Spreadshirt. A prix coûtant bien entendu (pas question de faire un bénéfice quelconque sur ça).
Mise à jour
Suite à des suggestions reçues par mail, j'ai changé sur le dessin la phrase Faites Oracle tenir parole par Incitez Oracle à tenir parole.
Comment savoir la version de la JVM d'un .class ?

Compatibilité ascendante et descendante
L'un des avantages de Java lorsqu'on doit entretenir un parc applicatif étendu c'est la compatibilité ascendante de la machine virtuelle Java.
En effet, à quelques exceptions près, un code Java compilé en 1999 avec le JDK 1.1 marche aujourd'hui lorsqu'on l'exécute avec une JVM 1.6. Par contre, l'inverse n'est pas vrai, la machine virtuelle Java n'assure pas une compatibilité descendante, i.e. une classe compilée pour la JVM 1.6 ne s'exécuterait pas sur une JVM 1.5.
Normalement cela n'est pas un problème... sauf quand on doit impérativement exécuter un code dans une ancienne version de la machine virtuelle. Dans ce cas là, on a intérêt à s'assurer que le code a été compilé pour cette JVM (ou pour une JVM plus ancienne) avant d'essayer de l'exécuter.
Comment peut-on donc savoir la version de la JVM utilisée comme cible de la compilation une classe Java ?
Pour garantir que les applications Java puissent d'exécuter à l'identique sur les différents plateformes, les fichiers .class ont un format figé. De cette façon, lorsqu'on compile du Java sur n'importe quel plateforme, on obtient les mêmes fichiers .class.
Les fichiers .class ont donc une structure fixe, ils sont découpés en dix sections (certaines à taille variable), et c'est dans la deuxième section qu'on va trouver la réponse à notre question.
La première section, c'est le magic_number. Ce paramètre, codé sur 4 octets, permet à la JVM de reconnaître le fichier comme une classe Java. Le valeur de ce magic_number est 0xCA 0xFE 0xBA 0xBE (CAFEBABE).
Les 4 octets suivantes définissent la version de la JVM utilisée comme cible de la compilation. Les deux premiers octets sont la version mineure (normalement 0) et les deux suivants indiquent la version majeure. C'est cette version majeure qui donne donc la réponse à notre question :
Pour voir donc la version de la JVM utilisée comme cible lors de la compilation d'une classe, il suffit d'ouvrir la classe avec un éditeur hexadécimal (moi j'utilise la commande hexdump -C) et regarder le début du fichier, qui sera de la forme CA FE BA BE 00 00 00 XX où XX indique la version.
Par exemple, pour une classe compilée pour JVM 1.5 on aurait CA FE BA BE 00 00 00 31
Merci à Mathias de m'avoir mis sur la piste. Ce soir je me coucherai moins bête...
Erreur d'Eclipse sur Ubuntu - org.eclipse.swt.SWTError: XPCOM error
Ce matin, après une mise à jour de certains paquets Ubuntu, mon Eclipse ne démarrait plus. Le processus de démarrage semblait bien, se passer, mais à la place de l'interface de l'application, je n'avais qu'une fenêtre de dialogue vide.
En regardant les logs dans eclipse/.metadata/.log, j'ai vu que au moment de la construction de l'interface, Eclipse tombait en erreur :
!ENTRY org.eclipse.osgi 4 0 2009-09-08 08:10:13.872
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: XPCOM error -2147467262
at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:1638)
at org.eclipse.swt.browser.Mozilla.setText(Mozilla.java:1861)
at org.eclipse.swt.browser.Browser.setText(Browser.java:737)
at org.eclipse.jdt.internal.ui.infoviews.JavadocView.doSetInput(JavadocView.java:928)
at org.eclipse.jdt.internal.ui.infoviews.JavadocView.refresh(JavadocView.java:776)
at org.eclipse.jdt.internal.ui.infoviews.JavadocView.setBackground(JavadocView.java:763)
at org.eclipse.jdt.internal.ui.infoviews.AbstractInfoView.inititalizeColors(AbstractInfoView.java:363)
at org.eclipse.jdt.internal.ui.infoviews.AbstractInfoView.createPartControl(AbstractInfoView.java:226)
[...]

Après avoir regardé un peu à droite et à gauche, il se trouve que cette erreur est due à des problèmes avec XulRunner, l'environnement d'exécution d'applications XUL utilisé par Eclipse pour son interface.
J'ai actuellement trois versions de XulRunner installées sur ma machine : XulRunner 1.9.0 (correspondant en gros à Firefox 3.0), XulRunner 1.9.1 (correspondant à Firefox 3.5) et XulRunner 1.9.2 alpha (qui serait celle qui correspond à Firefox 3.6 alpha). En faisant xulrunner -version, j'ai vérifié que la version de XulRunner utilisée par défaut est la 1.9.1.
Apparemment, XulRunner 1.9.1 casse la compatibilité des binaires compilés pour XulRunner 1.9.0, dont Eclipse 3.4. J'ai donc modifié le fichier eclipse/eclipse.ini en ajoutant le path de mon XulRunner 1.9.0 :
-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner-1.9.0.13/xulrunnerEt le problème a disparu. Reste à savoir pourquoi le problème est apparu d'un coup ce matin, car j'ai XulRunner 1.9.1 installé depuis des mois, mais cela est une autre histoire...
Appeler des web services depuis le shell

Après l'humour geek, revenons à un billet un peu plus technique...
Je l'ai dit souvent, et je le répète, internet arrivera toujours à me surprendre.
Hier je discutais avec de collègues sur comment faire communiquer un script shell avec une application web en Java sur l'intranet. La solution la plus simple était sans doute de faire un point d'entrée sur l'application Java, une petite servlet à laquelle on appellerait depuis le script shell via wget ou curl.
Quelqu'un a suggéré, à moitié en blaguant, d'implémenter la communication sur la forme d'un vrai web service (WS) en SOAP, avec son WSDL et tout. Je ne vais pas rentrer dans les avantages ou les inconvénients des WS en SOAP vs une approche REST, car c'est un peu philosophique comme débat. Il suffit de dire que pour ce petit besoin c'était un peu exagéré de devoir implémenter un WS SOAP, et on est donc partie sur l'approche REST avec une simple appelle sur l'URL de la servlet.
Ce matin le sujet est revenu dans la conversation et je me suis mis à penser comment on aurait pu faire si on avait eu vraiment besoin d'utiliser des WS complexes, avec SOAP, sécurité, cryptage.... Dans ma tête il aurait fallu développer le client WS à part, en Java par exemple, et appeler ce client depuis mon script shell.
Et là, je me suis dit qu'à coup sûr il y aurait quelqu'un sur le net qui a implémenté un client WS SOAP fait pour être appelé depuis en ligne de commandes, une sorte de wget pour des appels webservice. Un passage rapide par Google m'a permit de confirmer mon intuition, il y en a bien des implémentations de clients SOAP utilisables depuis un script shell !
Je suis allé donc voir WSF/C, un framework pour des WS écrit en C standard, compatible avec les implémentations Apache WS-* (dont Axis2). Ce framework inclut un client WS en ligne de commandes, [wsclient](http://wso2.org/library/3362), que on peu utiliser d'une façon semblable à wget ou curl.
L'implémentation est assez complète, pouvant supporter des différentes schémas d'authentification et cryptage. Le programme se pilote depuis la ligne de commandes, d'une façon assez simple pour ceux habitués à utiliser des programmes sur le shell.
Par exemple, pour appeler les WS Amazon, il suffit de faire :
:~$ wsclient --soap1.1 --no-mtom --action http://soap.amazon.com
:~$ http://soap.amazon.com:80/onca/soap?Service=AWSECommerceService < item_search.xml
où item_search.xml est un fichier XML respectant le format SOAP des WS Amazon. Par exemple :
<ItemSearch xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
<AWSAccessKeyId>Access Key</AWSAccessKeyId>
<Request>
<ResponseGroup>Medium</ResponseGroup>
<ItemPage>1</ItemPage>
<Keywords>Web Services</Keywords>
<SearchIndex>Books</SearchIndex>
</Request>
</ItemSearch>
Est-ce que c'est utile ? Peut-être pas pour une utilisation quotidienne, mais lorsqu'on veut faire des tests sur un serveur n'ayant pas d'interface graphique (ne pouvant donc pas utiliser des outils telles que SoapUI), c'est une façon beaucoup plus rapide, simple et sympa que devoir tout faire avec curl ou devoir programmer un client Java pour le faire.
Bref, un petit outil curieux pour garder sous la main au cas où on pourrait en avoir besoin...
SCWCD passée !

En septembre dernier j'ai commencé à préparer la certification SCJP (Sun Certified Java Programmer), avec l'idée de qu'elle soit une première étape dans la chaîne des certifications Sun, suivie par d'autres certifications jusqu'à éventuellement culminer dans la SCEA (Sun Certified Enterprise Architect).
Après avoir passé la certification SCJP en novembre, je m'étais donc engagé dans la phase suivante, la préparation de la SCWCD (Sun Certified Web Component Developer).
Mon manque de temps de ces derniers mois, et le conséquent ralentissement du blog, ont fait que je n'ai pas parlé de la préparation de cette certification comme j'avais fait avec la précédente.
J'ai donc passé l'examen mardi dernier, à Rennes cette fois, et je l'ai obtenu ma certification SCWCD avec 84% de bonnes réponses.
Comme pour la dernière fois, les derniers jours de préparation ont été assez intenses, sauf qu'à différence de la dernière fois, je n'ai pas pu encore trop me reposer, car j'ai une semaine assez chargé au travail. Vivement le week-end !
Avant de finir le billet, je tiens à féliciter mon collègue Raphaël, qui a aussi obtenu sa SCWCD avec un très remarquable score de 97% !
Après la SCJP, je prépare la SCWCD

Je vous ai souvent parlé ces dernières semaines de ma préparation pour la SCJP, et je vous ai raconté comment j'avais du mal à me mettre dans une logique d'étude semblable à celle que j'avais en école d'ingénieurs.
Le passage de la SCJP était une première étape dans la chaîne des certifications Sun, qui devait se suivre par d'autres certifications jusqu'à éventuellement culminer dans la SCEA (Sun Certified Enterprise Architect). A priori j'avais pensais faire une pause après la SCJP et commencer à préparer la certification suivante en début d'année, question de ne pas me mettre de la pression. Mais après le succès à la SCJP je me suis dit qu'il me fallait profiter de m'être enfin mis dans une démarche d'étude régulier, et que si je m'arrêtais un mois et demi j'allais ensuite avoir encore du mal à m'y remettre.
En conséquence, en fin de semaine dernière j'ai commandé le bouquin pour la SCWCD, Head First Servlets & JSP. Je l'ai reçu lundi dernière, et j'ai commencé de suite à le lire.
Etant donné que ça fait quelques années que les applications web Java sont une partie centrale de mes activités professionnelles, pour l'instant tout me semble connu. Mais avec la SCJP j'ai appris à me méfier, car il y a plein de petits détails qui peuvent s'avérer problématiques dans l'examen, même pour un développeur chevronné.
Maintenant il me faut réfléchir pour la date...
SCJP passée !

Ca fait des semaines que je vous parle de ma préparation pour la SCJP, alors je pense que je dois clôturer la série en vous disant le résultat.
J'ai donc passé mon examen aujourd'hui à Nantes, et j'ai obtenu un score de 83%, ce que veut dire que j'ai eu ma SCJP !
Et pour tenir l'habitude jusqu'à la fin, il n'y a pas eu de billet sur la SCJP sans dessin. Je vous laisse un autre gribouillage, crayonné, encré et colorié entre des exercices et des examens blancs. On pourrait l'appeler Dur dur d'être Batman...


Les trois derniers jours de préparation ont été assez intenses, et maintenant que la pression est retomber je n'ai qu'une envie, faire une bonne nuit de sommeil. Mais avant arrêter, je tiens à finir le billet en félicitant mon collègue Raphaël, qui a aussi obtenu sa SCJP avec un remarquable 94% de bonnes réponses. Ca, c'est du bon boulot !
Encore un billet gribouillé avec de la SCJP dedans

On entre dans la dernière semaine avant mon examen de SCJP, et je me rends compte que comment les choses ont changé ces dix dernières années. A l'époque où j'étais à l'ETSIT, la quinzaine avant les examens était l'époque la plus productive, j'arrivais à bosser à un rythme soutenu, quitte à faire des nuits presque blanches jour après jour.
Maintenant, le boulot la semaine et ma fille le weekend ne me laissent pas le choix, la journée je suis occupé et lorsque je dois me mettre à bosser le soir je suis déjà fatigué, et même si j'arrive à passer des heures devant le bouquin, la productivité est loin d'être aussi élevée que je voudrais.
Il va falloir que je profite bien de la journée fériée de demain, ainsi que du weekend prochain, si je veux aller à la certification avec une certaine sérénité.
Sinon, comme vous pouvez vous douter, je ne trouve pas trop le temps de m'occuper d'autres choses ces jours-ci, alors à la place d'un dessin je vais vous laisser un autre de ces gribouillages griffonnés vite fait sur le coin d’une feuille. Cette fois, la contre-partie du Supergribouillé optimiste et souriant de la dernière fois, le héros torturé qui se cache derrière une masque aux traits d'une chauvesouris, le ténébreux Batgribouillé.

Je me dis que peut-être demain entre deux examens blancs j'aurai le temps de le passer sur Inkscape...
Encore la SCJP et encore des dessins (suite)

Hier soir je n'ai pas eu le temps d'avancer ma SCJP comme j'aurais voulu, ce qui ajoute encore un peu plus à la pression dont je vous parlais. Du coup, je compte sur les soirées du weekend pour rattraper un peu le retard afin d'entamer la semaine prochaine avec plus de sérénité.
J'ai déjà lu deux fois le bouquin, et maintenant je me centre sur les questions et les examens blancs, même si cela me fait souvent revenir au livre pour bien comprendre le pourquoi du comment des réponses. Dans le CD qui accompagne le livre de préparation il y a deux examens blancs équivalents au vrai test, mais je n'ai pas encore voulu les attaquer, je préfère les réserver pour la semaine prochaine.
Un bon site pour trouver du soutien, et pour se rendre compte de plein de détails sur la SCJP, c'est JavaRanch, surtout son forum dédié à la préparation de la certification. Je pense que j'y vais passer pas mal de temps la semaine prochaine...
Sinon, ce matin avant de partir au travail j'avais envie de me vider un peu la tête, j'ai donc pris un petit quart d'heure pour passer sur Inkscape le gribouillage de hier. Voici le résultat :

Je trouve plutôt marrant les Supergribouillé, je pense que maintenant je vais devoir m'occuper de lui donner un contrepoint en dessinant un Batgribouillé...
Encore la SCJP et encore des dessins

Avec tous ces billets sur la dernière version Ubuntu, mon blog était en train de devenir trop mono-thématique. Revenons donc à d'autres sujets...
C'est la dernière ligne droite avant mon examen de SCJP, et depuis quelques jours je me suis mis en mode examen, en passant une bonne partie de mes soirées devant le bouquin à essayer de comprendre les subtilités les plus subtiles du travail du compilateur Java. Car comme mon collègue Raphaël dit, cette première certification Java vise à qu'on devient un compilateur Java vivant plus qu'à tester si on sait vraiment développer en Java (pour cela il y a les certifications suivantes, en commençant pas la SCJD).
Du coup ces derniers jours je trouve de moins en moins du temps pour d'autres sujets, que ça soit le blog, des dessins, internet, World of Warcraft ou même la simple veille technologique. Et je ne pense pas que ça s'arrange avant le 18 novembre, date de mon examen. Ca me rappelle ces semaines à la veille du période d'examens à l'ETSIT, il y a déjà une dizaine d'années. Nostalgie, quand tu nous tiens...
Alors les seuls dessins nouveaux sont des petits gribouillages au crayon sur le coin d'une feuille, faits de façon presque automatique pendant que je suis occupé à d’autres choses. C'est le cas de ce Supergribouillé prêt à sauver le monde et protéger les veuves et les orphelins :

Si par hasard je trouve quelques minutes pour le passer sur Inkscape, je vous le montrerai, fier avec sa cape rouge et son slip par dessus son pantalon :lol_ee:
De la SCJP et du dessin automatique...

Hier soir j'ai encore une fois passé la plupart de ma soirée devant le bouquin de préparation à la certification SCJP.
J'ai enfin fini une première lecture complète des presque 850 pages du livre, et je crois que je commence à avoir une idée claire d'où est-ce que je suis par rapport à l'examen... et de combien je dois encore bosser. :gulp_ee:
Je me suis inscrit pour passer la certification mi-novembre, cela me laisse un peu plus d'un mois pour bien me préparer. Mine de rien, ça met de la pression, savoir que l'examen est là. Je me dis que d'ici là il va falloir que je réduise le temps consacré aux loisirs, que je me centre sur la certif et que je me mets dans un véritable mode pré-examen. Je n'avais ressenti cette sensation depuis mon dernière examen de l'ETSIT en 2000, c'est au même temps assez contraignant et très stimulant.
Hier soir c'était donc soirée d'étude. Néanmoins j’ai pris un peu de temps pour passer par Inkscape le dernier de mes gribouillages, ce singe artiste martial.
Ce qui c'est curieux c'est que je n'ai pas la moindre idée de pourquoi j'ai dessiné ce singe karatéka. J'ai fait le crayonnage original sur un coin du cahier pendant que j'ai été occupé à d'autres choses, et je n'avais aucune idée du dessin en tête, je savais seulement que je voulais dessiner quelque chose avec un style vaguement Groening.
J'ai donc commencé par dessiner deux yeux, et ensuite j'ai laissé libre cours à mon imagination. Ce n'est pas vraiment du dessin automatique, mais presque...
Je me remets à étudier

Hier soir j'ai commencé officiellement à étudier pour passer la certification Sun Certified Java Programmer (SCJP). Le SCJP fait partie des certifications professionnelles en Java délivrées par Sun Microsystems. Le programme de certifications Java de Sun comprends huit certifications, et la SCJP est la brique de base.
En arrivant chez moi hier, j'ai donc trouvé dans ma boîte à lettres le colis d'Amazon avec un bouquin de préparation, SCJP Sun Certified Programmer for Java 6: Exam 310-065, et j'ai passé une bonne partie de ma soirée à analyser avec le bouquin combien de temps il me faudra pour préparer la certification.
Pour mettre les choses en perspective, ça fait une dizaine d'années que je travaille avec du Java, et je considère que mon niveau en Java est plus qu'acceptable. Alors, à quoi bon de passer la certification ?
Si je m'engage dans cette voie du SCJP c'est pour après partir sur les autres certifications Java, qui attestera mon compétence dans un domaine qui est de plus en plus étendu et complexe. Les certifications professionnelles Sun Microsystem attestent non seulement des compétences techniques , mais aussi de la motivation et d'un certain engagement professionnel. Le SCJP est très reconnu dans l'industrie informatique, et les employeurs les prennent en considération, au moins en théorie. Alors il y a certainement un intérêt professionnel à passer le SCJP.
Mais je le fais aussi et surtout pour moi même, pour me forcer à approfondir sur les petits détails sur lesquels je ferais jamais attention dans ma pratique quotidienne mais aussi pour me forcer à étudier, à reprendre un rythme d'apprentissage qui commence à me manquer depuis la fin de ma thèse, avec un peu du rigueur et de la pression apportés par le fait de devoir passer un examen.
Pour parvenir à passer l'examen il me va donc falloir revisser, même si je travaille tous les jours avec du Java. Alors mon rythme de blogging risque de se ralentir un peu dans les semaines à venir, pendant que je passe mes soirées à explorer les subtilités les plus subtiles du Java...
JavaOne, The End

Voilà, JavaOne 2008 est bel et bien fini et je suis de retour en France. Je suis arrivé à Brest en fin d'après-midi, après le long voyage retour.
En début de soirée j'ai récupéré ma fille (elle m'avait bien manqué, ma petite !) et tout est redevenu normal dans mon petit coin de la Bretagne.
Bon, normal c'est une façon de parler, car je pense que cette expérience du JavaOne 2008 restera un point marquant autant de point de vue personnel que professionnel. Même si ce n'est car il m'a redonné l'envie d'avancer et rappelé pourquoi j'ai choisi d'être ingénieur. Mais bon, cela est une autre histoire, pour un autre billet.
Car ce soir je me sens complètement K.O., décalage horaire oblige. Je crois que ce soir je vais aller directement au lit. Demain je vais essayer d'uploader sur le compte Flickr certaines des photos qui me restent.
À demain !
Liveblogging JavaOne

La dernière session générale de ce JavaOne 2008 est sur le point de commencer. C'est une des sessions les plus attendues, celle intitulée Extreme Innovation, où John Gage et James Gosling présenteront les projets les plus innovants du moment autour des technologies Java.
Je n'ai pas pu résister la tentation de prendre quelques photos pour vous montrer l'ambiance...
La salle commence à se remplir, et croyez-moi, c'est énorme.
Sur scène, en attendant l'arrivée de Mr. Gage, une DJ chauffe l'ambiance.
La DJ mixe la musique à l'aide de deux laptops (un Mac et un PC) et une petite table de mixage.
Les gens continuent à arriver, la salle est noire de monde.
Et Mr. Gage monte sur scène, je continuerai plus tard...
Mise à jour : quelques photos de plus sur la session
JavaOne, jour 4 (I)

Je sors maintenant de mon avant dernière session de ce JavaOne 2008, une excellente session sur la Conception des Applications Webs pour la Scalabilité (ça existe comme mot en dehors du jargon d'informaticien ?). Le speaker était Cameron Purdy, vice-président de la division Data Grid d'Oracle. C'est une des choses que j'adore du système américaine, les hauts dirigeants des entreprises de technologie ne sont pas issus des Grandes Ecoles d'Administration, mais ils sont des ingénieurs, des opérationnels, qui savent de quoi ils parlent et qui sont bien capables de comprendre les enjeux de la technique.
En revenant à la session, dans une présentation très dynamique et pleine d'humeur, il nous a résumé les contraintes et les points à surveiller lorsqu'on conçoit des applications webs qui doivent supporter un trafic important. De l'architecture générale, à l'infrastructure, des modèles de programmation au réseau, il a tout passé en revue dans une heure, dans celle qui est devenue une de mes sessions favorites de JavaOne.

Trois vice-présidents de Sun distribuent des t-shirts par catapultage
Session Inaugurale, Mardi 2008-05-06
Comme je vous racontais ce matin, la journée a démarré avec la keynote de Sun, Extreme Innovation, où John Gage et James Gosling ont présenté quelques uns des projets les plus innovants de l'année.
Il y a eu de outils software, comme VisualVM, un outil graphique qui unifie la panoplie d'outils de monitorisation de la JVM disponibles depuis Java 1.5, capable de se connecter sur la JVM à chaud et presque sans overhead.
Il y a eu du hardware, comme une ludique démonstration en conditions réelles des motes de Sentilla, dont je vous parlais hier, ou le très attirant PulsePen de Livescribe, pour lequel j'ai fini par craquer.
Il y a eu plein d'autres choses, mais cela devra attendre un prochain billet, car la dernière session commence de suite...
JavaOne, jour 3

Et voilà, la troisième journée de ce JavaOne 2008 vient de finir et je suis de retour à l'hôtel. La journée a été aussi intense que les précédentes, et avec une thématique plus diversifiée que celle de hier.
Je vais essayer de résumer rapidement la journée avec quelques phrases pour chacune des sessions auxquelles j'ai assisté :
- La journée est démarrée avec une session générale d'Intel, un peu l réponse à celle d'AMD hier. Le vice-président de software d'Intel expliquait le processus de recherche et développement d'Intel et comment malgré être une entreprise de hardware, ils ont plusieurs milllieurs d'ingénieurs software dans leurs rangs, car pour eux l'intégration entre le hardware et le software est vital. Il a ensuite parlé de comment la collaboration entre Intel et Sun a permis l'année dernière d'améliorer plus de 60% les performances de la machine virtuel Java sur les plate-formes Intel.
- Je me suis ensuite rendu à ma première session technique, une présentation fait par le CTO de Sentilla sur la JVN dans des micro-contrôleurs et des mini-ordinateurs autonomes pilotés par Java, et comment cela permet d'ajouter de l'intelligence à des processus de plus en plus divers.
- La session à laquelle je voulais assister ensuite était complètement saturée, avec un queue qui sortait même du Moscone Center. Je me suis donc rabattu sur une autre session, une présentation sur le logiciel libre au Brésil. Le speaker, membre du gouvernement brésilien, a fait d'abord une topographie de l'implantation d'internet et de la téléphonie mobile au pays, pour ensuite nous présenter le Portail Brésilien des Logiciels Libres, une initiative officielle du gouvernement pour soutenir et propager le logiciel libre.
Les chiffres qu'ils donnaient (comme leurs logiciels bancaires, qui équipent plus de 60.000 agences, ou leurs logiciels de sécurité sociale qui gèrent des millions de comptes) font du Brésil l'un des premiers utilisateurs de logiciels libres au niveau mondial.
-
Après le repas je suis entré dans une session de laboratoire, la seule de ce type à laquelle j'ai pu m'inscrire cette année (les places sont limitées et elles se remplissent des semaines à l'avance). Ça tombait bien, car le sujet m'intéressait doublement : l'optimisation des performances d'une serveur SIP JEE, avec du tuning de la JVM et de la configuration du serveur.
La technologie SIP m'intéresse beaucoup, car j'ai pas mal travaillé sur la voix sur IP, et les techniques d'optimisation de performances en Java est l'un de mes sujets favoris du moment. La session s'est bien passé pour moi, on été un cinquantaine et j'ai été parmi la petite demi-douzaine qui a eu le temps de tout finir. -
En sortant du labo j'ai assisté à une session sur l'intégration de JavaScript dans des applications Java (côté serveur, non Ajax). Le présentateur, un consultant avec pas mal d'expérience et beaucoup d'humour (il a commencé la présentation avec un dessin de XKCD !), connaissait bien son sujet et il a fait une présentation claire et bien structuré, proposant d'abord deux différentes approches au problème du scriptin en Java et ensuite quatre stratégies pour l'intégration de morceaux JavaScript dans le code Java.
-
La suite de l'après-midi je l'ai passé dans une session sur la pertinence des design patterns. Souvent évoqués comme la solution définitive aux problèmes pour les quels ils s'adressent, la sessions nous montrait par l'exemple comme l'abus de ces designs patterns ou simplement leur utilisation non réfléchie peut créer plus de problèmes qu'elle ne résout.
-
La deuxième session générale de la journée était à la charge de Motorola, dont la vice-présidente nous a fait une analyse assez complet de la situation de plate-formes et applications mobiles, les chiffres actuelles ainsi que les tendances et prévisions de croissance pour les années à venir.
J'ai bien apprécié sont intervention et son analyse, sur un sujet que, encore une fois, m'intéresse beaucoup. L'internet mobile devient une réalité de plus en plus présente, et il faut savoir s'adapter, avec des techniques et solutions qui différent souvent de celles employés pour l'internet classique. A mon avis aucun entreprise peut se permettre aujourd'hui d'ignorer ce segment qui, bien que minoritaire encore, risque de devenir incontournable dans quelques années. -
La session suivante portait sur LinkedIn, Java et la Méthode Agile. Les gens de LinkedIn nous ont expliqué l'ancienne architecture de leur site et comment en 2006 ils ont tout revue de haut en bas, et ils sont partis sur une nouvelle architecture distribué et modulaire, et une méthodologie de développement agile, avec des cycles courts et les tests au centre du processus.
Pour quelqu'un comme moi, qui travaille dans un domaine méthodes et architecture, cette session a été un vrai plaisir. Voir comment une architecture modulaire et distribuée et une vraie méthode agile peuvent marcher dans le monde réel, avec des chiffres toute à fait impressionnantes (de nombre d'utilisateurs, de trafic, de taille des clusters, de spécifications des machines...), ça donne encore plus d'envie de pousser pour l'adoption de ce type de techniques et la mort définitive du cycle en V à l'ancienne. -
La journée s'est finie pour moi avec une présentation sur les standards et la nécessité de leur application dans le monde du logiciel libre. Etant un fervent partisan des standards, j'ai connaissais plus ou moins la plupart de choses dont il m'a parlé, mais la session m'a servi surtout à récupérer des bons arguments à sortir pour dire non la prochaine fois qu'on me demande si on peut ne pas respecter les standards (pour une cause de force majeure bien sûr, ce sont toujours des causes de force majeure :rolleyes_ee:).
Voilà donc une autre journée bien remplie. Pour finir, comme vous avez pu voir, j'ai enfin mis en ligne (et géolocalisé) les photos de l'excursion à vélo du lundi dernier. Comme d'habitude, vous las trouverez avec toutes les photos du voyage ou plus particulièrement ici.
JavaOne, jour 2 (III)

Hier soir, après mon dernier billet, je suis reparti pour quatre autres sessions :
- Une session générale par AMD, où ils présentaient leurs dernières avancées en architecture et performance, et comment Java en tire et tirera profit dans ses dernières versions et dans les versions prochaines.
- Une présentation sur Comet, et sur la façon d'implémenter ses différentes strategies avec les différentes serveurs d'application en Java.
- Une de mes sessions favorites pour le moment, The long tail treasure trove, qui passait revue à des projets open source Java peu connus (parte de the long tail des projets open source). Et comme le titre le dit, c'est un véritable trésor cache qu'ils nous ont montré dans à peine une heure, une vingtaine de bibliothèques Java (desquelles j'avais déjà utilisé à peine une poignée) que je pense que je vais utiliser à coup sûr dans les semaines et les mois à venir.
- Une démo expliquée de l'utilisation de Comet et les techniques de long polling et streaing pour construire une petite application web interactive (en occurrence un petit jeu multi-utilisateur)
Après ces quatre dernières sessions, assez fatigué par la journée, j'ai rejoint mon collègue F., on a pris le bus pour rentrer à l'hôtel, en bavardant sur les différentes présentations auxquelles chacun avait assisté. Une fois dans l'hôtel, je n'avais même plus envie de chercher quelque chose d'ouvert pour diner. J'ai donc pris deux barres de céréales dans le distributeur et j'ai regagné ma chambre.
C'est 7 heures du matin ici, je pars maintenant vers le Moscone Center pour la troisième journée de ce JavaOne, que je trouve de plus en plus passionnant. J'essayerai de poster un ou deux billets dans les pauses de la journée.
Et je vous rappelle, bien sûr, que je continue à poster des photos sur Flickr. Et en plus, j'ai géolocalisé les photos que j'ai déjà posté, au cas où vous voulez suivre le parcours sur la carte...
JavaOne, jour 2 (II)

Je fais une petite pause de fin d'après-midi, après une intéressante session comparative des principaux frameworks AJAX du point de vue de leur utilisation dans des applications web en Java.
Aujourd'hui les sessions auxquelles je me suis inscrit ont un caractère très orienté applications web, avec deux thématiques principales : web services et AJAX.
En plus des session de ce matin, cette après midi j'ai eu une autre session avec des nouvelles formes de implémenter des web services REST en Java, une présentation sur les challenges et les solutions pour l'asynchronisme client-serveur et serveur-serveur dans les applications web, et la session sur AJAX dont je vous ai parlé en début de ce billet.
Ensuite il me rentent encore quatre autres sessions, pour un grand total de 10 aujourd'hui, de 8h30 à 21h30. Si j'ai encore le courage après la dernière, je vous ferai un autre résumé rapide...
JavaOne, jour 2 (I)

Deuxième jour de la conférence, je blogue dans une pause entre les sessions. C'est l'heure de midi, et à différence de hier, la pause midi est un peu plus longue, on a 40 minutes. On va donc bientôt aller chercher nos plateaux repas, et on sortira les manger au parc Yerba Buena, à côté du centre de conférences.
Trois sessions déjà ce matin. D'abord une session générale d'Oracle, où ils montraient leurs nouveaux produits pour ce qu'ils appellent l'entreprise 2.0. Ensuite une conférence très intéressante sur l'état actuel des techniques de communication asynchrone entre navigateur et serveur d'applications (Ajax, Comet, Servlet 3.0...) et les challenges qui pose leur implémentation dans un environnement de production à des fortes charges. Et juste avant cette pause, une session sur des nouvelles plate-formes de développements pour Java Mobile (JME) par des gens de China Mobile et de Sun.
Bon, F. m'attend pour aller chercher le repas, je continuerai ce soir.
Pour rappel, à fur et à mesure que je les chargerai sur Flickr, les photos apparaitront ici
JavaOne, jour 1

La première journée de JavaOne est finie, et quelle journée !
Lorsque hier je vous disais que les choses sérieuses commençaient, je ne me rendais pas compte d'à quel point l'affirmation était vraie. Je viens de sortir de la neuvième conférence de la journée, après 14 heures de sessions. La première a démarrée à 8:30, la dernière est finie à 22h30, avec 20 minutes de pause entre chacune.
Le repas ? On plateau repas récupéré à toute vitesse dans une pause, et mangé d'une main dans la session suivante, pendant que l'autre main essayait de prendre des notes.
Le bilan est très positif, j'ai appris beaucoup des choses, j'ai fait plein de contacts, j'ai récupéré des tonnes d'information... et cela n'a fait que commencer !
Une des choses que j'ai trouvé les plus rafraichissantes est que tout le monde ici est un développeur Java et un vrai geek. Pas de costard-cravates, mais des t-shirts Think Geek; pas des managers, mais des techniciens; pas des chefs de projets mais des informaticiens purs. Cela me rappelle ce que j'aime d'être un ingénieur, cela me redonne de l'envie d'approfondir encore plus dans la technique.
Je vous parlerai avec un peu plus de détail sur les différentes sessions, car maintenant je suis trop k.o. pour le faire. Je continuerai aussi à mettre des photos sur Flickr, mais l'absence de WiFi dans l'hôtel fait que, en dehors des horaires de la conf (où je suis plutôt occupé), je dois dépendre de la générosité des anonymes qui laissent leurs accès ouverts.
Pour rappel, à fur et à mesure que je les chargerai sur Flickr, les photos apparaitront ici.
San Francisco, here I go !

J'écris ce billet depuis le terminal 2E de l'aéroport Charles de Gaulle, même si je ne le mettrai pas en ligne tout de suite, car le wifi est payant, bien sûr...
Je pars pour une semaine à San Francisco, pour assister à la conférence JavaOne, qui démarre mardi prochain. Au menu, découverte de la ville demain et après demain, et ensuite quatre jours de pure immersion dans les dernières technologies autour de Java, avec sept séances de conférences par jour.
Pour l'occasion je vais activer mon compte Flickr et j'essayerai de uploader régulièrement des photos et mettre en ligne quelques billets pour vous raconter mes aventures en terres américaines.
L'embarquement va bientôt commencer, j'arrête ici. Prochain billet, en live depuis les U.S. !
Mise à jour : Je poste ce billet depuis une cafétéria typiquement américaine (tenue par une over-polite talkative Asian-american girl, comme F. me demande de spécifier), près du port de San Francisco. Les premières photos viendront bientôt
Eclipse 3.3 Europa
Il y a juste une année, j'écrivais sur mon blog un billet sur la sortie d'Eclipse 3.2 Callisto. Aujourd'hui, une année après, je vais vous parler de la sortie de la version suivante de la plate-forme Eclipse, Eclipse 3.3 Europa.

Eclipse est un environnement de développement très modulable, de multiples projets développés indépendamment. Au centre il y a le projet Eclipse, et autour de lui des projets pour les fonctionnalités les plus diverses : Business Intelligence and Reporting Tools (BIRT), C/C++ IDE (CDT), Data Tools Platform (DTP), Eclipse Modeling Framework (EMF)... Depuis l'année dernière, ils se coordonnent pour sortir en début du mois de juillet une mise à jour conjointe des principaux sous-projets, créant une version stable de la plate-forme Eclipse. Cette année la nouvelle version, Eclipse 3.3, porte le hautement symbolique nom Europa, et elle comporte 21 composants.
Et parmi tous les composants mis à jour, il y a une nouvelle version de la Web Tools Platform (WTP), WTP 2.0. WTP est un outil formidable, c'est le projet qui permet la création d'applications web en Java, le support des web services, la génération de XML, XSDL et WSDL, et toute une série d'outils indispensables pour le développeur Java J2EE.
Je travaille avec WTP depuis début 2006. A l'époque c'était un outil beta, plein de bugs, mais qui apportait déjà une vraie valeur ajoutée pour les développeurs. La version 1.0 est sortie vers mai 2006, avant la fin de ma mission chez Yves Rocher. C'était déjà un outil mûr, fortement pratique. En juillet de l'année dernière, avec la sortie d'Eclipse 3.2 Callisto, WTP est passé en version 1.5 (d'ailleurs à l'époque j'ai fait une analyse de cette version).
Aujourd'hui, WTP 2.0 promet plein de nouveautés, certaines très demandées par la communauté d'utilisateurs (comme le support d'Apache Tomcat 6 ou des services web Axis 2 ) .
Je n'ai pas eu encore le temps de le tester (des que je l'aurai fait je ferai un compte rendu plus ou moins détaillé), mais au premier regard une semble une release très bien ficelée, avec des importantes améliorations. J'espère seulement qu'au niveau stabilité et consommation de resources il sera au moins aussi performant que son prédécesseur, ou même mieux...
JavaFX
Cette semaine il se déroule à San Francisco la plus importante conférence internationale sur Java : Java One. J'aurais bien aimé pouvoir y aller, mais ça n'a pas pu se faire*, alors je suive la conférence à distance, par des podcasts dans le site officiel, et des billets des blogueurs assistants.

La plus remarquable des nouvelles dans ce début de conférence a été sans doute l'annonce de JavaFX. JavaFX se veut l'alternative Java pour le développement des Rich Internet Applications (RIA, applications web avec un interface rich). Jusqu'à il n'y a pas si longtemps, les seuls concurrents dans cette catégorie étaient JavaScript et Adobe Flash. Cependant ces derniers temps les plate-formes de développement de RIAs s'ont multiplié comme des champignons dans une cave tiède et humide. De l'Adobe Flex, au projet libre OpenLaszlo, en passant par le future Microsoft Silverlight, la mode est aux RIAs et tous le monde cherche à obtenir une partie du gâteau.
Dans un marché soudainement si saturé, quelles sont les chances pour un produit comme JavaFX ? Peut-être je me trompe, mais je pense que assez bonnes, car à mon avis JavaFx compte avec plusieurs atouts de taille :
- IDE multi-plate-forme : Là où les IDE de Adobe Flash/Flex ou de Microsoft Silverlight ne marchent que sur Windows et où OpenLaszlo n'a pas d'IDE proprement parlant, JavaFX aura un IDE intégré dans Eclipse ou Netbeans. On pourra développer aussi bien dans Windows que Linux, MaxOS ou même dans des environnements plus "exotiques" comme FreeBSD.
- Environnement d'exécution multi-plate-forme : Je ne parle pas de que l'environnement d'exécution puisse tourner sur des différents systèmes d'exploitation, car la plupart de ces plate-formes permettent une exécution au moins sur Window, Linux et MacOS (Microsoft Silverlight étant pour l'instant la vilaine exception, car il sortira sans aucun support Linux). Car dans le cas de JavaFX, multi-plate-forme veut dire que les scripts JavaFX pourront s'exécuter sur tout type de terminal, d'un téléphone portable à une télé, en passant par un PDA et un ordinateur. Le mantra de Java, développez une fois, exécutez partout, sera pleinement respecté dans JavaFX.
- Gratuité des outils de développement : Dans la pure tradition Java, les outils de développement sont gratuites. Si vous voulez commencer à jouer avec les premières versions de ces outils, il vous suffit d'aller sur le site des développeurs de JavaFX.
- Popularité du langage Java : Java est un des langages les plus populaires (peut-être le plus populaire). Les développeurs habitués à Java (autant dans sa forme standard que dans ses déclinaisons entreprise ou mobile) seront sans doute attirés par le fait que JavaFX se base sur Java et qu'il permet d'accéder à toute la richesse de l'API de Java.
En tout cas, étant donné que Java c'est mon gagne-pain depuis quelques années, je place beaucoup d'espoirs sur la sortie de JavaFX, car il ouvre toute une série de possibilités qu'avant on ne pouvait envisager sans changer toutes les outils de développement et exécution. On verra si le temps nous montre qu'il est à la hauteur de ces espoirs...
* : mon collègue de bureau Fred a eu la chance d'y aller, et j'imagine qu'il lira ce billet depuis San Francisco... Alors n'oublies pas de nous envoyer une carte postale, Fred!
Mises à jour :
- J'ai trouvé un billet très intéressant sur l'aspect développez une fois, exécutez partout de JavaFX dans le blog du CEO de Sun. Et comme bonus, il a une belle image de à quoi ça peut ressembler un téléphone portable avec un interface JavaFX... et cela ressemble beaucoup à un iPhone, à mon avis ;)
- Je viens de télécharger le plugin JavaFX pour Eclipse, des que j'aurai un peu de temps libre je vais commencer à jouer avec. Je vous raconterai ce que cela donne...
Java SE 6 est sorti
Avec deux jours de retard je vais vous parler de la sortie de Java SE 6, la sixième incarnation* de la plate-forme standard Java.

Cette nouvelle version n'apporte pas, à priori, des changements révolutionnaires, mais plutôt des améliorations sur plein de plans, certaines très demandés par la communauté de développeurs. Les améliorations qui m'interpellent le plus (depuis l'optique de mes besoins professionnelles) sont :
- La sécurité rentre au fond de la plate-forme, avec intégration native de GSS/Kerberos et de l'authentification LDAP.
- Les web services ont aussi leur place dans la plate-forme standard, avec l'inclusion dans Java SE 6 de Java API for XML Web Services (JAX-WS), version 2.0. Cette JAX-WS 2.0 est une refonte complète de l'architecture des APIs Java pour les web services.
- Java 6 SE inclut le moteur Mozilla Rhino pour interpréter du JavaScript, et laisse la porte ouverte à que d'autres moteurs puissent y être ajoutés. Bientôt sera donc possible d'incorporer des morceaux de code dans votre langage script favori (Python dans mon cas) à l'intérieur de votre code Java.
Ensuite il y a plein d'autres améliorations de fond, dans la gestion de mémoire, la performance, l'incorporation de JDBC 4.0...
En somme, cette nouvelle version semble, à première vue, un petit bijou que je pense que tous les développeurs qui travaillent avec Java vont apprécier. De mon côté, je viens de l'installer, et des que j'aurai du temps je commencerai à la tester à fond!
* : En fait, l'appeler Java SE 6 est du marketing, au moins pour les early adopters comme moi, car dans Java il y a toujours eu une sorte de double nomenclature, une marketing et une autre pour les développeurs. Tout a commencé avec la sortie de Java 1.2, à la fin des années 90s, lorsque tout le monde se mets à l'appeler Java 2.
Mystérieusement, Java 1.3 et 1.4 n'ont jamais reçu un autre nom, mais Java 1.5 a été rapidement rebaptisé Java SE 5. La mode continue avec cette dernière sortie, et elle s'accentue même, car le terme Java 1.6 semble avoir complètement disparu, même le fichier d'installation du JDK (Java Development Kit) est appelé simplement jdk-6-windows-i586.exe (le dernier JDK pour Java 1.5 était jdk-1_5_0_10-windows-i586-p.exe)
Google Web Toolkit devient open source
Il semblerait que de plus en plus d'éditeurs décident de libérer leur code, dans un mouvement qui s'accélère de plus en plus. Il y a quelques semaines je vous parlait d'une libération de code qui me touchait directement, car je travaille avec tous les jours : l'ouverture du code de Java. Aujourd'hui je vais vous parler d'une autre libération que je considère assez significative, celle de Google Web Toolkit (GWT).

Google Web Toolkit (GWT) est un framework Java de développement de software, qui permet d'écrire d'une façon relativement facile des applications AJAX (du type de Google Maps ou GMail en s'affranchissant de la plupart des particularités liées aux différents navigateurs.
Pour ceux qui avons l'expérience de coder de l'AJAX à la main, l'utilité d'un tel framework est claire. On passe une bonne partie du temps à tester sur toutes les navigateurs possibles dans toutes les plate-formes qu'on a sous la main, et à corriger l'infinité de bugs qui apparaissent en executant le code dans chaque navigateur, toutes les subtiles incompatibilités qui font du codage en AJAX quelque chose plus proche de l'art que de la science. Avec GWT, on écrit tout en Java, un langage solide et bien carré, et lui il compile ce Java en HTML+JavaScript bien compatible avec tous les navigateurs (au moins avec Firefox, IE, Opera et Safari).
Jursqu'au présent, GWT était gratuit pour une utilisation personnelle, mais pas libre. Je pense que cette libération va permettre que certaines entreprises qui travaillent déjà sur Java (comme celle dont je travaille actuellement) basculent sur cet outil pour les briques AJAX de leurs applications web.
L'annonce a été fait dans le blog officiel de Google, et détaillé dans le blog du GWT. La licence choisi est Apache 2.0, encore une fois une licence plutôt classique (comme Java, qui va être libéré sous une licence GPL v2) et non un truc exotique qui ferait plus difficile son adoption.
Dans le billet du blog GWT, ils expliquent comment le choix de libérer était logique, car depuis le début la mission de l'équipe GWT était :
Pour que le développement soit vraiment ouvert, ils ont créé un projet google-web-toolkit dans Google Code, et ils ont libéré aussi toute la documentation sous une licence Creative Commons.
En résumé, un autre beau exemple de libération de code par un des grands acteurs du web.
Java libre!
Même si j'aimerais bien vivre de mon blog, on est encore bien loin. Depuis déjà quelques années, c'est Java qui me permet de payer mes factures. Toute nouvelle qui touche donc ce langage est assez importante pour moi.

Mon histoire avec Java commence en 1998, lorsque j'ai fait un stage de six mois chez IBM. J'avais déjà fait un peu de Java, chez moi, pour tester ce nouveau langage qui semblait aussi intéressant, mais chez IBM j'ai été obligé à monter rapidement en compétence en travaillant dans un projet de migration vers Java 1.1 chez Caja Madrid. Depuis je m'était centré plus sur le côté télécom de ma carrière, mais à la fin de mon doctorat je suis revenu dans le monde Java avec des missions de prestation pour des SSII. A l'époque, l'idée de qu'un jour Sun allait libérer le code de Java faisait rire (mais à l'époque on pensait la même chose d'une éventuelle libération de Solaris, par exemple...).
Tout ça pour dire que je suivait avec intérêt toutes les nouvelles sur la libération du code source de Java sous une licence open source. On avait entendu toutes les rumeurs : libération totale, libération partielle, licence spécial Sun, licence BSD...
La semaine dernière une nouvelle rumeur, en apparence très sérieuse et documentée, a parcouru la blogosphère anglo-saxonne, Slashdot l'avait relayé : Java allait être libéré sous une licence GPL v2.
Je n'avait pas voulu bloguer sur ça, car il n'y avait pas de confirmation officielle. Et la confirmation officielle arrive aujourd'hui, dans le site officiel de Sun. Et en plus, un des blogueurs de Sun nous fait un décryptage du pourquoi et comment de cette libération de Java.
Pour fait courte la partie technique, je reprends la formule de Tim Bray :
Pour moi, c'est une manoeuvre qui va dans le bon sens, surtout pour Sun. Depuis le début, ils ont offert toutes les outils Java gratuitement (mais avec code fermé), et cela a été un des facteurs clés dans le succès du langage. Ils donnaient donc à la communauté des utilisateurs, mais en avant le code fermé, ils ne profitaient pas des éventuelles améliorations que la communauté pourrait faire dans le code.
L'un des arguments en contre était le risque de fork, que des groupes de hackers, des chercheurs ou des passionnés prennent le code source de Java, le modifient et proposent des versions de Java incompatibles entre elles. Mais avec le parapluie du TCK (la suite d'outils de test qui permettent de certifier un produit comme "compatible avec Java") et des marques registrées, le risque n'existe pas, car ils ne pourraient pas appeler leur projet Java (comme pour Firefox, on peut créer et même vendre des versions modifiées de Firefox comme Flock, mais on ne peut pas les appeler Firefox).
Sur ça, la position de Sun est claire :
Cependant, il y a un risque énorme de voir pousser des langages ou des machines virtuelles basées sur celle de Java, avec d'autres noms, et taillées pour des besoins plus spécifiques. Mais cela est, à mon avis, une bonne chose. Et ce qui est encore mieux, Java pourra profiter des améliorations faites dans ces projets. Tout le monde gagne donc...























