If you are using Maven or Gradle, add the following dependency to the dependencies section of your project descriptor to access the Vert.x Core API and enable the JavaScript support:

  • Maven (in your pom.xml):

<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>4.0.0.Beta1</version>
</dependency>
<dependency>
 <groupId>io.vertx</groupId>
 <artifactId>vertx-lang-kotlin</artifactId>
 <version>4.0.0.Beta1</version>
</dependency>
  • Gradle (in your build.gradle file):

compile "io.vertx:vertx-core:4.0.0.Beta1"
compile "io.vertx:vertx-lang-kotlin:4.0.0.Beta1"
----== JSON

Unlike some other languages, Java does not have first class support for http://json.org/[JSON] so we provide
two classes to make handling JSON in your Vert.x applications a bit easier.

Use the `link:../../apidocs/io/vertx/core/json/JsonObject.html[JsonObject]` class to represent JSON objects and the `link:../../apidocs/io/vertx/core/json/JsonArray.html[JsonArray]`
class to represent JSON arrays, you can refer to the Java documentation for more details.

=== Builders

Builders are provided to provide a more fluent JSON construction:

[source, kotlin]

val result = json {

// in this structure the obj function can be used
// takes a vararg of Kotlin pairs
obj(
  "key_1" to 1,
  "key_2" to 2,
  "key_3" to 3
)
// or an iterable of Kotlin pairs
obj((1..3).map { "key_$it" to it })
// or a Map<String, Any?>
obj(someMap)
 // apply function on object receiver
 obj {
   for (i in 1..3) {
     put("key_$i", i)
   }
 }
}
You can also build JSON arrays:

[source, kotlin]

val result = json {

// in this structure the array function can be used
// takes a vararg of values
array("1", "2", "3")
// or an iterable of values
array((1..3).map { "$it" })
 // apply function on array receiver
 array {
   for (i in 1..3) {
     add("$i")
   }
 }
}
Of course it is possible to mix objects and arrays

[source, kotlin]

val result = json {

 "firstName" to "Dale",
 "lastName" to "Cooper",
 "age" to 64,
 "names" to array("Dale", "Bartholomew")
}
=== Postscript operator overloading

The Kotlin postscript operator is overloaded for JSON object and array:

[source, kotlin]

print(someObject["firstName"]); print(someArray[4]); ----=== Writing Verticles

Writing a Verticle with Kotlin is achieved the same way you write a Java Verticle by extending the AbstractVerticle.

Here’s an example verticle:

import io.vertx.core.AbstractVerticle

class MyVerticle : AbstractVerticle() {

 // Called when verticle is deployed
 override fun start() {
 }

 // Optional - called when verticle is undeployed
 override fun stop() {
 }
}

Please refer to the Java documentation.