-
Recent Posts
Archives
Categories
Blogroll
Meta
Category Archives: Eclipse
Eclipse平台插件开发者指南之一 Eclipse是什么
Eclipse 是一个平台。目前它已经被设计成用于建造集成的Web和桌面应用的工具。在设计时,平台并没有给最终用户提供很多的功能。这个平台的价值在于,它能让用户以插件的方式快速开发可集成的功能部件。 Eclipse提供一套常用的UI模型,支持多种操作系统。按照Eclipse提供的可移植API编写的插件,不需要做任何修改,就可以在所有支持的操作系统上运行。 Eclipse 的核心,一个能够动态发现,装载,和运行插件的架构。平台负责发现和运行代码。UI提供一个标准的引导用户使用平台的模型。插件则专注于小数量的任务上。是哪种类型的任务呢?定义,测试,动画,发布,编译,调试,绘图…一切只要你想得到。 开放的架构 Eclipse 提供一个开放的架构,其他的开发团队可以在他们专长的领域里面给这个平台开发插件。如,仓库专家建造后端,使用方面(UE)的专家建造前端。可以增加重要的新功能部件和层次,而不会与其他的工具冲突。 从用户的角度来看,Eclipse 平台使用一个共同的工作台的模型。你可以将开发的工具通过它预先定义的钩子(extension points)插入到工作台中。 这个平台是由插件以层次的方式建成,每一个插件定义了更低层次的插件的扩展点的扩展,也可为更高层次的插件自定义扩展点。这种扩展模式可以让开发者给基础工具平台增加不同的功能。每一个工具生产出来的人工品,比如文件和其他的数据,由一个共同的平台资源模型来协调。 插件的开发者可以从这个架构中获得很多。这个平台管理多种不同的运行时环境,例如不同的操作系统或者工作组服务器环境。插件开发者能够专心完成他们的任务,不用担心有关集成的问题。 平台架构 Eclipse平台本身就是一个子系统,在由一个或者多个插件中实现。这个子系统在一个小型的运行时引擎的上面建造。下图做一个简单的描绘。拼凑成这个子系统的插件为给平台增加行为, 而定义了多个扩展点。下表描述这个平台的主要运行时组件,由一个或者多个插件实现。平台运行时 定义了扩展点与插件模型。动态发现插件和在一个平台注册表中维护插件及其扩展点的信息。当需要响应用户对平台的操作时,插件被启动。运行时使用OSGi框架实现。资源管理(workspace) 为资源的创建和管理,定义的API。这些资源包括项目、文件和目录,都是由工具生成并且保存在文件系统里。工作台UI 实现用户纵览平台的座舱。定义了扩展点,为增加UI组件,比如 views 或者 菜单 actions。提供附加的工具(JFace和SWT)来建造用户界面。UI服务是结构化的,因此UI插件的子集能够被用于建造RCA,独立与资源管理和workspace模型。以IDE为中心的插件为纵览和操纵资源,定义了另外的功能。帮助系统 像书籍一般,给插件来定义扩展点,能够提供帮助或者其他的文档。团队支持 为管理和版本化资源,定义了一个团队编程模型。调试支持 定义了一个语言独立的调试模型和UI类,为的是建造调试器和运行器。其他工具 其他的插件,比如支持搜索和资源比较,使用XML配置文件执行建造,从服务器那里动态升级平台。 盒子之外 离开了Web,基础平台就是一个IDE,没有什么特别的。 它是一个检查平台的最终功能的插件。这就是为什么Eclipse SDK和额外的插件一起装运,来增加SDK的功能。 你的插件可以提供这样的支持,编辑和操作额外的资源类型,例如Java文件、C程序、Word文档、HTML页面和JSP文件。 挑战 我们要求达到一个这样的集成水准,魔法般将独立的开发工具揉合到一个设计套件中。已有的工具可以足够简单的迁移到平台中,不需要强塞硬撬。 平台应该是开放的,用户可以选择工具,并且他们知道供应商在底层平台的开发过程中说了些什么。 它应该足够简单,容易理解,足够强壮,无须额外的粘和剂就支持集成。 提供工具,将平凡常用普通的任务自动化。足够稳定,让业界强壮的工具在其上面建造。非常有用,平台的开发者可以使用它来建造它本身。 上面都是Eclipse的目标。这个手册将帮助你检查Eclipse如何去实现这些想法。
Posted in Eclipse
Comments Off
Eclipse GUI 线程方面的问题
当做 widget toolkit 方面的工作时,理解底下的线程模型很重要,它用来读取和分发平台的GUI事件。当使用Java线程时,UI线程的实现影响到应用必须遵循的规则。 本地时间分发 操作系统将时间分发给应用程序 SWT UI 线程 UI有自己的独立的线程,Display 里创建。 应用的主线程负责负责处理 event loop,SWT 应用一般都有下面对结构: public static void main(String[] args){ Display display = new Display(); Shell shell = new Shell(display); shell.open(); // start the event loop. We stop when th … Continue reading
Posted in Eclipse
Leave a comment