Inside Eclipse l Inside Eclipse 1 Eclipse 2
- Slides: 88
Inside Eclipse l 作者: 王磊
Inside Eclipse 目录 1 Eclipse的演化之路 2 Eclipse的架构设计 3 打造基于Eclipse的开发 具 4 Eclipse开发技巧及FAQ 3/6/2021 2
Eclipse的演化之路 l Eclipse的历史及版本变化 l Eclipse的架构调整 l OSGi的引入 l RCP和RSP l Eclipse的家庭体系 3/6/2021 3
Eclipse的历史 l IBM捐献代码 l 2001年发布Eclipse 1. 0 l 2002年发布Eclipse 2. 0 l 2004年发布Eclipse 3. 0 3/6/2021 4
Eclipse 从IDE和Platform l IDE u Netbeans u JBuilder u Idea u Eclipse 1. x, 2. x l Platform u Eclipse 3. x l Eclipse不再获得Jolt大奖就是因为它不再 是一个IDE,而是一个Platform 3/6/2021 6
对Platform的定义 l 框架(SWT, GEF等) l 开发 具(JDT, CDT, PDE) l 管控和服务(OSGi, Runtime) 3/6/2021 7
Eclipse 2. X的架构 3/6/2021 8
Eclipse 3. X的架构 3/6/2021 9
Eclipse 2. x-Eclipse 3. x的演化 l 引入OSGi作为Kernal l 剥离资源,即将Resources插件移出核心 l 基于SWT, Workbench建立RCP框架 l 基于Web Server建立RSP框架 3/6/2021 10
向左走RCP 3/6/2021 11
NSCA RCP结构图 3/6/2021 12
RCP的结构 l OSGi: Bundle管理,特别是动态加载 l Runtime: 基于插件机制提供功能 l SWT: 本地UI控件 l JFace: 以MVC结构来访问SWT l Workbench: 灵活,通用,方便的UI 作台 l Deploy&Update: JNLP, Update Manager 3/6/2021 13
RCP的特性 l OSGI 服务化,动态化 l Plugin 组件化 l Java 跨平台 l SWT JFace 本地UI l PDE 易开发 3/6/2021 14
向右看RSP 3/6/2021 15
未来 l SWT将支持更多的Render方式,如Adobe 的AIR,Html等, l RAP (Rich Ajax Platform) 就是一个RCP 和RSP统一的例子 3/6/2021 17
Eclipse RAP平台演示 3/6/2021 18
OSGi基于模块和服务的结构 Service Contract Component provides uses 3/6/2021 21
OSGi的结构图 l OSGi Framework Overview u Security Layer u Module Layer u Life Cycle Layer u Service Layer u Actual Services 3/6/2021 22
Eclipse对MANIFEST. MF的扩展 l Eclipse-Buddy. Policy l Export-Package l x-internal l x-friends l Eclipse-Auto. Start 3/6/2021 26
Eclipse Runtime l OSGi R 4的实现Equinox l Plugin Runtime l Extension Point l Extension 3/6/2021 27
Platform Runtime org. eclipse. core. runtime l OSGi l plug-in runtime l runtime environment l Jobs 3/6/2021 28
Eclipse家族 l RCP: Rich Client Platform l RSP: Rich Server Platform l RAP: Rich Ajax Platform l TPTP: Test and Performance Tools Platform 3/6/2021 29
Inside Eclipse 目录 1 Eclipse的演化之路 2 Eclipse的架构设计 3 打造基于Eclipse的开发 具 4 Eclipse开发技巧及FAQ 3/6/2021 30
Eclipse架构图 3/6/2021 33
OSGi的启动机制 3/6/2021 36
为什么要有扩展点和扩展 l Plugin-插座: 有输入和输出 l OSGi Bundle: 相当于黑盒 l Extension-Point和Extension将两者进行 结合 3/6/2021 Plugin Bundle 38
常见的扩展点 l org. eclipse. ui. views,提供各种视图 l org. eclipse. ui. editors 提供各种文件编辑 器 l org. eclipse. ui. new. Wizards 提供新建向导 l org. eclipse. ui. commands 可以声明各种 Action 3/6/2021 40
扩展实现(Extension) l 实现功能 org. eclipse. ui. navigator. viewer l 提供资源 org. eclipse. core. runtime. content. Types l 改变行为 org. eclipse. core. runtime. adapters 3/6/2021 41
常见的扩展实现 l org. eclipse. ui. navigator. viewer 资源管理器 l org. eclipse. ui. editors Java编辑器 各种可视化设计器 l org. eclipse. debug. core. launchers Debug 3/6/2021 42
Eclipse设计模式--Adapter l 给现有的类型添加行为,如将IFile转成IJava. Element 3/6/2021 43
Eclipse设计模式--Adapter l IAdaptable是表示自身有转换能力 l IAdapt. Factory表示支持某种对象的转换 3/6/2021 44
Eclipse设计模式--Adapter 3/6/2021 45
Inside Eclipse 目录 1 Eclipse的演化之路 2 Eclipse的架构设计 3 打造基于Eclipse的开发 具 4 Eclipse开发技巧及FAQ 3/6/2021 48
分析你的程序类型 l IDE l RCP l RSP 3/6/2021 50
打造基于Eclipse的开发 具-资源篇 l 资源的分类: Project, Folder, File l 资源改变事件: IResource. Delta l 资源管理器: org. eclipse. ui. navigator. viewer CNF框架 l 资源与模型间的关系 3/6/2021 51
打造基于Eclipse的开发 具-编译篇 <build. Spec> <build. Command> <name>org. eclipse. jdt. core. javabuilder</name> <arguments> </build. Command> <name>org. eclipse. pde. Manifest. Builder</name> <arguments> </build. Command> <name>org. eclipse. pde. Schema. Builder</name> <arguments> </build. Command> </build. Spec> <natures> <nature>org. eclipse. pde. Plugin. Nature</nature> <nature>org. eclipse. jdt. core. javanature</nature> </natures> 3/6/2021 53
打造基于Eclipse的开发 具-UI 3/6/2021 61
打造基于Eclipse的开发 具-调试 l 基于Eclipse的扩展点 org. eclipse. debug. core. launchers l JVMTI l Http通信 3/6/2021 67
Inside Eclipse 目录 1 Eclipse的演化之路 2 Eclipse的架构设计 3 打造基于Eclipse的开发 具 4 Eclipse开发技巧及FAQ 3/6/2021 75
规划你的包 l 问题: u 如何定义包的名称以及各个包中放置的内容 l 方案: u 请保持插件名称与顶层包名一致 u 根据功能定义包名 u com. primeton. studio. workflow. core u com. primeton. studio. workflow. ui u com. primeton. studio. workflow. tests u com. primeton. studio. workflow. help 3/6/2021 80
避免类加载失败,方案二 l 方案: u 使用Buddy Classloading boot ext app Java boot classloader Standard Java extension classloader Standard Java application classloader parent Standard Parent’s classloader. By default, the Java application classloader dependent All plug-ins that are dependent on the current registered buddy 3/6/2021 plug-in Only plug-ins that have explicitly registered themselves as a 83
Buddy Classloading的例子 l Manifest of com. primeton. studio. host u Eclipse-Buddy. Policy: registered l Manifest of com. primeton. studio. buddy u Eclipse-Register. Buddy: com. primeton. studio. host 3/6/2021 84
3/6/2021 88
- Differentiate between lunar eclipse and solar eclipse
- Solar lunar exo
- Eclipse busway
- Jprobe eclipse plugin
- Eclipse
- Solar eclipse chapter 10
- Eclipse rcp tutorial
- Spring tide
- Java workflow tooling
- Javafx eclipse
- Eclipse rcp development
- Eclipse cobol editor
- Eclipse skróty klawiszowe
- Eclipse
- Adt plugin for eclipse
- Toad extension for eclipse alternative
- Eclipse 100
- How eclipse happen
- Eclipse generate jpa entities from database
- Eclipse billing software tutorial
- Enem a figura abaixo mostra um eclipse solar
- Eclipse web tools platform
- What is eclipse
- Eclipse web tools platform
- Eclipse papyrus
- Crear workspace eclipse
- Partial lunar eclipse
- Eclipse conditional breakpoint
- Eclipse process framework
- Eclipse android programlama
- Eclipse solar 1998
- Apache harmony
- Eclipse penumbral
- Eclipse process framework
- Eclipse system.out.println
- Jav a cup
- Walking heart rate
- Callisto discovery site
- Eclipse process framework tutorial
- Jml eclipse
- Eclipse tide
- Babel eclipse
- Interface graphique java eclipse
- Whats an eclipse
- Eclipse linux kernel
- Eclipse breakpoint conditional
- Eclipse tptp tutorial
- Ant eclipse plugin
- Pckwise
- Denudacion y eclipse
- Eclipse xwt
- Java lecture
- Tomcat ee
- Junit tutorial eclipse
- Embedded linux development using eclipse
- Sdcc eclipse
- Centripital acceleration
- Brue plug
- Difference between lunar and solar eclipse
- Dua for lunar eclipse in islam
- Eclipse kura
- Peugeot 601 eclipse
- Carl sagan lunar eclipse
- Install wtp in eclipse
- What is magicdraw
- Eclipse brainpop
- The eclipse by james fenimore cooper summary
- Eclipse persistence services
- Java activity diagram
- Getting started with eclipse
- Eclipse rcp
- Eclipse plugin
- 792015
- Pinhole camera for solar eclipse
- Tides and eclipses
- Oracle eclipse plugin
- Doxygen eclipse
- Eclipse rcp 3 tutorial
- What is axmp
- What is eclipse
- Dev taye
- Eclipse project to github
- Station driver
- Eclipse burner training
- Er modeler
- Swing layout
- Modelo eclipse
- Eclipse annotation processing
- Add unimplemented methods eclipse shortcut