JavaとXML 2005年4月14日
講義内容(4/14) Javaとはどんな技術か? なぜJavaが重要なのか? XMLとはどんな技術か? なぜXMLが重要なのか?
Javaとはどんな技術か? プログラミング言語としてのJava インターネット時代の新しい言語 優れた開発効率 実行環境としてのJava 携帯電話からスパコンまで あらゆる装置をネットワーク化
Javaは誰が作っているのか? Sun Microsystems 社の製品 http://java.sun.com/ 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 ARPAnet(インターネットの原型) 1970 UNIX と C言語 1975 最初のパソコン 1977 アップルコンピュータ誕生 1977 BSDの登場 -- ソースコードの配布・公開 1981 BSDに TCP/IP実装 1982 ビル・ジョイら Sun Microsystemsを設立 1984 ストールマン本格的に活動開始 1987 稚内北星学園短期大学開学 1991 Linux と FreeBSD 誕生 1993 最初のWebブラウザ登場 1994 Netscape Comunications社誕生
リチャード・ストールマン 「ハッカー」の中の「ハッカー」 Free Software Foundation (オープンソフト運動) GNUプロジェクト(1984) ソフトウェア生成の共同体 emacs, gcc(g++) http://www.stallman.org
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 J2SDK 5.0 (Tiger) 2005 Java 10周年
Javaの祖先? C (1970) 手続き指向、アルゴリズムの構造化(関数、ループと条件分岐)、データ型の導入(原始型と構造体)
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) 基幹システムから携帯電話まで 「ミドルウェア」の提供 単なる言語ではなく実行環境の標準
サーバサイドの標準(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)
アプリケーションとデータ 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