= Vert.x 2.x is deprecated - use instead https://github.com/vert-x3/vertx-lang-scala
== Scala Module for Vert.x
Scala language implementation for Vert.x.
=== Versions
Vert.x Scala 1.0.x is designed for Vert.x 2.1 and works with Scala 2.10
=== Quickstart
To use it, we've added a first "Hello World"-like example to the https://github.com/vert-x/vertx-examples/blob/master/src/raw/scala[Vert.x Examples repository] which can be run like this:
Clone or download the https://github.com/vert-x/vertx-examples[Vert.x Examples Git repository]
Change directory to src/raw/scala
and type:
+
...............................................................................
[VERTX_HOME]/bin/vertx run http/Server.scala
...............................................................................
+
Go to http://localhost:8080/ and you should see the message: ""This is a Verticle script!"
=== Using the Vert.x Scala API
The best places to look for examples on how to use the Vert.x Scala API are the https://github.com/vert-x/vertx-examples/blob/master/src/raw/scala[Vert.x Examples repository] and the https://github.com/vert-x/mod-lang-scala/tree/master/src/test/scala/org/vertx/scala/tests[Vert.x Scala testsuite]. Please inspect those if you have any doubts. The following sub sections explain some of the items to bear in mind when using this API.
==== Type annotations for handlers in for overloaded methods
In some cases, the Scala compiler can fail to detect the type of a particular handler, for example:
+ ............................................................................... val datagramSocket = vertx.createDatagramSocket() datagramSocket.send("hello", "127.0.0.1", 1234, { h: AsyncResult[DatagramSocket] => ... } ............................................................................... +
In this example, send
method call explicitly needs to define the type
annotation for the async result handler. This is because there's an overloaded
method that sends a org.vertx.scala.core.buffer.Buffer
instead of a String.
A possible workaround would have been to use function currying, but doing so
would limit the API capability to add scala.concurrent.Future
based methods,
which are better suited for implementing handlers.
=== Plugging Vert.x Scala language extension
Vert.x 2.1 comes with Vert.x Scala language support embedded within it, but if you want to test a different version of the Vert.x Scala language implementation, follow these instructions:
[VERTX_HOME]/conf/langs.properties
file and modify this line to match
the Vert.x Scala version to test:
+
...............................................................................
scala=io.vertx~lang-scala~X.Y.Z:org.vertx.scala.platform.impl.ScalaVerticleFactory
...............................................................................
+Optionally, if you're testing a locally built Vert.x Scala extension, you'll need to do the following steps additionally:
[SBT_HOME]/bin/sbt
or [SBT_HOME]/bin/sbt.bar
into your pathFor more information on building Vert.x Scala, check the contributing guide.