Javaに関しては、あまりにも多すぎるフレームワーク、JSFやStrtus1.xを考えてみて下さい。ソフトウェアパターンを使用してWebでなにかやることを考えてみて下さい。
それらのゴールはWebから離れて、ミドルウェアへ戻ることです。それに対して、DjangoやRailsのようなフレームワークはWebを構築することを目的としています。
Coté は、典型的なJavaのWebアプリケーションの抽象レベルを幾分皮肉な調子で説明し始める。彼の意見のポイントをまとめる。
- VM自体はOSから抽象化されています。
- JNDIやJAASのようなライブラリは可能性をモデル化するクラスとして始まります。
- UIは将来交換の必要があるかもしれない。だから抽象化する必要があるのです。
Cotéは説明を続ける。ファイルシステム、ソートアルゴリズム、コレクションは、Javaに対してよく機能している。しかし全般的に彼は以下のように感じている。
- あなたが抽象化レイヤーを書いた頃には、自分自身のフレームワークを書いていることでしょう。おそらくあなたは、フレームワークを作るのが得意でない。そしてあなたが書いたフレームワークは酷いものになるでしょう。第一版又は第二版を書いた後に、自分がフレームワークの書き手として良くないことに気がつき、書き直すことになるでしょう。
- 新しいフレームワークとアプリケーションの構築方法が現れ、それらをWebアプリケーション、クラスタリング、Ajax、モバイルアクセスへ使いたいと思っているが、抽象化レイヤーへの比喩、慣用句、期待に値しません。あなたがしたい新しいことが抽象化レイヤーが邪魔になって出来ない。
- 主な理由は、それがゴミだということです。Billのポイントによると抽象化してそれらを難しくしていることに関して優位にたっているという犠牲を得ているということです。
LAMP、Ruby、Django等の技術を使う開発者は、自分自身が、Webアプリケーションを構築していると認識するという理論が提案されている。それに対して、Java開発者は、WebのViewが偶然あるアプリケーションを構築しているという心理でいることだろう。
原文はこちらです:http://www.infoq.com/news/2007/07/javaabstraction
(この記事は2007年7月26日にリリースされました)