講義日程予定 第 1 回 「ガイダンス」 第 2 回 「ユビキタスシティ検討ワーキング中間とりまとめ」 第 3 回 「次世代ネットワーク技術:情報家電」 第 4 回 「次世代ネットワーク技術:ホームネットワーク」 第 5 回 「次世代ネットワーク技術:インターネット技術」 第 6 回 「次世代ネットワーク技術:次世代インターネット技.

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

1 プリミティブ Web サービスの 入出力データに関する一考察 2005 年 3 月 21 日 松江工業高等専門学校 情報工学科 奈良先端科学技術大学院大学 情報科学研究科 越田高志 電子情報通信学会 2005年総合 大会.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP.
モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
Remote Method Invocation
アルゴリズムとプログラミング (Algorithms and Programming)
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
独習Java ・ 12.1  インターネットアドレス ・ 12.2  サーバーソケットとソケット  12月 19日    小笠原 一恵.
福盛 秀雄, 浜中 征志郎, 菅原 健一, 吉川 潤, 中山 周平 早稲田大学 村岡研究室
HORB Messaging Service
WebサービスII (第8回) 2007年11月14日 植田龍男.
講義日程予定 第 1 回 「ガイダンス」 第 2 回 「ユビキタスシティ検討ワーキング中間とりまとめ」
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
講義日程予定 第 1 回 「ガイダンス」 第 2 回 「ユビキタスシティ検討ワーキング中間とりまとめ」
RMI ソフトウェア特論 第6回 /
Flyingware : バイトコード変換による 安全なエージェントの実行
遠隔ポイントカット - 分散アスペクト指向プログラミング のための言語機構
Webサービスを使った クライアント・プログラム
30分で解るJiniTM テクノロジー ~えっ、ドラえもん?~
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
プログラミング言語入門 手続き型言語としてのJava
RPC:Remote Procedure Call Protocol Specification
Java Distributed Objects 1
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
WebサービスII (第7回) 2007年11月7日 植田龍男.
Java Bytecode Modification and Applet Security
インターネットにおける真に プライベートなネットワークの構築
Javaプログラムの変更を支援する 影響波及解析システム
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
Java Distributed Objects 1
既存Javaプログラム向け 分散化支援システムの開発
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向プログラミングと開発環境
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
仮想環境を用いた 侵入検知システムの安全な構成法
アルゴリズムとプログラミング (Algorithms and Programming)
マイグレーションを支援する分散集合オブジェクト
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
分散 Java プログラムのための アスペクト指向言語
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
「マイグレーションを支援する分散集合オブジェクト」
期末試験用課題 1 家庭内でまだネットワークにつながっていない家電に適切なホームネットワークを適用した情報家電を各自考案し800字程度で以下について述べよ. それを用いた機能,利用例について以下を明確にして述べよ なぜそのような情報家電を考案したのか ネットワーク接続手法をどう選択したのか 供給した企業の販売後の戦略について考察せよ.
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
プログラム分散化のための アスペクト指向言語
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
異種セグメント端末による 分散型仮想LAN構築機構の設計と実装
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

講義日程予定 第 1 回 「ガイダンス」 第 2 回 「ユビキタスシティ検討ワーキング中間とりまとめ」 第 3 回 「次世代ネットワーク技術:情報家電」 第 4 回 「次世代ネットワーク技術:ホームネットワーク」 第 5 回 「次世代ネットワーク技術:インターネット技術」 第 6 回 「次世代ネットワーク技術:次世代インターネット技 術」 第 7 回 「次世代ネットワーク技術: アドホックネットワー ク」 第 8 回 「次世代ネットワーク技術: P2P ネットワーク」 第 9 回 「センシング技術:センサネットワーク」 第 10 回 「富士通のユビキタス事業紹介」 第 11 回 「センシング技術: RFID と測位技術」 第 12 回 「サービスアーキテクチャ:基盤ソフトウェア技術」 第 13 回 「内田洋行のユビキタス事業紹介」 第 14 回 「サービスアーキテクチャ:プライバシとセキュリ ティ」 第 15 回 「期末定期試験」

期末試験用課題 1 家庭内でまだネットワークにつながって いない家電に適切なホームネットワーク を適用した情報家電を各自考案し 800 字程 度で以下について述べよ. – それを用いた機能,利用例について以下を明 確にして述べよ なぜそのような情報家電を考案したのか ネットワーク接続手法をどう選択したのか – 供給した企業の販売後の戦略について考察せ よ 普及後に展開できるサービスは何か 他のネットワーク機器との連携は 保守,アップデートは

期末試験用課題 2 次世代ネットワーク技術として, IPv6 , P2P ネットワーク,アドホックネットワー ク,センサネットワークの中から一つ選択 して 800 字程度で, – その技術について説明し, – 応用例を述べよ. – またその技術を企業がビジネス化する可能性 について述べよ.

期末試験用課題 3 測位システムの利用には,測位精度,設備 の容易さ ( イニシャルとランニングコスト, 設定の手間など ) ,プライバシー確保の容易 さ,といった導入基準がある. Cambridge 大学の ActiveBat システムと GPS を上記の項 目に照らして比較し,利害得失を 800 字程 度で論じなさい.

期末試験用課題 4 Java 言語には RMI という遠隔メソッド呼出 しの機構があるが, – この機構について 400 字程度で説明し, – それを用いたサービスアーキテクチャを実例 をあげて 400 字程度で説明しなさい.

2006 年度前期 情報システム構成論 2 第 12 回 「サービスアーキテクチャ」 西尾 信彦 立命館大学 情報理工学部

分散システム構成法 分散システムとは何か? – 例えば,サーバとクライアントによる通信 – プロセスの壁を越える 仮想メモリ管理を越える – ホストの壁を越える ネットワークを利用 分散システムをどう構築するか? –OS とライブラリでネットワーク利用 ソケットプログラミング プログラミング言語がネットワークを隠す –RPC: Remote Procedure Call – プログラマにとっては関数呼び出し – 呼び出された関数は別ホストで稼動

RPC: 遠隔手続き呼出し Sun Microsystems の SunRPC が有名 UNIX における初期のかな漢字変換システ ムである Jserver などが RPC によって実装 されていた. – かなの文字列を引数にかな漢字変換用の関数 (RPC) を呼出すと漢字変換されて戻ってくる

RPC: 遠隔手続き呼出し RPC 呼び出し側 – 引数を用意して関数呼び出し – 呼出し先と引数をまとめてリモートホストに 送る – 返信を待つ – 返信を受けて,返り値を取り出し,スタック に戻す – 呼出しもとにリターン

RPC: 遠隔手続き呼出し RPC 呼出され側 – ネットワーク越しの要求を待つ – 届いた要求パケットから呼出され先を特定 – 引数をスタックに取り出し,コール –RPC 本体が動いて,返り値がスタックにつま れる – 返り値をまとめて,呼出し側に送信 – また要求待ちに戻る

RPC: 遠隔手続き呼出し プログラマの手間 – クラアント,サーバ双方に余計なインタ フェース部分が必要 – これらをスタブ ( 切り株 ) と呼ぶ – スタブを手で書いたら楽にならない – スタブ自動生成のためのスタブジェネレータ がある – スタブジェネレータに渡す RPC の仕様を記述 するインタフェース記述言語 IDL が必要 – 適切なスタブを静的もしくは動的にリンク 動的にやるなら相手先を見つけるサーバが必要

RMI: 遠隔メソッド呼出し オブジェクト指向プログラミング言語に おける RPC のこと 別プロセスに位置するオブジェクトのメ ソッドを呼出す リモートオブジェクト,値呼出し / 参照呼 出し Java では JavaRMI というクラスが実装さ れている.

なぜ皆が Java を使うのか? 新しいプログラミング言語である 成長中の言語である いま重要な要素が入っている – オブジェクト指向 – アーキテクチャ中立 – セキュリティ – ネットワーク 開発環境が近代的に充実している –Eclipse… –UML 関連

Java Remote Method Invocation Object-oriented Mobile behavior Design Patterns Safe and Secure Easy to Write/Easy to Use Connects to Existing/Legacy Systems Write Once, Run Anywhere Distributed Garbage Collection Parallel Computing The Java Distributed Computing Solution

Stub and Skeleton Client ObjectServer/Remote Object StubSkeleton Method Invocation with arguments Return Value

Designing Interface RemoteDictionary.java: import java.rmi.*; public interface RemoteDictionary extends Remote { Object answer( Object key ) throws RemoteException; Object[] keys() throws RemoteException; }

Implement Remote Object RemoteDictionaryImpl.java: import java.util.*; import java.rmi.*; import java.rmi.server.*; public class RemoteDictionaryImpl extends UnicastRemoteObject implements RemoteDictionary { private Hashtable dictionary; public RemoteDictionaryImpl() throws RemoteException { super(); dictionary = new Hashtable(); dictionary.put( "nishio", "Nobuhiko Nishio\nAssociate Professor\nUbiquitous Computing" ); dictionary.put( "mouri", "Koichi Mouri\nAsistant Professor\nContext-Aware Software" ); dictionary.put( "okubo", "Eiji Okubo\nProfessor\nOperating System" ); } public Object answer( Object key ) throws RemoteException { return dictionary.get( key.toString() ); } public Object[] keys() throws RemoteException { Enumeration enum = dictionary.keys(); Vector vector = new Vector(); while( enum.hasMoreElements() ) vector.addElement( enum.nextElement() ); Object[] keys = new Object[ vector.size() ]; for( int i=0; i<vector.size(); i++ ) keys[i] = vector.elementAt(i); return keys; }

Building Server DictionaryServer.java: import java.rmi.*; public class DictionaryServer { public static void main( String argv[] ) { System.setSecurityManager( new RMISecurityManager() ); try { RemoteDictionaryImpl object = new RemoteDictionaryImpl(); Naming.rebind( "rmi:///RemoteDictionaryServer", object ); System.out.println( "Remote Dictionary Service Starts." ); } catch( Exception e ) { System.err.println( "Error:" + e.getMessage() ); System.exit(-1); }

Rebind and Look up Client ObjectServer/Remote Object Lookup()Registry Look up reference Rebind Obtains Remote Reference

Building Client SingleLineClient.java: import java.rmi.*; public class SingleLineClient { public static void main( String argv[] ) { try { RemoteDictionary dictionary = (RemoteDictionary)Naming.lookup( "rmi://" + argv[0] + "/" + "RemoteDictionaryServer" ); Object value = dictionary.answer( argv[1] ); if( value != null ) System.out.println( value.toString() ); } catch( Exception e ) { System.err.println( "Error:" + e.getMessage() ); System.exit(-1); }

Procedure for Execution Compile Java sources Compile RMI-related files Prepare Security Policy Launch RMI Registry Program Launch Server Program Execute Client Program Policy: grant { permission java.security.AllPermission; };

Jini JavaRMI をベースとしたサービスアーキテ クチャの一つ Sun Microsystems が開発 クライアントオブジェクトがルックアッ プサーバを経由して,リモート ( サーバ ) オ ブジェクトのプロクシーを獲得し,それ 経由でサービスを受ける.

Jini Characters

Jini Overview 1. Discovery 2. Join 3. Lookup4. Service Invocation

Lookup Service: registrar

Client Lookup

Proxy

Proxy vs Service :サイズの問 題 Thin proxy and fat service. –RMI implementation Fat proxy and non service Half and half approach –Other implementations than RMI

リモートサービスの課題 どのようにサービスを発見するか – ディスカバリ機構 –Apple の Bonjour など そのサービスが何をするのか – サービス記述 メソッド呼出しにおけるセマンティクス – 値呼出しか参照呼出しか – 参照呼出しをいかに実現するか 最初のスタブをいかに入手するか – 新たに参加したサービスのインタフェースをどう知 るか?

セキュリティの確保 適切な人が適切なサービスを実行する 利用時のユーザのログイン認証 – パスワード, RFID(ICOCA) ,バイオメトリクス ケイバビリティの生成 – 偽造できない許可証 One-time パスワードつき Man-in-the-middle 攻撃対策 – 有効期限つき 通信路の暗号化 –IPSec や VPN どこまでやるのかも問題 – やりすぎたら使いものにならない

異種サービス間連携の問題 世の中には多くのサービスアーキテク チャが –Jini , UPnP , DLNA , SOAP 通信路も多種多様 –Bluetooth , PLC ,携帯電話公衆回線, WiFi –WiMAX , UWB , 3.5G/4G 個人認証も多様 – 次世代型 RFID ,生体認証 – ではあるが,統一されるのはもっと恐しい

異種サービス間連携の問題 ( 続 き ) サービスアーキテクチャでの解決 – サービスの XML を利用した記述 オブジェクトの直列化 (object serialization) RPC/RMI 自体を XML で記述する – セマンティックウェブ技術の発達 WSDL , RDF , OWL/S などによるグラウンディン グ 通信路での解決 – 各種ゲートウェイの開発 – 仕様の拡大化