Javaに代わる言語を考えてみる
Sunから文句を言われ、Oracleには訴えられたAndroidプラットホーム上のJavaだが、ならば他の言語をメインに使って開発することはできないのだろうか。(c、c++は除くことにしよう※)
幸いなことにAndroidは既に様々な言語でプログラミングが可能だ。
..etc.
Ruby、Python、Perl等は元々ASE(Android Scripting Environment)上で動作するし、javascriptはWebkitのエンジンとの連携でこれも動く。LuaやJRubyは元々Java(J2ME)上で動作していたものを移植されており動く、とJVM上で動かすことのできる言語であれば大抵は動かすことができる。
ただしこれはちょっとしたスクリプトを書くレベル。本格的なGUIアプリケーションを書く場合を考慮すると、まずたくさんのコードを書く環境が欲しいし、Javaと同様にコンパイル時にエラーが判ったほうが良い。せっかくなのでJavaを超える記述性も欲しい。
となると現状最も現実的なのはScalaだろうか。
携帯電話に Scala を活用するAndroid、Scala、そして Eclipse を利用してモバイル・アプリケーションを作成する - developerWorks Japan
Developing for Android Scala IDE for Eclipse Space Assembla
ぱっと見"Better java"という趣で抵抗も少ないし関数型言語の良さがあると思うんだよなぁ。なによりJavaよりシンプルで少ない行数のコードが書けるのが良い。
ざっと見たところたくさんの人が試しているようなので、まずは情報収集とお勉強だな。
※cでももちろん書けると思うんだが、そうなるとgnu cのクロスコンパイラ環境等になり、組込みLinuxと何が違うのだろうという話にもなりかねないかと思って外した。
と書いていて思ったのだが、jniというcへのブリッジを(面倒だが)簡単に書ける点もJavaの利点の一つなのだな。(現時点のAndroidはDalvikをカバーするために大量のネィティブコードが使用されている)
#別にすぐScalaに乗換えるとかそういう事ではなく、単に第二の選択肢として考えてみようということ。
現状、仕事で使うならJavaなのは変わらない。
追記:C#(Monodroid)を追加した