Yves Amsellem

Xebian depuis 2010, Yves tire de son expérience sur des sites à fort trafic une culture de la qualité, de l'effort commun et de l'engagement. Développeur agiliste depuis plusieurs années, il prête grande attention à la robustesse logicielle, à sa simplicité, à sa performance et à son amélioration continue. Il s'investit notamment sur les architectures REST et, plus récemment, les clients JavaScript. Il publie régulièrement des billets sur ces sujets sur le blog de Xebia.

 

Jongo = Mongo + Java // le 21 mars au Mongo User Group

Article publié par Benoît Guérout et Yves Amsellem le 27 février 2012.

Catégorie(s) : Cloud / NoSQL

 

5 commentaires »

Mots-clefs :, ,

Le 21 mars, le Mongo User Group à la gentillesse d’accueillir les développeurs de Jongo.

Si Mongo est plein de qualités, les exploiter à l’aide de son driver Java peut être délicat. Des sucres syntaxiques en simplifient d’ailleurs l’usage, Morphia – le plus populaire – permet d’écrire des requêtes à l’aide de builders et d’exploiter les résultats unmarshallé en objets Java. Dans leur lignée, Jongo propose une nouvelle approche : écrire directement les requêtes en chaînes de caractères (et récupérer les résultats unmarshallés).

En un clin d’oeil :

// Mongo shell
db.peoples.find({age: {$gt: 18}})
// Jongo
Iterable<People> adults = peoples.find("{age: {$gt: 18}}").as(People.class);
// Java driver
Iterable<BSONObject> adults = peoples.find(new BasicDBObject("age", new BasicDBObject("$gt", 18)));
// Morphia
Iterable<People> adults = ds.createQuery(People.class).field("age").greaterThan(18);

Les retours sont bienvenus sur l’api à l’étude et les sources GitHub.

REST côté client avec JavaScript

Article publié par Yves Amsellem le 14 novembre 2011.

Catégorie(s) : SOA

 

2 commentaires »

Voilà 11 ans que Roy Fielding a introduit REST, le style d’architecture original du web appliqué aux échanges inter-applications. Reposant sur HTTP, il promet économie, simplicité et profit des structures réseau en place. Voyons comment l’implémenter via un client JavaScript — présenté ici — communiquant avec un serveur Java — présenté dans un article connexe –. Le code clé-en-main est disponible sur GitHub.

Le client JavaScript que nous allons déployer repose sur jQuery — un framework de haute productivité —, nous lui adjoindrons BackboneJS, un framework MVC REST, et RequireJS, un chargeur de modules à la demande.

Lire la suite de cet article »

REST côté serveur avec Java

Article publié par Yves Amsellem le 14 novembre 2011.

Catégorie(s) : SOA

 

Un commentaire »

Voilà 11 ans que Roy Fielding a introduit REST, le style d’architecture original du web appliqué aux échanges inter-applications. Reposant sur HTTP, il promet économie, simplicité et profit des structures réseau en place. Voyons comment l’implémenter via un client JavaScript — présenté dans un article connexe — communiquant avec un serveur Java — présenté ici –. Le code clé-en-main est disponible sur GitHub.

JAX-RS — Java API for RESTful Web Services — standardise l’implémentation de REST en Java (une API + une servlet). Nous retiendrons son implémentation de référence, Jersey, et la déploierons sur un serveur Jetty-Embedded (le code clé-en-main dispose d’un main effectuant le déploiement ; pas besoin d’installer de serveur).

Les web services REST sont des ressources. Une ressource est identifiée par un nom du domaine, produit, commande, etc. HTTP définit 7 verbes pour manipuler les ressources :

  • GET pour la lecture,
  • PUT pour la modification,
  • DELETE pour la suppression,
  • POST pour la création et autre,
  • OPTIONS (verbes disponibles), HEAD (prise de pouls) et TRACE (écho des headers de l’appelant) non abordés

Une fois déployée, la servlet Jersey mappe l’url /resource/* ; la partie cliente est disponible sur /index.html. Le web.xml définit deux filtres Jersey afin de loguer les trames HTTP des échanges client-serveur.

Lire la suite de cet article »

Authentification HTTP et Sécurité avec Apache Shiro

Article publié par Yves Amsellem le 18 avril 2011.

Catégorie(s) : Java / JEE

 

Aucun commentaire »

Authentifier les utilisateurs d’une application est une étape cruciale pour tout système d’information. Restreindre l’accès à ses ressources selon certains critères l’est également. Côté web, Spring Security tient le haut du pavé en la matière. Pourtant son adhérence à Spring et sa volumétrie — plus de 10 JAR de dépendances — peuvent représenter un frein à son adoption. En outre, son absence d’intégration à Guice ou la récurrence du déploiement d’une application App Engine peuvent le rendre impraticable. Voici une bonne occasion pour se tourner vers Apache Shiro.

Lire la suite de cet article »

JAXB, le parsing XML — objet

Article publié par Yves Amsellem le 17 mars 2011.

Catégorie(s) : Java / JEE, SOA

 

4 commentaires »

Mots-clefs :, , , , , ,

Format privilégié pour les échanges inter-applications, XML est l’objet de nombreuses bibliothèques Java. Cependant, ces bibliothèques masquent toutes le data binding qu’elles effectuent ; la transformation d’un document XML en grappe d’objets. Nous voilà bien démunis dès lors qu’une application produit du XML comme une simple chaîne de caractères. L’utilisation d’API bas niveau (DOM, XPath) — attachées à la structure du document — se révélant fastidieuse, la majorité des implémentations JAX-RS (Jersey, CXF) ont retenu la même API de haut niveau — concentrée sur les données — : JAXB. Faisons de même.

Lire la suite de cet article »

Java Collection Performance

Article publié par Yves Amsellem le 17 février 2011.

Catégorie(s) : Java / JEE, Performance

 

20 commentaires »

Le temps de [ ] est révolu ; celui de <> est venu. La liste a remplacé le tableau et type ses éléments — comme son prédécesseur — depuis java 1.5. Mais est-elle efficace ? À quel prix s’entoure-t-on d’un de ses cadets, LinkedList, HashSet, TreeMap ? La JavaDoc détaille leurs complexités, pourtant aucun site ni ouvrage semblent n’en faire l’écho. Quelques indices glanés dans « Java in a Nutshell » quelques autres dans « Java Generics and Collections » pas beaucoup plus sur la toile à ma connaissance. Les Collections, utilisées si généreusement, seraient méconnues ? Petite revue des troupes.

Lire la suite de cet article »

De l’héritage à la délégation

Article publié par Yves Amsellem le 17 janvier 2011.

Catégorie(s) : Java / JEE

 

4 commentaires »

Parmi les piliers de l’OOP, 3 sont majoritairement implémentés par nos langages, l’héritage, le polymorphisme et l’encapsulation. Et, bien qu’à l’intérêt reconnu, la délégation ne l’est que trop rarement. Elle remplace pourtant souvent avantageusement l’héritage en réduisant couplage et graphe d’objets. Voyons comment faire de cette petite sœur injustement négligée une alliée de choix.

Lire la suite de cet article »

 

Page optimized by WP Minify WordPress Plugin