検索

キーワード


【Java】Webアプリケーションとは?

  • 公開日:2020-10-29 17:57:57
  • 最終更新日:2020-11-13 21:27:39
【Java】Webアプリケーションとは?

こんにちは。エンジニアの新田です!
ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。
今回は、主にJavaサーブレット/JSPについて触れていきます。
Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!

関連記事:【Java】サーブレット(Java Servlet) 【Java】WebアプリケーションにおけるMVCモデル


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


「Webアプリケーション」とは、どのようなものでしょうか?

その名の通り、「Webの仕組みと機能を使ったインターネット経由で提供されるアプリケーション」のことです。

Webサーバに配置されたアプリケーションを、Webブラウザ(Webクライアント)などから操作して利用します。

例えば、以下に挙げたものもWebアプリケーションです。

  • ポータル/検索サイト:「Yahoo!」や「Google」など
  • ショッピングサイト:「Amazon」や「楽天」など
  • 掲示板:「2ちゃんねる」など
  • ブログ、SNS、 etc…

などなど、皆さんも使ったことがあると思います。

身近なものを含め様々な用途で使用されています。

皆さんが見ているこのサイトもWebアプリケーションの一つです。



Webアプリケーションの処理の流れ

基本的な処理の流れは以下のようになります。

  1. ブラウザでの入力等の操作(リクエスト)がWeb経由でサーバに送信される
  2. リクエストを受けたWebサーバで処理が実行され、結果としてHTMLが生成される
  3. Webサーバから呼び出し元(Webクライアント)に処理結果(HTML)を送信する
  4. 処理結果(HTML)を受け取ったブラウザは、HTMLを表示する

(このような手順を繰り返していく)


一般的なWebサイトへログインする流れを例にすると以下の図のようになります。

Webアプリケーションの処理の流れ

①.Webブラウザを立ち上げ、URLを入力してWebサーバ上に配置されたアプリケーションへアクセスする

②.Webブラウザに、ログインページが表示される

③.Webブラウザ上に表示されたログインフォームにIDとパスワードを入力し、「ログイン」ボタンをクリックする

④.WebサーバーはシステムがIDとパスワードを受け取り、データベースにIDとパスワードを照会する

⑤.データベースは照会結果をWebサーバに返す

⑥.Webサーバーは照会結果(「正常」、「異常」)をWebブラウザに返す

Webブラウザが結果を受け取り、HTMLをブラウザで表示する

Webクライアント(ブラウザ)とWebサーバ間でのデータの送受信にはHTTPというプロトコルが使われています。
プロトコルとは、簡単にいうとコンピュータ同士がやりとりする際のルールと手順のようなもので、共通の通信プロトコル(ルール)を使うことで、データのやり取りができるようになっています。



なぜ、Webアプリケーションを使うのか?

Webアプリケーションには以下ようなメリットがあります。

更新が容易である

  • Webサーバ上のファイルを更新するだけで、クライアントはHTTPアクセスするだけで最新のウェブアプリケーションを利用できる。

クライアント側にアプリケーションのインストールが不要

  • Webサーバで処理を行って出力結果のファイルをクライアント側(ウェブブラウザ)で表示するだけなのでクライアントはウェブアプリケーションをインストールする必要がない。

ウェブブラウザがあれば環境に依存しない

  • 各クライアント側の環境が違っていてもウェブブラウザがあればクロスプラットフォームに対応できる。


Webアプリケーションを実現する方法(開発言語など)

Webクライアントからのリクエストに対して、適切な処理を実行し結果を生成する部分には、様々な仕組み(開発言語)が用いられます。それぞれに特徴があり、用途に合わせて最適なものを選択して利用します。

代表的なものをいくつか紹介します。


CGI

  • 現在稼動されているほとんどのWebサーバにCGIという仕組みが実装されている。
  • 開発言語としてよく使われるものには、Perl(パール)、Python(パイソン)、Ruby(ルビー)などがある。
  • リクエストの度に実行環境が起動するため処理速度が遅いとされ、大量のリクエストを処理する必要があるアプリケーションには向かない。(※最近では、プロセスの起動後一定時間はプロセスを終了せずに起動し続け、処理速度の向上を図るFastCGIという方式が登場している)


PHP

  • CGIの仕組みを使って動作させることができるが、CGIと同様の特徴を持つことになる
  • Webサーバがモジュール機構を提供していれば、モジュール方式としてWebサーバの一部として動作させることができる。(現在ではほとんどのWebサーバは、モジュール機構を提供している)
  • モジュール方式で動作する場合は、Webサーバーの一部として動作することになり、その中で複数のリクエストを処理することができる。(CGIより処理速度が速いとされ、大量のリクエストを処理することが可能となる)
  • オブジェクト指向のプログラミング言語で、文字列操作やデータベースとの連携も容易。


ASP.NET(Active Server Pages NET)

  • Microsoftが開発・提供しているWebアプリケーションフレームワーク。
  • MicrosoftのIIS(InternetInformationServices:Webサーバ)をWebサーバとしてプログラムが実行される。
  • 動作環境はWindows(Windows2000以降)に限られる。
  • 複数のリクエストをひとつの実行環境で処理でき、大規模なWebアプリケーションにも対応できる。
  • 使用できる言語はVisualBasic(ビジュアル・ベーシック)、C#(シー・シャープ)、などの.NETに対応したもの。
  • VisualBasicやC#はオブジェクト指向のプログラミング言語。
  • 開発環境は、MicrosoftVisualStudioに限られ、.NETフレームワークに向けてコンパイルされるため、高速に動作する。


サーブレット/JSP(Java Server Pages)

  • オブジェクト指向の言語であるJavaで記述される。
  • サーブレット/JSPは、Webコンテナ、サーブレット・コンテナと呼ばれるもので実行される。
  • Webコンテナ、サーブレットコンテナには、さまざまなプラットフォームに対応したさまざまな製品があるが、オープンソースのアプリケーションサーバであるTomcatが高いシェアを誇っている。
  • 複数のリクエストをひとつの実行環境で処理でき、大規模なWebアプリケーションにも対応できる。
  • サーブレット・コンテナに向けてコンパイルされたものが実行されるため、高速に動作する。




次回以降の記事では、JavaのServlet/JSPを使った実現方法について紹介していきたいと思います。


関連記事:【Java】サーブレット(Java Servlet) 【Java】WebアプリケーションにおけるMVCモデル




【著者】

新田

JavaメインのWebアプリケーション開発に多く携わっています。
Javaの基本的な部分の紹介や、これまで経験したシステム開発手法、新しい技術についても紹介していこうと思います。

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様