応用 java(java/xml)

39
応応 Java(Java/XML) 2006 応 14 応

Upload: joie

Post on 07-Jan-2016

133 views

Category:

Documents


2 download

DESCRIPTION

応用 Java(Java/XML). 第1回 2006 年4月 14 日. 講義内容 (4/14). なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン. Java とはどんな技術か?. プログラミング言語としての Java インターネット時代の新しい言語 優れた開発効率 実行環境としての Java 携帯電話からスパコンまで あらゆる装置をネットワーク化. Java は誰が作っているのか ?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 応用 Java(Java/XML)

応用 Java(Java/XML)

第1回2006 年4月 14 日

Page 2: 応用 Java(Java/XML)

講義内容 (4/14)

なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン

Page 3: 応用 Java(Java/XML)

Java とはどんな技術か? プログラミング言語としての Java インターネット時代の新しい言語 優れた開発効率 実行環境としての Java 携帯電話からスパコンまで あらゆる装置をネットワーク化

Page 4: 応用 Java(Java/XML)

Java は誰が作っているのか ?

Sun Microsystems 社の製品    http://java.sun.com/ 開発環境は無償で提供 ( 対 MS 戦

略 ) 「オープンソース」的な成果も採

Page 5: 応用 Java(Java/XML)

言語としての Java の特徴 オブジェクト指向 (Object

Oriented) 仮想マシン (JVM) による実行 スレッドによる並列処理 簡潔な言語仕様 豊富なクラスライブラリ 開発環境は無償、ソース公開

Page 6: 応用 Java(Java/XML)

現在の Java の存在 インターネット上の標準言語 (特にサーバサイド) 異なるシステム間に共通の実行環

境 ソースコード共有の新たな運動 apache.org, eclipse.org

Page 7: 応用 Java(Java/XML)

Java の登場と発展の背景 Java 誕生以前 (1969-1994) 最初の Java (1995) 実用的開発言語へ (1996) 拡大する応用範囲 (1997~ 99) B2B と Web サービス (2000

~ )

Page 8: 応用 Java(Java/XML)

Java の歴史 1995 α 版、 β 版、 HotJava 1996 JDK1.0 1997 JDK1.1 1998 Java2, 3 つの Java 1999 J2SDK 1.3 2001 i503 に Java 搭載 2002 J2SDK 1.4 2004 J2SE 5.0 (Tiger) 2005 Java 10周年 2006 J2SE 6.0(Mustang)?

Page 9: 応用 Java(Java/XML)

Java の祖先? C (1970) 手続き指向、アルゴリズム

の構造化 ( 関数、ループと条件分岐 ) 、データ型の導入 ( 原始型と構造体 )

C++ (1980~) オブジェクト指向、クラス、クラスの継承、アクセス制御、抽象クラス、演算子の多重定義、多重継承、例外処理・・・ ( 次々と機能拡張 )

Page 10: 応用 Java(Java/XML)

Java 登場の背景 C++ の機能の肥大化の弊害 開発者の負担軽減 教育コストの軽減 シンプルでかつ多様な環境に対

応できるオブジェクト指向言語

Page 11: 応用 Java(Java/XML)

「オープン」な性格のルーツ Sun Microsystems の戦略の要 仕様の公開、開発環境の無償配布 背景に UNIX 文化、オープンソー

ス運動の影響 インターネットの普及 ( 異機種・

異 OS のネットワーク )

Page 12: 応用 Java(Java/XML)

XML の登場と発展 XML 以前 XML の多様な用途 データ交換の標準に

Page 13: 応用 Java(Java/XML)

XML(1998~) 以前 アプリケーション独自のデータ形式 Tex, PostScript SGML (1986) 非常に柔軟な機能、完

全な対応は高価、 DTD による記述 HTML (1992~) タグの拡張と統

一、 HTML 4.0(1997) シンプルかつ拡張可能な ML の必要性

Page 14: 応用 Java(Java/XML)

XML の多様な用途 電子文書 ( 官公庁、企業 ) 出版物 (DOM) Web ページ (XHTML 、 XSLT) 数式 (MathML) グラフィックス (SVG, X3D) マルチメディアの操作と連携 (SMIL) ソフトウェアのビルトツール (Ant)

Page 15: 応用 Java(Java/XML)

データ交換の標準に W3C による標準化 http://www.w3c.org/ XML Schema SGML(DTD) から自立 , 自己記述性 B2B, P2P アプリケーションの普及 XML データの動的生成、パイプラ

イン処理 (XSLT, Axis)

Page 16: 応用 Java(Java/XML)

Java と XML に共通するもの 先行する技術の蓄積の上に出現し

た「成熟した技術」 シンプルかつ高機能 「規格公開」と「標準化」へのこだわり

活用範囲の爆発的な拡大 (進行中 )

Page 17: 応用 Java(Java/XML)

Java と XML の融合 Java と XML は「相性」がいい ? アプリケーション (Java) とデータ

(XML) XML の階層構造を扱う Java のク

ラス XML 処理用のパッケージの役割

Page 18: 応用 Java(Java/XML)

アプリケーションとデータ Java のクラス <-> 要素の定義 Java のインスタンス <-> 個々の

要素 Java のクラスのフィールド <-> 個々の要素の属性の定義

Java のインスタンスのフィールド値 <-> 個々の要素の属性値

Page 19: 応用 Java(Java/XML)

例: X3D と Java3 D の比較 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) );

Page 20: 応用 Java(Java/XML)

XML 文書の階層構造の反映 文書の階層構造 -> ツリー構造を表

すクラスのインスタンス DOM (Document Object Model) org.w3c.dom.Node インターフェイ

ス 視覚化 javax.swing.JTree クラス

Page 21: 応用 Java(Java/XML)

XML 処理用パッケージの役割 JAXP パッケージ (J2SDK 1.4 より c

ore) SAX(Simple API for XML) と DOM DTD 、 XML Schema: 妥当性の検証 名前空間、 XPath, XSLT の処理 J2SE 5.0 より一段と機能が強化

Page 22: 応用 Java(Java/XML)

Apache.org の Java,XML Apache Software Foundation  

(http://www.apache.org/) Apache -- Web サーバの標準に Java,XML 関連のオープンなソフトウェア開発の中心に

Java 関連 (Jakarta プロジェクト他 )

XML 関連 (XML プロジェクト他 )

Page 23: 応用 Java(Java/XML)

Java 関連 Apache Jakarta   Project ( http://jakart

a.apache.org/ ) 20 数個のサブプロジェクト Tomcat ( 自身が Java で記述された Web

サーバ、 JSP,Servlet エンジンを提供 ) Struts(Web アプリケーションのフレー

ムワークを提供 ) Alexandria(Java のソースの分散管理 )

Page 24: 応用 Java(Java/XML)

XML 関連 Apache XML Project   ( http://xml.apache.or

g/ ) 10 数個のサブプロジェクト Xerces (XML Parser) Xalan (XSLT Processer) Cocoon(Web ページの動的生成 ) Xindice(XML データベース ) Apache SOAP, Apache Axis(Web サービスへ )

Page 25: 応用 Java(Java/XML)

Java + XML Apache Ant Project (

http://ant.apache.org/ ) Jakarta から独立してトッププロジェク

トに Ant ( ビルドツール make の機能を代替 )

Ant 自身は Java で記述 ビルドファイルは XML

Page 26: 応用 Java(Java/XML)

Java で XML を処理するには? XML はテキストファイル =>独自に文字単位で処理は可能 XML は独自の文法を持つ 要素 ( タグ ) と属性 (名前と値のペア ) < > </> = XML 文書は設計に基づく構造を持つ*自前で処理は煩雑、誰がやっても同じ =>専用のパッケージ (API) があれば・

・・

Page 27: 応用 Java(Java/XML)

XML 文書の処理 XML パーサ (parser) の概念 パーサの規格 (SAX,DOM 、他 ) Java によるパーサの実現 Sun による参照実装 Apache プロジェクト ( http://xml.apache.org/ )

Page 28: 応用 Java(Java/XML)

Java で XML というのなら・・・ どちらも「標準」、「オープン」が特徴 API もなるべく「中立」に システム非依存 (当然? Java,XML なら ) 言語非依存 ( パーサの設計、動作の側か

ら見て ) ライブラリ非依存 (複数の実装が共存で

きる仕組み ) そのために、多少回りくどくはなるが・

・・

Page 29: 応用 Java(Java/XML)

XML 関連の API

J2SE 1.4 からコアに Apache の XML 関連のプロジェクト Xerces Xarlan Ant Xindice JDOM ( http://www.jdom.org/ )

Page 30: 応用 Java(Java/XML)

JAXP の発想 多数のパーサの実装を統合する枠組み JAXP 自体は構文解析を行うわけではな

い パーサは JAXP とは独立できる パーサの実装に非依存なアプリケーショ

ン 実現のために抽象化されたクラス群を定

Page 31: 応用 Java(Java/XML)

J2SE 1.4 以降の API

javax.xml.parsers org.xml.sax org.w3c.dom javax.xml.transform

Page 32: 応用 Java(Java/XML)

javax.xml.parsers 最も抽象化されたレベル (JAXP) パーサを「取り出す」ための仕組みを提

供 SAXParser, SAXParserFactory DocumentBuilder, DocumentBuilderFactory 唯一の手段ではないが、「標準」を提供 パーサの実装に制限は課さない

Page 33: 応用 Java(Java/XML)

パーサを取得するパターン

SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser parser = spf.newSAXParser();

ファクトリのデザインパターン

Page 34: 応用 Java(Java/XML)

なぜファクトリパターンか? 直接インスタンスの生成はしない ( 実装クラスに依存しない記述 )

× SAXParser parser = new SAXParser();

パーサ取得の条件を Factory クラスに設定

Page 35: 応用 Java(Java/XML)

org.xml.sax SAX(Simple API for XML) サブパッケージ org.xml.sax.ext org.xml.sax.helpers

Page 36: 応用 Java(Java/XML)

org.w3c.dom

Document Node Element :

Page 37: 応用 Java(Java/XML)

javax.xml.transform XSLT(XML Stilesheet Transfer) の枠組み Source Result Transformer サブパッケージ javax.xml.transform.sax javax.xml.transform.dom javax.xml.transform.stream

Page 38: 応用 Java(Java/XML)

J2SE 5.0 の追加パッケージ javax.xml javax.xml.datatype javax.xml.namespace javax.xml.validation javax.xml.xpath

Page 39: 応用 Java(Java/XML)

XML パーサのいろいろ Sun の実装参照 Apache の Crimson (J2SE 1.4) Apahce の Xerces (J2SE 5.0 )