⇧ 普及率がどれぐらいなのか気になりますな。
JSP + JSTL は遅いらしいが...
サーバーサイドがJavaでSpring FrameworkとSpring Web MVCを使っていて、フロントエンドが
- jQuery + JavaScript
- CSS
- JSP(JavaServer Pages)
- JSTL(JSP Standard Tag Library)
- Spring Tag LIbarary ←Spring Web MVCに含まれてるものらしい
のような技術を利用しているのだけど、
⇧ 上記サイト様のように、DBに登録されてる値によって、CSSの内容を変えたいってことを実現したいですと。
具体的には、HTMLの<table>タグの<th>や<td>のcolのwidthを、CSSで設定されているのだけど、DBに登録されてる値によって、colの数が変わってくるので(<table>のレイアウトが変化し得る)、自ずとcolのwidthも変える必要があり、widthの値を変数に定義して利用したいということですと。
で、気になるのが、
⇧ 上記サイト様によりますと、そもそも、
JSP(JavaServer Pages)+ JSTL(JSP Standard Tag Library)
について、遅い(Webブラウザで表示されるまでの処理速度のことだと思うが)らしいという話が出ていますと。
JavaのTemplate Engineのベンチマークを比較してくださっている情報があり、
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も含めたベンチマークの比較をしてくださっている方がおられて、
⇧ 上図のような結果らしく、海外の方のベンチマークの比較で「Velocity」と「JSP(JavaServer Pages)」がだいたい同等の処理速度だったので、「JSP(JavaServer Pages)」は、処理速度的には、やはり可もなく不可もなし的な立ち位置になるんですかね?
ちなみに、「Rocker」っていうTemplate Engineの公開しているベンチマークの比較によると、
⇧「Thymeleaf」がボロクソな結果になってることから、「JSP(JavaServer Pages)」も処理速度は残念なことになるということかと...。
まぁ、昨今は、画面については、ReactやVue、AngularなどのJavaScriptフレームワークが担っていることが多いと思うので、Template Engineを使わないってことの方が多いんかな?
変数の定義などはどこでするのが良いのか
とは言え、『JSP(JavaServer Pages)+ JSTL(JSP Standard Tag Library)』を利用している環境なので、ReactやVue、Angulaのように「SPA(Single Page Application)」構成にして処理速度を上げるようなことはできそうにないんかな?
⇧ stackoverflowで「JSP(JavaServer Pages)」で「SPA(Single Page Application)」を実現したいって質問があるけど、「SPA(Single Page Application)」はサーバーサイドへの通信はRESTとかで実現するっぽいから、「JSP(JavaServer Pages)」の技術仕様と嚙み合わないってことかね?
話が脱線しましたが、『JSP(JavaServer Pages)+ JSTL(JSP Standard Tag Library)』を利用している環境で、変数を定義する場所としては、
- JSP(JavaServer Pages)
- JSTL(JSP Standard Tag Library)
- JavaScript
- Java
⇧ 上記の候補がある感じになるのかなと。
昨今、メジャーな、React、VueなどのJavaScriptフレームワークやNode.jsなどの技術を利用している場合は、他にもやりようがあるのかもしれないですが...
とりあえず、
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.
⇧ stackoverflowの情報によると、パフォーマンスだけに関して言うならば、「JSP(JavaServer Pages)」で定義しようが「Java」で定義しようがほぼ変わらないということらしい。
なので、変数を定義したりする場合、
で、パフォーマンスの差はほとんど無いということだと思う、多分。
については、Microsoft Bingに聞いた感じでは、
『JSPで変数を定義するのと、JavaScriptの変数をJSPで読み込むのと、どちらが処理速度が早いかについては、一概に言えません。ただし、JSPで変数を定義する場合は、サーバーサイドで処理されるため、JavaScriptの変数をJSPで読み込む場合よりも処理速度が早い可能性があります。ただし、この場合でも、処理速度に大きな影響を与えることはありません。
参考文献123によると、JavaScriptはクライアントサイドで実行されるため、処理速度が遅くなる可能性があります。一方、JSPはサーバーサイドで実行されるため、処理速度が速くなる可能性があります。ただし、これらの言語の処理速度には多くの要因が影響するため、一概にどちらが速いとは言えません。
1: JSPとJavaScriptの違い 3: JavaScriptとJavaServer Pages(JSP)の違い 2: JSPとJavaScriptの違い』
ということらしく、結局、ハッキリしないらしい...
「JSP(JavaServer Pages)+ JSTL(JSP Standard Tag Library)」で画面の表示ページを作っていて、変数とかを利用したいんであれば、パフォーマンス的には、どの方法であっても大差ないということになるんかね?
1つだけ分かったことは、他のTemplate Engineに比べて「JSP(JavaServer Pages)」は処理速度が遅い部類になるということですかね...
毎度モヤモヤ感が半端ない...
今回はこのへんで。