`
snoopy7713
  • 浏览: 1149070 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

Eclipse 启动,从EclipseStarter开始

    博客分类:
  • OSGi
阅读更多

郑重声明:本文是个人的笔记,不一定适用阁下,不过并不介意你阅读。

    我一直对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 程序的类调用层次:

http://www.blogjava.net/images/blogjava_net/vwpolo/eclipsestarter-intro/rcp-callhierarchy.jpg

   如果你已经阅读到这里,说明你确实很感兴趣, 想要通过文字来描述代码,很不容易,我建议你还是去阅读一下上面提到的那两个类: org.eclipse.equinox.launcher.Mai n org.eclipse.core.runtime.adaptor.EclipseStarter 它们的确设计的很精彩 ,很有学习的价值。

分享到:
评论

相关推荐

    eclipse启动时间插件

    在日常开发过程中,Eclipse的启动速度可能对开发者的工作效率产生影响,尤其是当项目规模较大或者安装了众多插件时,启动时间可能会变得较长。"eclipse启动时间插件"就是针对这一问题设计的解决方案。 这个插件的...

    Eclipse启动参数设置

    ### Eclipse启动参数设置详解 在开发环境中,Eclipse是一款非常受欢迎的集成开发环境(IDE),广泛应用于Java开发中。为了确保Eclipse能够高效稳定地运行,合理设置其启动参数至关重要。本文将详细介绍Eclipse启动...

    显示eclipse的启动时间

    有时,我们可能需要了解Eclipse启动所需的时间,这对于优化工作流程、排查性能问题或者对比不同配置下的启动效率非常有帮助。下面,我将详细介绍如何在Eclipse中显示启动时间,以及相关的插件知识。 首先,Eclipse...

    eclipse启动加速插件

    然而,随着项目规模的增大和安装的插件增多,Eclipse的启动速度可能会变得较慢,影响开发效率。针对这个问题,我们可以利用特定的插件来优化Eclipse的启动速度。 标题中的"eclipse启动加速插件"指的是那些设计用于...

    Eclipse启动计时插件

    此插件可以帮你统计你的eclipse启动耗时 。 eclipse版本:4.x 使用方法:将此插件复制到eclipse目录下的plugin目录,重启eclipse

    Eclipse启动运行速度调优

    ### Eclipse启动运行速度调优详解 #### 一、引言 Eclipse作为一款广泛使用的开源集成开发环境(IDE),在软件开发领域占有举足轻重的地位。然而,随着项目复杂度的提升及功能的丰富,Eclipse的启动及运行速度往往...

    eclipse报错 eclipse启动报错解决方法

    ### Eclipse启动报错解决方案 #### 一、问题概述 在使用Eclipse开发工具时,可能会遇到启动失败的情况,其中一种常见的错误提示为:“Version 1.4.2_03 of the JVM not suitable for this product. Version 1.5 or...

    eclipse强制启动

    ### Eclipse强制启动详解 在日常开发工作中,Eclipse作为一款广泛使用的集成开发环境(IDE),为Java开发者提供了诸多便利。然而,在使用过程中难免会遇到一些问题,比如启动失败的情况。当遇到Eclipse无法正常启动...

    eclipse指定启动的虚拟机配置说明

    ### Eclipse 指定启动的虚拟机配置说明 在开发环境中,Eclipse 是一个非常流行的集成开发环境(IDE),广泛用于 Java 和其他多种语言的软件开发。为了确保 Eclipse 在特定的 Java 运行时环境中运行,用户需要正确...

    Eclipse启动故障全攻略:"Eclipse.ini配置错误"深度解析与修复

    Eclipse 是一个开放源代码的、可扩展的集成开发环境(IDE)。最初由 IBM 公司开发,后来由 Eclipse 基金会管理,Eclipse 支持多种编程语言,包括 Java、C/C++、Python 等,并且可以通过插件扩展支持更多语言和开发...

    eclipse插件 eclipse启动时间

    显示eclipse启动时间,eclipse调优必备。 来自:@bxyz1203 自己藏着用

    测试Eclipse的启动时间插件

    测试Eclipse的启动时间插件,将插件放入eclipse的plugins中,重启eclipse即可

    eclipse启动时显示启动时间

    下载后放在dropins文件夹下或者plugins文件夹下,重启eclipse,弹出启动时间

    eclipse启动多个glassfish资源文件3

    eclipse下启动多个glassfish,内容包含glassfish,ant,构建domain的Build.xml文件

    eclipse启动时间源码

    《Eclipse启动时间源码解析与Java虚拟机调优》 Eclipse作为一款广受欢迎的Java集成开发环境,其启动速度对于开发者来说至关重要。当我们打开Eclipse时,它需要加载大量的插件、配置以及工作空间信息,这都会影响...

    ubuntu_eclipse启动设置,jdk环境变量,其他设置

    1. **下载与安装Eclipse**:可以从Eclipse官网下载适用于Ubuntu的Eclipse IDE,解压到你希望的位置,例如`~/Downloads/eclipse`。 2. **启动Eclipse**:进入Eclipse的解压目录,找到`eclipse`可执行文件,双击或在...

    Eclipse无法启动解决方法

    从最简单的删除.metadata文件开始,逐步排查可能的问题,如依赖缺失、插件冲突、配置错误等。对于大型项目,虽然手动导入可能较为繁琐,但仍然是有效的解决手段。同时,保持Eclipse和相关工具的更新,以及良好的文件...

Global site tag (gtag.js) - Google Analytics