OSGi: 服務導向的Java模組系統 廖峻鋒 (try) cfliao@ieee.org 台大資工所 智慧型機器人及自動化實驗室.

Slides:



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

Java 大学实用教程 ( 第 3 版 ) 主讲:程继洪 第 1 章 Java 语言概述  本章导读 Java 语言的诞生Java 语言的诞生 学习 Java 的必要性 学习 Java 的必要性 Java 的特点及与 C/C++ 之关系Java 的特点及与 C/C++ 之关系.
第 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 多名技术支持人员和.
第 9 章 测试部署  9.1 测试  9.2 部署. 9.1 测试  应用测试:使用 JUnit 单元测试框架 测试的目的是检验开发结果是否满足规定需求,测试是保证软件质量的一个重要手段, 在软件开发过程中是不可缺少的组成部分。 单元测试与集成测试分别有各自的定义:在实际开发中,两者之间的界定是模糊的。
第一章 Java 程序设计技术 概述  什么是 Java 语言  一个简单的 Java 程序  程序的编译和运行  常见错误  使用 Java 核心 API 文档.
程序设计语言基础 软件工程系 秦晓燕. 课程目标 了解面向对象程序设计的思想,以及软件 开发流程。 学习 Java 语言的基本概念和编程方法,基 本掌握 Java 类库的使用。 能够利用所学的方法开发简单的小型应用 程序.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
真名:李国栋 淘宝花名:富 曲 : Fault injection 实现原理与应用.
Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲.
温州三中心理健康教育 上岗 C 证面试前交流 马 琳 2010 年 12 月 1 日. —— 自我个性分析.
6. 6 Overloading methods and constructors 6
第一章 JSP概述.
C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
歷史建築清水國小宿舍群修復工程 施工說明會
第一节 职业生活中的道德与法律 第二节 大学生择业与创业 第三节 树立正确的恋爱婚姻观 第六章 培育职业精神 树立家庭美德.
Java程序设计教程 第一讲 Java概述.
SAE Java 实际应用 在这里写上你的标题 作者名字/日期
™ 全球,唯一支持第三方自动部署的交易系统 中国产权交易所有限公司 二〇一四年十月 超级交易系统V1.0
病历书写及检查标准 主讲教师:包穆蓉.
大甲.
JAVA程序设计.
北京科技大学天津学院 信息工程系 面 向 对 象 程 序 设 计 第1讲 Java初探 主讲:于静.
第一页是课程的标题 Spring入门示例.
计算机学院计算机科学与技术系 中德联合软件技术研究所 李波
J2EE Struts 和Spring 的区别.
开发环境和系统演示.
贴近教学 服务师生 方便老师.
精英型软件人才 培养模式的探索与实践 卢 苇 北京交通大学国家示范性软件学院.
第 13 章 套件 (Packages).
EOS7产品售前材料 普元:领先的平台软件解决方案商 普元研发 2012年12月.
我的強娜威 My Imported Wife.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
集成 与 jQuery 和 Bootstrap Michael Isvy.
JAVA开发Web Service快速入门
第八章 第一节 日本 邹旭丹 滨河中学初中部 湘教版地理初一年级.
Microsoft .NET 第4組 十月15, 2002 B 陳東傑 B 蔣佳勳
软件设计模式与体系结构课程设计 周 宇 College of Information Science and Technology
安裝JDK 安裝Eclipse Eclipse 中文化
反射與類別載入器 學習目標 取得.class檔案資訊 動態生成物件與操作方法 瞭解JDK類別載入器階層 使用ClassLoader實例.
ANDROID與OSGI平台整合.
OSGI 整合.
Maven [培训人员注意事项: 有关自定义此模板的详细帮助,请查看最后一张幻灯片。另外,可以在一些幻灯片的备注窗格中查找其他课程文本。
开发Eclipse插件的基本步骤 插件通过添加到预定义的扩展点来向平台添加功能。要将程序代码变成插件,需要: 决定插件如何与平台集成
Android 课程讲义 智能手机开发
CH09 套件 物件導向程式設計(II).
Hadoop平台與應用規劃實作 報告者:劉育維.
Android開發環境建置與設定 建國科技大學 資管系 饒瑞佶 2010/10.
第2讲 移动应用开发基础知识(二) 宋婕
2018/12/7 Java语言程序设计 教师:段鹏飞.
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
辅导课程九.
第一讲 J2EE基础 博和利初级培训 —开发技能.
OSGi (Open Service Gateway Initiative)
Android 视频教程简介.
第11章 系统结构与包模型模型.
Overview of J2ME Framework of Java Solution.
面向对象 程序设计语言基础 马骏
正则表达式—简单运用.
中華大學 資訊工程學系 報告人:資訊工程學系 許慶賢 系主任.
課程網站
Location Based Services - LBS
第十二章 学习使用Ant Apache Ant是一个基于Java的构建工具,它可以 会构建多种项目,但是目前主要被用于Java项目 的构建, Ant是用Java语言编写,可以在多个操 作系统中运行,目前在绝大部分的Java开源项目 中,都选择使用Ant作为构建项目的工具,Ant已 经成为Java开源项目构建的事实标准,而且越来.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Interfaces and Packages
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
方格紙上畫正方形.
啟動「EV+」自主學習方程式 「 EV+」Self-Learning Formula
Presentation transcript:

OSGi: 服務導向的Java模組系統 廖峻鋒 (try) cfliao@ieee.org 台大資工所 智慧型機器人及自動化實驗室

大綱 OSGi : Yet another framework ? 發展沿革 元件模型與運作方式 相關開源專案 結語: OSGi的未來發展

Java –cp crack.jar;mylib-v3.jar;mylib-v2.jar;mylib-v1.jar org.coscup.s1 org.coscup.s1 org.coscup.s1 A A B B B C C C C D D E

Java類別版本混合問題 存取權限管理限於package level的問題 對類別使用者來說 對類別提供者來說 Classloader只會載入在classpath中第一個遇到的類別 造成同時載入各版本類別 設定classpath的順序影響了那一個類別會被載入 對類別使用者來說 不同版本無法併存,使用者也無法指定要使用那一個版本的類別 對類別提供者來說 類別一但宣告為public,所有clients都可以存取,無法做個別的控制

com.evil-empire.client Java類別使用權限問題 org.coscup.s1 com.evil-empire.client MySecretA ClientX ClientY org.coscup.s2 如何才能達成更精細的存取設定? ClientZ

Java模組概念 單獨設定各Packages的對外權限 org.coscup.s1 com.evil-empire.client MyScretA ClientX ClientY MyPublicB org.coscup.s2 設定: 只有 MyPublicB可以讓外面存取 ClientZ

Java模組概念: 不同模組可以用不同版本的類別庫 org.coscup.s1 A B C 設定: 只載入第1版 org.coscup.s1 B C D 設定: 只載入第5版 E org.coscup.s1: 3個版本

如何動態提供服務 視訊電話應用程式 視訊服務 電話服務

服務導向軟體架構 視訊電話應用程式 服務目錄 服務目錄管理員 電話服務 機動性:高,體積:小,位置:客廳 Hi,請給我一個電話服務和視訊服務,電話服務最好是機動性高的,視訊服務最好是在廚房… 電話服務 機動性:無,體積:大,位置:書房 電話服務 機動性:無,體積:中,位置:客廳 最符合您的要求的只有這些,你要不要? 視訊服務 面板:大,位置:客廳 視訊服務 面板:小,位置:客廳 服務目錄 服務目錄管理員

OSGi 平台 由Intel、IBM、NEC、Mitsubishi、Motorola、NTT、Nokia、Oracle、Samsung、Siemens AG、BenQ等數十家廠商聯合制定並推動。 OSGi是一個直接建構在JVM上的通用的中介軟體(Universal Middleware)規格。

OSGi沿革 創始於1999年,初期以支援嵌入式裝置為主的家庭閘道器中介軟體為目標 2003 : 新版本設計時加入支援Java手機功能 2004 : 開始有大量的開放源碼社群投入,Eclipse 3.x核心改用OSGi 2006 大量的Java端企業應用程式伺服器改用OSGi為核心

OSGi元件模型 OSGi中的軟體元件稱為Bundle 從實體觀點來看Bundle只是一個 Java-based的jar檔案

Bundle的結構 目錄結構 (標準的jar型式) 在MANIFEST.MF中 / / META-INF/MANIFEST.MF / (java classes) / (.jar) (如果要執行邏輯,必須包含一個org.osgi.framework.BundleActivator的實作類別) 在MANIFEST.MF中 package 的import / export設定 Bundle及版本資訊

一個Bundle就是一個Java Module 在MANIFEST.MF中設定模組間相依性 除了明確export的套件之外,外界一律無法存取 可以指定相依bundle 可以透過import設定,指定所要引入的類別版本 Require-Bundle: my-telephony-service Import-Package: org.coscup.telephony; version=“(1.0.0,1.0.5]”; location=“Kitchen”;

Bundle類別載入採用次序 系統Classpath Required Bundle Imported Bundle Local classpath

Bundles具有生命周期 可以在OSGi伺服器執行期間動態地被安裝、移除、更新及重新啟動 元件容器在啟動Bundle時會先檢查相依性,不能滿足相依性的Bundles無法啟動

Bundles可以提供服務 Bundles中可將提供服務或呼叫其它服務的POJO註冊到ServiceRegistry中 可以發佈(publish)、發現(discovery)及繫結(bind)到其它服務。 ServiceReference sr = context.getServiceReference(EventAdmin.class.getName()); EventAdmin ea = (EventAdmin) context.getService(sr);

服務導向架構必須處理的問題 使用中的服務忽然中斷或消失時? 有更好的合格服務出現時? 同時有很多合格服務時? 可用工具 ServiceTracker類別 Spring OSGi

相關開源專案與工具 OSGi 實作品 OSGi開發工具 Knopflerfish Felix (Apache專案,前身為Oscar) Equinox (Eclipse專案) OSGi開發工具 Eclipse + Maven Eclipse + Knopflerfish Plugin Equinox

OSGi的未來發展 JSR 291與JSR 277之爭 OSGi在J2SE 7與Java EE6中的定位 Distributed OSGi (RFC119)