CORBA 簡介 郭 俊 博 中華大學資訊工程研究所 平行與分散實驗室

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

第 2 章 Java 运行环境搭建 2.1 Java 的运行系统 2.1 Java 的运行系统 2.2 JDK 的安装与配置2.2 JDK 的安装与配置 2.3 Java 开发工具包 2.4 Java 源文件编辑环境的选择 2.5 Application 和 Applet 程序的编写与运行.
1 Java 语言程序设计 计算机系 鲍金玲. 2 引子 甲骨文 甲骨文是全球最大的信息管理软件及服务供应商,成立于 1977 年,公司总部 设在美国加利福尼亚州的红木城( Redwood Shores ),全球员工达 名, 包括 名开发人员、 7500 多名技术支持人员和.
1 中 间 件 技 术中 间 件 技 术. 2 第 1 章 中间件产生背景及分布式计算环境 主要内容 开放系统 互操作性 中间件.
Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
第一章 Java 程序设计技术 概述  什么是 Java 语言  一个简单的 Java 程序  程序的编译和运行  常见错误  使用 Java 核心 API 文档.
Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲.
第四章 类、对象和接口.
第三讲 面向对象(上).
第一單元 建立java 程式.
第1章 Java语言概述.
《 Java开发环境配置》 主讲人:耿力.
Java程序设计教程 第一讲 Java概述.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
面向对象的程序设计(一).
第二章 JAVA语言基础.
第1章 java简介及环境搭建 第1章 Java简介及开发环境搭建.
Ch07 介面與多重繼承 物件導向程式設計(II).
潘爱民 北京大学计算机科学技术研究所 组件技术——最后一讲 潘爱民 北京大学计算机科学技术研究所
作業系統 第二十章 分散式系統實例.
9.6 一个RMI的分布式应用的实例 用RMI编写一个分布式应用,核心有以下三方面: 定位远程对象 与远程对象通信:
Ch08 巢狀類別 物件導向程式設計(II).
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
第五章 编写服务端程序.
Java簡介.
例外處理(Exception Handling)
第五章 信息与系统集成技术 概述 数据流集成技术 信息流集成技术 信息管理集成技术 流程重组与业务流程集成 企业门户集成 企业集成架构
分布式对象标准介绍 企业要构建多层分布式系统,必须遵循分布式标准,基于什么样的标准将直接影响到企业应用系统的开放性和可扩展性。目前业界分布式对象技术主要有三种架构标准: Microsoft的COM/DCOM/COM+ OMG组织的 CORBA。 Sun Microsystems的Enterprise.
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
Classes Lecturer: 曾學文.
本單元介紹何謂變數,及說明變數的宣告方式。
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
创建型设计模式.
在一定程度上 人类的思维产生于 简单个体之间的相互作用 ——Marvin Minsky.
软件建模训练(6-2) 设计模式 张静 南京理工大学计算机科学与工程学院.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
职责链模式.
Java语言程序设计 第五部分 Java异常处理.
第六章 编写客户端程序.
Java程序设计 第9章 继承和多态.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
2018/12/7 Java语言程序设计 教师:段鹏飞.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
第8章 Service解析.
第4章 商务逻辑层及其技术.
GT4安装与开发 李长华.
第二章 基于CORBA的分布式平台 苗启广 计算机学院.
認識 Java.
C/C++/Java 哪些值不是头等程序对象
Topic Introduction—RMI
第一單元 建立java 程式.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
開發Java程式語言的工具 JDK.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 基于CORBA的分布式平台 苗启广 计算机学院.
第二章 Java语法基础.

第二章 Java基本语法 讲师:复凡.
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
作業系統 Operating System 第六單元 分散式系統
Summary
Presentation transcript:

CORBA 簡介 郭 俊 博 中華大學資訊工程研究所 平行與分散實驗室 http://www.csie.chu.edu.tw/~chunpo/ (C) Copyright PodsCat, 1998 CORBA 簡介

異質環境 不同的作業系統 不同的程式語言 不同的分散式計算架構 UNIX, NT, ... etc. C++, Java, ... etc. DCE, Socket-based, RPC CORBA, Java, DCOM (C) Copyright PodsCat, 1998 CORBA 簡介

CORBA 非常適用於異質環境整合 不同程式語言的物件可透過 CORBA 聯繫。 在多種作業系統上都有 CORBA 的平台。 IIOP ESIOP CORBA/COM (C) Copyright PodsCat, 1998 CORBA 簡介

物件管理架構 (OMA) Application Objects Client Object Implementation Common Object Services (COS) Common Facilities (CFA) Object Request Broker (ORB) (C) Copyright PodsCat, 1998 CORBA 簡介

物件訊息仲裁者 (ORB) 物件訊息仲裁者 (Object Request Broker, ORB) 可視為一種軟體的匯流排 (software bus)。 各廠商只要遵循 ORB 對外的界面標準,至於內部可以由各廠商自行決定實作 ORB 的方法。 (C) Copyright PodsCat, 1998 CORBA 簡介

物件訊息仲裁者 (ORB) ORB 連接不同的物件,並達成 : 物件位置的通透性 (location transparency) 動態或靜態的物件呼叫 (invocations) 可用高階的物件語言來使用 ORB (language binding) 物件間聯繫的安全性 其它物件導向應有的特性 (C) Copyright PodsCat, 1998 CORBA 簡介

物件訊息仲裁者 (ORB) (C) Copyright PodsCat, 1998 CORBA 簡介

界面定義語言與界面儲存器 為了能夠使用唯一的方式描述一個物件的界面 (Interface),CORBA 提供了一個界面定義語言 (Interface Definition Language, IDL)。 透過一致的界面定義,使物件的界面 (Interface) 與物件的實體 (Implementation) 可以獨立開來。 (C) Copyright PodsCat, 1998 CORBA 簡介

界面定義語言與界面儲存器 為了能夠動態地查詢物件的界面,CORBA 提供了一個界面儲存器 (Interface Repository, IR)。 程式開發者在選定使用 CORBA 的語言後,可以經由適當的 IDL 編譯器將 IDL 轉換成該語言。 (C) Copyright PodsCat, 1998 CORBA 簡介

Object Implementation CORBA 程式設計流程 Client Code Client Stub C++ Compiler Client IDL Compiler IDL C++ class IDL Spec. C++ Compiler Server Server Skeleton Object Implementation (C) Copyright PodsCat, 1998 CORBA 簡介

CORBA (Use Java) 範例: CORBA 環境 : CORBA are support in JDK 1.2 The newest JDK is JDK1.2Beta3 另有 idltojava are support at SPARC & Win32. Download these files at ftp://ftp.csie.chu.edu.tw/pub/Language/java/jdk/jdk-1.2-Bata3/ ftp://ftp.csie.chu.edu.tw/pub/Language/corba/ (C) Copyright PodsCat, 1998 CORBA 簡介

CORBA (Use Java) 範例: Three source files The Interface definition ( Hello.idl ) The Implementing the Server ( HelloServer.java ) The Implementing The Client ( HelloClient.java ) (C) Copyright PodsCat, 1998 CORBA 簡介

Hello.idl Compile the IDL interface with the command: module HelloApp { interface Hello string sayHello(); }; Compile the IDL interface with the command: idltojava Hello.idl (C) Copyright PodsCat, 1998 CORBA 簡介

Hello.idl This generates five files in a HelloApp subdirectory: _HelloImplBase.java This abstract class is the server skeleton, providing basic CORBA functionality for the server. It implements the Hello.java interface. The server class HelloServant extends _HelloImplBase. _HelloStub.java This class is the client stub, providing CORBA functionality for the client. It implements the Hello.java interface. Hello.java This interface contains the Java version of our IDL interface. It contains the single method sayHello(). The Hello.java interface extends org.omg.CORBA.Object, providing standard CORBA object functionality as well. HelloHelper.java This final class provides auxiliary functionality, notably the narrow() method required to cast CORBA object references to their proper types. HelloHolder.java This final class holds a public instance member of type Hello. It provides operations for out and inout arguments, which CORBA has but which do not map easily to Java's semantics. (C) Copyright PodsCat, 1998 CORBA 簡介

HelloServer.java (C) Copyright PodsCat, 1998 CORBA 簡介 import HelloApp.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; class HelloServant extends _HelloImplBase { public String sayHello() { return "\nHello world !!\n"; } } public class HelloServer { public static void main(String args[]) try{ // create and initialize the ORB ORB orb = ORB.init(args, null); // create servant and register it with the ORB HelloServant helloRef = new HelloServant(); orb.connect(helloRef); (C) Copyright PodsCat, 1998 CORBA 簡介

HelloServer.java (C) Copyright PodsCat, 1998 CORBA 簡介 // get the root naming context org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContext ncRef = NamingContextHelper.narrow(objRef); // bind the Object Reference in Naming NameComponent nc = new NameComponent("Hello", ""); NameComponent path[] = {nc}; ncRef.rebind(path, helloRef); // wait for invocations from clients java.lang.Object sync = new java.lang.Object(); synchronized (sync) { sync.wait(); } } catch (Exception e) { System.err.println("ERROR: " + e); e.printStackTrace(System.out); } } } (C) Copyright PodsCat, 1998 CORBA 簡介

HelloClient.java import HelloApp.*; import org.omg.CosNaming.*; import org.omg.CORBA.*; public class HelloClient { public static void main(String args[]) try{ // create and initialize the ORB ORB orb = ORB.init(args, null); // get the root naming context org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContext ncRef = NamingContextHelper.narrow(objRef); (C) Copyright PodsCat, 1998 CORBA 簡介

HelloClient.java // resolve the Object Reference in Naming NameComponent nc = new NameComponent("Hello", ""); NameComponent path[] = {nc}; Hello helloRef = HelloHelper.narrow(ncRef.resolve(path)); // call the Hello server object and print results String hello = helloRef.sayHello(); System.out.println(hello); } catch (Exception e) { System.out.println("ERROR : " + e) ; e.printStackTrace(System.out); } (C) Copyright PodsCat, 1998 CORBA 簡介

Building and Running Run idltojava on the IDL file to create stubs and skeletons . idltojava Hello.idl Compile the .java files, including the stubs and skeletons: javac *.java HelloApp/*.java Make sure the name server is running: tnameserv -ORBInitialPort 1050& Start the Hello server: java HelloServer -ORBInitialPort 1050 Run the Hello application client from a different shell than the server: java HelloClient -ORBInitialPort 1050 (C) Copyright PodsCat, 1998 CORBA 簡介

分散式物件技術 (C) Copyright PodsCat, 1998 CORBA 簡介