Eclipse插件开发培训_资源管理(进阶)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Runtime
Equinox(OSGI + Extension Point) ( ) JVM
GOCOM.PRIMETON.COM
Eclipse资源管理、Java io (nio)、文件系统 资源管理、 资源管理 、
Eclipse 工作区资源管理 变化跟踪 资源描述 状态持久化机制
Java IO/Java NIO
GOCOM.PRIMETON.CBiblioteka BaiduM
Eclipse资源管理:Builder 资源管理: 资源管理
编译类型(需要扎实理解) 编译类型(需要扎实理解) auto_build(本质上为increment_build) (本质上为 ) full_build (本质上为 本质上为increment_build) ) clean_build increment_build 编译状态 一般由full build建立,increment build更新 建立, 一般由 建立 更新 操作接口 IWorkspace.build IProject.build
Eclipse资源管理:资源状态-同步 资源管理:资源状态- 资源管理
造成资源不同步的主要原因 使用了java io或者 或者java nio进行了修改操作 使用了 或者 进行了修改操作 用不恰当的接口对ResourceInfo或者 或者FileInfo进 用不恰当的接口对 或者 进 行了直接修改 注意外部builder(一般不要乱用) (一般不要乱用) 注意外部
GOCOM.PRIMETON.COM
Eclipse资源管理:Builder编写注意点 资源管理: 资源管理 编写注意点
尽量保持较为统一的编译模型 建议: 建议:尽量保持一致的增量编译逻辑 注意和IWorkspaceRunable配合使用 配合使用 注意和 注意和其他builder的协调(尤其是JavaBuilder) 的协调(尤其是 注意和其他 的协调 ) Builder顺序配置 顺序配置 不同文件类型的编译处理
注册监听器
IWorkspace.addResourceChangeListener
移除监听器
IWorkspace. removeResourceChangeListener
GOCOM.PRIMETON.COM
编写resource change listener注意点 编写 注意点
确保Lightweight 和 Fast!!! 确保 不对IResourceDelta做缓存!!! 做缓存!!! 不对 做缓存 多个listener之间保持透明,不互相依赖 之间保持透明, 多个 之间保持透明 UI操作需要使用 操作需要使用Display.sync/async进行封装 操作需要使用 进行封装 性能优化点 – 配合 配合IResourceDeltaVisitor,提升过滤效率 , – IResourceDelta.findMember(IPath) ,快速查 找特定资源的变化 – IResourceChangeEvent.findMarkerDeltas , 快速收集Marker 快速收集 –…
GOCOM.PRIMETON.COM
Eclipse资源管理:Builder ※ Listener 资源管理: 资源管理
用途不同( 更后台, 更用户相关) 用途不同(listener更后台,builder更用户相关) 更后台 更用户相关 执行顺序不同( 无序, 有序) 执行顺序不同(listener无序,builder有序) 无序 有序 变化增量内容不同: 变化增量内容不同:
GOCOM.PRIMETON.COM
Eclipse资源管理: 后台Batching操作 资源管理: 资源管理 操作
IWorkspaceJob
将一个IWorkspaceRunnable防止于 防止于Job中运行 将一个 防止于 中运行 默认会启动一个新的后台、 默认会启动一个新的后台、异步线程 统一可以配置一个ISchedulingRule 统一可以配置一个
执行上下文和控制上下文
– builder在固定名称 在固定名称Job中执行,listener在随机线程执行 中执行, 在固定名称 中执行 在随机线程执行 – builder(Job)便于控制和协调,listener不便 ( )便于控制和协调, 不便
GOCOM.PRIMETON.COM
Eclipse资源管理:持久化 资源管理: 资源管理
GOCOM.PRIMETON.COM
Eclipse资源管理: Batching操作 资源管理: 资源管理 操作
IWorkspaceRunnable优点 优点
– 原则性批量操作,可以简单理解为只发一次事件 原则性批量操作, – 提高健壮性 – 可以进一步包装,提供丰富的用户交互性 可以进一步包装,
IWorkspaceRunnable注意点 注意点
后台机制, 后台机制,本次不做具体讲解
GOCOM.PRIMETON.COM
Eclipse资源管理:作业 资源管理: 资源管理
编写一个功能, 编写一个功能,每10分钟定时编译工作区中所有工程 分钟定时编译工作区中所有工程 编写一个Job,编译完成时执行,提示: ,编译完成时执行,提示: 编写一个 Job监听 监听 Job协调(看看JobManager) Job协调(看看JobManager) 协调
A操作系统文件系统
B操作系统文件系统
GOCOM.PRIMETON.COM
Eclipse资源管理任务和作用 资源管理任务和作用
Eclipse资源管理的主要任务 资源管理的主要任务
Change tracking :变化跟踪 Resource metadata:资源描述信息 : State management:状态持久化 :
– Full save:全面保存(工作区启动或者退出) :全面保存(工作区启动或者退出) – Snapshot:只保存关键性的需要复杂计算的信息 :
Eclipse资源管理的重大作用 资源管理的重大作用
基础之上提供了完善的状态管理、 在Java IO基础之上提供了完善的状态管理、变化跟踪 基础之上提供了完善的状态管理 为进一步建立特定运行时模型提供了重要基础
Job
Eclipse线程支持 线程支持 ISchedulingRule
作用:Job协调,冲突控制 协调, 作用: 协调 要脱离resource management模块理解 要脱离 模块理解 注意锁定范围, 注意锁定范围,参照synchronized关键字的用法 关键字的用法
GOCOM.PRIMETON.COM
GOCOM.PRIMETON.COM
Eclipse资源管理:资源状态-同步 资源管理:资源状态- 资源管理
同步检查 文件级别 – 时间戳的比较 目录级别检查 – 较为宽松,因为不同操作系统自身对文件夹时间 较为宽松, 戳的支持力度不同 工程级别检查 – 基本上判断是否可以访问
GOCOM.PRIMETON.COM
GOCOM.PRIMETON.COM
Eclipse资源管理:Batching相关装饰接口 资源管理: 资源管理 相关装饰接口
IWorkspaceJob
将一个IWorkspaceRunnable防止于 防止于Job中运行 将一个 防止于 中运行
WorkspaceModifyOperation
包装一个IWorkspaceRunnable在UI上下文中运行 在 上下文中运行 包装一个
Eclipse插件开发培训-资源管理(进阶) 插件开发培训-资源管理(进阶) 插件开发培训
朱兴 2008-07-26 MSN: zhu_xing@live.cn
© 普元软件
GOCOM.PRIMETON.COM
Eclipse平台(开发者视角) 平台(开发者视角) 平台
Workbench
Resource
GOCOM.PRIMETON.COM
Eclipse资源管理:资源描述 资源管理: 资源管理
工作区层面( 工作区层面(ResourceInfo) ) Workspace. updateModificationStamp 文件系统层面( 文件系统层面(FileInfo) )
FileSystemResourceManager. updateLocalSync
– JDT Element Model –…
GOCOM.PRIMETON.COM
Eclipse 2.X中的资源管理 中的资源管理
GOCOM.PRIMETON.COM
Eclipse 3.X中的资源管理 中的资源管理
GOCOM.PRIMETON.COM
Eclipse Runtime:Job、ISchedulingRule : 、
资源变化监听器:后台运行 资源变化监听器: Builder:处理编译,和用户有交互 :处理编译,
GOCOM.PRIMETON.COM
Eclipse资源管理:资源变化监听器 资源管理: 资源管理
事件处理核心接口
IResourceChangeListener IResourceDelta(资源变化增量) (资源变化增量) IResourceDeltaVisitor(增量访问者) (增量访问者)
IProgressService
一般是执行一个WorkspaceModifyOperation , 一般是执行一个 提供更多交互,例如取消、 提供更多交互,例如取消、进度显示等
GOCOM.PRIMETON.COM
Eclipse资源管理-变化跟踪机制 资源管理- 资源管理
Eclipse的资源管理模块中提供了资源变化跟 的资源管理模块中提供了资源变化跟 踪机制,允许用户在变化后执行自定义操作, 踪机制,允许用户在变化后执行自定义操作, 两种机制目的不同,包括: 两种机制目的不同,包括:
– 不要误认为会启动一个新的线程 – UI操作包装在 操作包装在Display.sync或Display.async中 操作包装在 或 中 – 注意和IWorkspaceJob的适用场景区别 注意和 的适用场景区别 – 注意和 注意和ISchedulingRule的配合使用,效率 的配合使用, 的配合使用
– listener delta描述了整个工作区,builder delta描述工程 描述了整个工作区, 描述了整个工作区 描述工程 范围(工程上次编译之后的资源变化信息) 范围(工程上次编译之后的资源变化信息) – listener delta中持有 中持有marker信息和同步信息,builder 信息和同步信息, 中持有 信息和同步信息 delta中没有(主要是性能考虑!!!) 中没有( 中没有 主要是性能考虑!!!)
Eclipse资源管理: Batching操作 资源管理: 资源管理 操作
IWorkspaceRunnable
创建IWorkspaceRunnable实现 实现 创建 执行runnable 执行 – IWorkspace.run(IWorkspaceRunnable action, IProgressMonitor monitor) Eclipse 3.0之前执行运行方式,锁住整个工作 之前执行运行方式, 之前执行运行方式 区 – IWorkspace.run(IWorkspaceRunnable action, ISchedulingRule rule, int flags, IProgressMonitor monitor) 更丰富参数配置,更好性能,协调冲突 更丰富参数配置,更好性能,
相关文档
最新文档