読者です 読者をやめる 読者になる 読者になる

餡子付゛録゛

ソフトウェア開発ツールの便利な使い方を紹介。

id:kwatch氏の上手くないJavaの中傷の仕方

id:kwatch氏がエントリーにコメントをしてくれたので、「プログラミング言語の速度とアプリケーションの速度がいかに関係ないかがわかるグラフ」と「JSPが遅い理由をJava屋さんはまるでわかってないらしい」の作文的な問題点を整理してみます。

id:kwatch氏の主張

JSP内に記述できるJava Unified Expression Language(以下、EL)や、Javaのテンプレート・エンジンのVelocityは構造が動的言語になっていて遅いため、Javaは高速であるものの、JSPは遅く、JSPで用いたJavaアプリケーションも遅くなると言う主張です。id:kwatch氏は以下のように述べられています。

Java のように高速な言語でも、Velocity や JSP のようなアーキテクチャではたいして速度は出せない。

id:kwatch氏の主張の問題点

主張は一見、整合的に思えますが、以下の2点で根拠が脆弱です。

    1. JSPの遅さを提示していない
    2. ELの利用がJSPで必須とされている

JSP自体は静的な構造を持つため、根拠の提示が不足してると、色々と批判を受けるはずです。

id:kwatch氏はJSPの遅さを提示していない

id:kwatch氏が実証結果として提示しているのは、Tenjinというテンプレート・エンジン開発元が提示している、TenjinとVelocityの速度差のグラフで、JSPに関しては以下のように記述しているのみです。

またこのグラフには出てないが、JSP は Velocity より遅いことが分かっている。

当然、JSPに対しても実証結果を求められるわけですが、id:kwatch氏は「ベンチマークすれば分かります」と述べるのみで、残念ながら明確な根拠は提示していません。
Javaは癖のある言語なので、ベンチマークに用いるJSPソースコード如何によっては、凄く速度が低下します。id:kwatch氏の計測方法が不適切なのではないかという疑問は、出てきますよね。

ELの利用がJSPで必須とされている

JSP自体は1998年からあるはずですが、ELは2003年11月のJ2EE 1.4(JSP 2.0)で導入され、2006年5月のJava EE 5(JSP 2.1)で機能拡張されました。JSP後方互換性があるため、JSPでコーディングを行う場合、ELを使うという選択肢も、ELを使わないという選択肢も残されています。
フレームワーク製品のタグ・ライブラリや内部でELを使っているケースもありますが、その製品を用いる必要性や、どの程度ELで速度が落ちているのかは議論の余地が残るはずです。id:kwatch氏は、この点について全く言及していません。
id:kwatch氏は以下のように述べられていますが、ELを用いないJSP 1.2の例もTomcat 7に添付されていますよね?

えーーー、JSFでもEL使ってるのに、それはないわ。Tomcat付属のJSPサンプルコードでもEL使ってる時代に何てことをおっしゃる。

id:kwatch氏に不足していること

id:kwatch氏の主張は、論点の整理が欠けていると思います。id:kwatch氏が主張しているのは「JSP 2.0以降で導入されたELは動的言語なので遅い」と言う事であって、JSPが遅いとも、JSPを用いた ─ Strutsを利用しているものを含む ─ ウェブ・アプリケーションの速度の事でもないからです。
結論に至る根拠も不足しています。Javaのテンプレート・エンジンとしてELを用いたJSPが普遍的であり、なおかつ適切な実装方法のJSP(+EL)のサンプル・コードと、他の言語で同様の処理となるサンプル・コードのベンチマークを取った上で、JSP(+EL)の遅さを主張していたら、主張に説得力が増したと思います。
全般的にid:kwatch氏の文章を読み返すと、記述や論理展開の稚拙さが批判的なコメントを呼び、それに対して感情的に弁解を行っているように思えます。コメントに対する反論に、感嘆詞を多様していますよね。冷静さに欠けていると、id:kwatch氏が良く分かっていないと見える点が、ますます強調されてしまうので、切々と根拠をあげる姿勢も大事なのでは無いかと思います。

id:kwatch氏が本当に書きたかったこと

御本人しか分からないでしょうが、ブログに釣りタイトルをつけて面白いことを書きたかったのかも知れません。分かっていないなと思ったけど、ちょっと面白かったですよ。