アプリケーションサーバとJava EE

アプリケーションサーバ

  • 英語 : Application Server

ビジネスロジックなどを実装したアプリケーションソフトウェアを実行することを専門とするコンピュータネットワーク上のサーバコンピュータ、もしくはそのようなコンピュータ上でのアプリケーションの実行を管理補助するミドルウェアのこと。
ウェブアプリケーションサーバは、ウェブクライアントからのHTTPのレスポンス要求を処理するWebサーバとバックエンドのデータベース中核層への橋渡しを担い、データの加工などの処理を行う。
プログラムの実行環境やデータベースへの接続機能、複数の処理を連結するトランザクション管理機能などを持ち、業務の処理の流れを制御するビジネスロジックを実装しているのがアプリケーションサーバである。
旧来の、クライアントやバックエンド側にビジネスロジックを実装する方式(2階層システム)に比べ、システムの変更や更新、増強などが容易で、柔軟性が高い。

f:id:ponsuke_tarou:20190604224300p:plain
親水公園の猫

アプリケーションサーバのいろいろ

Java EE アプリケーションサーバは、「Java EEに準拠したアプリケーションサーバ」のこと

たとえば・・・
WebLogic*1JBoss、WebSphere、GlassfishCosminexusGeronimoiPlanetOracle 9iAS

.NETフレームワークに準じたアプリケーションサーバ

たとえば・・・
Internet Information Services (IIS) 、Base4アプリケーションサーバZope

その他のアプリケーションサーバ

Java EE以外の言語セット・フレームワークを使用し、ビジネスロジックを実装し得るアプリケーションサーバ

f:id:ponsuke_tarou:20190604224332p:plain
花壇の豆

Java EE は、Javaシステム開発するための標準仕様です。

  • 正式 : Java Platform, Enterprise Edition

Java拡張機能セット
コミュニティ主導のエンタープライズ・ソフトウェアの標準です。Java EEJava Community Processを使って開発されており、業界の専門家、営利団体オープンソース団体、Javaユーザー・グループ、さらに数え切れないほど多くの個人が貢献しています。
Java EE の概要

JavaでWebアプリケーションを中心とした業務アプリケーションを構築するために選定された数々の仕様と、その実装
Java EE 6 環境の構築 (1/4):CodeZine(コードジン)

サーバー中心の複数層アプリケーションの開発、デプロイおよび管理にかかるコストと複雑さを大幅に削減する組織的なテクノロジのセットを含み、広く使用されているプラットフォーム(標準仕様)です。Java EEJava SEプラットフォーム上にビルドされ、移植可能、堅牢、スケーラブル、信頼性、およびセキュリティに優れたサーバー側アプリケーションを開発および実行するための一連の API を提供します。
Java EEおよびJava Webの学習 - NetBeansチュートリアル、ガイドおよび記事

規定されている機能

Java Servlet
  • サーバ上でウェブページなどを動的に生成したりデータ処理を行うために、Javaで作成されたプログラム及びその仕様
  • (Java EE 7) JSR-340
Java Server Pages ( JSP)
  • HTML内にJavaのコードを埋め込んでおき、Webサーバで動的にWebページを生成してクライアントに返す技術
  • Javaのコードは、<%と%>記号で囲まれた部分に書かれる(スクリプト言語チックにJavaを書く)
  • JSR-53

Java Servletとの違いは、記述方法にあり!
例えば、画像を表示する・・・

  • Java Servlet : Javaプログラムと同様に作成
    • out.print("<img src=\"/img/" + img.getName() + "\">");
  • JSP : HTMLにタグをつけて入れ込む
    • < img src="/img/<%= img . getName ( ) %>">

他にもいろいろ比較して特徴を知ろう!
出展 : JSPの特徴を理解する:Tomcatを使う「JSPプログラミング」(1) - @IT

比較対象 JavaScript JavaScript Java Applet*2 CGI*3 CGI CGI
同じところ HTMLにタグを入れて使う - - 実行するところ - -
違うところ - 実行するところ 実行するところ - 使えるプログラム言語 起動の仕方
JSPの場合 <% %> サーバ側 サーバ側 サーバ側 Java 複数アクセスがあっても1度起動していればその内部で実行
比較対象の場合 <script> </script> クライアント側 クライアント側(アプレット自体はサーバにおいてあるが使う時にクライアントに持って行って実行する) サーバ側 特定のプログラミング言語に依存しない(JavaでもCでもどんとこい) アクセスがあるたびに新しいプロセス起動
Java Server Faces ( JSF)

JSFコンポーネントベースのフレームワークであり、Strutsなどのアクションベースとは異なります。
https://www.dcom-web.co.jp/wp-content/uploads/2015/06/img_dcom_jsf1_19.jpg
【JavaEE】今からでも間にあうJSF入門

Java Naming and Directory Interface ( JNDI)
  • ネーミング・サービス / ディレクトリー・サービス を扱うためのインターフェイスを規定した仕様
  • ディレクトリ・サービスが提供するデータやオブジェクトを名前で発見し、参照するのためのAPI
  • 他システムに対するインターフェースであり、具体的な実装からは独立している
  • サービス・プロバイダ・インターフェース(SPI)が規定されており、フレームワークディレクトリ・サービスの実装をプラグインすることができる
  • ディレクトリ・サービスの実装はサーバでもフラットファイルでもデータベースでもよく、サービスの提供側が任意に選択できる
  • JSR-907
Java Transaction API ( JTA)
JPAは、リレーショナルデータベースを使う時用のJavaフレームワークの仕様の定義です。

ponsuke-tarou.hatenablog.com

ほかにもいろいろあります。

f:id:ponsuke_tarou:20190604230702p:plain
花壇のクレソン

*1:ponsuke-tarou.hatenablog.com

*2:クライアント側のWebブラウザ上で動作するJavaのプログラムです。 ブラウザは読み込んだHTML文書内に、アプレット読込を指示する記述があると、サーバに対してアプレットのプログラムを送るよう要求します。 要求を受信したサーバは、クライアントにプログラムを返します。 クライアントは、アプレットプログラムを受け取り、Webブラウザ上で実行します。

*3:e-words.jp

*4:e-words.jp