- 浏览: 1149070 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
郑重声明:本文是个人的笔记,不一定适用阁下,不过并不介意你阅读。
我一直对Eclipse 的架构很感兴趣,很想知道它怎样利用 OSGI 框架来加载和管理各个插件 (OSGI 称为 Bundle), 听起来实现的过程不简单,但我还是决定记录一下其中的细节,所以如果我有什么理解不正确的地方,请提醒我。
Eclipse提供了一个本地可运行方式来启动 Eclipse 平台,它包含两部分:可执行程序 (eclipse.exe) 和一个共享 DLL 文件 (eclipse_1115.dll); eclipse.exe 文件位于 eclipse 的安装目录下 , 而那个 dll 文件位于安装目录的 plugins 文件下的 org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.* 文件夹下面.
在Eclipse3.3 以前的版本, Eclipse 安装目录下都有一个 startup.jar 的文件, eclipse.exe 通过执行这个 jar 文件来启动 Eclipse 平台,在 Eclipse 3.3 及以后的版本对此进行了重构, startup.jar 文件的功能被 " org.eclipse.equinox.launcher .*" 这个插件替代了,你也可以通过 Java 的 jar 命令启动 Eclipse 平台:比如启动 Eclipse 3.4.2 : java -jar plugins/ org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar
首先Eclipse 先查找 JVM ,然后使用 JNI 并加载和启动 JVM, 如果你在命令行参数中没有指定 "-vm" 参数, Eclipse 会先从安装目录下找 jvm 的文件夹,如果发现有这样一个文件夹,会在文件夹下搜索“ jvm.dll" 文件,如果找到这个文件, Eclipse 将加载并启动 JVM ,如果没有找到,会根据环境变量中指定的位置查找 JVM ,你也可以在命令行添加 "-vm" 参数或者安装目录下面的 configuration 文件夹下面的 config.ini 文件中指定特定的 JVM 的位置。
在找到JVM 并启动后,开始执行 org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar ,这个jar 文件中指定了运行的主类: org.eclipse.equinox.launcher.Main ,这个类负责初始化Eclipse 的运行环境,包括设置必要的系统属性、解析和处理 configuration/config.ini 配置文件、加载OSGI 框架的 Jar 文件、检查 Java 版本是否符合 Eclipse 最低运行要求、设置安全级别、显示启动的闪屏界面、最后通过加载 " org.eclipse.core.runtime.adaptor.EclipseStarter .class" 并调用它的 run (String[], Runnable) 方法来 启动Eclipse 平台 .
EclipseStarter 位于 org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar 这个插件中, 这个类不能被子类继承,也不应该被显式实例化,这个类中提供的方法都是静态方法。在这个类主要通过 run (String[], Runnable) 完成了Eclipse 平台的启动,而在这个方法块中的 startup (String[], Runnable) 负责初始化属性和配置、注入系统钩子(Hook) 、创建 OSGI 框架 、注册插件(Bundle) 事件、加载基础的插件、运行 OSGI 框架等一系列操作启动 Eclipse 平台。在 startup 方法执行完成后开始执行 run(Object ),在这个方法中会创建 EclipseAppLauncher 的实例并将其注册到OSGI 的服务系统中 , 接着调用 EclipseAppLauncher 的start 方法启动,读取插件扩展点信息,查找声明了 " org.eclipse.core.runtime.applications " 扩展点的实现类,调用它的Run 方法就开始启动 ,这基本上就是Eclipse 平台的基本操作。下面是 RCP 程序的类调用层次:
如果你已经阅读到这里,说明你确实很感兴趣, 想要通过文字来描述代码,很不容易,我建议你还是去阅读一下上面提到的那两个类: org.eclipse.equinox.launcher.Mai n 和 org.eclipse.core.runtime.adaptor.EclipseStarter , 它们的确设计的很精彩 ,很有学习的价值。
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1567OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20324.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2492摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1423随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1411随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1634OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12491、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1058不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1227registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1362在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1307osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1165软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3539将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1330Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11551、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1421Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13321、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1207一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1159当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1560OSGi Core定义了一个服务层,提供了一个Bundl ...
相关推荐
在日常开发过程中,Eclipse的启动速度可能对开发者的工作效率产生影响,尤其是当项目规模较大或者安装了众多插件时,启动时间可能会变得较长。"eclipse启动时间插件"就是针对这一问题设计的解决方案。 这个插件的...
### Eclipse启动参数设置详解 在开发环境中,Eclipse是一款非常受欢迎的集成开发环境(IDE),广泛应用于Java开发中。为了确保Eclipse能够高效稳定地运行,合理设置其启动参数至关重要。本文将详细介绍Eclipse启动...
有时,我们可能需要了解Eclipse启动所需的时间,这对于优化工作流程、排查性能问题或者对比不同配置下的启动效率非常有帮助。下面,我将详细介绍如何在Eclipse中显示启动时间,以及相关的插件知识。 首先,Eclipse...
然而,随着项目规模的增大和安装的插件增多,Eclipse的启动速度可能会变得较慢,影响开发效率。针对这个问题,我们可以利用特定的插件来优化Eclipse的启动速度。 标题中的"eclipse启动加速插件"指的是那些设计用于...
此插件可以帮你统计你的eclipse启动耗时 。 eclipse版本:4.x 使用方法:将此插件复制到eclipse目录下的plugin目录,重启eclipse
### Eclipse启动运行速度调优详解 #### 一、引言 Eclipse作为一款广泛使用的开源集成开发环境(IDE),在软件开发领域占有举足轻重的地位。然而,随着项目复杂度的提升及功能的丰富,Eclipse的启动及运行速度往往...
### Eclipse启动报错解决方案 #### 一、问题概述 在使用Eclipse开发工具时,可能会遇到启动失败的情况,其中一种常见的错误提示为:“Version 1.4.2_03 of the JVM not suitable for this product. Version 1.5 or...
### Eclipse强制启动详解 在日常开发工作中,Eclipse作为一款广泛使用的集成开发环境(IDE),为Java开发者提供了诸多便利。然而,在使用过程中难免会遇到一些问题,比如启动失败的情况。当遇到Eclipse无法正常启动...
### Eclipse 指定启动的虚拟机配置说明 在开发环境中,Eclipse 是一个非常流行的集成开发环境(IDE),广泛用于 Java 和其他多种语言的软件开发。为了确保 Eclipse 在特定的 Java 运行时环境中运行,用户需要正确...
Eclipse 是一个开放源代码的、可扩展的集成开发环境(IDE)。最初由 IBM 公司开发,后来由 Eclipse 基金会管理,Eclipse 支持多种编程语言,包括 Java、C/C++、Python 等,并且可以通过插件扩展支持更多语言和开发...
显示eclipse启动时间,eclipse调优必备。 来自:@bxyz1203 自己藏着用
测试Eclipse的启动时间插件,将插件放入eclipse的plugins中,重启eclipse即可
下载后放在dropins文件夹下或者plugins文件夹下,重启eclipse,弹出启动时间
eclipse下启动多个glassfish,内容包含glassfish,ant,构建domain的Build.xml文件
《Eclipse启动时间源码解析与Java虚拟机调优》 Eclipse作为一款广受欢迎的Java集成开发环境,其启动速度对于开发者来说至关重要。当我们打开Eclipse时,它需要加载大量的插件、配置以及工作空间信息,这都会影响...
1. **下载与安装Eclipse**:可以从Eclipse官网下载适用于Ubuntu的Eclipse IDE,解压到你希望的位置,例如`~/Downloads/eclipse`。 2. **启动Eclipse**:进入Eclipse的解压目录,找到`eclipse`可执行文件,双击或在...
从最简单的删除.metadata文件开始,逐步排查可能的问题,如依赖缺失、插件冲突、配置错误等。对于大型项目,虽然手动导入可能较为繁琐,但仍然是有效的解决手段。同时,保持Eclipse和相关工具的更新,以及良好的文件...