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. Machine Learning:Neural Network---Representation

    Machine Learning:Neural Network---Representation 1.Non-Linear Classification 假设还採取简单的线性分类手段.那么会面临着过拟 ...

  2. eclipse下Android工程名称的修改方法

    eclipse下Android工程名称的修改方法 对于已经建立的工程,如果发现原来的工程名不合适,此时若想彻底更改工程名,需要三个步骤: 1.更改工程名 选中工程名,右键-->Refactor- ...

  3. eclipse的debug使用(转载)

    出处:http://www.blogjava.net/yxhxj2006/archive/2012/08/30/386621.html 远程Debug: http://blog.sina.com.cn ...

  4. Topcoder SRM 638 DIV 2 (大力出奇迹)

    水题,就是一个暴力.大力出奇迹. Problem Statement   There is a narrow passage. Inside the passage there are some wo ...

  5. Android 一键清理动画

    版本号:1.0  日期:2014.7.29 2014.7.30 版权:© 2014 kince 转载注明出处   一键清理是非常多Launcher都会带有的功能,其效果也比較美观.实现方式或许有非常多 ...

  6. Routine Subroutine Coroutine 子程序 协程

    https://en.wikipedia.org/wiki/Subroutine In computer programming, a subroutine is a sequence of prog ...

  7. Android笔记之获取应用程序文件目录

    获取应用程序文件目录 ContextWrapper.getFilesDir(),这个函数返回存放应用程序文件的目录的路径 获取应用程序缓存目录 ContextWrapper.getCacheDir() ...

  8. 解决express video 手机无法播放的问题

    http://stackoverflow.com/questions/24976123/streaming-a-video-file-to-an-html5-video-player-with-nod ...

  9. SpringBoot-(8)-配置MySQL数据库链接,配置数据坚挺拦截,创建默认数据表

    一,链接mysql数据库 # 数据源基本配置 spring.datasource.username=root spring.datasource.password=123456 spring.data ...

  10. CentOS 6.9 安装 ftp 服务器

    昨天为了方便上传写好的博客 .md 文件到服务器上,就在服务器搭建了一个 ftp 服务端用来上传写好的博客.很久之前我也使用虚拟机搭建过 ftp 服务器,但是时间久了,很多都忘记了.于是乎又一顿 Go ...