「Javaの時代は終わった?(読書感想文)」

http://blogs.itmedia.co.jp/ogura/2006/09/beyond_java_d458.html

忘れた頃にやってくる.

Javaは、C++とインターネットのもたらした混乱の中で、たまたま絶妙なバランスを持ったC++の最適な後継者として生まれ、市民権を勝ち取った

これはまあ事実だろう.どれほど優れた言語でも,新しい言語を普及させるのは極めて難しい.*1

が、時代の変化とともにその絶妙なバランスが通用しなくなってきている。C++を引きずりすぎて完全なOOP言語になれなかったことや、

なんじゃそりゃ.
「完全なOOP言語」なんて専門用語はないと思うがな.

(コードブロックやcontinuationのような)新しい概念を採り入れられなかったこと、XMLに頼りすぎて複雑化してしまったこと、

XMLJavaとは無関係.Strutsのようなフレームワークの設定ファイルでは使われているが,ただそれだけだ.

continuationってなんじゃらほいと思って検索してみると,setjmp()/longjmp()かい.setjmp()/longjmp()みたいなものかい.新しいどころか古い概念だぞ.*2

習得にえらい時間がかかる程に肥大化してしまったフレームワークが存在することetc...

まあそりゃそうだろう.フレームワークというのは多かれ少なかれそういうものだ.
ということはここで言いたいことは「Javaの時代は終わった?」ではなく「JavaのXXXというフレームワークの時代は終わった?」ではないか.情報は正確に.

が、現代最も必要とされている「Web+DBでさっさと作るアプリケーション」に向いてない

さらに「小規模でセキュリティもさほど高くなくていいWeb+DBアプリ開発においては、JavaのXXXというフレームワークの時代は終わった?」ということか.

Java技術者は他の言語も勉強しよう

これには全面的に賛同する.

習得に何年もかかるようになってしまった、というJavaの複雑性は、JVMの発明により過去との断絶が起こった結果、必然的に全てのものをオブジェクト指向で設計しなおさなければならず、抽象化が幾層にも重なったところにも一因があるのではないか。

多分,完全に的はずれ.
過去との断絶は言語レベルで発生する.Javaを使うからにはJavaで書き直すべきだが,それがオブジェクト指向的に設計し直されるとは限らないし,ましてや必然ではない.見た目が「C言語そのまま」とか「COBOLそのまま」なんていう世にも恐ろしいJavaコードも存在する.「抽象化が幾層にも重なった」になると,それはOSや高級言語で何度でも行われてきたことで,ソフトウエア技術の進歩そのものだ.

「多少言語の整合性を犠牲にしてでも、過去との互換性を保つことによる効率性が大事なのではないか」という意見であることに気づいた。

……それって,「Javaは最高だ」ってことじゃないの?*3

*1:新しい言語は普及していない.普及していないから誰も使わない.使わないから普及しない.

*2:しかもC言語の中でも特に危険な機能の一つに数えられる.goto文のお化けみたいなもの.Javaだと一番近いのは例外機構で,より安全に実現される.
指摘されたんで少し訂正.まあ自分でもイコールなものとは思っていなかったけど.

*3:C#VB.NETが受け入れられない最大の理由でもある.