Affichage des articles dont le libellé est Web. Afficher tous les articles
Affichage des articles dont le libellé est Web. Afficher tous les articles

mercredi 30 novembre 2011

Devoxx

10 ans … Voilà 10 ans que vers cette période de l’année, plus de 3000 passionnés se réunissent à Anvers pour la plus grosse conférence autour de la plateforme java. Elle se découpe en 2 parties : université et conférence.
Pour moi, c’était ma 3ème participation. Par contre, cette fois ci, j'y suis allé pour la semaine complète avec mes collègues Vincent Bostoen et Benito d’Almeida. Les autres Sfeiriens, eux, nous ont rejoint le mercredi. Au total, 15 Sfeirens étaient présent. Même si nous sommes partis 2 jours avant les autres, nous avions tout de même le même point de rendez-vous avant le départ. Malgré une petite mésaventure dans les transports en commun Anversois, nous sommes arrivés à bon port au cinéma multiplexe où a lieu la conférence.
Cette année, gros changement dans l’organisation : au lieu d’un simple badge avec de petits tickets à échanger contre les repas, nous avons reçu un bracelet marqué de notre nom et d’un code barre. Heureusement, ce bracelet était waterproof car nous devions le garder au bras pendant la semaine entière.
C’est donc le mercredi qu’à la station de tramway nous avons rencontré nos autres collègues pour la 2ème partie de l’aventure : la conférence. Celle ci a commencé par l’habituelle keynote de Stephan Jansen, l’organisateur. Pour finir son discours, il nous a montré une vidéo. On y reconnaît quelques têtes connues : les organisateurs du Paris JUG... puis s’affiche “Devoxx France” … Et oui, au mois d’avril, nous aurons une conférence affiliée à Devoxx, ici à Paris, avec 75% des sessions en français. Sfeir est d’ailleurs sponsor de l’évènement.
Le retour s’est fait le vendredi après midi, après une semaine plutôt fatigante.


Mes impressions globales :

  • On sent vraiment que Google est partenaire : nous avons eu beaucoup de sessions autour d’Android et Html5.
  • Même chose en avec le duo Spring Source/Cloud Foundry
  • Les langages jvm ont du succès : Scala a eu droit à beaucoup de sessions et remplaçait même java pour des exemples de codes. Ceux un peu moins populaires : Fantom et Clojure ; et les petits nouveaux : Kotlin et Ceylon venaient se présenter.
  • Moins de sessions cloud que les années précédentes.
  • Plus d'animations aux stands : course de petites voitures sur circuit électrique, roulette de casino virtuelle, ...
  • Pas de grosses annonces (mis à part Devoxx France)
  • Comme toujours, beaucoup de monde.
  • De plus en plus de français.

Parmi les sessions qui m'ont le plus intéressé :

  • JAX-RS 2 qui disposera d'une (meilleure) intégration avec d'autres apis comme Bean Validation (JSR-303), et surtout d’une partie cliente.
  • MongoBD. Je l'avais récemment découvert pour un POC où je voulais stocker des données en ligne, la session m'a permis de mieux voir les possibilités qu'il offre.
  • Performance et usabilité Android : beaucoup de conseils divers de développement à ne pas oublier si l’on veut une application qui soit ergonomique et performante.
  • Android sur Google TV, même si on est loin d'avoir ces télévisions aussi répandues que des smartphones, il est tout de même intéressant de voir les enjeux et l'ergonomie.

Pour ceux qui n’ont pas pu venir et qui seraient intéressés pour revoir les sessions, ou pour ceux qui souhaitent voir certaines sessions qu’ils n'auraient pas pu voir : il y a Parleys. Ce site offre en effet la possibilité de revoir les sessions de Devoxx, mais aussi de certains jugs locaux. Les sessions Devoxx seront disponibles gratuitement pour ceux qui y ont participé, via abonnement pour les autres. Il faudra quand même patienter jusqu’à la fin de l'année pour qu'elles soient disponibles....



Photo par Pierre-Antoine Grégoire.

mercredi 13 octobre 2010

Retour sur le Paris JUG d'Octobre

Ruby On Rails - Point de vue d'un javaiste

Cette 1ère partie nous est présentée par Christian Blavier de chez Octo.
Java, c'est plein de belles promesses. C'est comme un hamburger plein de beaux ingrédients mais tellement que ça peut en devenir écoeurant : trop de couches, trop d'abstraction, on s'éloigne trop du html, ...
Ruby On Rails quant à lui est optimisé pour le plaisir des développeurs, c'est plein de bonnes idées.
On y retrouve une architecture MVC.
Etant basé sur Ruby, on y retrouve certaines facilités comme la manipulation de dates, les closures, ...
C'est aussi un framework fait pour le web :

  • Quelques lignes suffisent pour y déclarer notre contrôleur. Si on souhaite du JSon, il suffit de l'indiquer, pas besoin de framework.
  • Templating web : des gems comme ham et sass donne des facilités respectives en html et css
  • Routage : Pour avoir des urls type REST, 1 seule ligne suffira dans le fichier de configuration de routage
  • Active Record : Gère la persistance directement dans le modèle.

C'est aussi un framework fait par des agilistes pour les agilistes. Le test est au coeur du développement et il existe un outillage important pour aider dans la testabilité. Parmis eux : Mocha, Girl Factory, Time Cop, Cucumber, ...
Pour le déploiement, Heroku offre une plateforme qui permet de déployer gratuitement son application; et ça en une ligne de commande.

HTML5

Pour la deuxième partie, c'est Alain Duval et Cédric Beurtheret de Objectif Informatique.
La présentation démarre avec un rappel de la Genèse de Html5 puis un rappel de ses principales fonctionnalités.
Ils nous livrent aussi un retour d’expérience projet.
Au début, ils avaient utilisé Gears puis sont passé à html5 quand ce fut possible. Leur application est destinée à gérer la relation clientèle pour des commerciaux équipés de tablet pc possédant une connectivité 3g. Un zoom est fait sur 3 fonctionnalités :

  • Web worker : C'est une API pour lancer une tâche de fond sans bloquer le navigateur.
  • Cross window messaging : permet à deux fenêtres de communiquer entre elles, même si elles ne sont pas sur le même domaine.
  • Web storage : du stockage de données locales dans le navigateur. Il est possible de travailler en mode synchrone ou asynchrone, mais la 2ème option est recommandée car plus performante. Par contre attention à la sécurité de vos données, la base locale ne permet pas l'utilisation d'identifiants.

Et pour finir, nous avons le droit à une belle démo dédiée au JUG montrant ces 3 fonctionnalités : une page qui affiche des message twitter. Les messages sont récupérés par une web worker et stockés en base locale le tout avec une fenetre de log gérée par le cross window messaging. Pour montrer le bon fonctionnement, quelques personnes envoient des tweets qui apparaissent sans avoir à rafraîchir la page.

Play!

Et pour la dernière partie, c'est au tour de Nicolas Martignole et de Guillaume Bort.
Play est un framework qui fait de plus en plus parler de lui que ce soit sur les blog mais aussi dans des conférences comme Jazoon et même JavaOne.
Tout d'abord, il faut savoir que Play! n'est pas basé sur l'API Servlet qui est comme une muti-prise sur laquelle on a branché un tas d'appareils successivement.
L'analogie du McDo est prise comme exemple : là bas, vous faites la queue jusqu'à ce qu'une équipière prenne votre commande puis court dans tous les sens pour vous la préparer et vous l'apporter. Pendant ce temps là, elle ne peut pas prendre d'autre commande
Par contre, Play! c'est comme Starbuck. Les commandes ne sont pas prises par ceux qui préparent ce qui permet de répondre rapidement à une demande client.
La philosophie de Play! est assez proche de celle de Grails avec quelques fonctionnalités en moins comme les finders dynamiques.
On va avoir une url propre (ex : http://www.express-board.fr/user/sfeir/27) fini tout ces paramètres uniquement techniques. Une url se doit d'être lisible, bookmarkable et partageable.
Si on veut pouvoir monter en charge sans devoir mettre en place de réplication de session, le serveur doit être stateless. C'est à sens que les informations de session sont stockées dans le navigateur dans un cookie crypté de seulement 3Ko.
Play! n'est pas client side, c'est pourquoi son ihm se sert des langages du web : html/css/js
C'est comme un couteau suisse, c'est fullstack.
Là où en java, on a l'habitude d'une certaine complexité liée à l'intégration de différents frameworks entre eux, Play! propose de prendre le problème différemment. Un problème compliqué a t il besoin d'une solution compliquée ?
Play aide à la productivité en ayant un serveur sans état : pas besoin de le redémarrer pour ajouter/retirer des fonctionnalités, lorsqu'une erreur se produit en mode dev, elle s'affiche lisiblement dans le navigateur, ...
Et cela s'illustre dans la démo, en quelques minutes et très peu de code Guillaume contruit un formulaire pour ajouter des éléments à une liste de todos, et ce juste avec un éditeur de texte et aucun redémarrage. Tout cela est possible parce que Play ne se base pas les fichiers .class mais sur les fichiers .java.

lundi 12 juillet 2010

Sophiaconf 2010 - Ruby On Rails

En tant que développeur java, il est important de regarder de temps à autre ce qui se fait chez les voisins afin de ne pas rester sur une certaine vision, voir comment une problèmatique se résoud dans une autre communauté.
Rails aura 2 conférences, une pas technique et l'autre technique.

Pourquoi Rails est génial ?

La première partie est faite par Camille Roux, jeune développeur qui pratique le développement Ruby depuis 1 an et a 3 ans de développement web derrrière lui. Pour les plus curieux, son site perso : http://www.camilleroux.com
Une question importante de se poser avant tout est : Qu'est ce qu'un bon framework ?
Camille nous présente un nuage important de critères, parmis eux : pas cher, rapide à développer, utilisé par beaucoup de monde, sécurisé, ...
Rails répond à tout ces critères.

Le langage à la base de Rails est Ruby, un langage interprété, multiparadigme (aussi bien object que procédural). Ruby a été crée pour être "un langage pour les hommes, pas pour les machines". En plus d'être multiplateforme, il est aussi multi-implémentation :
  • Ruby, la plateforme de base
  • JRuby, pour nous les développeurs java qui voulons réutiliser toutes nos bibliothèques
  • Rubinus, plateforme très prometteuse

Quelques chiffres sur Ruby :
  • 14 000 gem (librairies pacakgé et facile à utiliser)
  • 185 000 projet sur github
  • 10 ème langage le plus utilisé

Ruby est assurement un langage incontournable.
Ruby On Rails est un framework basé sur ce langage. On peut l'appeler ROR ou Rails pour les intimes. Ce framework a été initié par un développeur au nom imprononcavle que toute la communauté nomme DHH.
Rails posséde une philosophie basé sur le fameux "convention over configuration". On ne veut pas passer du temps du temps sur la config de divers fichiers (parce que c'est assez chiant à faire), on préfère obéir à des conventions comme nommer sa table de la même façon que son objet par exemple. Un point de cette philosophie est l'agilité : on aime le déploiement facile, et l'abondance de test.

Qu'est ce qui est si génial en Rails ?
  • Projet construit : on ne se casse pas la tête. Un autre avantage est qu'il sera plus facile à intégrer un nouveau developpeur car il connait déjà les conventions.
  • Migration : on créer un classe qui décrit les tranformations
  • Active record : les méthodes d'opérations comme save sont appelées sur l'objet lui même
  • Scafolding : Génération de code MVC. Très pratique pour une développer rapidement et facilement une interface d'admin

  • Environnement : Rails permet d'en définir facilement plusieurs : test, dev, prod, autant qu'on veut... On peut aussi avoir des gems spéciaux pour un env (test par exemple, log différents, base différente bien sûr, ...)

  • Sécurité : il est facile d'ajouter de la sécurité à son application rails
  • Javascript : Prototype est disponible. Rails donne une certaine abstraction dans l'utilisation de javascript, il est pa exemple possible de faire un bouton de rafraichissement sans faire de javascript, rails le gère pour nous.
  • Test : Avec Rails la partie test est très importante et fait parti du projet. Une partie des tests sont générés à la création du projet. Rails permets d'avoir du code testable tout au long du projet.

D'ici environ un mois, sortira Rails 3 :
Rails 3, c'est la fusion de Rails 2 et de Merb
Cette fusion des 2 projets donne un résultat très confortable au développement.

Au programme de cette 3 ème version :
  • Modularité
  • Bundles
  • Performance
  • Support du html 5


Certains reprochent à Ruby d'être lent. Qu'en est il vraiment ?
Il faut d'abord savoir qu'il y a beaucoup de benchmark qui disent beaucoup de choses, et sont parfois contradictoire. Selon de bons benchmark, il serait à la hauteur de python et de php.
Mais les performances sont elles vraiment si importantes ?
Après tout, ce qui est le plus important, c'est la vitesse de développement, la fiabilité, la facilité de maintenance. De plus, Ruby est soutenu par une communauté. On peut ainsi trouver un gem pour chacun de ses développement.
La forte présence de cette communauté permet un appentissage facilité par des forms, des tutoriaux, des screencast, des conférences comme celle çi, et bien sûr des livres

Qui utilise Rails ?

Beaucoup de sites, dont Yellow Pages (les pages jaunes américaines), White Pages, Brightlite, Github, ....
Notons que la plupart de ces sites, sont à fort traffic et que rails tient la charge.
Il y aussi des entreprises comme Amazon qui dont du ruby, même si on ne sait pas vraiment ce qu'il en font.

Au niveau hébergement, il y a aussi de bons services cloud :
  • Engine Yard : Permet de déployer sur Amazon EC2 et S3, de redimensionner à chaud le volume de machine. Pour déployer, il suffit de lui indiquer où est le repository github du code. Il permet aussi de faire le suivi de l'activité et de faire des backup
  • Heroku : 2 lignes de commandes suffisent à déployer gratuitement. Lors du déploiement, il s'occupera de télécharger les gems et leur dépendances. On pourra aussi régler le volume de machines ou s'occuper de la configuration des machines. Bien sûr, toutes les possibilités ne sont pas toutes gratuites.

Et pour le suivi de votre application, New Relic s'occupe du monitoring.

Exemple d'un succès de Rails :

Yellow Pages, un site web à très fort traffic : 1500 req/sec.
Il y a quelques années, ils étaient en JavaEE avec des EJB et connaissait des problèmes de design et de scalabilité. Le code était de 125 000 lignes et ne contenait aucuns tests.
En 2007, ils ont adopté Rails et ont refait entèrement leur site avec.
Pour des performances égales, leur code est passé à 20 000 lignes en comptant les tests.
Cette refonte, a pris 3 mois avec une équipe de 5 développeurs.
Rails est un framework qui plait, c'est d'ailleurs pour celà qu'il est copié : Grails ou Play!
Dans la salle quelques retours disent qu'ils n'est pas facile de faire du Ruby/Rails sur Windows. Git ne facilite pas non plus le problème.

Camille nous dira que Git n'est pas tout obligatoire, mais qu'il s'agit d'un produit que la communauté ruby adore.
Et pour finir, selon Camille, être développeur Ruby, c'est comme être un guerrier avec un sabre laser : ce sont des passionnés qui en font et qui font vivre.

Acte 2

Pour la 2ème partie de double présentation, c'est au tour de Maxime Menant de s'y coller. Jeune aussi, développeur de 25 ans et qui travaille avec Camille. Il nous fait aussi part de l'adresse de son blog : http://blog.maximemenant.fr
"On vous a dit pourquoi c'est génial, maintenant on va vous le montrer"

Ruby qu'est ce que c'est ?
  • Libre
  • 100% objet
  • Interprété
  • Multii-Paradgime
  • Syntaxe proche langage naturel
  • Code compact
  • Méta programmation et c'est surtout ce qui fait sa puissance

Nous voyons d'abord les bases du langages : variables, contantes, accesseurs, boucles, condition, symboles, tableau, hashmaps, définition de classe, mixins.
Je ne rentrerai pas dans les détails sur ces derniers points. Ruby offre un certain confort d'écriture.
Comme il l'a été dit, il existe plusieurs implémentations :
  • JRuby
  • IronRuby : pour .net
  • MacRuby : Objective C , maintenu directement par Apple
  • Rubinus, la nouvelle jvm ruby.

Nous voyons un exemple de JRuby de création d'une frame et de son affichage. Le code mélange de Java et Ruby. Dans ce seule l'instantiation change :

frame = java.swing.JFrame.new()

Le reste sera comme en java.

Zoom sur les Gems.

C'est un peu comme des .deb : ça s'installe facilement (gem install XXX) et ça installe aussi les dépendances. Bien qu'il existe beaucoup dendroits où en trouver, la référence est http://www.rubygems.org

Rails s'appuie sur 2 principes :
  • DRY : Don't Repeat Yourself
  • Convention Over Configuration

Au niveau architecture, on s'appuie sur les principes de REST et de MVC.
S'en suit, un coding live, où Maxime développera une application de gestion de tâches pour d'un projet.
Le code sera bien sûr codé sous Rails 3 dont la release finale verra bientôt le jour.
En ligne de commande, le projet est crée avec toutes sa structure.
Une autre ligne suffira à créer une entitée Projet avec son interface d'administration et ses tests.
Bien sûr, par défaut, il n'y a pas de validation. Ces régles se définissent facilement et rapidement dans le code. Des "validates" seront ainsi posé sur la présence ou la taille de certains champs.

Et pour sécuriser ? 2 lignes suffiront.

Cette présentation est assez convaincante de la puissance de Rails. On voit aussi, que Play! S'en inspire beaucoup et en tire ce qu'il y a de bon. Ce dernier était d'ailleurs lui aussi à la sophiaconf, présenté par Nicolas Leroux, mais malheureusement en parrallèle de cette session.