Archives par mot-clé : Java

Java EE dans Azure : Cours en ligne gratuit

Microsoft Virtual Academy vient de publier un cours en ligne gratuit « Déploiement d’applications Java EE 7 dans Azure », que j’ai eu le plaisir de réaliser pour le compte de Soat. Ce cours présente les deux aspects de son titre :

  • le développement d’une application Java EE 7 simple, déployée dans un Glassfish 4.1 en Java 8. J’y parle de JPA, EJB, CDI, REST et JSF principalement.
  • le déploiement dans Azure, en mode PaaS hybride, adossé à une base SQL d’une part et un stockage en blob d’autre part.

Le cours est très introductif, et s’adresse à des débutants en Java EE, même si certains aspects présentés sont plutôt avancés. Cela dit, même si vous connaissez bien Java EE, la partie déploiement dans Azure vous est peut-être inconnue et vous surprendra sûrement. Il est entièrement chapitré, ce qui permet d’accéder directement aux parties qui vous intéressent.

Une bonne partie est consacrée à la configuration d’Azure. L’offre Azure est très riche, et on peut facilement s’y perdre, baliser le chemin est clairement l’un des objectifs de ce cours.

Mes remerciements vont bien sûr à Soat : sans son soutien ce cours n’aurait pas pu se faire, à Microsoft Virtual Academy, et également à Jules Levy, qui a réalisé les prises audio et vidéo avec un très grand professionnalisme, et aussi beaucoup de patience.

Java 8, Streams et Collectors

Cette journée était la première de Devoxx France 2014, et j’y donnais une Université, conférence longue de 3h sur le thème de Java 8, de l’API Stream et des Collectors. Les slides sont ici, n’hésitez pas à les partager, et le code présenté sur mon compte GitHub : https://github.com/JosePaumard/jdk8-lambda-tour.


Le programme de Devoxx France 2014 comporte d’autres présentations sur Java 8 et les lambdas. Ne manquez pas Paul Sandoz, ce vendredi à 13h30. je présenterai également 50 nouvelles choses que l’on peut faire avec Java 8, ce vendredi à 15h40.

Java 8 est là !

Et même plus précisément ici ! Si l’on compte que la version de Java qui aurait dû porter les lambda expressions est la 7, qu’elle aurait dû sortir deux ans après la 6, elle-même sortie en 2006, et si l’on compte que la version était annoncée pour le 18 mars, et que nous ne l’avons eue qu’à 19h48, cela nous fait environ 6 ans, 19 heures et 48 minutes d’attente, dont environ 6 années de « retard ». Retard est un mot un peu curieux, car la version que nous avons aujourd’hui est certainement très différente de celle que nous aurions eue il y a 6 ans.

Continuer la lecture de Java 8 est là !

Java au futur

De quoi le futur de Java est-il fait ? On peut se poser la question, et éventuellement s’en inquiéter.

Depuis 1996, Java a évolué à un rythme rapide, pas plus de deux ans entre deux versions. Vient Java 6 en 2006, puis quatre ans de pause, avant l’apparition d’un Java 7 controversé. Certains ont pu dire (et écrire) qu’ils s’agissait d’une sortie à minima. Le rachat de Sun par Oracle, qui a duré plus d’un an, entre autres du fait des problèmes de concurrence autour de MySQL, a porté cette responsabilité, même si les choses ne sont pas si claires. S’en est suivie une période, non pas de troubles, mais plutôt d’inconnues : comment Oracle va-t-il digérer Java, comment cette société, peu habituée à la communauté Open source, va-t-elle se comporter vis à vis du JCP ? En un mot, que Java va-t-il devenir ?

Continuer la lecture de Java au futur

Fork / Join version Java 8

Java 8, c’est pour 2013 d’après les annonces d’Oracle. Autant dire pour demain. De nombreuses choses sont déjà sur les rails, dont les évolutions du framework Fork / Join, dont je t’ai déjà beaucoup parlé, cher et précieux lecteur. Alors pourquoi revenir encore sur le sujet ? Simplement parce que le célèbre Brian Goetz, auteur du non moins célèbre Java Concurrency in Practice, nous a décrit par le menu ce qui nous attendait sur le front des calculs en parallèle dans Java 8. C’était le 16/11/2011, lors de Devoxx, à Anvers. D’ailleurs, si tu n’es pas encore au courant, je te signale, précieux lecteur, que Devoxx va s’importer à Paris en avril 2012, puisque Devoxx France est maintenant officiellement lancée !

Continuer la lecture de Fork / Join version Java 8

Java 7 : fork / join et parallel arrays – 2

Cet article est la deuxième partie de la présentation des parallel arrays de la JSR 166, dirigée par Doug Lea. . Nous en étions restés au début de la présentation des opérations disponibles sur les parallel arrays. Continuons en terminant notre tour d’horizon des opérations disponibles sur ces tableaux, avant de donner une idée des gains en performance.

Continuer la lecture de Java 7 : fork / join et parallel arrays – 2

Java 7 : fork / join et parallel arrays – 1

Le pattern fork / join, nouveauté de Java 7 et création de Doug Lea a déjà fait l’objet de quatre articles sur ce blog, et tu pourrais penser, précieux et rare lecteur, que j’en ai assez dit sur le sujet, qu’il est temps de passer à autre chose.

En fait il n’en est rien, car, bien que déjà très complète, l’API Fork / join telle que livrée par Doug Lea pour Java 7 ne comporte pas tous les éléments du package JSR-166, notamment un morceau très intéressant pour nous : les parallel arrays.

Dans nos précédents articles, nous prenions comme exemple le calcul intensif sur des tableaux. La parallélisation semble simple : il suffit de découper le tableau en morceaux, de les traiter, puis de regrouper les résultats. Simple mais pas tant que ça, car nous avions vu que la stratégie de découpage a une influence sur la performance globale du processus et que des problèmes de synchronisation pouvaient se poser.

Ce découpage ressemble au pattern map / reduce, dont nous allons reparler plus loin. En fait, nous avions mis en évidence que les problèmes de synchronisation pouvait surgir dans cette approche, et que les résultats des calculs, de ce fait, devenaient fragiles.

Et nous n’avons pas encore parlé de l’influence de la parallélisation sur le résultat d’un calcul sur un tableau, qui, dans certains cas, peut changer du tout au tout ! Mais ça, ça sera pour une autre fois.

Je te propose, cher lecteur, un petit voyage au cœur des parallel arrays, qui résolvent ces problèmes.

Continuer la lecture de Java 7 : fork / join et parallel arrays – 1

TestNG et ses DataProvider

J’aime beaucoup TestNG, et je l’utilise plutôt que JUnit depuis des années. D’abord, il s’agit d’un outil développé par un français, Cédric Beust, après tout, on a le droit d’être un peu chauvin ! Ensuite, j’ai toujours trouvé que les fonctionnalités offertes par ce framework étaient supérieures à JUnit, pourtant largement plus utilisé.

Cher et précieux lecteur, je te propose, dans cet article d’éviter de démarrer une nouvelle polémique dont le net est si friand, mais plutôt de te présenter une fonctionnalité particulièrement puissante de TestNG : les DataProvider.

Continuer la lecture de TestNG et ses DataProvider

Java 7 : le fork / join divise pour mieux régner

Dans la continuité de mes deux précédents articles, je voudrais aborder ici les bonnes approches de division en tâches dans le cadre du framework fork / join. Cela me permettra aussi de répondre ici à des questions envoyées par quelques précieux lecteurs (car oui, ce blog est lu par plusieurs personnes !). Le framework fork / join a pour objet de traiter de très grandes quantités de données, dans de très nombreuses tâches, tout en conservant le principe qu’une tâche doit effectuer un « petit » traitement. L’une des difficultés est de garantir que la quantité d’opérations réalisées par une tâche donnée reste limitée, et, surtout, n’augmente pas avec la taille globale du traitement.

Par exemple, dans un calcul matriciel, on ne veut pas que le temps de traitement d’une tâche dépende de la taille de la matrice à traiter.

Continuer la lecture de Java 7 : le fork / join divise pour mieux régner