Archive

Articles taggués ‘JUG’

Alpes JUG – DataGrid & Distributed Cache avec InfiniSpan de JBoss – 29 Mars 2012

Voici la soirée initialement prévue en décembre dernier reprogrammée ce jeudi soir dans les locaux de SUPINFO par l’Alpes JUG.

InifiniSpan est une pièce essentielle dans la course à la mise à disposition d’une plateforme Cloud chez JBoss à l’image de Google AppEngine.

InfiniSpan se veut un concurrent open source direct de solutions telles que Oracle Coherence.
Ce cache distribué qui s’apparente au famille NoSQL de type clés valeurs, sert également comme cible de prédilection pour le développement du projet Hibernate Object Grid Mapper (OGM).

A ne pas manquer …

Categories: Divers Tags: , , ,

ParisJUG du 13/03/2012 : Java.next !

Le ParisJUG du 13 mars 2012 présentait les prochaines évolutions de Java en commençant par le classique retour sur l’historique de Java et en particulier Java 7.

Java 7 sorte de version intermédiaire avant la version 8 de Java contenait l’ensemble des améliorations visibles ici : http://openjdk.java.net/projects/jdk7/features/

Pour faire un rapide tour :

  • JSR 334 “project coin” : String dans les switch, Multi-catch, Try-with-ressources (AutoCloseable), Diamond operator pour éviter de repeater le type d’un generic, Simplified varargs, Binary literals and underscores in numeric literals
  • JSR 203 « NIO2 » : Un design facilitant les extensions, accès au metadata des fichiers, des méthodes utilitaires comme move ou copy, une abstraction de plus haut niveau (java.nio.file.Path), une gestion des exceptions consistante
  • JSR 166y Fork/Join et Parallel Array pour encore faciliter la programmation parallèle.
  • JSR 292 InvokeDynamic pour améliorer les performances des langages dynamiques (type Groovy) sur la JVM.

Mais la présentation s’attachait surtout à présenter JDK 8 prévu pour l’été 2013 dont la liste des améliorations contient le projet Jigsaw, le projet lambda, une nouvelle API Date (le retour de la vengeance), une convergence entre les VM JRockit et Hotspot ou encore JavaFX 3.0. Il est possible de suivre les évolutions sur le site d’OpenJDK : http://openjdk.java.net/projects/jdk8/

C’est sur ce premier projet Jigsaw qu’est revenu Alexis Moussine-Pouchkine.

Il y a déjà eu de nombreux essais pour améliorer la modularisation de Java : JSR 277 Java module, OSGi, JSR 294 et maintenant JigSaw

Le problème actuel est que la construction, le packaging et la publication d’une application tombe souvent dans l’enfer des JAR. Il faut donc trouver une meilleure solution pour améliorer la scalabilité par rapport à la plateforme en particulier pour les petits périphériques et améliorer les performances surtout les temps de téléchargement et de démarrage.

Le but est donc de créer un système de modules statiques et simples, assez performant pour modulariser le JDK lui-même, améliorer les performances et utilisable par n’importe quel développeur java.

Les conséquences sont plus de classpath, plus de rt.jar. L’idée est de résoudre les problèmes de dépendances en amont !

La mise en place des modules Jigsaw offrira différentes possibilités : Grouping, Versioning, Encapsultation avec le mot clé permits, splitting, aggregation avec le mot clé provides.

Voila un exemple de modularisation avec Jigsaw :

module com.greetings @ 0.1 {
	requires jdk.base; // default to the highest available version
	requires org.astro @ 1.2;
	class com.greetings.Hello;
}

Vous trouverez tous les détails sur cette page : http://openjdk.java.net/projects/jigsaw/doc/lang-vm.html

Avec Jigsaw, le fichier jmod remplace le jar mais il sera toujours possible d’utiliser des repositories : librairies mis en ligne au bout d’une url. Il est prévu une intéropérabilité avec OSGi. La compatibilité sera toujours existante par on pourra rajouter des informations au jar existant pour les rendre compatible jigsaw.

Le deuxième présentateur Remi Forax qui est venu nous présenter les lambdas ou l’arche d’alliance de java 😉

Pourquoi les lambdas ? L’idée est de se rapprocher des langages fonctionnels et de simplifier l’utilisation des « closures » ou méthodes anonymes dans Java même si une partie du fonctionnement est déjà réalisable avec les Inner Class.

La grosse question est de connaître quel est le type d’une lambda et la solution a été trouvée dans les Single Abstract Method qui sont des interfaces qui contiennent une seule déclaration de méthode. On peut même les nommer interfaces fonctionnelles et Java en possède déjà tel que Runnable ou ActionListener.

Voila des exemples du futur code utilisant les lambdas :

	(int x, int y) -> x + y

	FileFilter java = (File f) -> f.getName().endsWith(".java");

	new Thread(() -> {
		connectToService();
		sendNotification();
	}).start();

Contrairement au Inner class, une lambda peut capturer les valeurs des variables du scope : le this ne référence pas la pseudo inner class mais l’englobant. Pour clarifier les choses, les inner class sont des classes, les lambdas sont des fonctions anonymes.

Les lambdas ajoutent beaucoup d’expressivité au langage Java mais l’idée est aussi d’ajouter les librairies pouvant en tirer partie. Ajouter des nouvelles fonctionnalités aux librairies existantes est quelque chose  de très difficile en Java actuellement si on veut garder la compatibilité. Il a donc fallu trouver une solution et celle-ci a été de mettre en place les « Default methods »

Par exemple :

interface Iterable<E> {
	public  Interable<E> filter(Predicate<E> predicate) default {
		//code
	}
}

Les defaults methods sont en fait des traits (Scala) ou mixins (Ruby) simplifiés.

Les defaults methods et les lambdas sont bien sur faits pour fonctionner ensemble. Actuellement si on veut écrire du code qui trie les personnes par leur nom on va écrire :

Collections.sort(people, new Comparator<Person>() {
	public int compare(Person x, Person y) {
		return x.getLastName().compareTo(y.getLastName());
});

Demain avec les lambdas, de l’ajout de l’interface Mapper et de l’ajout de la default method comparing à Collections, il suffira d’écrire :

Collections.sort(people, comparing(p -> p.getLastName()));

La encore vous trouverez tous les détails sur le site d’OpenJDK : http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html

Categories: Java EE Tags: , ,

Paris JUG du 10/01/2012 : soirée DevOps

Le Paris JUG du 10 janvier 2012 était consacré à DevOps.

Pour ceux qui ne connaîtraient pas, le terme « DevOps » a été donné au mouvement cherchant à améliorer la qualité des services fournis par les solutions informatiques ou encore aligner le SI sur les besoins de l’entreprise en rendant l’infrastructure plus agile. L’idée sous-jacente est de rapprocher les parties développement et opération du SI, deux fonctions qui se retrouvent en opposition. D’ailleurs DevOps est tout simplement la concaténation des deux mots.

Comme le dit très bien la définition de Wikipedia, le problème commun actuellement est que, si une équipe d’exploitation est primée sur la stabilité du système alors que l’équipe de développement est récompensée à chaque nouvelle fonctionnalité livrée, il est évident que ces 2 équipes vont se retrouver en conflit perpétuel.

Le but de DevOps est alors de promouvoir la coopération, industrialiser et motiver chacun individuellement sans noyer l’ensemble dans la masse. Le mouvement DevOps en plus de réfléchir à une nouvelle organisation de l’entreprise, vise à trouver des technique et des outils pour favoriser cette coopération.

C’est ce qu’est venu nous présenter Henri Gomez et Carlos Sanchez..

Henri Gomez a commencé par définir le packaging natif.

D’abord la définition d’un livrable : un livrable est un artefact utilisable par les équipes en aval, c’est-à-dire les équipes de production. Jar, War, Zip ne sont pas des livrables car ils ne sont pas directement utilisables.

Avant de créer un livrable, il faut se poser un certain nombre de questions :

  • Gestion des pré-requis
  • Cycle de vie (mise à jour, suppression)
  • Quid du déploiement
  • Localisation dans le FileSystem (FHS ? règles ?)
  • Les droits d’exécution et accès dans le FileSystem

A coté de ça, le packaging natif est une sorte de livrable très souvent utilisé par les équipes de productions. C’est le cœur de la pile applicative des OS type Unix. Il permet la gestion des dépendances, la mise à jour automatique ou sélective. Les formats les plus connus sont RPM pour Redhat, DEB pour Debian et PKG pour Solaris.

Qu’est qu’un package ?

C’est un fichier avec des données (fichiers de configuration par exemple) et des programmes (Tomcat, code de l’application, etc). C’est du code exécuté lors de l’installation, la mise à jour ou la suppression du package

Il y a des points communs avec Maven :

  • Construction par DSL connu par les Ops (simple, quelques macros, appuyé par le Shell)
  • Gestion des dépendances pour la construction mais aussi pour l’exécution
  • Dépôt de package (Nexus et Artifactory peuvent servir de dépôt)
  • Mise à jour automatique ou contrôlée

Le package offre différentes possibilités qu’on peut établir lors de la construction du RPM avec hook de pre-install et post-install ou pre-uninstall et post-uninstall.

Le hook de post-install peut par exemple être utiliser, après déploiement, pour activer des services. Alors que le hook de pre-uninstall peut servir à arrêter correctement l’application et nettoyer le système.

Il permet la déclaration du contenu (droit d’accès, paramètre de la mise à jour des fichiers de config …) et offre un historique !

Le packaging natif offre une grosse autonomie car un package est auto-suffisant, il permet par exemple la mise en place des comptes utilisateurs d’éxecution et il permet un contrôle total sur le cycle de vie avec les hooks par exemple en effectuant le lancement automatique de programmes annexes comme l’analyse des logs !

C’est un système d’installation automatisé et déterministe donc réplicable (peut être utilisé par les logiciels Puppet ou chef)

Puppet était d’ailleurs le sujet de la 2ème partie de la soirée présentée par Carlos Sanchez auquel je n’ai pu assisté.

Si cela vous a intéressé vous pouvez aller voir les videos des deux présentation ici http://www.parleys.com/#st=5&sl=0&id=2979 et la http://www.parleys.com/#st=5&sl=0&id=2980

Henri Gomez fourni une « forge » avec l’ensemble des packages nécessaires pour se mettre en mode DevOps : https://github.com/hgomez/devops-incubator

Quelques liens sur DevOps : Un twitter parodique excellent, http://devops.com/ ou encore Un article du Touilleur :)

Categories: Divers Tags: , ,

Lyon Jug du 21 février 2012

Le sujet du jug de ce jour était double: l’open-source en SSII, et la démonstration d’une future fonctionnalité de Glassfish, le rolling-upgrade, justement développé par une SSII spécialisée en open-source.

L’open-source en SSII

Jérôme Petit, Directeur de l’activité Nouvelles Technologies du SI à SERLI, nous a  présenté les possibilités de contribution open-source en SSII. Cette société réalise 10% de ses développement en open-source, ce qui représente 1200 jh.

Il nous a exposé le comment et le pourquoi de l’open-source en SSII.

Pour contribuer en open-Source, il faut communiquer avec les managers responsables des composants open-source, (Emmanuel Bernard pour Hibernate par exemple), ensuite il faut gérer le projet comme un projet classique, en respectant les délais par exemple, et non pas uniquement sur le temps d’inter-contrats.

Les raisons pour lesquelles on peut contribuer en open-source semblent poser un problème commercial: il y a des cas particulier où le projet est sponsorisé par un éditeur open-source, mais en général, il faut contribuer sans facturation client.

Dans ce cas les intérêts se situent dans ce que l’on appelle les cercles vertueux, à partir d’une contribution open-source on gagne :

  • d’une part en compétence interne: cela apporte une expérience plus exigeante aux collaborateurs et entraine de plus des recrutements de profils plus qualifiés
  • d’autre part  sur la visibilité de l’entreprise auprès de clients : cela donne une meilleure image de l’entreprise au point que les clients viennent spontanément: c’est finalement moins couteux, et plus valorisant qu’une campagne de publicité.

Le rolling-upgrade

La fonctionnalité de Rolling-Upgrade nous était présentée par son développeur: Marian Muller.

Ce sujet avait été présenté au DEVOXX de l’année dernière. On a eu droit à une impressionnante démonstration en live de déploiement Glassfish. Surtout impressionnante de facilité: grâce à cette fonctionnalité une simple ligne de commande permet de déployer une application en quelques secondes, et surtout sans interruption de services.

La fonctionnalité de rolling-update fait suite à la fonctionnalité de « application versionning » développée également par SERLI et déjà présente dans Glassfish 3.1: http://weblogs.java.net/blog/serli/archive/2010/08/30/how-use-glassfish-application-versioning

Pour illustrer les difficultés d’en faire autant avec les outils actuels, Robert, la mascotte de l’entreprise montrait son contentement et son mécontentement faces aux solutions actuelles et futures.

Robert (j'ai l'impression de l’avoir déjà vu à la télé)

Si on veut assurer une continuité de service aujourd’hui, il faut un cluster de serveur Glassfish, basculer toutes les sessions vers un serveur hébergeant la version inchangée pendant le déploiement, déployer la nouvelle version sur les autres serveur, et relancer la bascule vers la totalité des serveurs. Ces opérations sont manuelles et fastidieuses pour l’équipe d’exploitation chargée du déploiement.

Face à ce constat, on nous montre ensuite la même opération avec le rolling-upgrade, une simple ligne de commande et l’application est déployée, les clients Web n’ont pas vu la coupure du serveur. Robert est content.

L’astuce de l’évolution est d’insérer un « RequestHolder » qui maintient les requêtes entrantes actives le temps de la bascule entre ancienne et nouvelle version, et ce afin d’empêcher les erreurs 404 et 503 de se produire pendant le déploiement.

La ligne de commande :

$asadmin enable foo:BETA-1.1 –rolling-upgrade

Cependant, tout n’est pas encore parfait puisqu’avec ce déploiement on perd les sessions, provoquant par exemple la déconnexion.  Une évolution future est prévue pour rétablir les sessions dans la nouvelle version déployée afin d’éviter les déconnexion.

Grâce à cette fonctionnalité de Glassfish 4.0 tout déploiement sera totalement transparent pour l’utilisateur, tout en restant très simple pour l’équipe d’exploitation.

Categories: Actualités Tags: , ,

Soirée Java FX 2.0

Soirée Java FX 2.0 ce soir, à 19h à SupInfo !!

Le développement de RIA sur JVM, présenté par son leader technique Éamonn McManus (Ex tech lead pour JMX)

source : Alpes JUG

Categories: Divers Tags:

Le LyonJUG dans le « cloud »

Fabien Bousquet, ingénieur R&D chez Kalistick , nous a fait une présentation de la plateforme Amazon Web Service (AWS) .
Il nous a donné sa définition du cloud, en identifiant :
– l’abstraction : on ne se préoccupe pas du hardware sous-jacent
– l’élasticité : adaptation facile de l’infrastructure en fonction de la charge
– à la demande : l’infrastructure peut évoluer à la demande (nombre de serveurs déployés, configurations de ces serveurs…)

On distingue trois types de plateformes :
– les SAAS (Software As A Service) : logiciel disponible en ligne, par exemple : Kalistick, Google Docs, GMail

– les PAAS (Platform As A Service) : environnement logiciel, machine virtuelle pré-configurée avec par exemple, une base de donnée et une machine virtuelle Java.
– les IAAS (Infrastructure As A Service) : mise à disposition d’infrastructure via le web.

Ces plateformes peuvent s’utiliser pour la mise en production. Leur facilité de mise en œuvre permet également de faire de l’intégration continue, des calculs nécessitant une grande puissance CPU et peut être bientôt du développement (on parle alors de dev@cloud).
La plateforme AWS est très mature : elle a été utilisée par Amazon pour son site marchand avant d’être mise à disposition pour d’autre projets dès 2006. Elle est aujourd’hui utilisée par Dropbox, Slideshare, Netflix, Zinga…
La simplicité de mise en œuvre et l’accès à des ressources matérielles de manière immédiates sont ses grands points forts : on accède à une console d’administration via une interface web et le démarrage d’une instance se fait en quelques clics. La montée en charge de l’application illustre les aspects élastique et à la demande : on pourra adapter le nombre de serveurs disponibles via la console d’administration web fourni par Amazon. Les plateformes de cloud fournissent également un hébergement de très bonne qualité en terme de disponibilité,ce qui ne doit pas nous faire négliger les sauvegardes ni les procédures à mettre en œuvre en cas d’indisponibilité de la plateforme.

Le prix reste à mon avis un léger frein car il est difficile d’estimer le budget nécessaire à la mise en place d’une plateforme sur AWS (la grille tarifaire est complexe et varie de 15 à 1500 euros).

Les slides de la présentation sont disponibles ici.

Categories: Cloud Tags: ,

Soirée Alpes JUG – Netbeans Plateform

Soirée Alpes JUG – Mardi 19 Avril à 19h

Rappel de dernière minute sur un événement organisé par l’Alpes JUG (Grenoble) dont Objet Direct est partenaire.

Le JUG organise une formation de trois jours sur Netbeans Plateform (comparable à une solution comme Eclipse RCP).

Pour ceux qui ne pourraient suivre cette formation gratuite et certifiante, il y aura une séance de rattrapage ce soir !

La formation ainsi que la conférence auront lieu à

SUPINFO Grenoble – 16 rue Henri Barbusse, 38000 Grenoble
A coté de la Patinoire de Grenoble et de Grand Place

La formation est gratuite et est donnée en anglais par Geertjan Wielenga de chez Oracle.
Il s’agit d’une formation complète avec support de cours et exercices

Source : Alpes JUG

Categories: Actualités, Java EE, RIA Tags: ,

Retour sur le Mix-IT

Le Mix-IT est une conférence organisée par le Lyon JUG et le CARA (Club Agile Rhône-Alpes) qui a eu lieu le 5 avril à Lyon. Elle a regroupé 250 personnes pour assister à une vingtaine de conférences autour de Java et de l’agilité.Objet Direct était très présent sur l’évènement avec une participation en tant que principal sponsor, une présentation de la mobilité et une équipe de collaborateurs qui ont assistés aux différentes interventions.

Voici que nous avons retenu de cette journée :

« Smartphone : et l’informatique devint mobile… » est une intervention de Christian Demoustier, directeur technique de l’agence Objet Direct lyonnaise,  qui a permis de bien décrire l’écosystème du Smartphone aujourd’hui et les enjeux sur ce marché d’avenir.

« HTML5, la révolution maintenant » a présenté le futur de HTML, en mettant en lumière les nouveautés de la prochaine version du langage normalisé par le W3C. Les démonstrations ont permis de voir tout l’intérêt de cette nouvelle norme. Les nouvelles balises HTML, ainsi que les extensions des APIs JavaScript et CSS permettront de faire des applications web plus sophistiquées. Elles deviendront sans doute incontournables, y compris sur le développement pour Smartphone.

« Dev@Cloud, quand les informaticiens chassent les nuages »  a permis d’avoir un aperçu de ce qui se cachait  derrière le concept de Cloud Computing. Cela consiste à fournir entre autres du temps de CPU, du stockage et des services à la demande via un réseau informatique, l’approche aujourd’hui étant d’utiliser le web pour mettre ces ressources à disposition. Une fois encore, c’est une techno dont on devrait entendre parler dans les années à venir. La présentation a abordé les plateformes les plus connues (Amazon EC2, Google App Engine, Cloudbees…) et a ainsi donné de bonnes pistes pour démarrer sur le Cloud.

« Comment mettre sa suite de test au régime en 5 minutes par jour ». Une présentation accrocheuse qui a permis de détourer trois stratégies pour faire en sorte que le build de son application – tests compris – prenne moins de 5 minutes. Ainsi on pourra tricher en choisissant les solutions apparemment faciles (achat de serveurs plus puissants par exemple), faire le minimum d’effort en cherchant à utiliser des composants « in-memory » (base de données, serveur SMTP,…), ou encore attaquer le problème de manière plus courageuse en  mockant les parties les plus lentes des tests et en privilégiant les tests unitaires plutôt que les tests d’intégration

« Stewardship : soluble dans mon entreprise ». Une présentation pertinente pour savoir comment donner des responsabilités à un groupe de personnes pour mener à bien un projet.Cette approche est très intéressante et vous pourrez trouver plus d’éléments par ici.

« Du cerveau au code : « Agile »   ou le readme manquant » permettait d’appréhender le fonctionnement de notre réflexion, ses limites et en quoi les méthodes agiles permettent de « s’affranchir » de ses limites. Un petit exemple sympathique pour voir les limites de notre cerveau : http://www.youtube.com/watch?v=Ahg6qcgoay4 qui démontre l’intérêt de l’intégration continue : quand on se préoccupe du développement d’une fonctionnalité nous pouvons avoir du mal à en voir les  impacts sur les autres.

Le bilan de cette journée est extrêmement positif, nous avons pu balayer un ensemble de technologies et de méthodologies pertinentes dont nous entendrons forcément parler dans les prochaines années.L’organisation de la journée a été sans faille et elle fut vraiment très enrichissante pour nous tous.

3 ans Paris JUG : souffler les bougies et siffler en travaillant !

Le Paris JUG fête son 3ème anniversaire et programme lundi prochain 28 février, une soirée sur le thème « siffler en travaillant », autrement dit « montrez-nous que travailler, c’est sympa ! ». Plusieurs thèmes plus ou moins techniques seront abordés en conférences de 15 minutes (quicky) précédées d’un keynote d’ouverture à 18h15 : télétravail, indépendance, « getting things done »,  réflexions sur le métier de développeur, mais aussi « mettre une application sur Android Market avant la fin de la soirée »…

500 personnes sont attendues, à partir de 18h à la Cité Universitaire Internationale.

 Objet Direct, sponsor Platinium de toutes les soirées du Paris JUG, sera bien entendu présente, comme l’an dernier pour les 2 ans : nous donnons RV aux Juggers à l’heure du buffet dans l’Espace Exposants (19h30 à 20h45).

Inscription obligatoire sur le site du Paris JUG : http://www.parisjug.org

LyonJUG : Messaging

Logo LyonJUGLe LyonJUG continue sa programmation mensuelle : nouvelle soirée dédiée au messaging, mardi 18 janvier 2011 19H à l’Epitech.

Arnaud Simon de Red Hat présentera la spécification AMQP axée sur l’interopérabilité, et plus particulièrement son implémentation Apache Qpid à laquelle il contribue.
Logo JDuchess FranceInterview JDuchess.

Jeff Mesnil nous présentera lui HornetQ, implémentation officielle de messaging dans JBoss AS 6 dont il est un des leaders, axée sur les performances et l’ouverture au web avec une API REST.
Logo JDuchess FranceInterview JDuchess.

Inscription et informations pratiques, as usual, sur la page officielle du Lyon JUG.
A mardi… heu… ce soir!

Categories: Actualités, Outillage Tags: , , , ,