Presentation is loading. Please wait.

Presentation is loading. Please wait.

応用 Java(Java/XML) 第1回 2006 年4月 14 日. 講義内容 (4/14) なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン.

Similar presentations


Presentation on theme: "応用 Java(Java/XML) 第1回 2006 年4月 14 日. 講義内容 (4/14) なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン."— Presentation transcript:

1 応用 Java(Java/XML) 第1回 2006 年4月 14 日

2 講義内容 (4/14) なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン

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

4 Java は誰が作っているのか ? Sun Microsystems 社の製品 http://java.sun.com/ 開発環境は無償で提供 ( 対 MS 戦略 ) 「オープンソース」的な成果も採 用

5 言語としての Java の特徴 オブジェクト指向 (Object Oriented) 仮想マシン (JVM) による実行 スレッドによる並列処理 簡潔な言語仕様 豊富なクラスライブラリ 開発環境は無償、ソース公開

6 現在の Java の存在 インターネット上の標準言語 (特にサーバサイド) 異なるシステム間に共通の実行環 境 ソースコード共有の新たな運動 apache.org, eclipse.org

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

8 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)?

9 Java の祖先? C (1970) 手続き指向、アルゴリズ ムの構造化 ( 関数、ループと条件分 岐 ) 、データ型の導入 ( 原始型と構造 体 ) C++ (1980~) オブジェクト指向、 クラス、クラスの継承、アクセス 制御、抽象クラス、演算子の多重 定義、多重継承、例外処理・・・ ( 次々と機能拡張 )

10 Java 登場の背景 C++ の機能の肥大化の弊害 開発者の負担軽減 教育コストの軽減 シンプルでかつ多様な環境に対 応できるオブジェクト指向言語

11 「オープン」な性格のルー ツ Sun Microsystems の戦略の要 仕様の公開、開発環境の無償配布 背景に UNIX 文化、オープンソース 運動の影響 インターネットの普及 ( 異機種・異 OS のネットワーク )

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

13 XML(1998~) 以前 アプリケーション独自のデータ形 式 Tex, PostScript SGML (1986) 非常に柔軟な機能、 完全な対応は高価、 DTD による記 述 HTML (1992~) タグの拡張と統一、 HTML 4.0(1997) シンプルかつ拡張可能な ML の必要 性

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

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

16 Java と XML に共通するもの 先行する技術の蓄積の上に出現し た「成熟した技術」 シンプルかつ高機能 「規格公開」と「標準化」へのこ だわり 活用範囲の爆発的な拡大 ( 進行中 )

17 Java と XML の融合 Java と XML は「相性」がいい ? アプリケーション (Java) とデータ (XML) XML の階層構造を扱う Java のクラス XML 処理用のパッケージの役割

18 アプリケーションとデータ Java のクラス 要素の定義 Java のインスタンス 個々の要 素 Java のクラスのフィールド 個々の要素の属性の定義 Java のインスタンスのフィールド 値 個々の要素の属性値

19 例: X3D と Java 3 D の比較 X3D(VRML の後継 2002 ~) http://www.web3d.org/ 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) );

20 XML 文書の階層構造の反映 文書の階層構造 -> ツリー構造を表 すクラスのインスタンス DOM (Document Object Model) org.w3c.dom.Node インターフェイ ス 視覚化 javax.swing.JTree クラス

21 XML 処理用パッケージの役 割 JAXP パッケージ (J2SDK 1.4 より core) SAX(Simple API for XML) と DOM DTD 、 XML Schema: 妥当性の検証 名前空間、 XPath, XSLT の処理 J2SE 5.0 より一段と機能が強化

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

23 Java 関連 Apache Jakarta Project ( http://jakarta.apache.org/ ) 20 数個のサブプロジェクト Tomcat ( 自身が Java で記述された Web サーバ、 JSP,Servlet エンジンを提供 ) Struts(Web アプリケーションのフレー ムワークを提供 ) Alexandria(Java のソースの分散管理 )

24 XML 関連 Apache XML Project ( http://xml.apache.org/ ) 10 数個のサブプロジェクト Xerces (XML Parser) Xalan (XSLT Processer) Cocoon(Web ページの動的生成 ) Xindice(XML データベース ) Apache SOAP, Apache Axis(Web サービスへ )

25 Java + XML Apache Ant Project ( http://ant.apache.org/ ) Jakarta から独立してトッププロジェク トに Ant ( ビルドツール make の機能を代替 ) Ant 自身は Java で記述 ビルドファイルは XML

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

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

28 Java で XML というのな ら・・・ どちらも「標準」、「オープン」が特 徴 API もなるべく「中立」に システム非依存 ( 当然? Java,XML なら ) 言語非依存 ( パーサの設計、動作の側か ら見て ) ライブラリ非依存 ( 複数の実装が共存で きる仕組み ) そのために、多少回りくどくはなる が・・・

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

30 JAXP の発想 多数のパーサの実装を統合する枠組み JAXP 自体は構文解析を行うわけではな い パーサは JAXP とは独立できる パーサの実装に非依存なアプリケー ション 実現のために抽象化されたクラス群を 定義

31 J2SE 1.4 以降の API javax.xml.parsers org.xml.sax org.w3c.dom javax.xml.transform

32 javax.xml.parsers 最も抽象化されたレベル (JAXP) パーサを「取り出す」ための仕組みを 提供 SAXParser, SAXParserFactory DocumentBuilder, DocumentBuilderFactory 唯一の手段ではないが、「標準」を提 供 パーサの実装に制限は課さない

33 パーサを取得するパターン SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser parser = spf.newSAXParser(); ファクトリのデザインパターン

34 なぜファクトリパターンか? 直接インスタンスの生成はしない ( 実装クラスに依存しない記述 ) × SAXParser parser = new SAXParser(); パーサ取得の条件を Factory クラスに設 定

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

36 org.w3c.dom Document Node Element :

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

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

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


Download ppt "応用 Java(Java/XML) 第1回 2006 年4月 14 日. 講義内容 (4/14) なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン."

Similar presentations


Ads by Google