Javaは『end of life』なのか?
一方で、バージョン管理ツールのSubversionが後退し、それと入れ替わるように分散バージョン管理(Distributed version control)が前進しています。ホワイトペーパーでも「GitやMercurialといった分散バージョン管理はこの数年で大きな注目を集め始めており、地域的に分散した環境でのバージョン管理を求めるエンタープライズ市場での推進役となっている」と書いています。
JavaScriptが第一級のプログラミング言語へ、分散バージョン管理にも注目が集まる - Publickey
"エンタープライズ" ではまだSubversionじゃないかなあ。GitもMercurialも、リポジトリの一部だけをcheckoutしたり、ディレクトリ別にアクセス制御ができたりしないよね?孫請けの末端開発者には担当部分のコードだけアクセスできるようにしておかないとだめなんじゃないだろうか。開発者ならだれでもソースコードをまるごとダウンロードできる状態は、みんな大好き "エンタープライズ" ではまずいと思うんだけど、どうでしょう?
もう1つ急速に内側に向かって前進しているのが次世代テストツール(Next-gen test tools)。ホワイトペーパーでは特にRubyコミュニティから登場したrspecとCucumberの名前を挙げています。そのほか、多言語開発環境(Polyglot dev environment)、Google Waveなども急速に内側に向かっています。
RSpecはRubyの柔軟な言語仕様に大きく依存しているから、同じようなのを他の言語で書こうとすると難しい (書けそうなのはList/SchemeとSmalltalkぐらいじゃないかなあ)。実際、自分でRSpecを他言語に移植してみようとすればわかるけど、Rubyのブロックってさりげなく偉大だと思う。
JavaScriptがほとんど外宇宙から第一級のプログラミングへとまっしぐらに進んでくるのがこの分野でもっとも注目すべきトレンドであることは間違いなさそうです。
正直いうと、世間で言われるほどJavaScriptがいい言語とは思えないんだよね(今どきforeach文や引数のデフォルト値がない言語を使うのはつらい)。でもGoogle AppEngineでserver side JavaScriptがサポートされちゃったりすると、一気に盛り上がるんだろうなあ。
もう1つ中心に向かっているのがJavaの寿命です。まだAssessの段階ではありますが、「Javaの進化は緩慢になっています。新しいバージョンの登場にはほとんど3年近く待たされています」とホワイトペーパでは書いていますが、一方でJava VMの上で動作する新しい言語、Groovy、JRuby、Scala、Clojureなどが新しいイノベーションとなりそうだとも記しています。
Javaが『end of life』になっているんだけど、それはちょっと違うんじゃね?進化が遅いことと、寿命が来たかどうかは別の話だよね。たしかにJavaはIT業界での主役の座からは落ちたし、Sunがなくなっちゃうなどいい状況とはいえないけど、『end of life』は言い過ぎ。せめて次のJava7が出てから判断しようよ。
参考:
- JDK 7が、突然"単純な"クロージャをサポート、しかしリリースは、2010年の終わりに。 (InfoQ)
- Java 7、やっぱりクロージャは取り込む (pcweb)
もしJava7がクロージャをサポートして2010年中にリリースされたら、Javaが『end of life』というのは間違いだったと言っていいだろう。そうでなければ・・・
元記事の元記事であるInfoQの記事より:
C# は、ラムダ式、拡張メソッド、オブジェクトイニシャライザと自動プロパティセッタとゲッタのような新しい言語機能の導入を続けています。 その全ては 3.5 リリースの言語で利用可能です。C# の 4.0 リリースで、動的キーワードと名前付やオプションパラメータの導入を見ることができるでしょう。それらは C# をより Ruby のような言語に近づけ、より Java 言語の前方へ運び続けるでしょう。
最近のテクノロジにおけるトレンドは?
Javaと違って、C#は着実に進化しているみたい。ThoughtWorksによる評価も高い。
でもなあ、Martin FowlerはMSから多額のお金をもらっているらしいから (元Sunの人がそう言ってた)、そのへんは割り引いて聞いておくことにする。