Java – ITのキーテクノロジ

JavaとXML
2005年4月14日
講義内容(4/14)
Javaとはどんな技術か?
 なぜJavaが重要なのか?
 XMLとはどんな技術か?
 なぜXMLが重要なのか?
 JavaとXMLの関係

Javaとはどんな技術か?


プログラミング言語としてのJava
インターネット時代の新しい言語
優れた開発効率
実行環境としてのJava
携帯電話からスパコンまで
あらゆる装置をネットワーク化
Javaは誰が作っているのか?



Sun Microsystems 社の製品
http://java.sun.com/
開発環境は無償で提供(対MS戦略)
「オープンソース」的な成果も採用
言語としてのJavaの特徴






オブジェクト指向(Object Oriented)
仮想マシン(JVM)による実行
スレッドによる並列処理
簡潔な言語仕様
豊富なクラスライブラリ
開発環境は無償、ソース公開
現在のJavaの存在
インターネット上の標準言語
(特にサーバサイド)
 異なるシステム間に共通の実行環境
 ソースコード共有の新たな運動
apache.org, eclipse.org

Javaの登場と発展の背景
Java誕生以前 (1969-1994)
 最初のJava (1995)
 実用的開発言語へ (1996)
 拡大する応用範囲 (1997~ 99)
 B2BとWebサービス(2000~)

Java誕生以前












1969
1970
1975
1977
1977
1981
1982
1984
1987
1991
1993
1994
ARPAnet(インターネットの原型)
UNIX と C言語
最初のパソコン
アップルコンピュータ誕生
BSDの登場 -- ソースコードの配布・公開
BSDに TCP/IP実装
ビル・ジョイら Sun Microsystemsを設立
ストールマン本格的に活動開始
稚内北星学園短期大学開学
Linux と FreeBSD 誕生
最初のWebブラウザ登場
Netscape Comunications社誕生
リチャード・ストールマン
「ハッカー」の中の「ハッ
カー」
 Free Software
Foundation (オープンソ
フト運動)
 GNUプロジェクト(1984)
ソフトウェア生成の共同体
 emacs, gcc(g++)
http://www.stallman.org

Javaの歴史









1995
1996
1997
1998
1999
2001
2002
2004
2005
α版、β版、HotJava
JDK1.0
JDK1.1
Java2, 3つのJava
J2SDK 1.3
i503にJava搭載
J2SDK 1.4
J2SDK 5.0 (Tiger)
Java 10周年
Javaの祖先?


C (1970) 手続き指向、アルゴリズム
の構造化(関数、ループと条件分岐)、
データ型の導入(原始型と構造体)
C++ (1980~) オブジェクト指向、クラ
ス、クラスの継承、アクセス制御、抽
象クラス、演算子の多重定義、多重継
承、例外処理・・・(次々と機能拡張)
Java登場の背景
C++の機能の肥大化の弊害
 開発者の負担軽減
 教育コストの軽減
 シンプルでかつ多様な環境に対
応できるオブジェクト指向言語

「オープン」な性格のルーツ




Sun Microsystemsの戦略の要
仕様の公開、開発環境の無償配布
背景に UNIX文化、オープンソース運
動の影響
インターネットの普及 (異機種・異OS
のネットワーク)
最初のJava (1995)




α、β、JDK 1.0
8個のパッケージ:java.applet,
java.awt, java.awt.image,
java.awt.peer, java.lang, java.io,
java.net, java.util
HotJavaブラウザとアプレット
玩具? 入門教育用には最適だった
実用的な開発言語へ (1997)






JDK 1.1
国際化対応、Unicodeの採用
セキュリティ機能の強化
JavaBeans
RMI (分散オブジェクト)
Jarアーカイブ
拡大する応用範囲 (98-99)





Java 2 の登場 (J2EE, J2SE, J2ME)
基幹システムから携帯電話まで
世の中なんでも Java ?
「ミドルウェア」の提供
単なる言語ではなく実行環境の標準
サーバサイドの標準(2000以降)





XMLとの融合
B2BとWebサービスの普及
システムの違いを越えてサービス提供
サービス提供の自動化
言語の違いも超越?
Javaの現状と将来(2004,2005)
J2SE 5.0 で大きな言語仕様拡張
(1つの曲がり角)
 新しい開発スタイル
EOD(Ease of Development)
(もはや言語を意識しなくてもいい?)
 プログラマの階層化(役割分担)

XMLの登場と発展



XML以前
XMLの多様な用途
データ交換の標準に
XML(1998~)以前





アプリケーション独自のデータ形式
Tex, PostScript
SGML (1986) 非常に柔軟な機能、完
全な対応は高価、DTDによる記述
HTML (1992~) タグの拡張と統一、
HTML 4.0(1997)
シンプルかつ拡張可能なMLの必要性
XMLの多様な用途







電子文書(官公庁、企業)
出版物(DOM)
Webページ(XHTML、XSLT)
数式(MathML)
グラフィックス(SVG, X3D)
マルチメディアの操作と連携(SMIL)
ソフトウェアのビルトツール(Ant)
データ交換の標準に
W3Cによる標準化
http://www.w3c.org/
 XML Schema
SGML(DTD)から自立,自己記述性
 B2B, P2Pアプリケーションの普及
 XMLデータの動的生成、パイプライン
処理(XSLT, Axis)

JavaとXMLに共通するもの




先行する技術の蓄積の上に出現した
「成熟した技術」
シンプルかつ高機能
「規格公開」と「標準化」へのこだわり
活用範囲の爆発的な拡大(進行中)
JavaとXMLの融合




JavaとXMLは「相性」がいい?
アプリケーション(Java)とデータ(XML)
XMLの階層構造を扱うJavaのクラス
XML処理用のパッケージの役割
アプリケーションとデータ




Javaのクラス <-> 要素の定義
Javaのインスタンス <-> 個々の要素
Javaのクラスのフィールド <-> 個々
の要素の属性の定義
Javaのインスタンスのフィールド値 <> 個々の要素の属性値
例:X3D と Java3Dの比較

X3D(VRMLの後継 2002~)
http://www.web3d.org/
<Box size="1.0 1.0 1.0" />
<Appearance>
<Material diffuseColor="0.0 0.0 1.0" />
</Appearance>
Box box = new Box(1.0f,1.0f,1.0f);
Appearance ap= new Appearance();
Material mt = new Material();
mt.setDifuseColor( new
Color3f(1.0f,1.0f,1.0f) );
XML文書の階層構造の反映




文書の階層構造->ツリー構造を表す
クラスのインスタンス
DOM (Document Object Model)
org.w3c.dom.Nodeインターフェイス
視覚化 javax.swing.JTreeクラス
XML処理用パッケージの役割





JAXPパッケージ(J2SDK 1.4よりcore)
SAX(Simple API for XML) と DOM
DTD、XML Schema:妥当性の検証
名前空間、Xpath, XSLTの処理
J2SE 5.0 より一段と機能が強化
Apache.org の Java,XML





Apache Software Foundation
(http://www.apache.org/)
Apache -- Webサーバの標準に
Java,XML関連のオープンなソフトウェ
ア開発の中心に
Java関連 (Jakartaプロジェクト他)
XML関連 (XMLプロジェクト他)
Java関連





Apache Jakarta Project
( http://jakarta.apache.org/ )
20数個のサブプロジェクト
Tomcat (自身がJavaで記述されたWeb
サーバ、JSP,Servletエンジンを提供)
Struts(Webアプリケーションのフレーム
ワークを提供)
Alexandria(Javaのソースの分散管理)
XML関連







Apache XML Project
( http://xml.apache.org/ )
10数個のサブプロジェクト
Xerces (XML Parser)
Xalan (XSLT Processer)
Cocoon(Webページの動的生成)
Xindice(XMLデータベース)
Apache SOAP, Apache Axis(Webサービスへ)
Java + XML





Apache Ant Project
( http://ant.apache.org/ )
Jakartaから独立してトッププロジェクトに
Ant (ビルドツール makeの機能を代替)
Ant自身はJavaで記述
ビルドファイルはXML