2015年4月12日日曜日

Javaの書きたくなさ

業務でおそらくAndroidアプリを書くことになるっぽいので、重い腰を上げてJavaを勉強し始めようかと思った。

なんというか、型推論が無いとかそういう部分も置いといて、検査例外とかそういうシステムのせいもあるけども、全体的に冗長な記法になりやすいような気がします。入出力とかでもBufferdReaderとかScannerとか出てきて、もっと簡単に書けないのかよっていう。

その点、JVMで動くJavaじゃない言語とかも割りと多い印象。

Java

JVMの基本、Java。Java8あたりではラムダ式とかも取り込んで入るけど、やはり後方互換を意識しているためか、言語そのものが書きやすい方向には変化していないような気がする。環境によっては他の言語とかも動かないことがあるらしいので、その点ではJavaが一番安定?

Scala

JVMで関数型プログラミング言語と言えばScala。Scalaは関数型プログラミング言語ではないという議論はさておき。型推論とかあるし、Haskellに比べると弱いかもしれないけど、関数型プログラミングの機能もある程度充実しているし、オブジェクト指向っぽくも書けるので、割りとやってみたさはある。コップ本は持ってるし。

Clojure

Lisp on JVM。イミュータブルなデータとSTMなんかの機能が特徴?とりあえず勉強中ではあるけど、Javaのエコシステムあまり詳しくなかったりとか、ビルドシステムがよく分かっていないので、あまり進んでいない。

Groovy

この言語、実はClojure、Scalaよりもあとに知ったんだけど、JVM上で動く動的型言語として有名らしい。Gradleという最近のJavaのビルドシステムとかでも使われているらしく、Javaのプロジェクトに携わるならやっておいて損はなさそう。

JRuby, Jython

RubyやPythonのJVM実装。それぞれの言語を利用していて、かつJava系のツールとかが必要になった時に。

Kotlin

最近知ったんだけど、Intellijで有名なJetBrainsが作った言語らしく、静的型の言語で、Javaよりも書きやすそう。Android開発にも普通に使えるらしいので、もしJavaが嫌いだけどAndroidやることになったときにいいかもしれない。

AltJavaと言われる言語は多いけども、結局はJavaのライブラリやJVM周りの知識とかは必要になってくると思うので、そういう点でJava自体もある程度勉強していきたい。