Installation de Vert.X avec Scala
La troisième édition du concours Code Story est dans les starting blocks 1. Comme ce concours n’est plus lié à une session de live coding à Devoxx France (oui, je suis trop timide pour coder devant 300 personnes :), j’ai décidé de participer à cette édition 2013.
J’ai en fait plusieurs objectifs :
- Monter un projet sympa avec la team Dictanova + Thomas
- Se former, par un vrai challenge, à un nouveau langage (Scala) / une nouvelle technologie (Vert.X)
- Accessoirement, gagner :)
Depuis la présentation de Code Story Saison 3 à la mi-septembre au Jug Summer Camp à La Rochelle, j’ai commencé à jouer sérieusement avec le framework Vert.x combiné avec le langage fonctionnel Scala.

Vert.X

Scala
Je vous propose donc d’installer ce couple diabolique afin de voir ce qu’il est possible de faire avec :)
Installation de Vert.X version 2.x
L’installation de Vert.X est très bien décrite sur le site officiel, mais je vous propose ici un résumé des instructions.
Pré-requis
Les pré-requis sont assez simples :
- N’importe quel OS, Linux, Windows ou encore Mac OS X
- Java 7 (apt-get install openjdk-7-jdk sous Debian & co)
Installation
Sous Linux l’installation de Vert.x se résume à cela (en temps de root) :
cd /opt/
wget http://dl.bintray.com/vertx/downloads/vert.x-2.0.2-final.tar.gz
tar xvzf vert.x-2.0.2-final.tar.gz
ln -s vert.x-2.0.2-final/ vertx
chown -R [VOTRE USER] vert.x-2.0.2-final/La commande vertx est disponible dans le répertoire /opt/vertx/bin/. Je vous recommande d’ajouter la commande vertx dans votre PATH comme ceci :
export VERTX_HOME=/opt/vertx/
export PATH=$VERTX_HOME/bin:$PATHVérification
Pour vérifier que l’ensemble fonctionne correctement :
vertx version
2.0.2-final (built 2013-10-08 10:55:59) Créer un fichier server.js avec le contenu suivant:
var vertx = require('vertx');
vertx.createHttpServer().requestHandler(function(req) {
req.response.end("Hello World!");
}).listen(8080, 'localhost');Il suffit ensuite de l’exécuter avec la commande vertx run
vertx run server.jsInstallation du module Scala
Le module Scala pour Vert.X permet, comme son nom l’indique, d’utiliser des scripts dans le language Scala au sein de Vert.X. Il autorise ces scripts à accéder a l’API de Vert.X (HTTP, EventBus, DNS, etc…).
Même si la version 1.0 de l’extension Scala pour Vert.x est disponible depuis peun, je souhaitais profiter des dernières modifications et suivre le développement au jour le jour. Je me suis donc mis en tête de récupérer les sources et de construire une version cutting edge :)
Construction de mod-lang-scala
Il faut récupérer le repository GIT du mod-lang-scala. On peut ensuite utiliser Gradle pour le construire et l’installer localement.
git clone https://github.com/vert-x/mod-lang-scala.git
cd mod-lang-scala/
./gradlew clean installUne fois le build Gradle exécuté, le module scala pour vertx est alors installé dans votre ~/.m2/repository/
Paramétrage de Vert.X pour Scala
Il faut ensuite déclarer ce module dans la configuration de Vert.X. Pour cela, il faut éditer le fichier conf/langs.properties et ajouter deux lignes supplémentaires :
# Déclaration du module Scala
scala=io.vertx~lang-scala~0.2.0-SNAPSHOT:org.vertx.scala.platform.impl.ScalaVerticleFactory
[...]
# Association de l'extension .scala avec le module précédent
.scala=scalaAu premier lancement d’un script .scala, Vert.X ira récupérer le module nécessaire dans votre ~/.m2/repository/.
Vérification
Créer un fichier server.scala avec le contenu suivant
import org.vertx.scala.core._
import org.vertx.scala.core.http.HttpServerRequest
import org.vertx.scala.platform.Verticle
class server extends Verticle {
override def start() {
vertx.createHttpServer.requestHandler { req: HttpServerRequest =>
req.response.end("Hello Scala World!")
}.listen(8080)
}
}Essayons maintenant de lancer ce nouveau script Scala avec Vert.X
vertx run server.scalaUPDATE: En cas de problème avec la version cuting edge de ce module, il est possible de revenir à la version stable de ce dernier. Pour cela, il suffit d’éditer le fichier conf/langs.properties pour indiquer que l’on souhaite utiliser la version 0.1.0 du module:
scala=io.vertx~lang-scala~0.1.0:org.vertx.scala.platform.impl.ScalaVerticleFactoryConclusion
Toutes les fonctionnalités de Vert.X ne sont pas encore complètement supportées par le module Scala, mais le module HTTP et Event Bus étant présents, il y a déjà moyen de s’amuser un peu !
Le lancement officiel (avec de nouvelles règles du jeu) est prévu à partir du 14 octobre. ↩︎