CLOVER🍀

That was when it all began.

KotlinでHello Worldしてみました

今まで名前を見ていたものの、手は出していなかったKotlinについて、Hello Worldくらいやってみようかということで。

とりあえず、IntelliJはうちの環境では重くてつらいので、スタンドアロンコンパイラかビルドツール連携がないかということで、ちょっと確認。

コンパイラのダウンロードページ
https://github.com/JetBrains/kotlin/releases

けっこうな頻度でリリースされているようですが、ソースコードですしビルドが必要ですし、ダウンロードも時間がかかるのでこれでやるのはちょっと厳しいですね…。

というわけで、他のビルドツールとの連携ということで。Ant、Maven、Gradleがあるようです。

Kotlin Build Tools
http://confluence.jetbrains.com/display/Kotlin/Kotlin+Build+Tools

Mavenだとちょっと面倒そうな感じがしたので、ここはGradleにしました。gvmでアップデートし続けているものの、全然使っていないGradleに。

http://confluence.jetbrains.com/display/Kotlin/Kotlin+Build+Tools#KotlinBuildTools-Gradle

Hello World的なソースを作る

とりあえず、build.gradleを作成します。

build.gradle 
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.7.895'
    }
}

apply plugin: "kotlin"
  
repositories {
    mavenCentral()
}
  
dependencies {
    compile 'org.jetbrains.kotlin:kotlin-stdlib:0.7.895'
}

現時点のバージョンは、0.7.895ですね。スタンドアロンコンパイラだと、もうちょっとバージョン進んでいましたけど。

で、ドキュメントにサンプルとしてあるHello, World!を見て

Hello, world!
http://confluence.jetbrains.com/display/Kotlin/Hello%2C+world!

とりあえず、書いてみます。

src/main/kotlin/demo/HelloKotlin.kt

package demo 
 
fun main(args : Array<String>) { 
  println("Hello Kotlin!!") 
}

ソースコードは、「src/main/kotlin」ディレクトリに置いて、拡張子は「.kt」とするみたいです。

ビルド。

$ gradle --daemon build
:compileKotlin
warning:Annotations path entry points to a non-existent location: 
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:assemble
:compileTestKotlin UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build

BUILD SUCCESSFUL

Total time: 7.641 secs

なんか、Warning出てる…。まあ、今回はいいか…。

実行

で、動かしたい…のですが、どうやって?

ビルドした結果、buildディレクトリにclassesとkotlin-classesという中身の同じディレクトリができていて、こんなファイルがありました。

$ ll build/classes/main/demo/
合計 16
drwxrwxr-x 2 xxxxx xxxxx 4096  68 23:40 ./
drwxrwxr-x 3 xxxxx xxxxx 4096  68 23:40 ../
-rw-rw-r-- 1 xxxxx xxxxx  809  68 23:40 DemoPackage-HelloKotlin-4373b861.class
-rw-rw-r-- 1 xxxxx xxxxx  896  68 23:40 DemoPackage.class

javapとかすると、この場合は「DemoPackage」を使えばいいのでは…?ということで。

試してみます。

build.gradleのプラグイン設定に、以下を追加。

apply plugin: "kotlin"
apply plugin: 'application'

mainClassName = 'demo.DemoPackage'

実行。

$ gradle --daemon run
:compileKotlin UP-TO-DATE
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:run
Hello Kotlin!!

BUILD SUCCESSFUL

Total time: 2.342 secs

動きましたよー。

これで、合ってるのかな??

で、これからKotlinをやるのかという話ですが、う〜ん…。

今まで自分はJavaScala → Groovy → Clojureとやってきましたが(たぶん、習熟度もこの順)、ここにさらにJavaVM系の言語を入れられるでしょうか…。
あと、ツールとのサポートというか、個人的にはEmacsでkotlin-mode的なものがない(らしい)のが、非常に痛いです。IntelliJを今は起動できる気がしないので、ここが1番ネックだったり…。

またしばし様子見かも…。