lundi 16 juin 2014

R&D java et jvm : Graal, Maxine, Truffle

     Derrière ces noms étranges que l'on rencontre peu, avancent des projets de recherche dans les couches basses du langage Java et ses jvm. Pour celles et ceux qui veulent se faire plaisir les sources et outils sont accessible via les sites des projets.

Les projets


Graal & Truffle

"Graal is an extensible, dynamic compiler using Java"
"Truffle a language abstract syntax tree interpreter" (allow to implements languages on top of graal)


Maxine VM

"Java Virtual Machines written entirely in Java in a meta-circular style"


Quelques présentations sur le sujet


"Graal - A Bytecode Agnostic Compiler for the JVM"
http://medianetwork.oracle.com/video/player/1113230360001

"Graal: A quest for the JVM to leverage its own J"
http://wiki.jvmlangsummit.com/images/c/c4/Simon_Graal_Presentation.pdf

"Maxine: A JVM Written in Java", slide 45 donne un aperçu intéressant
http://www.jugsaxony.org/wp-content/uploads/2012/05/Maxine-A_JVM_in_Java.pdf

"Graal and Truffle : one VM to rule them all"
http://fr.slideshare.net/ThomasWuerthinger/graal-truffle-ethdec2013
https://www.cs.purdue.edu/homes/gkrichar/papers/onward2013-wuerthinger-truffle.pdf

"Maxine: A Virtual Machine For, and In, Java" (Jun 15, 2012)
https://wikis.oracle.com/download/attachments/41846038/ECOOPSummerSchool2012.pdf?version=1&modificationDate=1340845232000

Status sur Graal (juillet 2013) et travail sur le GPU d'AMD
http://www.oracle.com/technetwork/java/jvmls2913wuerth-2013918.pdf

Quelques ressources (slide et vidéo) sur Graal et d'autre sujet R&D : les ressources du JVM Language Summit 2013
http://www.oracle.com/technetwork/java/javase/community/jvmls2013-2013900.html

dimanche 15 juin 2014

Docker en urls

A l'occasion de la sortie 1.0 de Docker (Prod ready), une série d'articles et liens sur le sujet

Docker, les urls officielles



La sortie de la 1.0



Around Docker



Technical docker




Mais en fait docker c'est quoi



Docker et quelques applications



samedi 3 mai 2014

Open Data et Big Data


     Deux concepts d'actualité, il est rare de trouver un domaine métier où l'on en parle pas. La recherche, le médical, l'économie, la finance, les transports, la téléphonie, bien sûr informatique et bien d'autres encore.

     Pour certains ce sont des arguments marketing utilisés pour vendre des applications et du service, comme cela a été fait à une époque avec un autre buzz word cloud.

     Pour d'autres passionés de veille technos ce sont des concepts à définir, suivre et  expliquer avec plus ou moins de succès. Les trois V du BigData  (Volume, Vitesse et Variété) ou encore dans cet article du Guardian.

     Pour d'autres encore, au coeur du sujet, c'est leur travail d'évoluer dans ce champs technologique. Parce que leur métier bénéficie de ces changements ou par ce qu'ils créent des services, des briques technologiques liés à ces concepts.

     Quelques uns conduisent le changement, partagent leur vision du futur et agissent pour que ces virages technologiques amènent plus de positif que de négatif (l'outil est neutre, c'est l'utilisation que l'on en fait qui a des effets de bords dans un sens ou dans l'autre et ceci fonction de l'appreciation de tout un chacun ... bref c'est un autre débat). La plus part d'entre nous vivont les retombés de ces changements dans notre quotidien sans forcément s'en apercevoir.

     Dans les deux cas ce sont des concepts rendus possibles par les avancées technologiques. Dans les deux cas ce sont des petites révolutions qui auront un impact fort sur nos manières d'aborder le quotidien.

Big Data


BigData est plus de l'ordre de la technologie, une manière de traiter l'information devenu possible par
  • les evolutions technologiques (augmentation de la RAM des serveurs, baisse des couts des serveurs, ....). 
  • Des briques applicatives permettant de traiter
    • de manière intelligente des volumes de données plus important (Hadoop, Olap, ...)
    • et/ou d'une manière différente (courant NoSQL : Not Only SQL) 
  • Une évolution dans la manière de penser les applications, les systèmes d'information et leur design. Orientation flux de données plutôt que traitement par batch, on doit être capable de traiter chaque information au moment où elle arrive, visualiser son impact au sein d'un ensemble déjà existant.

Open Data


     Le concept d'Open data est lui est plus une considération rapport à la données qui devient le cœur des enjeux. Afin de la rendre accessible, elle doit être ouverte à tous et ce dans un format facilitant son acquisition et son traitement de manière informatique.

L'une des personnalités fer de lance sur cette thématique Tim Berners Lee :

     A l'open data je vois principalement deux raisons :

     Considération sur la notion de la propriété : ces données nous concernant, dont nous avons facilité l'acquisition (l'individu devenu sonde/capteur de son environnement) nous appartiennent tout autant que les sociétés qui les utilisent et en font commerce. Quand aux données de services publiques, elles doivent également être accessible par soucis de transparence.

     Considération économique, de part l'émulsion positive que cela peut générer. En effet, à travers l'ouverture de ces données, nombre de personnes, startup, sociétés peuvent tester, proposer des utilisations, créer de la valeur. Créant ainsi un formidable et gigantesque laboratoire R&D constitué de ces consommateurs de données ouvertes avec lesquels il est intéressant d'échanger, suivre leurs créations, leurs utilisations.

     Un exemple d'initiative pour illuster ce dernier point : Etalab (http://www.etalab.gouv.fr/) qui était présent à la conférence IT devoxx Paris :
     L'open data est une problématique que se posent aussi bien les entreprises que les états. Quelques états ont commencé à proposer des accès à ces données "ouvertes" :

     Monde interconnecté oblige, il existe une initiative internationale que la France a rejoint en avril dernier (64e pays à le faire) nommé Open Government Partnership :

dimanche 6 avril 2014

Quelques mots sur les MOOC (Massive OnLine Open Course)

A la source


Stephen Downes et Georges Siemens en 2008

Présentation 2008 : http://fr.slideshare.net/Downes/mooc-and-mookiesthe-connectivism-connective-knowledge-online-course-presentation
Présentation de 2009 : http://fr.slideshare.net/Downes/the-connectivism-and-connective-knowledge-course
Le site de Stephen Downes : http://www.downes.ca/mooc_posts.htm
La page wikipedia de George Siemens : http://fr.wikipedia.org/wiki/George_Siemens
La page wikipedia de Stephen Downes : http://fr.wikipedia.org/wiki/Stephen_Downes

De nos jours


Il y a principalement 3 plateformes qui regroupent les MOOC les plus suivis.

  • Coursera créé en avril 2012 par Daphne Koller et Andrew Ng 
  • Edx créé en mai 2012 par le MIT et Harvard
  • Plus minoritaire udacity créé en juin 2011.

En France


Une plateforme s'est mise en place : https://www.france-universite-numerique-mooc.fr/

Sinon les écoles francaises (Centrale, ENS, Polytechnique) ont commencées à intégrer des plateformes existantes (comme coursera, voir liste des institutions partenaires) en y dispensant leurs mooc.

Quelques articles sur le sujet :
http://www.nature.com/news/online-learning-campus-2-0-1.12590
http://www.nature.com/news/education-online-the-virtual-lab-1.13383
http://www.nature.com/nature/journal/v499/n7458/full/499275a.html

mercredi 19 mars 2014

Java 8 tout chaud sorti du four

     Je ne pouvais pas ne pas mettre un petit mot, ca y est Java 8 GA (General Availability) est sortie. Un certain nombre de développeurs se sont déjà fait la main (et on blogués) sur les milestone mais cette fois c'est la version officielle.

Le mot de Mark Reinhold : http://mreinhold.org/blog/jdk8-ga
Download depuis chez Oracle : http://www.oracle.com/technetwork/java/javase/downloads/index.html


Quelques réactions à la sortie :

Les outils suivent et supportent Java 8

     Et du coup des comparaisons qui peuvent être amusantes, les deux étant du bytecode quelles sont les différences entre scala et lambda Java 8.

     Alors pour le meilleur et pour le pire (je suis sûr qu'il existe des manières très tordues d'utiliser les lambda, default method, ...) avançons, essayons, testons, hackons et regardons ce que cela va donner.

dimanche 16 mars 2014

Maven en quelques urls

     Ce billet pour donner quelques urls utiles quand on utilise Maven. Je ne détaillerais pas tout ce que permet de faire cet outil car c'est vaste et les nombreux posts, livres à ce sujet le font déjà très bien.

     Pour commencer forcément : http://maven.apache.org/

La dernière version est actuellement Maven 3.2.1
L'historique des versions est disponible sous http://maven.apache.org/docs/history.html

Maven c'est quoi


Maven dans les grandes lignes c'est (http://maven.apache.org/what-is-maven.html) :
  • un outil pour "builder" les projets Java avec un cylcle de vie  bien défini.
  • un outil qui permet de gérer les dépendances aux librairies externes.
  • un outil qui peut distribuer/versionner les librairies Java via les systèmes de repository (local, intranet, internet).
 Un peu d'histoire sur Maven et sa philosophie.

Les solutions alternatives


     Les premières alternatives plus rudimentaires sont le scripting (sh, bat, ...) ou le make. En dehors de ces dernières il existe principalement trois autres solutions plus évoluées

Ant : http://ant.apache.org/
L'un des premiers à avoir permis de scripter des builds de projets Java en standardisant des tasks.

Ant et Ivy : https://ant.apache.org/ivy/
Ivy pour une gestion de dépendances dite agile qui est devenu officiellement un sous projet de Ant en 2007 (Mail de passage à l'incubator) permettant ainsi une complémentarité de ces deux projets.

Gradle : http://www.gradle.org/
Solution open source dont la communauté est drivé par GradleWare. Le code est disponible sous GitHub.

Gradle, Ivy et Maven via des plugins peuvent s'intégrer dans les différentes EDI (Eclipse, NetBeans, IntelliJ)

Maven c'est aussi un outil en ligne de commande


     Maven un outil en ligne de commande qui s'étend par système de plugin. Il en existe de très nombreux maintenus par Apache Maven ou d'autre organisations.

     Ces plugins permettent d'apporter de nouvelles fonctionnalités (déploiement sur des serveurs applicatifs, visualisation de dépendances, couverture de code par les tests unitaires, ...) ou peuvent faciliter l'intégration dans d'autres outils comme les serveurs d'intégration continu tel Jenkins.

Quelques plugins : http://maven.apache.org/plugins/index.html

En plus des plugins existant chacun peut développer les siens, adaptés à ses besoins

Maven : un repository et un outil de gestion de dépendances

 

     Les repository Maven sont les emplacements où sont distribuées/récupérées les librairies nécessaires aux builds de vos projets. On a un repository local sur le poste sur lequel on travail mais (fonction de la configuration utilisée) on peut être en interaction avec un repository Maven central, un repository d'entreprise, un repository d'éditeur (par exemple JBoss).

Les principaux repository Maven officiels : http://maven.apache.org/repository/index.html

Les outils permettant de faciliter la gestion des repository :
Une matrice de comparaison de leurs features : http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

 Rechercher une librairie sur un repository Maven central :
http://repo.maven.apache.org/maven2/
http://search.maven.org/#browse

Comment faire lorsque l'on est développeur et que l'on souhaite voir son framework publié sur un repo centrale Maven : http://lkrnac.net/blog/2014/03/06/deploy-to-maven-central/

Quelques ressources sur Maven 



dimanche 2 mars 2014

Un nouveau français Java Champion

     Un nouveau français viens de rejoindre le cercle assez fermé des Java Champion : David Gageot (http://blog.javabien.net/2014/02/24/look-ma-im-a-java-champion/)

     Pourquoi un rapide post sur ce sujet ? Parce que je trouve que c'est une bonne chose. Ce sont ces personnes qui amènent une émulsion positive dans notre monde de développeurs, qui peuvent donner envie d'avancer et qui par leur travail nous apportent à tous.

   Les java champions c'est quoi


En résumé : groupe comprenant des passionnés, des développeurs qui œuvrent pour la communauté Java au travers différentes contributions (auteurs de livre, speakers en conférence, ...)

La définition à la source
: https://java-champions.java.net/

C'est différent des Java RockStar (http://www.oracle.com/javaone/rock-stars/2013/index.html), programme visant plutôt à reconnaitre la qualité de speaker.

Tous les Java champions et leur bio : https://java.net/website/java-champions/bios.html

    Les frenchies Java Champions


     Quelques autres Java Champions à suivre


     Je ne vais pas tous les citer mais quelques uns de ceux que j'essaye de suivre régulièrement au travers leurs présentations, publications :


mais aussi Gavin King, Bruce Eckel, Jonas Boner, Joshua Bloch, Ben Evans, Neal Gafter, Brian Goetz, Kirk Pepperdine et bien d'autres encore.