今まで名前を見ていたものの、手は出していなかった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 6月 8 23:40 ./ drwxrwxr-x 3 xxxxx xxxxx 4096 6月 8 23:40 ../ -rw-rw-r-- 1 xxxxx xxxxx 809 6月 8 23:40 DemoPackage-HelloKotlin-4373b861.class -rw-rw-r-- 1 xxxxx xxxxx 896 6月 8 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をやるのかという話ですが、う〜ん…。
今まで自分はJava → Scala → Groovy → Clojureとやってきましたが(たぶん、習熟度もこの順)、ここにさらにJavaVM系の言語を入れられるでしょうか…。
あと、ツールとのサポートというか、個人的にはEmacsでkotlin-mode的なものがない(らしい)のが、非常に痛いです。IntelliJを今は起動できる気がしないので、ここが1番ネックだったり…。
またしばし様子見かも…。