BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

针对早期使用者的Eclipse 4.0 SDK发布

| 作者 Alex Blewitt 关注 4 他的粉丝 ,译者 池建强 关注 4 他的粉丝 发布于 2010年8月18日. 估计阅读时间: 7 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

上周,Eclipse组织发布了面向早期开发者的Eclipse4.0 SDK。这次发布与已经正式发布的Eclipse Helios没什么关系。正相反,这次发布的Eclipse是个预览版,我们可以从中看出未来Eclipse是什么样子。

下一次同步发布的Eclipse(代号为Indigo,或叫Eclipse3.7)仍然会基于现有的3.x系列代码,但Eclipse4.1也会同时构建。那么为什么今年和明年要同时维护两个公共版本呢?在项目的首页是这样描述的: 

Eclipse SDK 4.0是下一代构建Eclipse工具和富客户端桌面应用的平台。对于开发者来说,新版本的发布让开发和装配应用变得更容易,包括构建基于Eclipse平台的工具。

本次4.0的发布主要面向早期开发者,他们想测试Eclipse向后的兼容性,移植插件或RCP应用。我们期待Eclipse的最终用户将采用Eclipse 4.x的未来版本。 

虽然Eclipse 4.0(之前称为E4)已经开发了两年时间,但只有在2009年7月发布了一个E4 0.9的预览版。E4的原始白皮书描述了针对Eclipse平台本身一些反思。它描绘了Eclipse 4.0作为第三代Eclipse产品开发平台的场景:

  1. 第一代:Eclipse1.0到2.1。“主要是一个集成平台;其重要作用是聚集不同作者不同用途的插件,并通过组合的方式将它们整合为一个通用的具备一致性和连贯性终端用户体验的应用系统”
  2. 第二代:Eclipse 3.x。“基于 OGSi运行时环境,Eclipse成为一个更为强大的、通用的、基于组件机制的应用程序框架,其应用范围包括小的嵌入式应用到大规模富客户端应用和Web服务器”
  3. 第三代:Eclipse 4.x。“减少附加依赖和假设,扩大语言的集合并让更多的技术被无缝集成进来,这使得编写易于复用而且够适应广泛应用和环境的组件变得越来越简单了”

虽然OSGi技术为Eclipse应用系统提供了很好的服务,但很多Eclipse应用没有很好的表现出OSGi的特征。这是由于历史原因引起的。在没有OSGi的时代,有很多独立的框架(类似 PlatformPlatformUIIDE)被当作“神器(God Objects)”。这不仅是个面向对象的反模式,而且不能很好的适应OSGi(动态)的服务

Eclipse 4.0通过使用依赖注入(又叫DI)的方式改进了上述情况,就像非常普及的Sping框架一样,让服务变得按需应用。甚至可以通过  javax.inject 的注解进行动态注入,与OSGi的声明服务(又叫DS)完全解偶,提供了OSGi服务自动编码,例如

import javax.inject.Inject;
import org.eclipse.e4.core.services.Logger;
import org.osgi.service.packageadmin.PackageAdmin;

public class Example {
  @Inject private Logger logger;
  @Inject private PackageAdmin packageAdmin;
}

Eclipse 4.0平台将采用自动注入服务的方式,从代码外层进行控制使用。(如果不需要操作该服务,那么可以使用@Optional对其进行标注。)这使得现有组件与基于OSGi组件化和服务的应用系统集成变得更容易。一系列Eclipse应用服务已经可用了。

Eclipse 4.x的另一个重大改进是UI的构建方式。在Eclipse 3.x里,用户界面的构建是命令式的,通过手工代码生成SWT(或JFace)微件,并把它们摆放到屏幕上。虽然说SWT在平台特性上已经比基于Swing的用户界面好了很多,包括渲染性能和行为,但人们一直对使用这个工具包感觉很不安。一部分原因是,为了释放系统资源,SWT的UI程序执行完成时必须调用dispose()方法。虽然看上去并不难,但是由于其不符合java规范,经常会被遗忘。此外,在类似Eclipse的托管环境中,如果某个有缺陷的插件出现资源泄露的情况,会导致整个系统无法正常运转。虽然有工具来检查是否有资源泄露(例如sleak),但是我们还是希望能够不用担心这些问题。

最近被Google收购的Instantiations公司有个获奖产品叫做Window Builder Pro,是一个RCP程序的设计器,可以通过拖拽组件的方式创建UI界面。这种方式不仅仅是比手工编写代码更容易,而且管理内存可以通过生成的代码来完成,编码人员不用再担心了。然而,随着这次收购,这些产品不在可用了──尽管我们可以从GWT的博客描述中期待在未来几个月GWT设计器有全新的表现。

那么这些和Eclipse 4.x有什么关系呢?因为Eclipse 4.x另外的重要变化就是声明式的用户界面开发。与HTML很像,UI是声明式而不是命令式,Eclipse 4.x中的UI是通过类似XAMLXUL的样式来定义的。不仅易于维护,而且意味着渲染引擎可以处理界面结构──从而可以对UI微件进行布局。最后,它还可以通过代码本身定义显示顺序,这就意味着可以通过外部代码改变应用系统的主题。

根据HTML模式,我们可以用CSS来定义UI的样式。这意味Web前端应用与桌面应用越来越相近了,可以基于相同的底层声明式表现层生成不同的界面风格。

最终希望达成的效果是,通过Eclipse的模型框架(EMF)可以方便的描述应用、视图和服务。UI的编写可以通过模型化的微件和视图来实现,这意味着可以预先创建或生成模型并进行自我校验,还可以在运行时维护模型,类似JavaScript可以操作Web页面的DOM一样。

正如Ian Skerrett指出,这是新平台旅程的开始。虽然Eclipse 4.0是针对早期开发者的(已经知道存在不少问题),但其目标是在Eclipse3.x平台上的插件经过微小的改动就可以移植到Eclipse4.x上。Mike Wilson在EclipseZone上有个访谈,内容是关于Eclipse 4.0的,主要探讨了在Eclipse 4.0中什么才是重要的,同时Lars VogelTom Schindl编写的教程已经完成了。

查看英文原文:Eclipse 4.0 Early Adopters SDK Released

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

声明式UI设计让人期待啊 by Shooter Evan

以前学过点SWT,不过也没做出啥东西来,一直都是搞web,哎。

Re: 声明式UI设计让人期待啊 by Vickey Rockey

确实,如果以后开发客户端程序也可以跟WEB一样方便,那是多么好的事情!

Re: 声明式UI设计让人期待啊 by chi jacky

Eclipse4的确实让人期待,尝试了一下,没仔细研究,没看出DI的特性和声明时UI

OSGi,依赖注入和声明时UI应该是其4.x系列的核心和创新。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT