je vais vous présenter le projet Vert.x. Je suis tombé dessus par hasard lors d’une veille technique quotidienne au détour d’un post sur un blog… (vous me suivez ? 😉 )
Qu’est ce que Vert.x?
C’est un framework qui peut se résumer par les termes suivants :
– moins d’effort
– polyglotte,
– scalable,
– simple,
– concurrence.
La première release 1.0 a vu le jour le 25 avril 2012 (aujourd'hui, la version courante est 1.2.3).
Ce projet est sponsorisé par VMware.
Lors de sa sortie en version béta, le projet est devenu le 32ieme projet Java suivi sur Github, juste derrière JBoss AS (ceci grâce à un article publié sur infoQ).
Pour se faire une idée rapide, c’est un outil très proche de Node.js dans l’état d’esprit. C’est à dire qu’au travers de quelques lignes de code, vous avez un serveur HTTP fonctionnel et très performant.
Pour être tout à fait honnête, je ne connais que les aspects théoriques de Node.js. Par conséquent, je ne vais pas pousser plus loin la comparaison et me focaliser sur Vert.x
Plus concrètement…
Vert.x est un framework d'application événementielle qui fonctionne sur la JVM.
Il est polyglotte : vous avez le choix du langage avec lequel vous souhaitez travailler :
– Javascript
– CoffeeScript
– Ruby
– Python
– Groovy,
– ….. et Java.
Vous avez aussi la possibilité de mixer les langages.
Il est simple : quelques lignes suffisent pour obtenir une application robuste et scalable :
import org.vertx.java.core.Handler;
import org.vertx.java.core.http.HttpServerRequest;
import org.vertx.java.deploy.Verticle;
public class Server extends Verticle {
public void start() {
vertx.createHttpServer().requestHandler(new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest req) {
String file = req.path.equals("/") ? "index.html" : req.path;
req.response.sendFile("webroot/" + file);
}
}).listen(8080);
}
}
Il est scalable : il se base sur le modèle de programmation asynchrone avec des IO non-bloquantes.
La concurrence simplifiée : le framework offre la possibilité de coder comme dans un environnement mono-threadé.
Il est reparti : La communication entre les différents composants d’une application basée sur Vertx se fait via un bus d’évènement distribué. La communication se fait entre toutes les instances du serveur ainsi que la partie cliente. Cette gestion d’évènements est basée sur le modèle d’acteur.
Il supporte :
– websokets,
– SockJS
– communication HTTP/HTTPS
– TCP / SSL
Vert.x offre un système d’extension via les modules. Un repo public est disponible sur Github.
Autres fonctionnalités en vrac :
– Gestion de tâches planifiées,
– Fichier de conf rédigé en JSON,
– Module de définition de route,
– Manipulation du système de fichiers.
– etc…
Comment utiliser vert.x ?
Vert.x peut être utilisé comme une plateforme autonome ou alors embarqué dans une autre application.
La documentation est assez complète. La liste de discussion est très fréquentée et les questions trouvent rapidement des réponses.
Ce projet est encore jeune mais propose déjà des fonctionnalités avancées.
Je pense que c’est un projet sur lequel il faut garder un oeil et qu’il ne faut pas hésiter à tester.
#java #vertx #vmware #groovy #Javascript #CoffeeScript #Ruby #Python #Groovy ,