1 / 39

応用 Java(Java/XML)

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

joie
Download Presentation

応用 Java(Java/XML)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 と 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) );

  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 JakartaProject ( 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/ )

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

  29. XML関連のAPI • J2SE 1.4からコアに • ApacheのXML関連のプロジェクト Xerces Xarlan Ant Xindice • JDOM ( 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 )

More Related