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
© Copyright 2024 ExpyDoc