Devoxx 2017 : Retour sur « Une aventure ultrasonique »

J'ai eu l'opportunité de me rendre à la Devoxx 2017, durant laquelle j'ai pu participer à la conférence "Une aventure ultrasonique" présentée par Hubert SABLONNIERE.

Hubert est développeur Web et passionné d’HTML, CSS et JavaScript. Il travaille depuis 7 ans chez INEAT Conseil et passe une bonne partie de sa semaine à développer sur des projets. Il intervient de temps en temps chez d'autres clients pour du conseil et de l'audit.

Il a travaillé avec du PHP, du Java et beaucoup de JavaScript pour des sites et webapp Intranet/Internet, mobile/tablette et desktop. Il a également une casquette CSS/intégration.

Sur son temps libre, il bidouille beaucoup avec les dernières technologies pour essayer de trouver des nouveaux usages pour ses utilisateurs et des facilités pour les développeurs.

Je dois avouer que je me suis présenté à cette conférence sans trop savoir à quoi m'attendre avec un titre aussi mystérieux et un résumé qui évoquait de la transmission d'information entre deux pages web sans connexion internet, en passant par l'émission d'ondes sonores. C'était donc empli d'une certaine curiosité que j'ai rejoint la salle de conférence pour écouter les dires de monsieur SABLONNIERE.

Après une petite mise en situation, le conférencier nous a rapidement fait comprendre qu'il parlerait de son expérience personnelle afin de mettre en avant l'importance de faire des projets personnels en dehors de ses heures de travail.
Pour illustrer ses dires, il a prit l'exemple d'un projet sur lequel il travaille dans son entreprise, qui permet de diffuser une présentation style Powerpoint/Keynote via une application web. Une page web va contrôler l'affichage des slides, et une autre page va afficher la slide en cours en plein écran. Pour se faire, il utilise des technologies éprouvées telles que les websockets. Cependant, si c'est une solution assez standard, elle manque d'intérêt pour le développeur cherchant sans cesse à trouver de nouvelles solutions. C'est ainsi qu'il s'est lancé dans l'idée de faire communiquer deux pages web sans websockets, et possiblement sans serveur, en tant que "projet perso".

Il a repéré trois phases d'évolution d'un projet perso au cours du temps, et je vais m'appuyer sur celles-ci pour expliquer la suite :

Devoxx 2016 : De l’IoT, des timeseries et de la prédiction avec Android, Cassandra et Spark

devoxx_france_2016

A l ‘heure des objets connectés, du Big Data et du machine Learning, nous pouvoir voir que la pleine exploitation de ces technologies est encore timide et que celles-ci peuvent être mal articulées entre-elles.

Aussi quand est paru le programme de Devoxx 2016, la conférence animé par Amira Lakhal, représentante des Duchess France et également développeuse agile Java et Scala, ne pouvait être qu’enthousiasmante.

JavaScript : les bases du Langage

Netapsys Devoxx 2015

Netapsys Devoxx 2015

Le Devoxx France 2015 se tenait du 8 Avril au 10 Avril à Paris, au Palais des Congrès.

Cette plateforme est offerte aux développeurs principalement Java pour se retrouver et partager sur plusieurs sujets aux moyens de Conférences, Labs etc. Elle permet de prendre le pool de ce qui se fait dans le monde informatique en termes d’utilisation de Frameworks, d’Outils et de Best Practices.

Parcourir l'article

Devoxx 2012 : interview de Shay Banon, Elasticsearch

Shay Banon était présent ici a Devoxx 2012, ou il a donné une conférence comme il sait les faire : sans slides, juste de la pure démo en CURL. J'en ai profité pour lui poser quelques questions pour la communauté Elasticsearch France.

David Pilato: Elasticsearch devient très populaire. J’ai entendu parler de chiffres assez fous en termes de téléchargements. As-tu une idée sur le nombre de cluster et sur la quantité de données indexées à ce jour par Elasticsearch dans le monde ?

Shay Banon: En fait, je ne sais pas exactement combien il y a d'installations que ce soit sur internet ou en intranet. La plus grosse configuration que j'ai vue à ce jour tourne avec 150 nœuds. C’est juste fou de voir qu'un cluster entier distribue sa recherche sur 150 instances et renvoie les résultats en quelques millisecondes. Il existe quelques configurations avec un volume de 10 milliards de documents indexés. En terme d'espace disque, la plus grosse installation que je connaisse a quelques pétaoctets de données.

David Pilato: Et les téléchargements du projet sur Github ? Tu sais qu'Elasticsearch est l'un des plus gros repository Github Java en terme de nombre de forks, de watchers et l'une des favorites (https://github.com/languages/Java) ?

Shay Banon: C'est juste une folie. Nous avons environ 1.5 millions de téléchargements jusqu'à présent avec un rythme toujours croissant actuellement à 200 000 par mois.

David Pilato: Une question revient souvent de la part des utilisateurs. Puis-je ou devrais-je utiliser Elasticsearch comme une base de données ?

Shay Banon: Pour le moment, ce n'est pas quelque chose que je recommande. Nous devons apporter des fonctionnalités supplémentaires avant d'annoncer cela. Notamment en termes d'outils d'administration. Mais je dois reconnaître que nous n'en sommes plus très loin.

David Pilato: Est-ce que Elasticsearch supportera les transactions ?

Shay Banon: Définitivement non. Cela ne sera pas supporté dans Elasticsearch par souci de scalabilité et de performance. Par contre, si tu as vraiment besoin de transactions, je conseille plutôt d'envisager l'utilisation de queues de messagerie et de faire consommer par Elasticsearch les messages après leur commit dans la queue.

David Pilato: Il y a maintenant une société derrière le projet Elasticsearch. Vous venez de lever 10 000 000 de dollars. Qu'allez-vous faire avec ce budget ?

Shay Banon: Nous allons renforcer les équipes de développement principalement et créer des postes commerciaux et marketing. L'intérêt est de ne plus avoir un seul développeur mais d'avoir un ensemble complet de compétences, telles que des commiters Lucene, des spécialistes Ruby, PHP, PERL ou autres, au-delà de Java.

Nous allons pouvoir fournir d'avantage de support et pouvoir répondre à l'extraordinaire demande à laquelle nous devons maintenant faire face.

Nous aurions pu réaliser toutes ces actions sans lever de fonds, mais là, nous allons pouvoir aller très vite, beaucoup plus vite.

David Pilato: On te voit beaucoup moins sur la mailing liste. Pourquoi ?

Shay Banon: C'est volontaire. Je me suis mis en retrait pour laisser répondre le reste de l'équipe. Je ne veux pas être le "single point of failure" du projet et pour cela, il est essentiel que l'équipe prenne à bras le corps tous les sujets et réponde ! Mais, ce n'est pas parce que je ne réponds pas que je ne lis pas. Je suis très présent en fait et lorsque l'équipe ne peut pas répondre, j'interviens ou j'ajoute mes précisions.

David Pilato: Quelle est ta roadmap ? Qu'y a-t-il dans la version 0.20 qui est en ce moment en Release Candidate ?

Shay Banon: Principalement, nous avons reporté toutes les modifications de la 0.19.11 et nous apportons une meilleure gestion du cluster et une scalablité accrue. Quelques nouvelles API, les warmers qui permettent de "préchauffer" le cluster au démarrage en mettant en cache quelques données de façon a toujours servir nos utilisateurs le plus vite possible. Il y a également la gestion des GeoShapes.

David Pilato: Et dans la version 0.21 ? On voit en ce moment beaucoup de commits relatifs à Lucene4.

Shay Banon: En effet, la 0.21 est tournée vers l'intégration de Lucene 4. Notre objectif étant de fournir dès que possible de nouvelles fonctionnalités apportées par Lucene 4, comme par exemple les codecs. Il est probable que ce soit au final, Lucene 4.1 qui soit intégré dans Elasticsearch 0.21 car la release de la 4.1 ne devrait pas tarder.

David Pilato: Et ensuite ?

Shay Banon: un refactoring dans la gestion des données, une amélioration dans la représentation des données, sans doute une refonte de la gestion des facettes pour en permettre une plus grande flexibilité. Je veux aussi travailler sur les fonctionnalités de snapshot & restore qui nous permettront de donner plus d'outils aux Ops.

David Pilato: Souvent, on me pose la question : il y aura une version 1.x ?

Shay Banon: Dans les faits, la version 1.0 existe depuis bien longtemps. Les versions en production sont déjà très très stables, mais je comprends l'inquiétude que peut soulever la notion de version 0.x. Donc, dès que nous aurons la fonction snapshot & restore et donc des outils d'administration, je passerai le projet officiellement en 1.0. Probablement, la version 0.22 sera en fait la 1.0. Mais encore une fois, c'est juste une étiquette ! Vous pouvez utiliser les versions actuelles en production !

David Pilato: Parlons un peu de la mise à jour des versions. C'est quelque fois difficile de faire une montée de version d'un cluster entier sans stopper le service. Sera-t-il possible à l'avenir de faire des mises à jour nœud par nœud avec interopérabilité des nœuds (compatibilité ascendante) ?

Shay Banon: Nous avons introduit en version 0.20 justement la notion de version de nœud dans les échanges administratifs entre les nœuds. Nous avons donc maintenant toutes les bases pour assurer cela. Il reste encore du travail à faire mais cela progresse bien.

David Pilato: Les utilisateurs se plaignent souvent de l'organisation de la documentation. Tu as prévu quelque chose pour répondre à cette demande ?

Shay Banon: Clairement, oui ! D'ailleurs, le renfort  de l'équipe va nous permettre d'écrire des livres sur Elasticsearch et le site sera revu avec le contenu de ces livres. On devrait y trouver des livres de référence, des cookbooks, des tutoriaux,...

David Pilato: Il y a maintenant beaucoup de plugins développes par la communauté. Tu vas devoir créer un ESStore (comme il existe l’APPStore) ! Non, je plaisante. Sérieusement, que penses-tu de tous ces plugins ?

Shay Banon: Oui, c'est assez incroyable ! J'encourage fortement la création de plugins et notamment, je m'efforce de rendre le plus simple possible la mécanique d'extension d'Elasticsearch.

David Pilato: Envisages-tu de fournir Elasticsearch as a service dans le Cloud ?

Shay Banon: Non. Ça n'est vraiment pas notre métier. Je veux concentrer nos efforts sur le développement du projet. Il existe déjà 3 ou 4 solutions qui répondent à ce besoin.

David Pilato: Nous avons maintenant en France une communauté croissante (plus de 150 développeurs sur la mailing list elasticsearch-fr@googlegroups.com et plus de 200 followers sur Twitter: @ElasticsearchFR). Tu envisages d'apprendre le français ? 😉 As-tu quelque chose à dire à la communauté française ?

Shay Banon: J'adore la France, mais je ne parle pas français. Pourtant, mon père parle très bien le français. Je trouve que l'accueil d'Elasticsearch en France est incroyable, même si pour le moment je n'ai pas encore eu beaucoup de retour sur des installations en production.

Les efforts que vous faites au niveau Elasticsearch France permettent de populariser le projet et c'est vraiment très bien.

Plus globalement, ce qui me fait chaud au cœur, c'est de constater à quel point l'esprit de communauté Elasticsearch est développé et sain. Les gens s'entraident dans les mailings lists et accueillent volontiers les nouveaux arrivants avec beaucoup de patience. Je suis très fier de ça à titre personnel et pour l'entreprise aussi. Le mot "communauté" est vraiment porteur de sens dans le cas d'Elasticsearch.

David Pilato: Merci pour l'interview. Nous espérons te voir plus souvent en France 😉

Shay Banon: Normalement, je vais venir sur Paris pour une session de formation en Janvier. Nous aurons l'occasion sans doute d'organiser une rencontre...

Devoxx France 2012 – Manipulation de bytecode

Durant Devoxx France 2012, j'ai assisté à la conférence intitulée Manipulation de bytecode : démocratisons la magie noire, présentée par Julien Ponge (son compte github) et Frédéric Le Mouel.

Parmi les librairies qui manipulent le bytecode, il y a les conteneurs d'EJBs, terracota pour distribuer les calculs et hibernate. Le plugin eclipse gérant la mise en page et l'affichage des écrans Android manipule aussi le bytecode afin d'instrumenter la vraie librairie utilisée dans Android.

Ensuite, Julien et Frédéric nous présentent rapidement le bytecode java : chaque type primitif est représenté en interne par une lettre, les packages des classes sont représentées avec des slash au lieu des points (exemple : java/lang/String)... La machine virtuelle destinée à utiliser le bytecode est une machine à pile avec une zone contenant les constantes (constant pool) et une autre contenant le code à exécuter (opcode). Pour illustrer cela, ils nous font la démonstration d’exécution du bytecode généré par la compilation d'un simple System.out.println pour afficher le résultat d'une addition. Nous pouvons ainsi voir l'évolution de la pile et des variables (les registres du processeur).

ASM est une des librairies permettant la manipulation du bytecode. Elle dispose de 2 APIs :

  • Une API basée sur un modèle événementiel, structurée autour du patron de conception visiteur. Cela peut servir pour faire le profilage de code java, en implémentant l'interface ClassFileTransformer.
  • Une API basée sur un modèle objet, chargeant tout le bytecode en mémoire sous la forme d'un arbre syntaxique du code (AST).

AspectJ est une autre librairie permettant de faire de la manipulation de bytecode. Celle-ci permet de faire de la programmation orientée aspect (AOP) pour, par exemple, rajouter des traces (appels de méthodes...), de la sécurité (vérification d'accès à certains services) ou de la validation (vérification des champs d'un formulaire) ...
Pour illustrer cela, Julien et Frédéric font 2 démonstrations autour du calcul de la suite de Fibonacci, de manière récursive : la première est très lente et fait certains calculs plusieurs fois, la seconde est beaucoup plus rapide car elle utilisent AspectJ pour implémenter un cache des calculs déjà effectués.
Une autre utilisation possible est la modification d'une classe pour lui rajouter l'implémentation d'une interface qu'elle n'implémentait pas auparavant.

Byteman, une autre librairie permettant la manipulation du bytecode, implémente un agent qui modifie les classes d'une JVM en cours de fonctionnement, pour débugger par exemple. Byteman fournit également un injecteur de bytecode, à utiliser dans le setup de JUnit. Il devient ainsi possible, par exemple, de forcer File.mkdirs() à retourner false, ce qui permet d'améliorer la couverture des tests.
Pour accomplir sa tache, Byteman définit un langage proche du bytecode, qui permet de spécifier quelles sont les modifications à faire et l'endroit où il faut les placer.

Pour terminer la présentation, Julien et Frédéric nous présentent la version béta du projet de recherche JooFlux (celui-ci sera bientôt mis en open source). Ce projet utilise le travail de Rémi Forax sur le nouveau bytecode invokedynamic (introduit dans Java 7). Byteman modifie toute une classe, même si une seule de ses méthodes a changé (ce qui force le compilateur JIT à optimiser de nouveau l'ensemble des méthodes). A l'opposé, JooFlux ne modifie seulement ce qui est nécessaire, ce qui optimise l'utilisation du compilateur JIT. JooFlux dispose également d'une interface Swing/JMX pour gérer l'injection de bytecode. Comme exemple d'utilisation, on peut remplacer tous les appels invoke* par un appel invokedynamic.

Pour plus d’informations sur le bytecode, vous pouvez consulter les slides de la présentation JVM Bytecode for Dummies faite par Charles Nutter pour JavaOne 2011.

Devoxx France 2012 : Mobilité

Retour sur Devoxx France 2012 (3/3)

L’autre grosse tendance de Devoxx, c’est la mobilité et plus précisément son arrivée dans le monde de l’entreprise. Les utilisateurs sont de plus en plus nomades et toujours plus friands de nouveaux services.

Les entreprises sont souvent en retard pour proposer aux utilisateurs leurs services. Elles se font parfois pousser par les développeurs indépendants qui proposent des services non officiels.

Devoxx France 2012 : HTML5

Retour sur Devoxx France 2012 (2/3)

Une très bonne présentation d’Habib Guergachi nous explique les principes des architectures Orientées Web (WOA : Web Oriented Architecture). Le serveur met à disposition les ressources qui sont accessibles au navigateur avec des appels de service REST. La partie cliente reprend donc de l’intelligence, notamment pour les aspects Controller / View (en référence au Design pattern MVC). L’idée est de développer des applications seulement avec les standards du Web.

Devoxx France 2012 : tendances générales

Retour sur Devoxx 2012 (1/3)

Devoxx, c’est la plus grosse conférence de développeurs Java en Europe qui existe depuis 2002 (auparavant connue sous le nom de Javapolis). Elle se déroule tous les ans à Anvers (Belgique) en Novembre.

DevoxxFrance  c’est l’édition française de cette conférence avec principalement des conférences en Français qui a eu lieu pour la première fois en Avril 2012 à Paris.

Devoxx 2012 : soirée Meet & Greet

J'étais invité hier soir à la soirée Devoxx Meet&Greet. Impressionnant ! Devoxx 2012 était complet, soit 1 000 visiteurs, qui ont suivi des conférences dans 5 amphis de 200 places. Et il y avait quelques centaines d'invités supplémentaires pour la soirée : il y avait vraiment beaucoup de monde au Mariott rue St Jacques !

Le plus étonnant était finalement qu'on était moins de 10 à être en cravate. Hé, oui plus de 1 000 geeks Java !