あなたが提案した 2 つのオプションの間には、ごくわずかなパフォーマンスの違いがあるかもしれませんが、実行時のパフォーマンスが実際にタグ ライブラリが解決しようとしている問題だとは思いません。
私見、スクリプトレットに対する有効な議論は、ほとんどすべてコーディング、デバッグ、およびメンテナンスの問題に関するものです。JSP が長い間嘲笑されてきた主な理由の 1 つは、JSP についてではなく、人々が JSP をどのように使用してきたかということです。IDE で (他の誰かが作成した) JSP を開いて、スクリプトレットと HTML のこのスパゲッティ コードの混乱を見ることほど悪いことはありません。サーバー側のコードと HTML をあちこちに混在させたい場合は、PHP でコーディングすることもできます。:)
Taglibs を使用すると、JSP の最初の開発、デバッグの迅速化、および長期的な保守が容易になります。
私はスクリプトレットは非常に貧弱なオプションだと思うので、新しいプロジェクトを開始するときに、この小さなスニペットに似たものを web.xml ファイルに追加するのが常に好きです。
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
これにより、Web アプリ内の JSP でスクリプトレットの評価がオフになり、開発者はより良い代替手段を見つける必要があります。
Taglibs に関するもう 1 つの大きな議論は、より厳密な方法でコーディングすることになるということです。たとえば、Taglib を作成するときに、コードでスローされた例外を (何らかの方法で) 処理する必要があります。スクリプトレットに同じコードを記述した場合、IDE または JSP コンパイラから、コードを try-catch ブロックにラップするように求められることはありません。怠け者でプロ意識の低いプログラマーは、数行のエラー処理コードを書かなくて済むことを喜ぶでしょう。実際のプログラマーは、Java で例外をキャッチして適切に処理する方が、JSP が実行時に例外をスローするよりもはるかに簡単で、クリーンで、堅牢であることを経験から知っています。また、JUnit などに興味がある場合、taglibs の単体テストは非常に簡単です。定義上、おそらく JSP の単体テストは実際にはできませんが、せいぜいある種の統合テストを実行できる可能性があります。
また、誰かが言及したように、Taglibs を使用することにはアーキテクチャ上の利点があります。コードの設計と再利用の要素は、Taglibs に有利です。JSP ファイルに埋め込まれたスクリプトレット コードを簡単に共有する方法はありません。そのため、いたるところにコピーアンドペーストのコーディングが行われます。