OSGI 整合.

Slides:



Advertisements
Similar presentations
1 Java 语言程序设计 计算机系 鲍金玲. 2 引子 甲骨文 甲骨文是全球最大的信息管理软件及服务供应商,成立于 1977 年,公司总部 设在美国加利福尼亚州的红木城( Redwood Shores ),全球员工达 名, 包括 名开发人员、 7500 多名技术支持人员和.
Advertisements

程序设计语言基础 软件工程系 秦晓燕. 课程目标 了解面向对象程序设计的思想,以及软件 开发流程。 学习 Java 语言的基本概念和编程方法,基 本掌握 Java 类库的使用。 能够利用所学的方法开发简单的小型应用 程序.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
Android ADT + Android SDK Eclipse Eclipse 編輯器 JAVA JAVA 開發工具.
第一章 Android简介与环境搭建 QQ号: QQ群: (Android编程入门) 网络资源:
Android环境搭建 倚动软件工厂实验室 网络课程地址:
OUTLINE Android app Devolpment Flow App反組譯解說 實例 簽名詳解 DalvikByteCode
第1章 java简介及环境搭建 第1章 Java简介及开发环境搭建.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
使用Android Studio 開發Android App 靜宜大學資管系 楊子青
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
APP課程:Android程式設計開發環境與工具介紹
第 1 章 使用 APP INVENTOR 2 開發 ANDROID APP
第2章 建立Android應用程式 2-1 Java語言、XML文件與Android 2-2 建立第一個Android應用程式
CH3 Eclipse.
Microsoft .NET 第4組 十月15, 2002 B 陳東傑 B 蔣佳勳
臺北市立大學 資訊科學系(含碩士班) 賴阿福
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
Java簡介.
OpenFoundry.org 版本控制系統服務 使用教學
JDK的安裝.
MIT App Inventor簡介及 「Hello World」程式初體驗 靜宜大學資管系 楊子青
ANDROID與OSGI平台整合.
Android程式開發準備 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Q101 在701 SDX Linux上的標準安裝與使用程序v2
Android開發環境建置與設定 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
JDK 安裝教學 (for Win7) Soochow University
第1章 認識Arduino.
安裝與設置 Android 發展環境 靜宜大學資工系 蔡奇偉副教授 ©.
Android SDK工具 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
MPLAB IDE 8 建立專案.
陈炎 南京大学软件学院 Ant简介 Ant一个优秀的构建工具 Ant意思是Another Neat Tool 陈炎 南京大学软件学院
以多媒體簡訊服務及智慧型手機建置具物流管理之行動商務系統與 Web Service的應用
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
Maven [培训人员注意事项: 有关自定义此模板的详细帮助,请查看最后一张幻灯片。另外,可以在一些幻灯片的备注窗格中查找其他课程文本。
Working with Databases (II) 靜宜大學資管系 楊子青
Android 课程讲义 智能手机开发
Android開發環境建置與設定 建國科技大學 資管系 饒瑞佶 2010/10.
R教學 安裝RStudio 羅琪老師.
Native Development Kit
2018/12/7 Java语言程序设计 教师:段鹏飞.
安裝JDK 安裝Eclipse Eclipse 中文化
Android盤點系統 組別:第九組 組員:四資工三B 4980E046 宋佩鴻 四資工三B 4980E054 詹典易
自由軟體介紹(一) 把flash通通帶回家 報告人:陳俊銘.
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
連結資料庫管理系統.
Android手动测试实践 ——绮珠.
GT4安装与开发 李长华.
OSGi (Open Service Gateway Initiative)
建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2 2013/2 V3 2014/9 V4
Java程式設計 Eclipse.
01.Java语言概述 讲师:复凡.
讓Emulator可以 使用Android Market
課程網站
Location Based Services - LBS
第十二章 学习使用Ant Apache Ant是一个基于Java的构建工具,它可以 会构建多种项目,但是目前主要被用于Java项目 的构建, Ant是用Java语言编写,可以在多个操 作系统中运行,目前在绝大部分的Java开源项目 中,都选择使用Ant作为构建项目的工具,Ant已 经成为Java开源项目构建的事实标准,而且越来.
個人網路空間 資訊教育.
Reusable software component
雲端計算.
利用 EditorConfig 自訂文字編輯器設定
實驗十六:匯出APK安裝檔與軟體上架.

班級:博碩子一甲 授課老師:鐘國家 助教:陳國政
安裝JDK 配置windows win7 環境變數
OSGi: 服務導向的Java模組系統 廖峻鋒 (try) 台大資工所 智慧型機器人及自動化實驗室.
開發Java程式語言的工具 JDK.
Usage Eclipse 敏捷方法工具介紹 實驗室網站:
Java语言程序设计.
Develop and Build Drives by Visual C++ IDE
Presentation transcript:

OSGI 整合

SWING V.S AWT Java在GUI的程式設計,有名的library是 AWT(Abstract Windows Tookit),但在Java run時 ,AWT 元件與平台以peers的方式互動。 當專案變得複雜,peer-based運作起來變得heavy 取而代之的,是更穩定(robust)、多功能(versatile) 也更有彈性(flexible)的library – Swing componets 2 2

圖形介面基礎GUI BASIC Lightweight元件是Swing元件 Heavyweight元件是AWT元件 可將GUI classes分成三類: 容器 – container classes 元件 – component classes 幫手 – helper classes 3 3

JDK PROBLEMS WITH JARS NO runtime concept .Java VM running, the contents of all the JARs are simply concatenated and treated as a single, global list: the so-called “Classpath”. NO standard metadata to indicate their dependencies.They are not versioned, and multiple versions of JARs cannot be loaded simultaneous. NO mechanism for information hiding between JARs 4 4

A TYPICAL OSGI MANIFEST.MF FILE 1 Manifest-Version: 1.0 2 Created-By: 1.4.2_06-b03 (Sun Microsystems Inc.) 3 Bundle−M a n i f e s t V e r s i o n : 2 4 Bundle−Name : My First OSGi Bundle 5 Bundle−S y m b o l i c N a m e : org . osgi . e x a m p l e 1 6 Bundle−V e r s i o n : 1 . 0 . 0 7 Bundle−R e q u i r e d E x e c u t i o n E n v i r o n m e n t : J2SE −1.5 8 Import−P a c k a g e : javax . swing 一個合格的bundle,Bundle-SymbolicName 是必須的,且不可重複。 一個SymbolicName註冊在一個Framework上。 5 5

eclipse OSGI 開發方式 開發平台(IDE) 命令(comment) 用java的 javac 指令執行編譯 用java的 jar 指令來封裝 用筆記本寫作MANIFEST.MF. 開發平台(IDE) eclipse 6 6

EQUINOX 到 http://eclipse.org/ ,下載最新版eclipse for Java 設定組態 7 7

EQUINOX 若已經下載過eclipse,設定組態前, 請確定Target Platform為eclipse 8 8

EQUINOX 9 9

EQUINOX launch安裝bundle ss列出bundle及其狀態 10 10

EQUINOX - 創建HELLOWORLD BUNDLE 建立 Plug-in Project 而非 Java Project 11 11

EQUINOX - 創建HELLOWORLD BUNDLE 12 12

EQUINOX - 創建HELLOWORLD BUNDLE Id是bundle的標示 Name取有意義的 Provider為提供者 Activator 在此可自動產生 13 13

EQUINOX - 創建HELLOWORLD BUNDLE 建置成功後,可以看見我們創建的Activator會實作 BundleActivator。在start和stop方法加上列印動作 成功! 14 14

EQUINOX - 創建HELLOWORLD BUNDLE 15 成功! 15

在OSGI框架中的B/S架構 字典查詢功能,可以用本地或遠端字典的服務,功能 實作字典查詢的介面。 引用Service 使用Bundle 字典查詢介面 字典查詢 輸出Bundle 使用Bundle 使用Bundle 本地字典服務 遠端字典服務 s s 提供Service 提供Service 16 16

在OSGI框架中嵌入HTTP服務器 另外在Run新的組態,包含以下Bundle: org.eclipse.osgi_3.5.2.R35x_v20100126 javax.servlet_2.5.0.v200806031605 org.mortbay.jetty.server_6.1.15.v200905151201 org.eclipse.equinox.http.jetty_2.0.0.v20090520-1800 org.mortbay.jetty.util_6.1.15.v200905182336 org.eclipse.equinox.http.servlet_1.0.200.v20090520- 1800 17 17

KNOPFLERFISH安裝 Java、JDK Eclipse http://www.knopflerfish.org/download.html 18 18

KNOPFLERFISH與ECLIPSE整合開發 安裝網址:http://www.knopflerfish.org/eclipse-update/ 19 19

KNOPFLERFISH與ECLIPSE整合開發 安裝網址:http://www.knopflerfish.org/eclipse-update/ 20 20

KNOPFLERFISH與ECLIPSE整合開發 21 21

KNOPFLERFISH與ECLIPSE整合開發 22 22

KNOPFLERFISH與ECLIPSE整合開發 視窗偏好設定:選Knopflerfish存庫(Repository) 23 23

KNOPFLERFISH與ECLIPSE整合開發 視窗偏好設定:選Knopflerfish存庫(Repository) 24 24

KNOPFLERFISH與ECLIPSE整合開發 視窗偏好設定:選Knopflerfish存庫(Repository) 25 25

KNOPFLERFISH開發BUNDLE 26 26

KNOPFLERFISH開發BUNDLE 我們將此Bundle專案取名叫HelloOSGi 27 27

KNOPFLERFISH開發BUNDLE 勾選自動產生Activator 28 28

KNOPFLERFISH開發BUNDLE 選擇自動產生Activator後會看見,專案下的 src(source)檔案夾,多了一個名為HelloOSGi的封包 ,發包下有Activator.java 29 29

KNOPFLERFISH開發BUNDLE 我們可以編輯Activator.java 30 30

KNOPFLERFISH開發BUNDLE Activator實作BundleActivator的start和stop Bundle被Start會印出HelloOSGi Start~! 31 Bundle被Stop會印出HelloOSGi Stop~! 31

KNOPFLERFISH開發BUNDLE 在專案的目錄上按右鍵, 將專案輸出(export) 32 32

KNOPFLERFISH開發BUNDLE 選擇輸出成一個Jar 通常是Java下, 選擇JAR file 33 33

KNOPFLERFISH開發BUNDLE Eclipse可自動把jar的 .bundle-pack .classpath .project bundle.manifest 輸出 選擇路徑: 這裡選到桌面,檔名 是HelloOSGi.jar 不要在這裡選擇結束 選下一步 34 34

KNOPFLERFISH開發BUNDLE 再下一步後, 請確定manifest檔 的路徑是否正確, 可使用browse… 開啟此專案的 bundle.manifest 每一次,請特別注意 Eclipse不會自動找到 恭喜,可以按完成 35 35

KNOPFLERFISH開發BUNDLE 成功後可看到HelloOSGi的jar檔, 此範例我們是放在桌面上。 成功! 36 36

開啟KNOPFLERFISH的框架(FRAMEWORK) 選擇在knopflefish.org下的osgi 選擇framework的可執行jar 左鍵點兩下 37 37

啟動KNOPFLERFISH 38 38

在KNOPFLERFISH上跑BUNDLE Install成功就會出現 1.左上角從資料夾開HelloOSGi 2.按Play  start ,印HelloOSGi Start 3.按停止  stop,印HelloOSGi Stop 39 39

OSGI框架實作比較 OSGi core OSGi Configuration Admin OSGi declarative services Equinox v3.4.2  X Felix v1.8.0 O Knopflerfish v2.3.1

UPnP介紹 (Universy Plug )即插即用(UPnP)是由通用即 插即用論壇(UPnP™ Forum)提出的一套網路協 定。該協定的標的是使家庭網路(資料共享、通訊和 娛樂)和公司網路中的各種裝置能夠相互無縫連線, 並簡化相關網路的實作。UPnP 透過定義和發布基 於開放、網際網路通訊網協定標準的 UPnP 裝置控 制協定來實作這一標的。 41

Structure of UPnP Device UPnPService UPnPService UPnPAciotn UPnPStateVariablec UPnPAction UPnPStateVariablec UPnPStateVariablec c 42

UPnP Base Driver 08/25/10 圖片來源:http://felix.apache.org/site/upnp-driver-architecture.html

ANDROID BUILD aapt javac dx apkbuilder -u adb jarsigner 44 Source code Resources Assets Manifest Key Libraries Create packaged resource compile To Dalvik bytecodes Create unsigned apk Sign apk Publish or Test Packaged resource file Classes dex Unsigned apk Signed apk R javac dx apkbuilder -u adb jarsigner 資料來源:http://asantoso.wordpress.com/2009/09/15/how-to-build-android-application-package-apk-from-the-command-line-using-the-sdk-tools-continuously-integrated-using-cruisecontrol/ 44

ANT - ANOTHER NEAT TOOL buildfile 取 得、提供屬性 路徑參考 常 用任務標籤 資料來源:Java深度歷險 (王森) buildfile 取 得、提供屬性 路徑參考 常 用任務標籤 45 45

ANT - ANOTHER NEAT TOOL 資料來源:Java深度歷險 (王森) 由 James Duncan Davidson在Make工具無法滿足 他的需求下所撰寫出來的構建(build)工具,目前 由Apache Software Foundation持續進行開發。 Ant並不取代IDE,它補強了IDE,而也沒有IDE可 以取代Ant,他們是互補的,不是相互取代的。 Ant幫你自動完成以下任務: 編譯Java原始碼 建立jar、war、zip檔案 自動測試與生成報告 從CVS等管理系統取得原始碼 46 46

ANT的必要:舉例 資料來源:Java深度歷險 (王森) 程式碼之中找不到類別之間的相依性,使得您編譯 Office.java 的時候,編譯器自動編譯Assembly.java ,卻無法編譯Word.java 及Excel.java 47 47

ANT – BUILD.XML 資料來源:Java深度歷險 (王森) 在Ant的buildfile中可以定義構建專案時的「屬性」 (property)、「任務」(task),一個build.xml 中可以定義多個任務, 這些任務可能是建立目錄、 編譯Java原始碼、搬移檔案、產生doc文件、進行測 試、產生測試報告等等,這些任務通常組織為一個「 目標」 (target)。 48 48

Android OSGi OSGI V.S. ANDROID http://www.adon-line.de/kunden/prosystBlog/?p=18 OSGI V.S. ANDROID 49 OSGi Android Dalvik Process Isolation Application Model Java VM Existance of VM Technology Classloader Isolation Versioning Standard Remote Management Class Sharing Existance of Component Model open Existance of Service Model Inter-process communication 49

參考資料 http://felix.apache.org/site/upnp-driver- architecture.html 電子書:Java深度歷險 (王森) http://www.javaworld.com.tw/roller/moli/category /消息發布 http://www.ist-music.eu/developer- zone/documentation/phoneme-and-osgi/music-on- android