dimanche 2 novembre 2014

Un jour, un storage : Redis

     Une autre structure de stockage de données in memory dont on entend régulièrement parler : Redis.

     Je l'ai rencontré lors d'une conférence au Devoxx Paris 2014 suite à une présentation "Tools in action" de Nicolas Martignole "Redis, une base Not Only NoSQL" :

Redis c'est quoi


     Redis signifie "REmote DIctionary Server" avec un jeu de mot sur Redistribute (http://redis.io/topics/faq)

     Si l'on retient les classifications actuelles, on pourrait la qualifier de base NoSQL clé/valeur. C'est une base in memory qui communique en TCP. Elle est écrite en C ANSI et tourne sur la majeur partie des systèmes dit POSIX, Linux est recommandé (http://redis.io/topics/introduction) mais il existe un portage windows https://github.com/MSOpenTech/redis.

     Afin de pouvoir requêter cette base de nombreux de clients ont été développés dans différents langages (Java, C, C#, Go Perl, Haskell, Lua, ...).
     Les principaux clients Java :

     Redis, construit sur la base d'un manifeste, lettre d'intention sur ce qu'il doit être, a une approche qui colle aux structures de données manipulées. Pour preuve son API et la documentation qui donne le Time Complexity (en notation O) des différents points d'API :

     Quand aux utilisations possibles : cache dynamique, base in memory (persistence possible en dump ou journalisation), messaging. Attention à vos contraintes et au CAP théorème.

L'historique


     Redis a été créé par Salvatore Sanfilippo et Pieter Noordhuis en 2009 (voir http://redis.io/topics/license).

     Avant Mai 2013 le projet était sponsorisé par VMWare, il l'est maintenant par Pivotal.

     La version actuelle est la 2.8.17, une version 3.0.0 est en release candidate. L'historique des versions depuis 2009 est accessible via Google Code

Redis est utilisé par quelques grands noms du web :

Et la concurrence ... Redis est régulièrement comparé à memcached

Les URLS


Le Site : http://redis.io/
Sous GitHub : https://github.com/antirez/redis
Les download : http://redis.io/download
Benchmarks : http://redis.io/topics/benchmarks

Du côté des développeurs :

Participer aux développements


Pour contribuer à Redis : http://redis.io/community
La mailing : https://groups.google.com/forum/#!forum/redis-db

Pour finir quelques tutoriaux pour s'y essayer :

dimanche 12 octobre 2014

L'open JDK

L'open JDK c'est quoi


Projet Java open source, débuté en 2006 par Sun visant à ouvrir le code de la JVM et des classes du JDK. A partir de l'open JDK vous pouvez builder et utiliser un jdk complet.

L'une des explications la plus claire que j'ai pu trouver est celle donnée par Rémi Forax sur cette thread des CastCodeurs : https://groups.google.com/forum/#!topic/lescastcodeurs/2067DUGyP20

Un blog post sur le passage à l'openJDK : la transition
https://blogs.oracle.com/henrik/entry/moving_to_openjdk_as_the

OpenJDK par ses URLs officielles


Le site OpenJdk : http://openjdk.java.net/
Le wiki : https://wiki.openjdk.java.net/dashboard.action

L'open JDK c'est aussi une communauté ouverte avec ses règles, sa gouvernance :

OpenJDK au JavaOne 2014


Plusieurs présentations lors du JavaOne 2014 en octobre dernier ont parlé de l'OpenJDK.

Exemple d'une JEP active : "Shenandoah: An Open Source Garbage Collector (JEP 189) with an Ultralow Pause Time [CON5216]"

Une présentation des sources de la JVM dans l'openJDK : "Introduction to HotSpot Internals [CON3294]"
https://oracleus.activeevents.com/2014/connect/sessionDetail.ww?SESSION_ID=3294&tclass=popup

"The OpenJDK Project: Your Java. Our Java."
https://oracleus.activeevents.com/2014/connect/sessionDetail.ww?SESSION_ID=9755

"Troubleshooting with Serviceability and the New Runtime Monitoring Tool HeapStats [BOF3108]"
https://oracleus.activeevents.com/2014/connect/sessionDetail.ww?SESSION_ID=3108

En complément technique


Deux présentations RedHat de l'openJDK et son architecture :

Le projet "Adopt a JDK" du London Java Community visant à démocratiser son utilisation

Comment builder l'OpenJDK :

Pour finir OpenJDK et Docker

Les JVM sur la base de l'OpenJDK


Une présentation générale d'Oracle sur la JVM et son futur : "Evolving the JVM: Principles and Directions"
http://www.oracle.com/technetwork/java/jvmls2014goetzrose-2265201.pdf

IcedTea, la JVM de Redhat

La Zing d'Azul System

Zulu, également d'Azul system
Et si vous vous y perdez un peu : la différence entre Zulu et Zing

Pour finir les deux classiques Hotspot et JRockit maintenant toutes deux chez Oracle avec leur projet de convergence : https://blogs.oracle.com/henrik/entry/oracles_jvm_strategy

Bon, cette fois vraiment pour finir, une dernière qui a été abandonnée en 2011 : Apache Harmony

dimanche 5 octobre 2014

Revue de press du développeur Java


     Quelques news déjà plus si nouvelles que cela (et oui notre monde va vite) mais assez intéressantes pour être notée

Les slides et vidéos du JVM Language Summit 2014 qui s'est déroulé du 28 au 30 juillet dernier
http://www.oracle.com/technetwork/java/javase/community/jlssessions-2255337.html

En lien avec la JVM : Graal
http://www.javaworld.com/article/2691233/scripting-jvm-languages/oracles-graal-project-empowers-language-creation-on-the-jvm.html

Java 9 et open JDK
http://www.javaworld.com/article/2689365/java-platform/openjdk-project-opens-up-java-9-to-collaboration-experimentation.html
http://www.infoworld.com/article/2608801/java/why-developers-should-get-excited-about-java-9.html

Les élections 2014 au JCP (Java Community Process) pour les EC (Executive Committee) :
https://jcp.org/ja/whatsnew/elections

Parce que l'IT ce sont des modèles aussi qui se cherchent il y a aussi des projets qui s'arrêtent :

EOL (EndOfLife) pour LiveRebel
http://zeroturnaround.com/blog/goodbye-liverebel/
http://zeroturnaround.com/rebellabs/the-5-inconvenient-truths-indicating-the-market-still-isnt-ready-for-release-automation/

CloudBees arrête le Paas et se recentre sur Jenkins
http://www.lemondeinformatique.fr/actualites/lire-cloudbees-ferme-son-paas-et-s-allie-avec-pivotal-58603.html
http://www.infoq.com/news/2014/09/CloudbeesExitPAASResignEC

Un jour, un storage : Cassandra

     L'objet de ces billets "un jour, un storage" est de parcourir les différentes structures de stockage de données qui fleurissent ces derniers temps (NoSQL ou pas).

     La plus part ne sont pas forcément jeunes et ont des ancêtres qui remontent à bien plus longtemps encore mais les besoins de technologies face aux flux de données actuels, les tendances buzz ("big data") aidant ont les croise de plus en plus régulièrement.

     Je ne vais pas détailler leurs architectures, fonctionnement, utilisation ... mais plutot donner quelques points d'entré qui permettront d'avoir un aperçu et pour ceux qui le souhaitent creuser plus en avant la technologie.

     Première structure de cette série : Cassandra

Cassandra c'est quoi


     C'est un système de stockage de donnée distribué open source. Il adresse les problématiques de scalabilité, destiné à gérer des volumes important de donnés en gardant de bonnes performances et en étant tolérant aux pannes.

     Cassandra est développé en java, considéré comme hybride dans les familles NoSQL : entre clé/valeur et orienté colonnes.

Architecture interne :

Introduction Cassandra :

Quelques tutoriaux :

L'historique


     Comme on le disait tout à l'heure même si ces projets semblent récent, ils ont démarré il y a quelques temps déjà. Quelques dates concernant Cassandra.

     A l'origine Cassandra est un projet réalisé sur un modèle open source par deux développeurs de FaceBook (Avinash Lakshman et Prashant Malik), mis à disposition en juillet 2008 sous google code.

Quelques présentations aux débuts de Cassandra :

     En Mars 2009 Cassandra rejoint Apache Incubator

     Puis Mars 2010 il devient Apache Top Level Project

     Depuis les développements continuent sous l'aile de la fondation Apache :
  • octobre 2011 la version 1.0
  • Septembre 2013 la version 2.0

     Dernière version stable : 2.1.0 (releasé en septembre 2014)

     Les branches encore accessibles :
  • 2.0.10 (aout 2014)
  • 1.2.19 (septembre 2014)

La liste des commiters participants aux développements : http://wiki.apache.org/cassandra/Committers

Les URLS


Le projet : http://cassandra.apache.org/
Download : http://cassandra.apache.org/download/
Wiki du projet : http://wiki.apache.org/cassandra/
Wikipedia : http://en.wikipedia.org/wiki/Apache_Cassandra

DataStax Société commerciale avec expertise Cassandra : http://www.datastax.com/
Communauté Cassandra/Datastax : http://planetcassandra.org/

Un meetup Cassandra sur Paris : http://www.meetup.com/Cassandra-Paris-Meetup/

Participer aux développements


Comment contribuer : http://wiki.apache.org/cassandra/HowToContribute

Les mailing :
User : user-subscribe@cassandra.apache.org
Developer : dev-subscribe@cassandra.apache.org
Notifications de Commits : commits-subscribe@cassandra.apache.org
API cliente : client-dev-subscribe@cassandra.apache.org

Le JIRA Cassandra
https://issues.apache.org/jira/browse/CASSANDRA/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel

Repo Git : https://git-wip-us.apache.org/repos/asf?p=cassandra.git
Règle de coding : http://wiki.apache.org/cassandra/CodeStyle

lundi 25 août 2014

Rien à voir avec le dev (quoique ...)

Pour changer un peu, en dehors du monde du développement quelques artistes que j'apprécie

Littérature : Alain Damasio 
http://fr.wikipedia.org/wiki/Alain_Damasio

J'ai beaucoup aimé "La zone du dehors" en anticipation sur nos sociétés, "Aucun souvenir assez solide" en recueil de nouvelles, dont une très intéressante "Les hauts parleurs" sur la privatisation et commercialisation du vocabulaire (et un langage parlé ou informatique c'est un assemblage selon une grammaire de mots). Et encore dans un autre genre "La horde du contrevent" plus fantasy, sur l'histoire d'une équipe, là où les mots, les rythmes, la ponctuation ont leur importance.

D'Alain Damasio, toujours sur nos sociétés, j'ai beaucoup aimé la nouvelle "La rage du sage" (http://crep.strasbourg.free.fr/IMG/pdf/brochure-damasio-laragedusage.pdf), petit extrait :
"Chacun ses choix. Ben ouais.Be yourself, comme tout le monde. Alpha blondit et Carla brunit. Hugo Boss. Il a bien de la chance."

Pour finir 2 artistes plus plastiques rencontrés par hasard :

Jacques Degand pour ses tableaux (http://www.artistescontemporains.net/artiste/Jacques-Degand-8), je ne sais pas pourquoi mais cela me parle, les pattern ... allez savoir ...

Marc Sparza pour ses sculptures (http://peupledepapier.blogspot.fr/2014/01/marc-sparza.html), une idée représentée de manière simple ce qui a forcément demandé du travail, simple c'est compliqué mais c'est d'autant plus fort comme en développement.

vendredi 15 août 2014

Le monde du développement au travers ses acteurs

     Il y a différentes manières de faire sa veille technologique. On peut suivre les articles techniques, voir comment s'orientent les nouvelles versions des frameworks, assister aux conférences ou les retrouver à posteriori sur le web, pratiquer en faisant des poc ou en réalisant des projets personnels, suivre des formations, ...

     Une autre manière que je trouve pertinente c'est observer, suivre, comprendre comment travail les acteurs du domaine, voir les outils que eux utilisent, les choix qu'ils ont fait et les raisons de ces choix.

     Parallèlement aux aspects technologiques comprendre également les choix organisationnels d'autant plus intéressant que certains de ces acteurs de par leur nature travaillent de plus en plus avec des équipes composées de développeurs world wide, je pense, entre autres, à la fondation Eclipse et le cadre qu'elle met en place afin de permettre ceci (http://wiki.eclipse.org/Development_Resources).

Quelques articles qui dans cette ligne m'ont intéressé :

La fondation Eclipse, un peu d'histoire :
http://www.infoq.com/news/2011/11/eclipse-10

Le changement de release process chez Mozilla Firefox :
http://www.infoq.com/news/2014/07/release-process-mozilla-firefox

How Google works, l'article date un peu (2006) :
http://www.baselinemag.com/c/a/Infrastructure/How-Google-Works-1/

How GitHub works, avec un point de vue intéressant sur le travail asynchrone et la "Zone" :



Historique des SCM chez Apache OpenOffice, de CVS à Git :



lundi 11 août 2014

Work is in progress : Java 9

     Les travaux ont commencé pour la next release : Java 9. Les core développeurs se mettent en ordre de bataille et commencent à lancer les discussions sur les mailings, les premiers développements ont été commit (une early est dès à présent disponible).

     Dans les grandes lignes des changements en profondeur (JMM, typage, modularisation ne sont pas une mince affaire) tout en gardant en tête la compatibilité avec les précédentes versions.

     Jettons un oeil dans l'atelier pour voir ce qu'il se prépare.

En introduction


     Les préparations des nouvelles versions de jdk passent maintenant par openjdk et les JEP (JDK Enhancement-Proposal). Les jep permettent d'avancer les développements dans un cadre moins formalisé que les JSR, facilitant ainsi le début des travaux.

La jep 0 liste l'ensemble des jep (et les target release) : http://openjdk.java.net/jeps/0
La jep 1 détail le processus qui ne remplace pas celui des jsr (restant les spécifications officielles) mais vient plutôt en amont : http://openjdk.java.net/jeps/1

Un article de Stephen Colebourne concernant les jep : http://blog.joda.org/2011/11/future-is-in-jeps.html
La mailing dédiée aux jep : http://mail.openjdk.java.net/mailman/listinfo/jep-changes

Quelques généralités

Articles sur le sujet :

     Une présentation qui s'est déroulée au jvm language summit de juillet 2014. Présentation lors de laquelle John Rose et Brian Goetz donne les grandes lignes des orientations concernant l'évolution de la JVM, une runtime qui ne se destine pas uniquement à Java :
http://cr.openjdk.java.net/~jrose/pres/201407-JVMEvolution.pdf

Evolution du Java Memory Model (JMM)

Une présentation de Aleksey Shipilev (spécialiste de Java Performance chez Oracle) sur le JMM

     Le lancement de Doug Lea pour les évolutions JMM 9

     Dans la continuité, forcément des impacts sur les aspects concurrence : http://cs.oswego.edu/pipermail/concurrency-interest/2014-January/012169.html

Projet Panama

     Annoncé par John Rose, le projet Panama dont l'objectif est une meilleur connectivité entre la JVM et les API non java. Ce projet vise à mettre en place les FFI (Foreign Function Interface) en tant qu'alternative aux JNI (Java Native Interface), JNA (Java Native Access). FFi devrait être basé sur Java Native Runtime (JNR)


Articles :

Blog de John Rose : https://blogs.oracle.com/jrose/

Charles Oliver Nutter :

Projet Valhalla


     Initié par Brian Goetz, ce projet vise à faire évoluer le langage et son typage. Quelques exemples pouvant entrer dans ce domaine les value type, Spécialisation des generics et ici ou encore amélioration des volatiles


Articles liés :

Projet Jigsaw


     Initialement prévue en Java8 mais finalement retardé, il est annoncé pour Java 9 par par Mark Reinhold. Jigsaw vise à amliorer la modularité de Java afin de faciliter la scalabilité, améliorer la sécurité, améliorer les performances et faciliter les développements et la maintenance des librairies.

Retard de Jigsaw pour Java 8 :

L'annonce de la phase 2 : http://mreinhold.org/blog/jigsaw-phase-two
Jigsaw : http://openjdk.java.net/projects/jigsaw/goals-reqs/03
Présentation générale : http://cr.openjdk.java.net/~mr/jigsaw/notes/jigsaw-big-picture-01

Les JEP liées à Jigsaw :
jep 161 : http://openjdk.java.net/jeps/161
jep 162 : http://openjdk.java.net/jeps/162




Quelques présentations sur le sujet :

Article :

Les ressources Java 9


     Après avoir parcouru les grandes lignes si vous voulez entrer dans le détail et voir par vous même :

En early access on en est déjà au build 25, les changes de ce dernier build.:
http://download.java.net/jdk9/changes/jdk9-b25.html

Et si vous souhaitez contribuer, ce que vous pouvez faire et comment le faire :
http://openjdk.java.net/contribute/



Pour finir



Petite url bonus, rien à voir (enfin si c'est de la jvm) : jvm, performance et network de Norman Maurer