JavaScript、JSP、J2EEの違い
Java Web を学び始めたばかりのころは、JavaScript、JSP、Servlet、J2EE という名前を混同しがちです。確かにこれらは同じプロジェクト内でよく一緒に登場しますが、属する階層も実行される場所もまったく異なります。
JavaScript
JavaScript はクライアント側のブラウザで実行されるスクリプト言語で、主にページのインタラクション、フォーム検証、非同期リクエスト、HTML や CSS の動的な変更などを担当します。名前は Java に似ていますが、Java ではなく、Java プラットフォームにも属していません。
JavaScript の構文は比較的柔軟で、HTML、CSS、XML、JSON と組み合わせることで、多くの動的なページ効果を実現できます。以前よく言われていた Ajax は、本質的にはブラウザ側が JavaScript を使ってサーバーへ非同期リクエストを送り、サーバーから返されたデータでページを更新する仕組みです。
注意すべき点は、JavaScript は主にブラウザ側で実行されるものであり、サーバー側プログラムを直接置き換えることはできないということです。リクエストの送信や画面表示の処理はできますが、実際のデータアクセス、権限制御、業務ロジックは通常、依然としてバックエンドで行う必要があります。
Servlet
Servlet はサーバー側で実行される Java プログラムです。ブラウザから送られてきた HTTP リクエストを受け取り、バックエンドのロジックを実行し、その後 HTTP レスポンスを生成してクライアントへ返します。
実装の観点では、Servlet は Java クラスであり、.class ファイルにコンパイルして、Tomcat など Servlet 仕様に対応した Web コンテナ上で実行する必要があります。動的サイトにおけるバックエンドのロジック層は、多くの場合 Servlet または Servlet ベースのフレームワークによって実装されています。
簡単に言うと、次のようになります。
- ブラウザ内の JavaScript はクライアント側のインタラクションを担当する。
- サーバー側の Servlet はリクエストの受信、業務処理、結果の返却を担当する。
JSP
JSP はサーバー側で実行される動的 Web ページ技術です。HTML ページの中に Java 関連の動的コンテンツを埋め込めるほか、タグライブラリと組み合わせてページを生成することもできます。
JSP は通常、開発者が直接記述するページテンプレートですが、サーバー内でそのまま実行されるわけではありません。JSP はまず Servlet に変換され、コンパイルされます。実際にリクエストを処理し、レスポンスを出力するのは、やはり Servlet です。
そのため、次のように理解できます。
- JSP はどちらかというと「ページ表示層」に近く、動的 HTML を書くのに適している。
- Servlet はどちらかというと「制御と業務処理」に近く、リクエスト処理ロジックを書くのに適している。
- JSP は最終的にサーバーによって Servlet に変換されて実行される。
比較的新しい Java Web プロジェクトでは、JSP の中に Java コードを直接書くことは通常少なくし、業務ロジックは Servlet、Service、またはフレームワークのコントローラーに置き、JSP はデータの表示だけを担当させます。
J2EE
J2EE は Java のエンタープライズ向けプラットフォームの一つです。従来の言い方では、Java プラットフォームは次のように分けられます。
- J2ME:モバイル端末や組み込み機器向け。
- J2SE:Java Standard Edition。基本言語機能と中核クラスライブラリを提供する。
- J2EE:Java Enterprise Edition。エンタープライズ向け Web アプリケーションや分散アプリケーションを対象とする。
J2EE には、JDBC、JNDI、EJB、RMI、Java IDL/CORBA、JSP、Java Servlet、XML、JMS、JTA、JavaMail、JAF など、エンタープライズアプリケーション開発のための一連の仕様や技術が含まれます。
つまり、JSP と Servlet は J2EE 技術体系の一部にすぎません。J2EE 自体はより大きなエンタープライズアプリケーションプラットフォームであり、Web アプリケーション、データベースアクセス、トランザクション、メッセージング、メール、リモート呼び出し、コンポーネントモデルなど、企業向け開発に必要な一連の機能を扱います。
まとめ
これらの違いは、実行場所と階層によって区別できます。
| 名称 | 実行場所 | 主な役割 |
| --- | --- | --- |
| JavaScript | クライアント側ブラウザ | ページ操作、非同期リクエスト、ページの動的変更 |
| JSP | サーバー側 | 動的ページテンプレートを記述し、最終的に Servlet に変換される |
| Servlet | サーバー側 | HTTP リクエストを処理し、業務ロジックを実行し、レスポンスを返す |
| J2EE | プラットフォーム仕様群 | エンタープライズ Java アプリケーション開発に必要な一連の技術仕様を提供する |
一言でまとめると、JavaScript はブラウザ側のスクリプト、JSP はサーバー側のページ技術、Servlet はサーバー側の Java リクエスト処理プログラム、J2EE は JSP や Servlet などの技術を含むエンタープライズ向け Java プラットフォームです。
