Presentation is loading. Please wait.

Presentation is loading. Please wait.

Copyright (c) 2002 Orangesoft Inc. Java の過去、現在、未来 日比野洋克 Orangesoft Inc.

Similar presentations


Presentation on theme: "Copyright (c) 2002 Orangesoft Inc. Java の過去、現在、未来 日比野洋克 Orangesoft Inc."— Presentation transcript:

1 Copyright (c) 2002 Orangesoft Inc. Java の過去、現在、未来 日比野洋克 nonki@orangesoft.co.jp Orangesoft Inc.

2 Copyright (c) 2002 Orangesoft Inc. 自己紹介 1985 年頃 某メーカー入社 – ワープロ用ユーティリティ / FAX アダプタの開発 80186+CP/M86+C 80186+VRTX+ASM+C 1990 年頃 – Windows 用アーカイブソフト LHfe 開発 VisualBasic1.0 → VC++ 他、 Drop 君、 ish.dll の開発 1994 年 Orangesoft – Windows 用メーラー Winbiff 開発 Visual C++ 1999 年 – 携帯電話用メールブラウザ xGate 開発 Java

3 Copyright (c) 2002 Orangesoft Inc. agenda Java の概要 Java の始まり Java の今 Java の未来

4 Copyright (c) 2002 Orangesoft Inc. Java のあゆみ 1991 – セットボックス用の開発言語として原型が誕生 (Oak) 1994 – Mosaic 登場 1995 – HotJava 発表( applet 登場) – Netscape Applet 対応 1996 – JDK1.0 リリース – Servlet 発表 – JavaBeans 発表 – Visual J++ – JDBC 発表

5 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

6 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

7 Copyright (c) 2002 Orangesoft Inc. Java のあゆみ (cont) 2000 – Java API for XML Parsing – Forte for Java Community Edition(Free) – J2ME CLDC – JDK1.3 – C# 登場 2001 – 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

8 Copyright (c) 2002 Orangesoft Inc. Java の概要

9 Copyright (c) 2002 Orangesoft Inc. Java の特徴 親しみやすい文法 – C++ ライクな文法 – シンプル(過ぎるところも?) オブジェクト指向 マルチスレッド プログラムの信頼性を高める工夫 セキュリティモデル インタープリタ – Virtual Machine 下での動作 – 多くの環境 (OS, ハード ) で動作 ネットワークを強く意識

10 Copyright (c) 2002 Orangesoft Inc. オブジェクト指向 基本型を除いて、全てがオブジェクト – 1.add(2); とはできない。 C# のほうが偉い – ラッパークラス Integer one = new Interger(1); 全てのオブジェクトは Object からの派生クラ ス 単一継承 – 多重継承はサポートしない – Interface の登場

11 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{…}

12 Copyright (c) 2002 Orangesoft Inc. マルチスレッド 組み込みサポート – 同期メカニズムも組み込みサポート プラットホーム間でのスレッド実装の差異の 吸収

13 Copyright (c) 2002 Orangesoft Inc. セキュリティモデル サンドボックスモデル( JDK1.0 ~) – applet などのネットワークからダウンロードされたクラス からのローカルリソースへのアクセスを制限 – 強固な安全性を確保できるが制約も多い。 電子署名付き applet(JDK1.1 ~ ) – 2者択一(許すか許さない) アクセス制御機能の追加 (JDK1.2 ~) – 細かな制御が可能 – ポリシーをユーザーが設定可能

14 Copyright (c) 2002 Orangesoft Inc. プログラムの信頼性を高める工夫 ポインタの排除 – 参照を用いる 例外機構 – 例: ArrayIndexOutOfBoundsException 配列の index オーバーフロー、アンダーフロー アサーションの導入 (JDK1.4) ロギング API

15 Copyright (c) 2002 Orangesoft Inc. アサーション 実行時のチェック class Hoge { private void test(int n) { assert n != 0 : ゼロで割らないでー !! return 10/n; } …

16 Copyright (c) 2002 Orangesoft Inc. ガベージコレクション 使用済みのオブジェクトをシステムが回収、 開放 – VB ではおなじみ – プログラマからメモリ管理の手間を削減 GC は万能ではない – 掴みっぱなしの開放されないオブジェクト – システムリソースの開放は変わらずプログラマの 仕事 Socket ウインドウハンドル …

17 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 stringVector = new Vector (); stringVector.add(“hoge”); stringVector.add(new Integer(1)); // compile error!! String s = stringVector.get(0);

18 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 {…

19 Copyright (c) 2002 Orangesoft Inc. etc 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!! } プリプロセッサがない – サードパーティでサポート const がない !! enum がない !! – final static で代用

20 Copyright (c) 2002 Orangesoft Inc. Java の動作環境 用途と実装先に応じて複数種用意 – J2EE Java2 Enterprise Edition – J2SE Java2 Standard Edition – J2ME Java2 Micro Edition 幻想の write once run everywhere – サブセットでもスーパーセットでもないものもある ( J2ME ) それでも使い慣れた API 、文法が使えるのは便利

21 Copyright (c) 2002 Orangesoft Inc. Java が使われている環境 WEB アプリケーション – サーバサイド servlet/JSP Web サービス – クライアントサイド 絶滅状態 組み込み – 携帯電話 i-Appli – 家電製品 Personal Java PC クライアント – Visual J# :-) すでに “writeonce run everywhere“ ではないけれど, 着実に普及

22 Copyright (c) 2002 Orangesoft Inc. Java 技術の変遷

23 Copyright (c) 2002 Orangesoft Inc. applet ( 1994 ~ ) Java コードをネットワークからダウンロードしてク ライアントで実行 – インストール不要 – JVM が動作していれば、どのような環境でも動作 write once run anywhere. HotJava ブラウザで登場 – 他のブラウザも次々とサポート WEB の表現力を高めるツール – 踊る Duke – 操作性の改善

24 Copyright (c) 2002 Orangesoft Inc. applet の問題点 起動が遅い – Java の起動中は全ての処理が止まってしまった。 多くの人が applet のダウンロードを禁止設定 – コードのダウンロード時間が長い 当時はダイヤルアップ接続が基本 貧弱な GUI 部品群 サンドボックスモデルによる制約 WEB の表現力を高める別の簡易な手段の登場 – JavaScript – ActiveX コンポーネント – アニメーション GIF 現時点では、一般の WEB で applet を使うことは稀 – アプライアンスサーバ製品などの制御コンソールとしては利用も

25 Copyright (c) 2002 Orangesoft Inc. SWING 貧弱な GUI への回答 既存の AWT に替わる高機能 GUI ライブラリ – AWTGUI 部品を OS が提供する部品を用いていた (Heavyweight Components) 動作環境によって見栄えが変わってしまう。 – SWING は全てを Java で記述( Lightweight Components) MVC パターンを用いた柔軟な設計 – ルック&フィールの切り替え – UI とデータの分離 スタンドアロンアプリケーションで多く利用

26 Copyright (c) 2002 Orangesoft Inc. SWING(cont) JComboBox cmb1 = new JComboBox(); JComboBox cmb2 = new JComboBox(); // モデルを共有することで、コンボボックスの内容を同期 // することができる ComboBoxModel model = cmb1.getModel(); cmb2.setModel(model);

27 Copyright (c) 2002 Orangesoft Inc. servlet(1996 ~ ) WEB の爆発的な普及 CGI に替わるサーバサイドプログラム環境 – 高性能(マルチスレッド) – JDBC などによる DB との接続性 – 安全性 sample コードに html を埋め込む – 見通しの悪い、再利用性のないコード – テンプレート、 SSI(Server Side include) などの手法を利用

28 Copyright (c) 2002 Orangesoft Inc. JSP の登場 言ってしまえば、 ASP の真似 :-) html にコードを埋め込む – servlet と反対のアプローチ – このままでは見通しの悪さは変わらない。 EJB(Enterprize Bean) などによる、 View ・データ・ 制御の分離 – MVC モデルの WEB への拡張 – 開発支援のため各社がフレームワークを提供 JSPservlet/beandata

29 Copyright (c) 2002 Orangesoft Inc. フレームワーク 各社、多くの開発グループから種々のフレームワー クを提供 選択は大変かも IDE と同様 DB などの外部要件により決定されること も多い

30 Copyright (c) 2002 Orangesoft Inc. Web アプリケーション 動作環境 – 各社から提供 – DB などの外部要件により決定されることも多い Tomcat iPlanet Application Server Oracle Application Server JRun

31 Copyright (c) 2002 Orangesoft Inc. nonPC への展開 (1997 ~ ) Personal Java/Embedded Java – J2ME にまとまる KVM(1999) – Palm など PDA への実装 i アプリ (2001) – 文法は Java だけど … 家電への搭載 – VM の実装は日本ベンダが主導 VM の実装は日本ベンダが主導

32 Copyright (c) 2002 Orangesoft Inc. Java の未来

33 Copyright (c) 2002 Orangesoft Inc. Web サービスへの取り組み Web サービスを処理するための API 群の整備 – JAXR(Java API for XML Registries) UDDI :サービスの検出と登録 – JAXM(Java APIs for XML Messaging) SOAP メッセージの作成、通信 Web サービスを実現する技術は標準技術 –.NET との相互接続性はある(はず) – 目指すものは似ている? – 排他的なものではない

34 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

35 Copyright (c) 2002 Orangesoft Inc. Java は Sun だけのものではない 各社が Web サービス実現へ向けてフレーム ワークを提案

36 Copyright (c) 2002 Orangesoft Inc. Evolution, Not Revolution 革新ではなく、改革

37 Copyright (c) 2002 Orangesoft Inc. 実際の開発

38 Copyright (c) 2002 Orangesoft Inc. 環境 基本は JDK – コマンドラインでコンパイル 業務なら IDE

39 Copyright (c) 2002 Orangesoft Inc. IDE 多種多様な開発環境 – JBuilder – VisualAge – Forte Java… 便利なリファクタリング機能 モデリング機能との融合 バージョン管理システム – CVS(The Concurrent Versions System) – http://www.cvshome.org/ – VSS を使うことのできる IDE も増えている 利用するアプリケーションサーバや DB に依存することも多い

40 Copyright (c) 2002 Orangesoft Inc. リファクタリング ソースを健全に保つ活動の総称 – 変数 / クラス / メソッドの名前の変更 – クラス / メソッドへの抽出 – メソッドの格上げ テストが大事 – テストツール JUnit など

41 Copyright (c) 2002 Orangesoft Inc. sample

42 Copyright (c) 2002 Orangesoft Inc. リソース Java Developer Connection – http://jdc.sun.co.jp/ 雑誌 – JAVA PRESS( 技術評論社) – JavaWorld ( IDG) 多くの OpenSource ライブラリ – SourceForge.net http://sourceforge.net/ – Jakarta Project logging(Log4J) 正規表現 (ORO 、 Regexp ) MAKE ツール (Ant) 正規表現 (java.util.regex) 、 Logging(java.util.logging),JAXP(XMP パー サー ) のように JDK に含まれていくことも


Download ppt "Copyright (c) 2002 Orangesoft Inc. Java の過去、現在、未来 日比野洋克 Orangesoft Inc."

Similar presentations


Ads by Google