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

Slides:



Advertisements
Similar presentations
XML ゼミ 独習 XML ~ 第 6 章 XHTML~ 6.1 XHTML の概要 6.2 XHTML の構造 谷津 哲平.
Advertisements

年度 J2EE II 稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴. 2 この講義の位置づけ 3年前期の「データベース論 (J2EE I) 」に続く講義。 「データベース論」の講義内容を理解 していることが前提。
Web サービス II ( 第 13 回 )‏ 2008 年 1 月 9 日 植田龍男. 本日の目的 Web サービスの歴史と将来の展望 (1) WSDL 2.0 の登場 ‏ Jersey プロジェクト Ver 0.5 による開発.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP.
メタモデル記述を用いた成果物間の依存関係追跡手法
2006年9月27日 植田龍男 Webサービス II (第1回) 年9月27日 植田龍男.
ソースプログラム・アーカイブ・サイト -関数依存グラフと検索への応用-
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
第9回 2007年6月22日 応用Java (Java/XML).
第3回参考文献発表 PHP言語 岩永逸平.
2006年11月15日 植田龍男 Webサービス II (第8回) 年11月15日 植田龍男.
オペレーティングシステムⅡ 第11回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト.
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
WebサービスII (第10回) 2007年11月28日 植田龍男.
データマイニングのための柔軟なデータ取得、操作を支援するAPIの設計
早稲田大学大学院理工学研究科 情報科学専攻修士2年 後藤滋樹研究室 坂本義裕
第1回 HTML5入門.
情報爆発A01支援班 マイサーチエンジン開発環境支援グループ 中村聡史, 大島裕明, 田中克己, 喜連川優
Java I 第2回 (9/22).
卒研:データベースチーム 第4回 DOMを使った処理
JavaとXML 2005年4月14日.
WebサービスII (第8回) 2007年11月14日 植田龍男.
バイナリ形式コンポーネントの 収集・解析・検索システムの開発
2005年10月6日 植田龍男 Webサービス II (第2回) 年10月6日 植田龍男.
SGMLについて 2年8組  原口 文晃.
XSL-FO + MathML MathML表示、PDF生成、SVG生成
第12回 2007年7月13日 応用Java (Java/XML).
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
第10回 2007年6月29日 応用Java (Java/XML).
第11回 2007年7月6日 応用Java (Java/XML).
第8回 2007年6月15日 応用Java (Java/XML).
暗黙的に型付けされる構造体の Java言語への導入
第3回 2007年4月27日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
WebサービスII (第7回) 2007年11月7日 植田龍男.
第7回 2007年6月8日 応用Java (Java/XML).
第6回 2007年6月1日 応用Java (Java/XML).
第1回 2007年4月13日 応用Java (Java/XML).
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
オブジェクト指向プログラムにおける エイリアス解析について
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
Javaによる Webアプリケーション入門 第2回
第2回 2007年4月20日 応用Java (Java/XML).
XMLゼミ 1.3 XML文書の表示 1.4 XMLの役割 1.5 XMLとプログラミング M2 正木 裕一.
JXTAの概要 P2P特論 (ソフトウェア特論) 第3回 /
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
HTML の成り立ち 惑星物理学研究室 4年 安達 俊貴.
Fortranについて 高エネルギー加速器研究機構 平山 英夫.
第13回 2007年7月20日 応用Java (Java/XML).
データベース設計 第7回 実用データベースの運用例 クライアント=サーバシステム(1)
第二回 Javaの開発環境 04A2029           古賀慎也.
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
ソフトウェア工学 知能情報学部 新田直也.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
JSPの基本 データベース論 第2回.
JSPの基本 J2EE I (データベース論) 第8回 /
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
統合開発環境のための プログラミング言語拡張 フレームワーク
第2回 Webサーバ.
第2回 開発環境とゲーム 05A1030 佐々木 和也.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
P2P & JXTA Memo For Beginners
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
プログラム理解のための 付加注釈 DocumentTag の提案
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.
Presentation transcript:

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

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

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

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

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

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

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

Java の歴史 1995 α 版、 β 版、 HotJava 1996 JDK JDK Java2, 3 つの Java 1999 J2SDK i503 に Java 搭載 2002 J2SDK J2SE 5.0 (Tiger) 2005 Java 10周年 2006 J2SE 6.0(Mustang)?

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

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

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

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 による標準化 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 と Java 3 D の比較 X3D(VRML の後継 2002 ~) 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 ( Apache -- Web サーバの標準に Java,XML 関連のオープンなソフト ウェア開発の中心に Java 関連 (Jakarta プロジェクト他 ) XML 関連 (XML プロジェクト他 )

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

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

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

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

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

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

XML 関連の API J2SE 1.4 からコアに Apache の XML 関連のプロジェクト Xerces Xarlan Ant Xindice JDOM ( )

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

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

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

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

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

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

org.w3c.dom Document Node Element :

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

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

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