[ Topページへ戻る ]
2003.3.23よりアクセス
下書き中。。このページは多分永遠に下書きのままでしょう。
JavaにおけるWebアプリケーション開発についてまとめています。
Webアプリケーションは、Webを活用したネットワーク上でのサービス提供・利用に使われるプログラムを指すのが一般的でしょうか。Javaでは、Java
2 EE(Enterprise Edition)と呼ばれるAPIセットの中でWebアプリケーション開発用のAPIが提供されています。
なかなかとらえどころが難しい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を使用します。このHTMLの中に動的な処理を埋め込むのにJSPを使用します。
JSP Standard Tag Libraryの略。JSPのカスタムタグ機構を用いてJCPで標準化(JSR-052)されたタグライブラリ。
JSPプログラミングメモにいろいろ記述していきます。
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は掴めません。
サンプルアプリケーションであるデューク銀行の作成、開発をステップバイステップで解説。同書のPDFファイルがSunのサイトで公開されています。
Webアプリケーションは、Java 2 Enterprise Editionの範疇で開発することができます。しかし、HTTPの細かな知識やプログラミングノウハウを知っていないとServletプログラミングは難しいことや、アプリケーションに要求される様々な機能を一から開発する手間がかかること、似たような処理をあちこちに記述する手間がかかることなどから、あらかじめ雛型となる機能を提供するフレームワークを活用することが主流になりつつあります。オブジェクト指向技術が広まっている一つの成果です。
サーブレットを使ったWeb開発フレームワークを取り上げます。
Apache
Craig McClanahan氏が中心となって開発。
MVCのうち、主にVC(プレゼンテーション層)を対象とするフレームワーク。
Actionクラスを派生してControllerを開発
ActionFormクラスを派生して(+JSP)Viewを開発
画面遷移等はXMLで記述し、ActionServletが処理する。
JSPに独自のタグを使う(カスタムタグライブラリ)
「JAVA PRESS」Vol.23記事”Struts導入の手引き”
Apache
サーブレットベース
HTTPパラメータ解析、データベース接続プール、ジョブスケジューラ、グローバルキャッシュ、セッションデータの永続化、Webブラウザ自動判別、メール送信機能、ファイルアップロード、JNDI、などがコンポーネントとして提供
ユーザ管理(ログイン、ロール管理)とセキュリティ機能
400以上のクラス
「ジャバワールド」2002年7月号に特集記事&Strutsとの機能比較あり
シーマーク
Apache
「XML PRESS」Vol.6(2002年5月)に特集記事あり
Apache
JCPにて標準策定中
EJBを使ったフレームワークも、クライアントとの接続部分はサーブレット/JSPを使用しているものがほとんどです。その点では、サーブレット+EJBフレームワークといった方が正確かもしれません。
「JAVA PRESS」Vol.29”間違いだらけのフレームワークの捉え方”
イーシーワン
テンアートニ
エコス
日立ソフトウェアエンジニアリング
野村総研
富士通
Webアプリケーション開発というと、雑誌記事や個人Webページでは上記の無料の製品群を紹介することが多い。しかし、実際のシステム開発ではアプリケーション・サーバ製品を使うことが多いと思う。こうした製品ではエントリ版ではWebコンテナ(Java Servlet/JSP)、上位版ではEJBコンテナ、CORBA、トランザクション、OLTP、クラスタリング、ロードバランシングなどの機能が入ってくる。
参考
IBM
Enterprise 5.0は、$25K/CPU
Sun
Platform Editionは、無償(クラスタリング等の機能がない)
Enterprise Editionは、$10K/CPU
Apple
もともとNeXTのEnterprise Object Frameworkから発展(?)。
AppleのWebサイトにあるWebObjects概要が分かりやすい
$699
NEC(NECソリューションズ)
NECソフト
HP
標準版は無償
富士通
日立製作所
Windows版は、\1200K
Unix版は、\1500K
BEA
開発ライセンス無償
Advantage版は、$10K
ボーランド
開発ライセンス無償
AppServer Editionは、$12K/CPU
オラクル
Enterprise Editionは、$20K/CPU
マクロメディア
http://www.jboss.org
オープンソースのEJBコンテナ
「JAVA PRESS」Vol.23”JBossによるEJBサーバ環境の構築”、”JBoss+MySQLでつくるお手軽EJBアプリ”
「JAVA PRESS」Vol.25”JBoss@エンタープライズ”
http://www.objectweb.org
オープンソースのEJBコンテナ
「JAVA PRESS」Vol.10”EJBの概要とJOnASの導入&活用 オープンソースのEJBサーバ JOnASを使い倒す”
「JAVA PRESS」Vol.25”はじめてのJOnAS”、”JOnASによる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は、J2SEを拡張するものなので、まずJ2SE SDKをインストールしている必要があります。J2SE SDKとJ2EE SDKのバージョン番号は別物なので、それぞれのバージョン番号が一致している必要はありません。J2EEの各バージョンには、動作に必要なJ2SEのバージョンが決められているので、それに従ったバージョンを入れます。例えばJ2EE 1.3.1では、J2SE SDKの1.3.1_02または1.4に対応しています。
J2EE SDKは、Sunのサイトからダウンロードします。
2001.9にVer.1.3リリース。
2003.11にリリース。
2006.5にリリース。
Java EE 5 SDK (GlassFish)メモページ。
2009.12にリリース。
コンポーネントの意味を定義することはなかなか難しいことです。
Java World 2000.1特集記事(Part2)の中で引用されていたコンポーネントの定義を孫引用。
1."The Essential Distributed Objects Survival Guide"より
「コンポーネントは、ネットワーク、アプリケーション、言語、ツール、OSの境界を越えてプラグ&プレイ形式で利用できるスタンドアロン・オブジェクトである。例えば、分散オブジェクトの定義と、そのパッケージング方法を見れば、分散オブジェクトがコンポーネントであることが分かる。また、分散オブジェクト・システムでは、処理と配布の単位はコンポーネントとなる。よって、分散オブジェクトの基盤は、コンポーネントが自律性を持ち、自己管理を行い、協調して動作できる環境を整えなければならない。」
2."Software Reuse"より
「コンポーネントは、再利用を前提に設計、ドキュメント化、パッケージ化された高品質のタイプ、クラス、その他のUMLの生産物である。コンポーネントは結合力があり安定したインタフェースを持っている。コンポーネントはインタフェース、サブシステム、ユースケース、タイプ、アクタ、クラスのいずれかであり、それぞれには属性タイプが含まれている。コンポーネントはまた、テンプレートやテストケース仕様など(UML以外の)他の生産物も含んでいる」
3."Client/Server Survival Guide(3rd)"より
「コンポーネントは再利用可能で自己完結した、特定のアプリケーションに依存しないソフトウェアの断片である。コンポーネントはカプセル化、インタフェースのインヘリタンス、ポリモフィズムをサポートする真の意味でのオブジェクトを指す」