※当サイトの記事には、広告・プロモーションが含まれます。

JSP + JSTL は遅いらしいが、変数の定義などはどこでするのが良いのか

gigazine.net

⇧ 普及率がどれぐらいなのか気になりますな。

JSP + JSTL は遅いらしいが...

サーバーサイドがJavaSpring FrameworkとSpring Web MVCを使っていて、フロントエンドが

のような技術を利用しているのだけど、

www.reddit.com

⇧ 上記サイト様のように、DBに登録されてる値によって、CSSの内容を変えたいってことを実現したいですと。

具体的には、HTMLの<table>タグの<th>や<td>のcolのwidthを、CSSで設定されているのだけど、DBに登録されてる値によって、colの数が変わってくるので(<table>のレイアウトが変化し得る)、自ずとcolのwidthも変える必要があり、widthの値を変数に定義して利用したいということですと。

で、気になるのが、

kwatch.hatenadiary.org

uncorrelated.hatenablog.com

⇧ 上記サイト様によりますと、そもそも、

JSP(JavaServer Pages)+ JSTLJSP Standard Tag Library)

について、遅い(Webブラウザで表示されるまでの処理速度のことだと思うが)らしいという話が出ていますと。

JavaのTemplate Engineのベンチマークを比較してくださっている情報があり、

dzone.com

After that, we calculate the average time taken by 5 iterations of the same benchmark for each template engine. This resulted in the following numbers corresponding to the total time taken for processing 25000 requests with a concurrency level of 25 (lower is better).

https://dzone.com/articles/modern-type-safe-template-engines-part-2

⇧「JSP(JavaServer Pages)」自体は、まぁ、JavaのTemplate Engine の中では可もなく不可もなくな処理速度ってことになるんかな。

で、2010年頃の情報ですが、他言語のTemplate Engineも含めたベンチマークの比較をしてくださっている方がおられて、

kwatch.hatenadiary.org

⇧ 上図のような結果らしく、海外の方のベンチマークの比較で「Velocity」と「JSP(JavaServer Pages)」がだいたい同等の処理速度だったので、「JSP(JavaServer Pages)」は、処理速度的には、やはり可もなく不可もなし的な立ち位置になるんですかね?

ちなみに、「Rocker」っていうTemplate Engineの公開しているベンチマークの比較によると、

github.com

⇧「Thymeleaf」がボロクソな結果になってることから、「JSP(JavaServer Pages)」も処理速度は残念なことになるということかと...。

まぁ、昨今は、画面については、ReactやVue、AngularなどのJavaScriptフレームワークが担っていることが多いと思うので、Template Engineを使わないってことの方が多いんかな?

変数の定義などはどこでするのが良いのか

とは言え、『JSP(JavaServer Pages)+ JSTLJSP Standard Tag Library)』を利用している環境なので、ReactやVue、Angulaのように「SPA(Single Page Application)」構成にして処理速度を上げるようなことはできそうにないんかな?

stackoverflow.com

⇧ stackoverflowで「JSP(JavaServer Pages)」で「SPA(Single Page Application)」を実現したいって質問があるけど、「SPA(Single Page Application)」はサーバーサイドへの通信はRESTとかで実現するっぽいから、「JSP(JavaServer Pages)」の技術仕様と嚙み合わないってことかね?

話が脱線しましたが、『JSP(JavaServer Pages)+ JSTLJSP Standard Tag Library)』を利用している環境で、変数を定義する場所としては、

  1. JSP(JavaServer Pages)
  2. JSTLJSP Standard Tag Library)
  3. JavaScript
  4. Java

⇧ 上記の候補がある感じになるのかなと。

昨今、メジャーな、React、VueなどのJavaScriptフレームワークやNode.jsなどの技術を利用している場合は、他にもやりようがあるのかもしれないですが...

とりあえず、

stackoverflow.com

When you write java in a jsp page, the JVM will compile the code into a servlet than into a byte code at run-time, then process the request, when it comes to writing code in a java class, the class is compiled into .class (byte) when it's deployed on the web server. The JVM then will process the class at run-time. When it comes to the JVM the processing of the ClassName.class is much faster than the .jsp. But it's not a performance issue since it's negligible. Plus its better to write all your code in the Java class since it's more secure when it comes to XSS or cross-site scripting.

https://stackoverflow.com/questions/16762024/which-is-better-in-performance-between-method-declare-in-jsp-or-method-declare-i

⇧ stackoverflowの情報によると、パフォーマンスだけに関して言うならば、「JSP(JavaServer Pages)」で定義しようが「Java」で定義しようがほぼ変わらないということらしい。

なので、変数を定義したりする場合、

  1. JSP(JavaServer Pages)
  2. JSTLJSP Standard Tag Library)
  3. Java

で、パフォーマンスの差はほとんど無いということだと思う、多分。

  1. JavaScript

については、Microsoft Bingに聞いた感じでは、

JSPで変数を定義するのと、JavaScriptの変数をJSPで読み込むのと、どちらが処理速度が早いかについては、一概に言えません。ただし、JSPで変数を定義する場合は、サーバーサイドで処理されるため、JavaScriptの変数をJSPで読み込む場合よりも処理速度が早い可能性があります。ただし、この場合でも、処理速度に大きな影響を与えることはありません。

参考文献123によると、JavaScriptはクライアントサイドで実行されるため、処理速度が遅くなる可能性があります。一方、JSPはサーバーサイドで実行されるため、処理速度が速くなる可能性があります。ただし、これらの言語の処理速度には多くの要因が影響するため、一概にどちらが速いとは言えません。

 1JSPとJavaScriptの違い 3JavaScriptとJavaServer Pages(JSP)の違い 2JSPとJavaScriptの違い

ということらしく、結局、ハッキリしないらしい...

JSP(JavaServer Pages)+ JSTLJSP Standard Tag Library)」で画面の表示ページを作っていて、変数とかを利用したいんであれば、パフォーマンス的には、どの方法であっても大差ないということになるんかね?

1つだけ分かったことは、他のTemplate Engineに比べて「JSP(JavaServer Pages)」は処理速度が遅い部類になるということですかね...

毎度モヤモヤ感が半端ない...

今回はこのへんで。