技術日誌

DB,Java,セキュリティ,機械学習など。興味のあることを雑多に学ぶ

Kotlin雑感

Java読書会に参加するために勉強し始めました

Kotlinイン・アクション

Kotlinイン・アクション

kotlin自体にすごく興味があった訳ではないのですが、 いざ学び始めると、新しいプログラミング言語に触れる体験ってかなりワクワクするものだったことを思い出しました。*1

Kotlinとは?

  • Groovy,ScalaのようなモダンなJVM言語の一種
  • 開発元はチェコのJetBrains。*2
  • 実用性を考えて作られている
    • 実験的な機能は搭載されていない
    • 他の言語で成功した概念を多数吸収
    • 研究目的の言語とかではない。
  • .ktファイルをjavaコマンドで実行できる.classファイルにコンパイル可能
  • 関数がファーストクラスオブジェクト。トップレベルに関数を書くことが可能
  • 関数型プログラミングのスタイルでコーディングできる(map,filter等)

    Javaで必要となる冗長なボイラープレートを省略できる仕組みが素敵

  • スマートキャストでインスタンスの型チェックの手間を省略
  • Data構文でhashCode(),equals(),toString(),copyなどを自動実装
  • もちろん自分で書きたければ書ける
  • 変数宣言時にデフォルトでnullが使えないのでぬるぽチェックのためのコードが不要になる
    • nullを使う場合は明示的に?を型の末尾につける必要がある
val str1:String = "non null"//nullを代入するとコンパイル時にエラー
val str2:String? = null //nullが使える
  • 拡張実装によりprint文の追加*3
//同じものが出力される
println("Hello, world!")//kotlinのprint文
System.out.println("Hello, world!")Javaのprint文

 /*コード内のJavaのprint文はJavaのコードを書いている訳ではないことに注意。
.ktファイルにJavaはかけないが,javaのクラスは呼び出せる。
この例ではKotlinでJavaのSystemクラスのoutメンバのprintlnメソッドを読んでいるだけ。*/

実行環境が豊富

  • REPL
  • ブラウザ(javascriptにトランスパイルして動かしている?)*4
  • 全てのJavaが動く環境。
    • Kotlincコマンドでコンパイルしてjavaコマンドで実行。
    • ただしKotlinランタイムライブラリが必要。

Javaからの移行がスムーズにできる

  • KotlinからJavaのクラスには勿論アクセスできるが 逆も可能
  • 既存のJava資産の活用可能
  • Javaからkotlinへのコンバータがある。kotlinに不慣れなうちはこういうものに頼るのもありだと思う。
  • 結構ガチでJavaエンジニアのパイを奪いに行く気迫を感じました

1日で100ページ以上読む必要があったのでかなり疲れた。会場近くのカフェでギリギリ勉強会でやる分まで読みきれた。勉強会の感想も近いうちに書きます。

*1:JavaプログラマJVM言語を未経験、と言い切るのはちょっとチートくさい側面もあるが

*2:IntelliJ IDEAというIDEを作っている会社

*3:Java以外のプログラマからはSystem.out.printlnって打つの面倒臭いとよく言われますよね。

*4:http://try.kotl.in