Comme nous l’avons déjà évoqué sur le blog, à l’occasion du challenge USI 2011, nous nous sommes intéressés à différents serveurs et framework web NIO en Java. Le principe était simple en mettant à plat la spécification du challenge, nous avons identifié quelques besoins techniques :
- Une solution pour le marshalling JSON
- Un serveur web NIO supportant le long polling
- Une solution pour la persistence et le partage des données
Notre démarche a été de réaliser des POCs implémentant la création des utilisateurs et le long polling pour retenir la meilleure solution. La solution devait être simple et rapide à implémenter, et tenir une charge conséquente en la testant à l’aide de ab l’outil de benchmark Apache et de la librairie Async Http Client. Pour le JSON, nous nous sommes tous rapidement mis d’accord sur l’utilisation de la librairie Jackson. Nous étions tous convaincus qu’il nous faudrait un serveur web NIO sans passer par la case Servlet. C’est à partir de là que notre tour d’horizon des API NIO en Java a commencé.
Lire la suite de cet article »
Alors que le Java Community Process (JCP) a annoncé l’apparition de la programmation fonctionnelle dans le langage Java, avec l’introduction des expressions lambda (JSR 335: Lambda Expressions for the JavaTM Programming Language), est-il possible avec la version actuelle de Java de pratiquer ce paradigme ? A l’heure où ces lignes sont écrites, le JCP est en plein brainstorming sur le sujet. Il existe différentes propositions concernant la syntaxe à adopter pour la JSR 335 : une proposition factice, un prototype pour l’OpenJDK serait en cours, la proposition BGGA (comprenez Bracha, Gafter, Gosling et von der Ahé), etc. Mais aucune de ces syntaxes n’ont été officialisées. Toutefois, un premier brouillon devrait apparaître d’ici septembre 2011 en vue d’une sortie officielle a priori avec Java 8 en 2012.
En attendant, il existe un certain nombre d’API permettant aux développeurs d’utiliser la programmation fonctionnelle avec Java sans forcément changer de langage.
Dans cet article, après avoir introduit la programmation fonctionnelle, nous allons nous intéresser à l’état actuel de ce style de programmation dans Java au travers des API suivantes :
- Guava
- Functional Java
- FunckyJFunctional
- LambdaJ
En partant d’un exemple commun, nous verrons les différences qui caractérisent ces API.
Lire la suite de cet article »