Kotlinでフレームワークを使いたい

karaというフレームワークもありますが一旦忘れましょう。 下記の2つのフレームワークが筆者の個人的なおすすめです。 全部入りのフレームワークを使いたいならSpringの恩恵が受けられるSpring Boot、 薄いフレームワークで自分で各機能を作っていきたいならwasabi、といった感じでしょうか。

Spring Boot

サンプル

公式サイトに載っています。

Creating a RESTful Web Service with Spring Boot

Gradle

dependencies {
    compile("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") // New
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("junit:junit")
}

Maven

<dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-stdlib</artifactId>
      <version>1.0.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.3.3.RELEASE</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

参考サイト

Kotlinのリリースと同じぐらいのタイミングでSpring側がKotlinサポートを発表しています。

Developing Spring Boot applications with Kotlin

Spring Bootは2016/02現在の最新バージョンです。コピペする場合には最新バージョンを確認し直してください。 Getting StartedはSpring Initializr使ったほうが楽だと思う。 Spring Initializr

エントリポイント(アプリ実行)

@SpringBootApplication
open class Application {
    companion object {
        @JvmStatic public fun main(args: Array<String>) {
            SpringApplication.run(Application::class.java, *args)
        }
    }
}

このクラスをメインクラスに指定した上で、実行してlocalhost:8080にアクセスすれば 画面が表示されます。 Spring Bootすごい。

wasabi

wasabiはフルKotlinなHTTPフレームワーク。 主に、httpリクエストのルーティングをコントロールする。 https://github.com/hhariri/wasabi

Maven

<dependency>
  <groupId>org.wasabifx</groupId>
  <artifactId>wasabi</artifactId>
  <version>0.3.120</version>
  <type>pom</type>
</dependency>

Gradle

    dependencies {
        // Other dependencies you use.
        compile 'org.wasabifx:wasabi:0.3.120'
    }

コード

こんな感じで書くと、ルーティングが出来る。 server.start()で組み込みJettyが起動する。

var server = AppServer()

server.get("/", { response.send("Hello World!") })

server.start()