Javaの過去、現在、未来 日比野洋克 [email protected] Orangesoft Inc. Copyright (c) 2002 Orangesoft Inc. 自己紹介 1985年頃 某メーカー入社 – ワープロ用ユーティリティ/ FAXアダプタの開発 1990年頃 – Windows用アーカイブソフトLHfe開発 VisualBasic1.0 → VC++ 他、Drop君、ish.dllの開発 1994年 Orangesoft – Windows用メーラーWinbiff開発 80186+CP/M86+C 80186+VRTX+ASM+C Visual C++ 1999年 – 携帯電話用メールブラウザxGate開発 Java Copyright (c) 2002 Orangesoft Inc. agenda Javaの概要 Javaの始まり Javaの今 Javaの未来 Copyright (c) 2002 Orangesoft Inc. Javaのあゆみ 1991 – 1994 – Mosaic登場 1995 – – セットボックス用の開発言語として原型が誕生(Oak) HotJava発表(applet登場) Netscape Applet対応 1996 – – – – – JDK1.0リリース Servlet発表 JavaBeans発表 Visual J++ JDBC発表 Copyright (c) 2002 Orangesoft Inc. Javaのあゆみ(cont) 1997 – – – – – – – – – – – – JDK1.1リリース MS AFC発表 100% PureJava Enterprize Java Beans Personal Java/Embedded Java Java Card Java Foundation Classes JNDI HotSpot Java3D Sun Microsoftを提訴/Microsoft Sunを逆提訴 JavaMail Copyright (c) 2002 Orangesoft Inc. Javaのあゆみ(cont) 1998 – – – – – – – Netscapeソースを公開 JDBC2.0 Java Plun-in Java Cryptography Extension Servlet API2.1 AOL Netscapeを買収 Java2(JDK1.2) 1999 – – – – – – – – Jini WabaVM(Palmで動作するVM) 一太郎Ark JSP1.0 JavaPhone J2EE J2ME KVM Copyright (c) 2002 Orangesoft Inc. Javaのあゆみ(cont) 2000 – – – – – 2001 – – – – – Java API for XML Parsing Forte for Java Community Edition(Free) J2ME CLDC JDK1.3 C#登場 Docomo 503i登場(iモードJava) Sun ONE(Open Net Environment ) Jxta(P2P) JAXR(Java API for XML Registries) JAXM(Java APIs for XML Messaging) 2002 – JDK1.4 Copyright (c) 2002 Orangesoft Inc. Javaの概要 Copyright (c) 2002 Orangesoft Inc. Javaの特徴 親しみやすい文法 – – オブジェクト指向 マルチスレッド プログラムの信頼性を高める工夫 セキュリティモデル インタープリタ – – C++ライクな文法 シンプル(過ぎるところも?) Virtual Machine下での動作 多くの環境(OS,ハード)で動作 ネットワークを強く意識 Copyright (c) 2002 Orangesoft Inc. オブジェクト指向 基本型を除いて、全てがオブジェクト – – 1.add(2); とはできない。C#のほうが偉い ラッパークラス Integer one = new Interger(1); 全てのオブジェクトはObjectからの派生クラス 単一継承 – – 多重継承はサポートしない Interfaceの登場 Copyright (c) 2002 Orangesoft Inc. Interface 仕様の記述にはInterfaceを。 COM? – – JavaBean Enterprize Java Bean - DCOM interface Runnable{ public void run(); } class Asimo extends Robot implements Runnable{…} class Human extends Animal implements Runnable{…} Copyright (c) 2002 Orangesoft Inc. マルチスレッド 組み込みサポート – 同期メカニズムも組み込みサポート プラットホーム間でのスレッド実装の差異の吸収 Copyright (c) 2002 Orangesoft Inc. セキュリティモデル サンドボックスモデル(JDK1.0~) – – 電子署名付きapplet(JDK1.1~) – appletなどのネットワークからダウンロードされたクラスからの ローカルリソースへのアクセスを制限 強固な安全性を確保できるが制約も多い。 2者択一(許すか許さない) アクセス制御機能の追加(JDK1.2~) – – 細かな制御が可能 ポリシーをユーザーが設定可能 Copyright (c) 2002 Orangesoft Inc. プログラムの信頼性を高める工夫 ポインタの排除 – 参照を用いる 例外機構 – 例:ArrayIndexOutOfBoundsException 配列のindexオーバーフロー、アンダーフロー アサーションの導入(JDK1.4) ロギングAPI Copyright (c) 2002 Orangesoft Inc. アサーション 実行時のチェック class Hoge { private void test(int n) { assert n != 0 : ゼロで割らないでー!! return 10/n; } … Copyright (c) 2002 Orangesoft Inc. ガベージコレクション 使用済みのオブジェクトをシステムが回収、開放 – – VBではおなじみ プログラマからメモリ管理の手間を削減 GCは万能ではない – – 掴みっぱなしの開放されないオブジェクト システムリソースの開放は変わらずプログラマの仕 事 Socket ウインドウハンドル… Copyright (c) 2002 Orangesoft Inc. generics JDK1.5より 醜いキャストを追放 C++のテンプレート的な使い方が可能 Vector stringVector = new Vector(); stringVector.add(“hoge”); stringVector.add(new Integer(1)); String s = (String)stringVector.get(0); String s1 = (String)stringVector.get(0); // runtime error!! Vector<String> stringVector = new Vector<String>(); stringVector.add(“hoge”); stringVector.add(new Integer(1)); // compile error!! String s = stringVector.get(0); Copyright (c) 2002 Orangesoft Inc. JavaDoc コメントからドキュメントの自動生成 /** * コメントからメッセージをアペンドする * * @author Takashi SHIODA * @param mailboxName メールボックス名 * @param message メール本体 * @param flags フラグ * @return 成功したときはtrue、失敗したときはfalse * @exceptions IOException */ public boolean appendMessage(String mailboxName, byte[] message, Flag flags) throws IOException {… Copyright (c) 2002 Orangesoft Inc. etc プリプロセッサがない – サードパーティでサポート constがない!! enumがない!! – final static で代用 class Hoge { //enum {red, green, blue, orange}; final static int red = 0; final static int green = 1; final static int blue = 2; final static int orange = 2; // oops!! } Copyright (c) 2002 Orangesoft Inc. Javaの動作環境 用途と実装先に応じて複数種用意 – – – 幻想のwrite once run everywhere – J2EE Java2 Enterprise Edition J2SE Java2 Standard Edition J2ME Java2 Micro Edition サブセットでもスーパーセットでもないものもある(J2ME) それでも使い慣れたAPI、文法が使えるのは便利 Copyright (c) 2002 Orangesoft Inc. Javaが使われている環境 WEBアプリケーション – サーバサイド – クライアントサイド 携帯電話 – i-Appli 家電製品 Personal Java PCクライアント – 絶滅状態 組み込み – servlet/JSP Webサービス Visual J# :-) すでに“writeonce run everywhere“ではないけれど,着実に普及 Copyright (c) 2002 Orangesoft Inc. Java技術の変遷 Copyright (c) 2002 Orangesoft Inc. applet(1994~) Javaコードをネットワークからダウンロードしてクライアン トで実行 – – インストール不要 JVMが動作していれば、どのような環境でも動作 HotJavaブラウザで登場 – write once run anywhere. 他のブラウザも次々とサポート WEBの表現力を高めるツール – – 踊るDuke 操作性の改善 Copyright (c) 2002 Orangesoft Inc. appletの問題点 起動が遅い – Javaの起動中は全ての処理が止まってしまった。 – コードのダウンロード時間が長い 当時はダイヤルアップ接続が基本 貧弱なGUI部品群 サンドボックスモデルによる制約 WEBの表現力を高める別の簡易な手段の登場 – – – 多くの人がappletのダウンロードを禁止設定 JavaScript ActiveXコンポーネント アニメーションGIF 現時点では、一般のWEBでappletを使うことは稀 – アプライアンスサーバ製品などの制御コンソールとしては利用も Copyright (c) 2002 Orangesoft Inc. SWING 貧弱なGUIへの回答 既存のAWTに替わる高機能GUIライブラリ – AWTGUI部品をOSが提供する部品を用いていた (Heavyweight Components) – SWINGは全てをJavaで記述(Lightweight Components) MVCパターンを用いた柔軟な設計 – – 動作環境によって見栄えが変わってしまう。 ルック&フィールの切り替え UIとデータの分離 スタンドアロンアプリケーションで多く利用 Copyright (c) 2002 Orangesoft Inc. SWING(cont) JComboBox cmb1 = new JComboBox(); JComboBox cmb2 = new JComboBox(); // モデルを共有することで、コンボボックスの内容を同期 // することができる ComboBoxModel model = cmb1.getModel(); cmb2.setModel(model); Copyright (c) 2002 Orangesoft Inc. servlet(1996~) WEBの爆発的な普及 CGIに替わるサーバサイドプログラム環境 – – – 高性能(マルチスレッド) JDBCなどによるDBとの接続性 安全性 sample コードにhtmlを埋め込む – – 見通しの悪い、再利用性のないコード テンプレート、SSI(Server Side include)などの手法を利用 Copyright (c) 2002 Orangesoft Inc. JSPの登場 言ってしまえば、ASPの真似 :-) htmlにコードを埋め込む – – servletと反対のアプローチ このままでは見通しの悪さは変わらない。 EJB(Enterprize Bean)などによる、View・データ・制御 の分離 – – MVCモデルのWEBへの拡張 開発支援のため各社がフレームワークを提供 JSP servlet/bean data Copyright (c) 2002 Orangesoft Inc. フレームワーク 各社、多くの開発グループから種々のフレームワークを 提供 選択は大変かも IDEと同様DBなどの外部要件により決定されることも多 い Copyright (c) 2002 Orangesoft Inc. Webアプリケーション 動作環境 – – 各社から提供 DBなどの外部要件により決定されることも多い Tomcat iPlanet Application Server Oracle Application Server JRun Copyright (c) 2002 Orangesoft Inc. nonPCへの展開(1997~) Personal Java/Embedded Java – KVM(1999) – PalmなどPDAへの実装 iアプリ(2001) – J2MEにまとまる 文法はJavaだけど… 家電への搭載 – VMの実装は日本ベンダが主導 Copyright (c) 2002 Orangesoft Inc. Javaの未来 Copyright (c) 2002 Orangesoft Inc. Webサービスへの取り組み Webサービスを処理するためのAPI群の整備 – JAXR(Java API for XML Registries) – JAXM(Java APIs for XML Messaging) UDDI:サービスの検出と登録 SOAPメッセージの作成、通信 Webサービスを実現する技術は標準技術 – – – .NETとの相互接続性はある(はず) 目指すものは似ている? 排他的なものではない Copyright (c) 2002 Orangesoft Inc. Sun ONE(Sun Open Net Environment ) 謳い文句 – – – – Sun ONEは、オープン・スタンダードに基づいた Services on Demand の構築や導入に必要な、ビジョン、アーキテクチャ、プラット フォーム、および専門性の総称です。 Services on Demand Service Driven Network Evolution, Not Revolution ローカル・ソフトウェア・アプリケーション→Web アプリケーション →Web サービス Liberty Alliance Project Web Services – SOAP/UDDI/WSDL/ebXML Copyright (c) 2002 Orangesoft Inc. JavaはSunだけのものではない 各社がWebサービス実現へ向けてフレームワー クを提案 Copyright (c) 2002 Orangesoft Inc. Evolution, Not Revolution 革新ではなく、改革 Copyright (c) 2002 Orangesoft Inc. 実際の開発 Copyright (c) 2002 Orangesoft Inc. 環境 基本はJDK – コマンドラインでコンパイル 業務ならIDE Copyright (c) 2002 Orangesoft Inc. IDE 多種多様な開発環境 – – – 便利なリファクタリング機能 モデリング機能との融合 バージョン管理システム – – – JBuilder VisualAge Forte Java… CVS(The Concurrent Versions System) http://www.cvshome.org/ VSSを使うことのできるIDEも増えている 利用するアプリケーションサーバやDBに依存することも多い Copyright (c) 2002 Orangesoft Inc. リファクタリング ソースを健全に保つ活動の総称 – – – 変数/クラス/メソッドの名前の変更 クラス/メソッドへの抽出 メソッドの格上げ テストが大事 – テストツール JUnitなど Copyright (c) 2002 Orangesoft Inc. sample Copyright (c) 2002 Orangesoft Inc. リソース Java Developer Connection – 雑誌 – – http://jdc.sun.co.jp/ JAVA PRESS(技術評論社) JavaWorld(IDG) 多くのOpenSourceライブラリ – SourceForge.net – Jakarta Project http://sourceforge.net/ logging(Log4J) 正規表現(ORO、Regexp) MAKEツール(Ant) 正規表現(java.util.regex)、Logging(java.util.logging),JAXP(XMPパー サー)のようにJDKに含まれていくことも Copyright (c) 2002 Orangesoft Inc.
© Copyright 2024 ExpyDoc