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

Slides:



Advertisements
Similar presentations
年度 J2EE II 稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴. 2 この講義の位置づけ 3年前期の「データベース論 (J2EE I) 」に続く講義。 「データベース論」の講義内容を理解 していることが前提。
Advertisements

「図書管理」のための Webアプリケーション開発 -Apache/Tomcat/MySQL/Java on Windows XP-
AdventNet SwisSQL データベース自動移行ツール.
Curlの特徴.
2006年9月27日 植田龍男 Webサービス II (第1回) 年9月27日 植田龍男.
IIS 4.0で開発をするコツ Webアプリケーション構築.
2004年度 サマースクール in 稚内 JSFによるWebアプリケーション開発
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
Visual Studio 2005による XML Web サービス入門
応用情報処理V(2002) もっとプログラミングをしたい人のために
Javaのための暗黙的に型定義される構造体
Mavenによる プロジェクト管理 近畿大学理工学部 情報学科3年  小野実.
Java I 第2回 (9/22).
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
JavaServlet&JSP入門 01K0018 中村太一.
Webアプリケーション.
Microsoft .NET 入門 Silverlight のための 福井コンピュータ株式会社 小島 富治雄
卒研:データベースチーム 第4回 DOMを使った処理
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
JavaとXML 2005年4月14日.
はじめてのASP.NET 楽しいアプリ制作の会 #1 TWorks.
Curlの仕組み.
JavaBeans とJSP データベース論 第5回.
バイナリ形式コンポーネントの 収集・解析・検索システムの開発
PHPの基礎と開発手法 Based on PHP5
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
RMI ソフトウェア特論 第6回 /
Flyingware : バイトコード変換による 安全なエージェントの実行
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
Webアプリケーションの方向性 データベース論 第13回.
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
2006年度 東京サテライト校 エンタープライズ・アプリケーション II
第1回 2007年4月13日 応用Java (Java/XML).
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
.NET Framework 3.0 概要 (旧称 : WinFX)
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Java Bytecode Modification and Applet Security
Javaプログラムの変更を支援する 影響波及解析システム
Jakarta Struts (2) ソフトウェア特論 第11回.
ゲーム開発モデルの基礎.
JAVAについて 高橋 雅哉.
COM コンポーネント・オブジェクト・モデル.
Java8について 2014/03/07.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
Nakano School of Business 経営情報ビジネス科 【 Java概論(Test1)】
<前提条件> iSeriesSite ワークフロー 実行環境 構成イメージ
第二回 Javaの開発環境 04A2029           古賀慎也.
応用情報処理V(2001) もっとプログラミングをしたい人のために
JSFによるWebアプリケーション開発 第3回
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
Javaによる Webアプリケーション入門 第8回
Javaによる Webアプリケーション入門 第4回
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
JSPの基本 J2EE I (データベース論) 第8回 /
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
Presentation transcript:

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

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

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

Copyright (c) 2002 Orangesoft Inc. Java のあゆみ 1991 – セットボックス用の開発言語として原型が誕生 (Oak) 1994 – Mosaic 登場 1995 – 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 – 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

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 などのネットワークからダウンロードされたクラス からのローカルリソースへのアクセスを制限 – 強固な安全性を確保できるが制約も多い。 電子署名付き applet(JDK1.1 ~ ) – 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 stringVector = new Vector (); stringVector.add(“hoge”); stringVector.add(new Integer(1)); // compile error!! String s = stringVector.get(0);

Copyright (c) 2002 Orangesoft Inc. JavaDoc コメントからドキュメントの自動生成 /** * コメントからメッセージをアペンドする * Takashi SHIODA mailboxName メールボックス名 message メール本体 flags フラグ 成功したときは true 、失敗したときは false IOException */ public boolean appendMessage(String mailboxName, byte[] message, Flag flags) throws IOException {…

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 で代用

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

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

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

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

Copyright (c) 2002 Orangesoft Inc. applet の問題点 起動が遅い – Java の起動中は全ての処理が止まってしまった。 多くの人が applet のダウンロードを禁止設定 – コードのダウンロード時間が長い 当時はダイヤルアップ接続が基本 貧弱な GUI 部品群 サンドボックスモデルによる制約 WEB の表現力を高める別の簡易な手段の登場 – 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 への拡張 – 開発支援のため各社がフレームワークを提供 JSPservlet/beandata

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 – J2ME にまとまる KVM(1999) – Palm など PDA への実装 i アプリ (2001) – 文法は Java だけど … 家電への搭載 – VM の実装は日本ベンダが主導 VM の実装は日本ベンダが主導

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

Copyright (c) 2002 Orangesoft Inc. Web サービスへの取り組み Web サービスを処理するための API 群の整備 – JAXR(Java API for XML Registries) UDDI :サービスの検出と登録 – JAXM(Java APIs for XML Messaging) 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) – – VSS を使うことのできる IDE も増えている 利用するアプリケーションサーバや DB に依存することも多い

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

Copyright (c) 2002 Orangesoft Inc. sample

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