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 language (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 language fonctionnel 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:$PATH

Vé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

server.js

1
2
3
4
5
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.js

Installation 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 install

Une 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 :

1
2
3
4
5
# 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=scala

Au 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

server.scala

1
2
3
4
5
6
7
8
9
10
11
12
13
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.scala

UPDATE: 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:

1
scala=io.vertx~lang-scala~0.1.0:org.vertx.scala.platform.impl.ScalaVerticleFactory

Conclusion

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 !


  1. Le lancement officiel (avec de nouvelles règles du jeu) est prévu à partir du 14 octobre.

Comments