Javaの過去、現在、未来
Download
Report
Transcript Javaの過去、現在、未来
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.