目次
Webアプリケーションとは?

Webアプリケーションは、Webの仕組みを利用した上で動作するアプリケーションのことです。
ホームページのように、インターネットなどのネットワークに公開されていて、ブラウザを使ってWebアプリケーションを利用できます。
例えば、下記のようなものがWebアプリケーションの代表例です。
- SNS
- 通販サイト
- インターネットバンキング
- Wiki
- ブログ・電子掲示板
- Web検索
- Webメール
- 地図・乗り換え案内
その他にも、企業の経理や顧客管理、受発注、営業支援用のWebアプリケーションもあります。
Webアプリケーションでは「サーバーサイドプログラム」が中核となります。
サーバーサイドプログラムは、ブラウザのリクエストによってサーバー上で動作し、その実行結果をHTMLでレスポンスする仕組みです。
ユーザーは、ブラウザを使ってサーバーサイドプログラムの実行・結果表示を繰り返すことで、Webアプリケーションを利用できます。
サーバーサイドプログラムを実現するための技術として有名なのが、「サーブレット」や「JSP」です。
サーブレットは、Javaを利用してサーバーサイドプログラムを実現する技術になります。
サーブレットクラスという、ブラウザから実行できる特別なクラスを使ってサーバーサイドプログラムを実現可能です。
一方、JSPもJavaを利用してサーバーサイドプログラムを実現する技術になります。
JSPではサーブレットクラスではなく、JSPファイルというプログラムを使って実現可能です。
Webアプリケーションサーバーとは?

Webページの中には、HTML文書で書かれた文字列を表示するだけのページや、検索やフォーム入力などユーザーのリクエストや環境に応じて表示内容を変化させるページもあります。
前者を「静的コンテンツ」後者を「動的コンテンツ」と呼ぶのですが、Webアプリケーションサーバーはこの動的コンテンツを表示させる仕組みが組み込まれているサーバーです。
一方、静的コンテンツを表示されるのがWebサーバーとなります。
Webアプリケーションを動作させるには、Webアプリケーションサーバーが必要です。
また、特にサーブレットクラスの実行環境のことを「サーブレットコンテナ」と言います。
つまり、JavaでWebアプリケーションを開発するには、サーブレットコンテナを持ったWebアプリケーションサーバーが必要です。
代表的なアプリケーションサーバーソフトウェアには、下記のようなものがあります。
- Apache Tomcat
- Jetty
- WebSphere Application Server
- Oracle WebLogic Server
このうち、Apache Tomcat と Jetty はオープンソースで、WebSphere Application Server と Oracle WebLogic Server は商用製品となっています。
Apache Tomcat は無料で利用できることから、多くの開発者の間で使われています。
Java Webアプリケーションの開発環境

JavaでWebアプリケーションを制作するなら、開発環境を用意しましょう。
開発環境は、Pleiades(プレアデス)というソフトウェアをインストールすると、すべてが揃うのでおすすめです。
Pleiadesとは、統合開発環境 Eclipse(イクリプス)に開発に便利な機能・プラグインを加えた上で、Webアプリケーションサーバーの Apache Tomcat をセットにしたソフトウェアになります。
Eclipseについては、下記の記事で詳しく解説していますので参考までに。
【関連記事】
▶︎【Java】JDKとEclipseでJava開発環境を整える!
▶︎EclipseとJavaで作れるもの。インストール~プログラム実行まで紹介
Webアプリケーションの開発環境「Pleiades」をインストールする
ではさっそく、Pleiadesのインストール・ダウンロードを進めていきましょう。
①Pleiadesのサイトにアクセス
「Pleiades All in Oneダウンロード」のEclipseバージョンごとに並んでいるアイコンをクリックすると、ダウンロード画面に遷移します。

ここでは最新版の「Eclipse 2020」をクリックしました。
②Pleiadesをダウンロード

ダウンロードページには、何個かの開発言語に対応したパッケージがあります。
今回は、Javaの「Full Edition」をダウンロードしましょう。
筆者はMacをしようしているので、Mac 64bitのFull Editionをダウンロードしました。
使用するOSに応じて、32bitもしくは64bitから選択してダウンロードしてください。
ダウンロードアイコンをクリックすると、ダウンロードが開始します。
③Pleiadesをインストール
ダウンロードしたファイル(pleiades-2020-12-java-mac-jre_20201222.dmg)を展開して保存していきます。
Macの場合、下記の画像のようにウィンドウが表示されるので、アプリケーションフォルダに入れましょう。

④Eclipseを実行
Eclipseを実行してみます。
Macの場合、起動時に警告が出たらシステム環境設定の「セキュリティーとプライバシー」から、実行を許可してみてください。
起動すると、作成するソースコードのファイルを保存する場所を設定します。
任意のフォルダを指定してください。

「起動」ボタンを押すと、日本語化された状態のEclipseの画面が表示されるはずです。

これで、インストール・ダウンロードは完了しました。
Java Webアプリケーションの開発サンプル・例

本章では、Java Webアプリケーションを作成するまでの流れとサンプルを確認しましょう。
パースペクティブの変更をJava EEに変更する
Eclipseは、パースペクティブの設定によって画面構成や右クリックで表示されるメニューが変化します。
そのため、開発アプリケーションに合わせてパースペクティブを変えることで、効率よく開発が行えるのです。
デフォルトで設定されているJavaパースペクティブの場合、通常のJavaアプリケーション開発に向いた画面構成になります。
今回は、Webアプリケーション開発を進めていくので、Java EEパースペクティブに変更していきましょう。
Macの場合、画面上のメニューバーから「ウィンドウ」→「パースペクティブ」→「パースペクティブを開く」→「その他」を選択してください。

すると下の画像のようにウィンドウが表示されるので「Java EE」を選んで「開く」をクリックします。

ウィンドウが閉じて、Eclipseの画面構成が変化していればOKです。

動的Webプロジェクトを作成する
では動的プロジェクトを作成していきます。
画面上のメニューバーから「ファイル」→「新規」→「動的Webプロジェクト」をクリックしてください。

下の画像のようなウィンドウが表示されますので、「プロジェクト名」を設定し、「ターゲット・ランタイム」を Tomcat9(Java 11)にして、「完了」をクリック。

そうすると、新規作成をした動的Webプロジェクトがプロジェクトエクスプローラービュー(画面左側)に表示されます。
クリックすると内容を展開して確認可能です。
動的Webプロジェクトをサーバーへ追加する
次に、動的Webプロジェクトをサーバーへ追加しましょう。
サーバービュー(画面下部)でタブの「サーバー」を選択し、画面内で右クリック→「新規」→「サーバー」を選択します。

開いたウィンドウで「Apache Tomcat v9.0 サーバー」を選択して「完了」をクリック。

サーバービューに、Tomcat9のサーバが追加されていればOKです。

プロジェクトエクスプローラービュー(画面左側)に、「Servers」というプロジェクトが追加されます。
「Servers」プロジェクトを削除したり、閉じたりしてしまうと、追加したサーバーが正常に動作しなくなってしまうので注意しましょう。
サーバービューにあるサーバを選択して右クリック→「開始」を選択することで、アプリケーションサーバーを起動できます。
次に、追加したサーバーに動的Webプロジェクトを追加していきましょう。
サーバービューにあるサーバを選択して右クリック→「追加および除去」をクリック。

使用可能欄に表示されている動的Webプロジェクトから、サーバーに追加する「example」を選択し、「追加」を押して「構成済み」に移動します。
最後に、「完了」ボタンを押せばOKです。

サーバーに追加した動的Webプロジェクトを有効にするため、サーバーを起動しましょう。
簡単なWebアプリケーションをサーブレットで作成する
ここでは、簡単なWebアプリケーションをサーブレットで作成してみます。
まずは、作成した動的Webプロジェクトを右クリック→「新規」→「サーブレット」をクリック。

そうすると、下の画像のウィンドウが表示されますので、Javaパッケージに「servlet」と、クラス名に「SampleServlet」と入力して、「次へ」をクリックします。

「次へ」をクリックしていくと下の画像の表示になるので、「スーパークラスからのコンストラクター」のチェックを外し、「doGet」にチェックが入っている状態で「完了」ボタンをクリックしましょう。

そうすると、「SampleServlet.java」ファイルが開きますので、プログラムを記述していきます。
今回はサンプルとして下記のように記述しました。
■記述例
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/SampleServlet")
public class SampleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String[] luckArray = {"最高", "スッキリ", "最悪"};
int index = (int) (Math.random()*3);
String luck = luckArray[index];
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("M月dd日");
String today = sdf.format(date);
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>ポテパンスタイル占い</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>今日の運勢♪" + today + "の運勢は「" + luck + "」です</p>");
out.println("</body>");
out.println("</html>");
}
}
占い結果をランダムで表示するプログラムです。
実行すると下記のように結果がランダムで表示されます。
■実行結果

JavaのWebアプリケーションのフレームワークについて

JavaでWebアプリケーション開発におすすめのフレームワークを紹介します。
- Apache Struts
- Apache Wicket
- DropWizard
- Grails
- GWT(Google Web Toolkit)
- Hibernate
- Java EE(Java Platform, Enterprise Edition)
- JSF(JavaServer Faces)
- Play Framework
- SAStruts (Super Agile Struts)
- Spark Framework
- Spring Framework
それぞれについて簡単に見ていきましょう。

フレームワーク(framework)とは、ソフトウェア開発で頻繁に利用する機能やライブラリなどを1つにまとめて提供してくれるソフトウェアです。
システムを開発する上で重要な、ひな形用のテンプレートや機能追加の規約についても含まれています。
Apache Struts
Apache Strutsは、Apacheソフトウェア財団のApache Strutsプロジェクトにて開発されている、オープンソースのJava Webアプリケーションフレームワークです。
無償で提供されており、誰でも自由に利用・再開発・再配布を行えます。
また、フレームワークはMVCモデルが採用されています。
Apache Strutsは、アプリケーションデザインの手法の1つになっており、Struts2ではさまざまな改良もされているフレームワークとなっています。
Apache Wicket
Apache Wicketは、Apache Struts同様にApacheソフトウェア財団で提供されているオープンソースのJava Webアプリケーションフレームワークです。
Apache Wicketプロジェクトにて開発されています。
UI層に特化しており、Javaですべてを記述できるフレームワークとしても有名です。
Javaのみを利用してシンプルに開発したい方におすすめのJava Webアプリケーションフレームワークと言えます。
DropWizard
Dropwizardは、本来YammerのバックエンドWebサービスを提供するために作成されたフレームワーク。
高パフォーマンスで、RESTfulなWebサービスの開発に適しているJavaフレームワークです。
Dropwizardの特徴は、サーブレットコンテナ「jetty」が搭載されており、アプリケーションサーバーが必要ありません。
Grails
Grailsは、プログラミング言語「Groovy」を使うオープンソースのWebアプリケーションフレームワークです。
Javaプラットフォーム上で動作します。
Grailsの特徴には、次のようなものが挙げられます。
- 開発生産性が高い点
- 既存のJava技術と一貫して統合・相互運用ができる点
- 多種多様なプラグインが用意されている点
GWT(Google Web Toolkit)
GWT(Google Web Toolkit)は、大手検索エンジンGoogleが開発した、Javaソフトウェア開発フレームワークです。
Ajaxを駆使したアプリケーションを簡単に開発できるとして提供されています。
GWTを利用すると、フロントエンドをJavaで記述してコードをコンパイルし、最適化されブラウザに沿ったJavaScriptとHTMLを生成可能です。
Hibernate
Hibernateは、Java専用のオブジェクト関係マッピング (ORM) ライブラリで、オブジェクト指向のドメインモデルを関係データベースにマッピングするためのフレームワークです。
- Javaオブジェクトをベースにした言語でシンプルな設計
- HQL(Hibernate Query Language)というクエリ言語を提供
- 多様なデータベースに対応
といった特徴が挙げられます。
Java EE(Java Platform, Enterprise Edition)
Java EEは、企業向けのWebアプリケーション開発用の機能をセットにしたWebアプリケーションフレームワークです。
Java SEの中に、Webアプリケーションの開発に必要なサーバー関係のライブラリなどを追加したものとなっています。
JSF(JavaServer Faces)
JSF(JavaServer Faces)は、JavaベースのWebアプリケーションフレームワークです。
JSFはOracle社が開発・提供しており、仕様はJava EEの一部としても取り込まれています。
Apache Strutsと同様にMVCを採用しております。
しかし、表示の仕方にXML方式のHTMLを採用している点や、コンポーネントベースフレームワークであることなど、Apache Strutsとは違いがあるのが特徴です。
Play Framework
Play Frameworkは、ScalaとJavaで記述されたオープンソースのWebアプリケーションフレームワークです。
MVCを採用しており、規約やホットリローディング、エラーのブラウザ上への表示といった方針から、開発者の生産性を上げることを目的として作られました。
CPUリソースやメモリ使用量が少なく、軽量さと生産性の高さが特徴です。
SAStruts (Super Agile Struts)
SAStruts (Super Agile Struts)は、Apache Strutsを拡張して、設定ファイルの作成や更新の自動化などを可能にしたJavaのWebアプリケーションフレームワークです。
そのため、Strutsよりも開発時間を短縮できることが特徴となっています。
Spark Framework
Spark Frameworkは、Javaで記述された無料のオープンソースソフトウェアのWebアプリケーションフレームワークです。
構成がシンプルで軽量のJavaマイクロフレームワークとなっています。
膨大なアノテーション記述や設定ファイルが必要ないため、エンジニアの負担が少なくなる点が特徴です。
Spring Framework
Spring Frameworkは、Javaプラットフォーム向けのオープンソースWebアプリケーションフレームワークです。
Webアプリケーション従来の多くの問題を解決しており、有力なフレームワークとして、長い間非常に注目されてます。
AOP(Aspect Orientation Programming)とDI(Dependency Injection)と言われる概念で構築されていることや、専用のテストプログラムがあることが特徴です。
AOPによりメンテナンスがしやすく、DIにより変更がしやすくなっています。
JavaでWebアプリ制作を学習する手順・おすすめ入門本

JavaでWebアプリ制作をしたいのであれば、『スッキリわかるサーブレット&JSP入門』がおすすめです。
Java学習の定番ともいえるシリーズで、人気の高い参考書となっています。
本書では、業務用Webシステム開発で幅広く利用されている「サーブレット」と「JSP」の使い方や、HTML・HTTPといった各種仕様、セッションやスコープをといった概念などが網羅的に解説された一冊です。
本記事の作成にあたっても参考にしています。
JavaでWebアプリ制作を学びたい方は、ぜひ一度手に取ってみてください。
統合開発環境とは、エディタと開発に関連するツール(コンパイラ・デバッガなど)を統合したソフトウェアです。
IDE(Integrated Development Environment)とも呼ばれます。
Eclipseはその中でもよく使われる代表的なものです。