郑重声明:本文是个人的笔记,不一定适用阁下,不过并不介意你阅读。
我一直对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
,
它们的确设计的很精彩
,很有学习的价值。
分享到:
相关推荐
在日常开发过程中,Eclipse的启动速度可能对开发者的工作效率产生影响,尤其是当项目规模较大或者安装了众多插件时,启动时间可能会变得较长。"eclipse启动时间插件"就是针对这一问题设计的解决方案。 这个插件的...
### Eclipse启动参数设置详解 在开发环境中,Eclipse是一款非常受欢迎的集成开发环境(IDE),广泛应用于Java开发中。为了确保Eclipse能够高效稳定地运行,合理设置其启动参数至关重要。本文将详细介绍Eclipse启动...
注意,从JDK 8开始,永久代已被元空间(Metaspace)所替代。 - **-Xms64M**:设置JVM启动时的最小堆内存为64MB。 - **-Xmx256M**:设置JVM的最大堆内存为256MB。这个值应根据实际需求进行调整,过小可能会影响程序...
有时,我们可能需要了解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启动时间,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和相关工具的更新,以及良好的文件...