« 無断リンク禁止を感情論で語ってはいけない。 | メイン | 液晶テレビにした♪ »

ここ数年、一番誤解されてきた言語「Java」 Java

duke

なんかどこかで
「javascriptはその実力を一番誤解されていた言語だ」
みたいなのを見たような記憶があるけど、

修正
Shibuya.jsでした。
しかも正しくは「世界で最も誤解されたプログラミング言語」でした。
(id:trickstar_os様、ありがとうございます。)


最近のJavaもそんな感じだなぁと思うので
また、書いてみちゃったりする。

Javaの専門誌がなくなった理由 (でぃべろっぱーず・さいど)
「Javaのバージョンは1.4系だし、Webアプリ構築ならstrutsでしょ」という妙な暗黙の了解があります。

そう、残念ながらそう言う空気は存在してる・・・
まぁ、そうとばかりも言ってられないので
(いや、基幹系とかでどうしてもとか解るから否定はしないけど)
と言うことで・・・

古い情報に惑わされないようにね♪

1.Javaは遅い

うん。まぁ、比べる対象によっては遅いだろうけど、
世間で誤解されているほど遅くない。
この誤解を解くには結構色々なことを説明しなくちゃいけない・・・

まず、Javaは登場時に注目されすぎた。
まだJava1.1とかの時代のアプレットを触って
「遅いなぁ」
と言う印象を与えちゃったのが一つ。

次、マイクロソフトとの確執。
Windowsには標準でマイクロソフト製の悪意さえ感じるほど古い
VMを乗せ続けた。
(WindowsXPで外したが、それでもマイクロソフトからダウンロードできるVMは1.14ベースの古い物だった
ちなみにXPが出た時点でJavaは1.2でSwing、1.3でHotSpotと加速度的に高速化していた)

次、エンジニアのプライド。
どうもSunのエンジニアは実装の美しさに固執するあまり、
少しだけパフォーマンスを犠牲にしていた。
(Sunの人に聞いたのだから間違いない)
例えば・・・
StringBuffer(AbstractStringBuilder)のソースの一部

1.42

5.0

という感じ。
実装の美しさで言うと
ハードコーディングされていない以前の方(1.4)が綺麗だけども、
速度的には今(5以降)の方が早いのは歴然。
こう言うのがいっぱいある。

2.Javaは冗長だ

これはJavaのエンジニアも十分承知していて
EoD(Ease of Develpment)というコンセプトを数年前から取り入れている。
実際、J2SE5では拡張for文とか AutoboxingとかGenericsとか導入されてる。
まだ十分では無いけど静的型付の堅固さを維持しながら
簡単に書けるようにどんどんなっている。
(そう言う意味ではEnumなんかも含まれるかな?)

3.Javaのフレームワークを使用するとXMLを大量に書かなくてはいけない

これも昔の話・・・とも言い切れない。
でも、新しいフレームワークではドンドン書かなくて良くなっている。
O/Rマッピングの標準とも言えるHibernateでもアノテーションを使って
XMLを書かなくて良くなっているし
MVCのプレゼンテーション層のWicketなんかもXMLで記述するのは
Servletの設定の数行のみ。
(SpringFrameworkがまだまだXML全開なんだよなぁ・・・)

で、じゃぁ、今のJavaってどうなのよ?

色々業務の都合でなかなかバージョンアップできないなど
理由はあるだろうけど、
Javaに関していうと日本はどうもまだ
「お堅い上品な言語」
という変な幻想にとらわれすぎてる気がする。

もう、Sunでさえ数年前に(確か2003年とかその辺で)
EoD(Ease of Develpment)というコンセプトを言い始めてるのに・・・
正直、俺はこの発表を聞いたときにSunが
「ちと俺たち厳格にやろうとしすぎじゃね?」
って言ってくれたような感覚を覚えて嬉しかった。

もうアメリカではJavaのデスクトップアプリケーションも当たり前になってきているし、
EclipseとNetBeansを見てもらえば解るけど
速度的な問題はほぼ無い。
そうなってくるとMVCできっちりと組まれているプログラムは
サーバサイドでもクライアントサイドでも
同じロジックを使用して実装できたりする。
JSFなんて(ちょっと転けかけたけど)
まさにそういう思想から出来た仕様だし。
(1.2になる前は使いにくくてしょうがなかったけど)

個人的にはjspとか書いてる時点で
すでに負けだと思ってる。
デザイナに渡すときに「カスタムタグを消さないで」とか
「拡張子は.jsp」でとか言っていては
分業と言いながらプログラマの都合に合わせて貰っちゃってるわけだし・・・

あと、前にナイトセミナーでも話しにあがったけど
5以降を使っているのに1.4までの書き方で書いてるとか
そう言う人たちが意外に多いらしいし
何でだろう?

と言うことで、
みんな5系にリファクタリングしようよ!!

Java言語で学ぶリファクタリング入門
結城 浩
ソフトバンク クリエイティブ
売り上げランキング: 3327

あと、誰か俺に
「一年後に見直してもリファクタリングしたくならない」
ソースの書き方を教えてください・・・orz

トラックバック

このエントリーのトラックバックURL:

TBスパムを弾く為、言及の無いTBは受け付けていません。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

人気のエントリー

▼すべて表示
generated by レビュー・ポスター

あわせて読みたい

あわせて読みたい