Eclipse插件开发实战3——OSGi、RCP

一、OSGi

1. 什么是OSGi框架

  OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环境里的服务平台。框架提供的主要功能是对应用和组件的生命周期管理,系统可以在无需重启的情况下,远程操纵组件的安装、启动、停止。

  OSGi框架不仅用于Eclipse,从移动终端到车载系统,各个领域都在应用这个技术。

  2. OSGi和Eclipse的关系

  Eclipse采用OSGi框架来管理插件的安装、开始、停止和生命周期。在Eclipse中采用的OSGi框架称为Equinox。Equinox在Eclipse3.0时被使用,在3.3时,Equinox通过Equinox PDE,不仅可以用来开发插件,也可以用来制作其他OSGi框架上的组件。

  3. OSGi控制台

  在Eclipse提启动的时候加入-console参数,可以在Eclipse启动的同时创建一个OSGi框架控制台。

图4-1,4-2 启动OSGi控制台

  构建于OSGi之上的各种应用被称为OSGi Bundle。OSGi控制台可以执行下表所示的操作。

表4-1 OSGi控制台的命令

命令

说明

start

开始Bundle

stop

停止Bundle

install

安装指定Bundle

uninstall

卸载指定Bundle

update

更新指定Bundle

active

列出被注册并且处于活动状态的Bundle

ss

列出所有被注册的Bundle

  我们可以看一下执行Eclipse的动作后,Bundle的状态变化。首先执行ss命令。在ss命令后加入一个参数[help],这样可以列出所有名称含有help的bundle。

代码1

id     State       Bundle

78     RESOLVED   org.eclipse.epp.mpc.help.ui_1.0.0.v20100611-0430

136    ACTIVE     org.eclipse.help_3.5.0.v20100524

137    <<LAZY>>   org.eclipse.help.appserver_3.1.400.v20100427

138    <<LAZY>>   org.eclipse.help.base_3.5.0.v201006080911

139    <<LAZY>>   org.eclipse.help.ui_3.5.0.v20100517

140    <<LAZY>>   org.eclipse.help.webapp_3.5.0.v20100507

178    <<LAZY>>   org.eclipse.mylyn.help.ui_3.4.0.v20100608-0100-e3x

196    RESOLVED   org.eclipse.mylyn.wikitext.help.ui_1.3.0.v20100608-0100-e3x

228    RESOLVED   org.eclipse.rap.help_1.3.0.20100615-1734

  请注意其中状态为lazy的行,这个状态说明Bundle还没有被加载入内存。在必要时将加载入内存。

  我们先打开Eclipse的帮助。然后再看一下Bundle的状态。

代码2

id     State       Bundle

78     RESOLVED   org.eclipse.epp.mpc.help.ui_1.0.0.v20100611-0430

136    ACTIVE     org.eclipse.help_3.5.0.v20100524

137    <<LAZY>>   org.eclipse.help.appserver_3.1.400.v20100427

138    ACTIVE     org.eclipse.help.base_3.5.0.v201006080911

139    ACTIVE     org.eclipse.help.ui_3.5.0.v20100517

140    <<LAZY>>   org.eclipse.help.webapp_3.5.0.v20100507

178    <<LAZY>>   org.eclipse.mylyn.help.ui_3.4.0.v20100608-0100-e3x

196    RESOLVED   org.eclipse.mylyn.wikitext.help.ui_1.3.0.v20100608-0100-e3x

228    RESOLVED   org.eclipse.rap.help_1.3.0.20100615-1734

  我们看到了org.eclipse.help.base_3.5.0.v201006080911和 org.eclipse.help.ui_3.5.0.v20100517两个Bundle从lazy状态变成了活动状态。

  以上例子可知,使用OSGi控制台可以确认Eclipse插件的活动状态,也可以用控制台来控制插件的开始和停止。

另外关于OSGi Bundle的制作……

二、RCP

RCP是eclipse的核心功能,以SWT/JFace作为界面元素组件,提供给用户Workbench的UI平台。如果将Eclipse中关于IDE的内容剥去,剩下的就是一个提供基本工作台功能的核心,即RCP,包括对可移动以及可叠加的窗口组件(编辑器和视图)、菜单、工具栏、按钮、表格、树形结构等等的支持,而这个核心就是Eclipse RCP。Eclipse RCP就是由插件开发转向桌面应用开发,构建最小化的Eclipse平台(8M)运行你的桌面应用,不必再为程序框架烦心,摆脱失败的AWT和Swing。RCP提供了丰富的界面控件,这使得基于
Java 开发桌面应用也变得容易了很多。

【eclipse插件开发实战】Eclipse插件开发3——OSGi、RCP的更多相关文章

  1. 【eclipse插件开发实战】Eclipse插件开发1——eclipse内核结构、扩展点机制

    Eclipse插件开发实战1--eclipse内核结构.扩展点机制 一.前言 本系列总体介绍eclipse插件开发基本理论.插件项目结构及开发步骤,最后再给出两个插件开发实例. 总体安排结构如下: 1 ...

  2. 【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构

    Eclipse插件开发4--插件JDE.PDE开发方式及plugin.xml配置文件结构 开发方式分为:java开发环境JDE开发插件的方式和插件开发环境PDE开发插件方式. 插件通过添加到预定义的扩 ...

  3. 【eclipse插件开发实战】Eclipse插件开发2——SWT

    Eclipse插件开发实战2--SWT 一.SWT简介 SWT(StandardWidget Toolkit) 标准小窗口工具箱,一开源的GUI编程框架,与AWT/Swing有相似的用处,eclips ...

  4. 【eclipse插件开发实战】 Eclipse插件开发6——eclipse在线翻译插件Translator开发实例详解

    Eclipse插件开发6--eclipse在线翻译插件Translator开发实例详解 在上一篇文章中讲到了一个简单的eclipse插件开发实例,主要是对插件工程的基本创建步骤进行了讲解,这篇文章当中 ...

  5. Eclipse插件开发之基础篇(4) OSGi框架

    转载出处:http://www.cnblogs.com/liuzhuo. 1. 什么是OSGi框架 OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环 ...

  6. [转]Eclipse插件开发之基础篇(4) OSGi框架

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/18/eclipse_plugin_1_2_1.html 1. 什么是OSGi框架 OSGi(O ...

  7. CloudIDE插件开发实战:教你如何调试代码

    摘要:今天我们来重点介绍下CloudIDE插件的调试技巧,在插件开发过程中调试作为重要的问题分析和定位手段能够有效帮助开发者提升插件质量. 今天文章中的样例工程我们继续以上一篇<实战CloudI ...

  8. spring boot插件开发实战和原理

    本文转载自spring boot插件开发实战和原理 实战:编写spring boot插件 为什么要编写boot插件 因为我们在开发的时候需要提供一些共同的功能,所以我们编写个共同的jar包.开发人员在 ...

  9. Eclipse IDE for Java EE Developers 与 Eclipse Classic(Eclipse Standard)区别

    Eclipse下载官网:http://www.eclipse.org/downloads/ 版本: 1.Eclipse classic(Eclipse Standard):Eclipse的标准版; 2 ...

随机推荐

  1. Linux kernel Wikipedia

    http://en.wikipedia.org/wiki/Linux_kernel Development model The current development model of the Lin ...

  2. docker&k8s填坑记

    本篇主要用于记录在实施docker和kubenetes过程中遇到的一个问题和解决办法. 本节部分内容摘自互联网,有些部分为自己在测试环境中遇到到实际问题,后面还会根据实际情况不断分享关于docker/ ...

  3. NTAG 标签

    NTAG 标签 这里描述针对 NTAG213.而 NTAG215/216只是容量不同,其它功能都一样.  UID UID 有 7 bytes.上图中有 9 bytes 的 serial number ...

  4. iOS开发---- 开发错误汇总及解决方法

    本文转载至 http://blog.csdn.net/shenjx1225/article/details/8561695 一.今天调试程序的时候,出现了一个崩溃,信息如下: 2013-02-01 0 ...

  5. springboot实战--笔记

    由于这本书看过一遍,所以这里是二次复习,记录的东西比较少,就不分章节了. 共12章,524页,预计时间是18h 第一章 spring基础: 第二章 spring常用配置: bean的Scope:sin ...

  6. 九度OJ 1142:Biorhythms(生理周期) (中国剩余定理)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:266 解决:189 题目描述: Some people believe that there are three cycles in a p ...

  7. 最简单的基于FFMPEG的Helloworld程序

    ===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...

  8. 用ASTERISK搭建自己的免费VOIP服务器

    服务器别闲着,博主又要给大家带来新的玩法咯 1. 这里以 Debian 为例子,安装 Asterisk apt-get update apt-get install asterisk 2. 预设置 A ...

  9. ThinkPHP Widget模块开发流程

    初识ThinkPHP的Widget,现把模块开发的流程发布如下,也方便以后自己查阅: 一.新建数据库表self_modules,sql代码如下 CREATE TABLE `self_modules` ...

  10. Appium java 环境配置

    一.安装node.js 下载地址:http://pan.baidu.com/s/1qYyNDm8 点击安装,next下一步就ok. 安装完成,命令行输入:npm 这样显示的话就ok了.  二.下载Ap ...