[ Topページへ戻る ]

2003.3.23よりアクセス

下書き中。。このページは多分永遠に下書きのままでしょう。

JavaにおけるWebアプリケーション開発についてまとめています。
Webアプリケーションは、Webを活用したネットワーク上でのサービス提供・利用に使われるプログラムを指すのが一般的でしょうか。Javaでは、Java 2 EE(Enterprise Edition)と呼ばれるAPIセットの中でWebアプリケーション開発用のAPIが提供されています。



Java 2 Enterprise Edition

なかなかとらえどころが難しいJ2EEですが、よ〜するに3層クライアント/サーバシステムを開発する基盤ととらえるといいでしょうか。軽量クライアント(Thin Client)としてWebブラウザ(HTTPベースであればWebブラウザでなくてもよいか)、中間層にサーブレットコンテナやEJBコンテナ、サーバ層(バックエンド)にデータベースや他システムとの接続などがひかえるといった布陣です。J2EEでは、直接バックエンドを提供する基盤を提供するのではなく、バックエンドへの接続手段を提供しています(多分)。
(追記)J2EEでは、Javaアプリケーションが直接EIS層(ex. RDBMS)にアクセスすることや中間層のEJBにアクセスすることもありです。

クライアント層

Java Webアプリケーションにおいて、クライアント層は様々なWebブラウザが主となります。ただし、Webブラウザでは実現が困難なアプリケーション(一般にはリッチクライアント)では、JavaアプレットあるいはJava Web Startによって起動されるJavaアプリケーションによって実現されます。

Webブラウザ(HTML)

Webブラウザは画面表示をHTMLによって制御します。

Javaアプレット

Java Web Start

中間層

サーブレットコンテナ

EJBコンテナ

JSP

Webクライアントに対してプレゼンテーションを提供するには、HTMLを使用します。このHTMLの中に動的な処理を埋め込むのにJSPを使用します。

JSTL

JSP Standard Tag Libraryの略。JSPのカスタムタグ機構を用いてJCPで標準化(JSR-052)されたタグライブラリ。

JSPプログラミング

JSPプログラミングメモにいろいろ記述していきます。

サーバ層

J2EEを構成するインタフェース規格

J2EE 1.3.1 J2EE 1.4
Enterprise JavaBeans 2.0 2.1
Java Servlets 2.3 2.4
Java Server Pages 1.2 2.0
Java Messaging Service 1.0.2b 1.1
J2EE Connector 1.0 1.5
JDBC 2.0 *1
Java Naming and Directory Interface 1.2.1 *1
RMI/IIOP
Java Transaction API 1.0
JavaMail 1.2 1.3
Java API for XML Parsing 1.1 1.2
Java Secure Sockets Extension
JAX-RPC -
JAXR -
Web Services for J2EE - 1.1
SAAJ - 1.1
J2EE Deployment API - 1.1
J2EE Management API - 1.0
JMX - 1.2
JACC - 1.0

*1 J2SE 1.4のコアAPIとして搭載される

J2EEの学び方

J2EEは分散情報システムを構築するためのソフトウェア技術の体系ともいうべき代物なので、きちんと体系立って学ぶことが必要です。一部分の技術だけつまんでもJ2EEは掴めません。

J2EE技術情報サイト

書籍

入門系

「J2EEチュートリアル」ピアソン・エデュケーション刊

サンプルアプリケーションであるデューク銀行の作成、開発をステップバイステップで解説。同書のPDFファイルがSunのサイトで公開されています。

「標準J2EEテクノロジー(1)基礎から学ぶEJB」翔泳社刊
「標準J2EEテクノロジー(2)基礎から学ぶJSP/サーブレット」翔泳社刊
「EJBシステム開発ガイド」日経BP社

実践系

「実践J2EEシステムデザイン」ソフトバンク刊

サンプル

Webアプリケーション開発フレームワーク

Webアプリケーションは、Java 2 Enterprise Editionの範疇で開発することができます。しかし、HTTPの細かな知識やプログラミングノウハウを知っていないとServletプログラミングは難しいことや、アプリケーションに要求される様々な機能を一から開発する手間がかかること、似たような処理をあちこちに記述する手間がかかることなどから、あらかじめ雛型となる機能を提供するフレームワークを活用することが主流になりつつあります。オブジェクト指向技術が広まっている一つの成果です。

サーブレットを使ったフレームワーク

サーブレットを使ったWeb開発フレームワークを取り上げます。

Struts

Apache

Craig McClanahan氏が中心となって開発。

MVCのうち、主にVC(プレゼンテーション層)を対象とするフレームワーク。

Actionクラスを派生してControllerを開発
ActionFormクラスを派生して(+JSP)Viewを開発

画面遷移等はXMLで記述し、ActionServletが処理する。

JSPに独自のタグを使う(カスタムタグライブラリ)

「JAVA PRESS」Vol.23記事”Struts導入の手引き”

Turbine

Apache

サーブレットベース

HTTPパラメータ解析、データベース接続プール、ジョブスケジューラ、グローバルキャッシュ、セッションデータの永続化、Webブラウザ自動判別、メール送信機能、ファイルアップロード、JNDI、などがコンポーネントとして提供

ユーザ管理(ログイン、ロール管理)とセキュリティ機能

400以上のクラス

「ジャバワールド」2002年7月号に特集記事&Strutsとの機能比較あり

logiclet box

シーマーク

プレゼンテーション用フレームワーク

Velocity

Apache

WebMacro

FreeMaker

Cocoon

「XML PRESS」Vol.6(2002年5月)に特集記事あり

ECS

Apache

Java Server Faces

JCPにて標準策定中

EJBを使ったフレームワーク

EJBを使ったフレームワークも、クライアントとの接続部分はサーブレット/JSPを使用しているものがほとんどです。その点では、サーブレット+EJBフレームワークといった方が正確かもしれません。

「JAVA PRESS」Vol.29”間違いだらけのフレームワークの捉え方”

cFramework

イーシーワン

WebWorkBench

テンアートニ

ECOSS WAVE3

エコス

Assam anyWarp

日立ソフトウェアエンジニアリング

オブジェクトワークス

野村総研

Interstage Apcoordinator

富士通

フレームワークの選定

選定に関する情報

アプリケーション・サーバ製品

Webアプリケーション開発というと、雑誌記事や個人Webページでは上記の無料の製品群を紹介することが多い。しかし、実際のシステム開発ではアプリケーション・サーバ製品を使うことが多いと思う。こうした製品ではエントリ版ではWebコンテナ(Java Servlet/JSP)、上位版ではEJBコンテナ、CORBA、トランザクション、OLTP、クラスタリング、ロードバランシングなどの機能が入ってくる。

参考

Webアプリケーションサーバ

WebShere

IBM

Enterprise 5.0は、$25K/CPU

Sun Java System Application Server

Sun

Platform Editionは、無償(クラスタリング等の機能がない)
Enterprise Editionは、$10K/CPU

参考記事・URL

WebObject

Apple

もともとNeXTのEnterprise Object Frameworkから発展(?)。

AppleのWebサイトにあるWebObjects概要が分かりやすい

$699

WebOTX

NEC(NECソリューションズ)

VOBS Enhydra

NECソフト

hp application server

HP

標準版は無償

INTERSTAGE Application Server

富士通

Cosminexus Application Server

日立製作所

Windows版は、\1200K
Unix版は、\1500K

WebLogic

BEA

開発ライセンス無償

Advantage版は、$10K

SilverStream

Borland Enterprise Server

ボーランド

開発ライセンス無償
AppServer Editionは、$12K/CPU

Oracle Application Server

オラクル

Enterprise Editionは、$20K/CPU

JRun

マクロメディア

JBoss

http://www.jboss.org

オープンソースのEJBコンテナ

「JAVA PRESS」Vol.23”JBossによるEJBサーバ環境の構築”、”JBoss+MySQLでつくるお手軽EJBアプリ”
「JAVA PRESS」Vol.25”JBoss@エンタープライズ”

JBoss 4.0メモページ

JOnAS

http://www.objectweb.org

オープンソースのEJBコンテナ

「JAVA PRESS」Vol.10”EJBの概要とJOnASの導入&活用 オープンソースのEJBサーバ JOnASを使い倒す

「JAVA PRESS」Vol.25”はじめてのJOnAS”、”JOnASによるWebシステム構築”

Webサービス

Webサービスの定義について、「ジャバワールド」2002年9月号特集記事より

当初:「Webサービスとは、インターネット上で提供されるサービス一般のことである。」
次に:「種々のサービスの動的な接続を実現することができるアーキテクチャこそが、Webサービスである」
今日:「Webサービスとは、SOAPとWSDLを使ってアプリケーションをつなぐための技術である」

用途:EAI(Enterprise Application Integration)の実現手段としてのWebサービス

Webサービスに欠如していること
→SOAPにセキュリティ機能が欠如しているため閉じたネットワーク内での利用に限定
→トランザクション
→非同期メッセ-ジング

従来のEAIとの違いはWebサービスがオープン技術であること
→XMLとそれをベースとしたSOAP/WSDLは標準化技術、従来のEAI製品はベンダ固有技術
→プラットフォームが限定されない
→将来性:インターネット上での展開(今は未達)

Webサービスの現状
→SOAP、WSDLによる相互運用性が確立された段階:単にRPCによってシステムをつなぐことができるレベル

周辺ツール

帳票印刷

広告等からピックアップ

製品名 製造/販売元
JXReport 日立ビジネス
IOWebDOC ワイ・エス・エス
ReportStation HOS/NDSシステック

Java読書会で紹介されたPDF作成/帳票作成ツール一覧

http://www5e.biglobe.ne.jp/~ktaro/pdf_tools_list.txt

開発環境

J2EE SDK

J2EEは、J2SEを拡張するものなので、まずJ2SE SDKをインストールしている必要があります。J2SE SDKとJ2EE SDKのバージョン番号は別物なので、それぞれのバージョン番号が一致している必要はありません。J2EEの各バージョンには、動作に必要なJ2SEのバージョンが決められているので、それに従ったバージョンを入れます。例えばJ2EE 1.3.1では、J2SE SDKの1.3.1_02または1.4に対応しています。

J2EE SDKは、Sunのサイトからダウンロードします。

J2EE SDK 1.3.1

2001.9にVer.1.3リリース。

J2EE SDK 1.3.1メモページ

J2EE SDK 1.4

2003.11にリリース。

J2EE SDK 1.4メモページ

Java EE 5 (開発コード名:GlassFish)

2006.5にリリース。

Java EE 5 SDK (GlassFish)メモページ

Java EE 6

2009.12にリリース。

Java EE 6 メモページ

Eclipse

コンポーネント

コンポーネントとは

コンポーネントの意味を定義することはなかなか難しいことです。

Java World 2000.1特集記事(Part2)の中で引用されていたコンポーネントの定義を孫引用。

1."The Essential Distributed Objects Survival Guide"より

「コンポーネントは、ネットワーク、アプリケーション、言語、ツール、OSの境界を越えてプラグ&プレイ形式で利用できるスタンドアロン・オブジェクトである。例えば、分散オブジェクトの定義と、そのパッケージング方法を見れば、分散オブジェクトがコンポーネントであることが分かる。また、分散オブジェクト・システムでは、処理と配布の単位はコンポーネントとなる。よって、分散オブジェクトの基盤は、コンポーネントが自律性を持ち、自己管理を行い、協調して動作できる環境を整えなければならない。」

2."Software Reuse"より

「コンポーネントは、再利用を前提に設計、ドキュメント化、パッケージ化された高品質のタイプ、クラス、その他のUMLの生産物である。コンポーネントは結合力があり安定したインタフェースを持っている。コンポーネントはインタフェース、サブシステム、ユースケース、タイプ、アクタ、クラスのいずれかであり、それぞれには属性タイプが含まれている。コンポーネントはまた、テンプレートやテストケース仕様など(UML以外の)他の生産物も含んでいる」

3."Client/Server Survival Guide(3rd)"より

「コンポーネントは再利用可能で自己完結した、特定のアプリケーションに依存しないソフトウェアの断片である。コンポーネントはカプセル化、インタフェースのインヘリタンス、ポリモフィズムをサポートする真の意味でのオブジェクトを指す」