写点什么

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

2010 年 8 月 17 日

上周,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 的时代,有很多独立的框架(类似 <a href="http://help.eclipse.org/helios/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/Platform.html">Platform</a>,``<a href="http://help.eclipse.org/helios/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/PlatformUI.html">PlatformUI</a> IDE )被当作“神器( 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 是通过类似 XAML XUL 的样式来定义的。不仅易于维护,而且意味着渲染引擎可以处理界面结构──从而可以对 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 Vogel Tom Schindl 编写的教程已经完成了。

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

2010 年 8 月 17 日 09:492216

评论

发布
暂无评论
发现更多内容

获奖公布丨程序员的七夕骚话该怎么讲?留下你爱的表白~

InfoQ写作平台官方

写作平台 话题讨论 七夕 活动专区

我一个普通程序员,光靠GitHub打赏就年入70万,要不你也试试

程序员生活志

区块链最激动人心的未来是什么

CECBC区块链专委会

大数据 区块链技术

必看的数据库使用规范

Simon

MySQL 技术规范

200 行代码就能骗人的首个聊天机器人

程序员生活志

编程 机器人

vivo web service:亿万级规模web服务引擎架构

vivo互联网技术

架构 Web 浏览器

机器学习算法之——隐马尔可夫模型原理详解及Python实现

迈微AI研发社

Python 学习 算法 隐马尔可夫模型 HMM

给路灯按上“电话卡”,从此不仅只照明还给管理员“打电话”

华为云开发者社区

人工智能 物联网 物联网化 华为云 路灯

机器学习 | 卷积神经网络详解(二)——自己手写一个卷积神经网络

迈微AI研发社

Python 神经网络 学习 卷积神经网络 CNN

Dynamodb 常见命令操作

麦迪文

数据库 AWS Data dynamodb

构建统一监管制度 加快数据要素立法修法

CECBC区块链专委会

区块链 金融 区块链数字经济

XSKY新一代分布式文件系统XGFS揭秘——元数据服务

XSKY融合存储

小小的代码分支模型如何撬动研发过程管理

陈晨

前端科普系列(1):前端简史

vivo互联网技术

前端 Web

如何优雅的备份账号相关信息

Simon

MySQL

赋能云端管理 激发智能边缘 英特尔发布超能云终端解决方案

飞天鱼2017

Git 常用命令总结

迷羊

git

一.操作系统概述

Winter

操作系统

InnoDB 事务加锁分析

vivo互联网技术

MySQL 数据库 innodb

Java基础知识篇(2020最新版)准备放进收藏夹吃灰的勿进

简爱W

Java

Linux-技术专题-buffer/cache理解

李浩宇/Alex

牧羊少年奇幻之旅

W

读书笔记 感悟

【杭州】阿里巴巴搜索推荐事业部开发岗位招聘

iSausage

Java 阿里巴巴 推荐 搜索

区块链加未来3至5年可以预见 上链将成为常态

CECBC区块链专委会

区块链 金融 数字时代

大数据技术思想入门(一):分布式存储特点

抖码算法

Java 大数据 hadoop 分布式

机器学习算法之——逻辑回归(Logistic Regression)原理详解及Python实现

迈微AI研发社

学习 算法 逻辑回归 正则化 梯度下降

浅谈备受开发者好评的.NET core敏捷开发工具,讲讲LEARUN工作流引擎

Philips

MySQL5.7应当注意的参数

Simon

MySQL 参数

从零开始的深度学习实用教程 | PyTorch官方推荐

迈微AI研发社

人工智能 学习 算法 教程 PyTorch

2020中国RPA指数测评报告|T研究

人称T客

机器学习算法之——卷积神经网络(CNN)原理讲解

迈微AI研发社

神经网络 学习 算法 CNN

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

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