2010 年 InfoQ 中文站 Java 社区回顾:让 Java 飞一会

  • 崔康

2011 年 1 月 9 日

话题:Java编程语言Google社区ApacheDevOps语言 & 开发架构文化 & 方法

纵观 2010 年,Java 世界可谓变化万千,有关 Java 归属、走向、领袖去留、专利权等等问题在社区中引起了巨大反响,给人一种“飘忽不定”的感觉。InfoQ 密切关注其发展动态,现将中文站 Java 社区在 2010 年的精华内容整理出来,让读者一睹为快。

Java 动态

2010 年 1 月底,在经过了将近 9 个月的漫长等待后,Oracle 终于获得欧盟的批准成功完成对 Sun 的收购。Oracle 宣布了对 Sun 技术与平台的未来规划。简单概括为:Oracle 计划集成 Sun HotSpot 与 Oracle JRockit Java 虚拟机,打算“振兴”Java 开发者社区并将 Java 编程模型的触角延伸到新近涌现的应用开发范式上来。比如说,Oracle 计划增加模块化特性、为 Java SE 增加多核处理支持、为 Java ME 增加新的特性,如多点触摸等。Oracle 将会一如既往地支持 MySQL 数据库的发展,将 MySQL 看作是对其核心数据库技术的有益补充而非竞争对手。

2010 年 4 月初,“Java 之父”James Gosling 通过其新博客宣布已经从 Oracle 离职了。他还没有寻找新的工作,在个人简介中称自己是“快乐的失业者”。在其博客中,他说到“在开始找工作之前,除了好好休息一下,我还不知道接下来要干什么”。

2010 年 8 月,Oracle 就 Android 操作系统对 Google 发布了一项版权与专利诉讼,这开启了硅谷的两家公司在智能电话软件平台上的法律之争。此次诉讼主要内容是 Google 侵犯了 Oracle 的 7 项专利,这些专利是年初 Oracle 收购 Sun Microsystems 时所获得的。所有这些专利都与 Java 有关。此次诉讼也标志着 Oracle 在使用 Java 专利上的首次尝试。Oracle CEO Larry Ellison 认为收购 Sun 是正确的主要原因在于这使得 Oracle 能够控制 Java 了。Google 随后对此做出了反驳:“Oracle 选择以无事实根据的法律诉讼攻击 Google 和开源 Java 社区,我们感到失望。开源 Java 社区的发展不受任何一家公司的约束,每天都在致力于让世界变得更加美好。我们将坚决捍卫开源标准并继续与业界合作发展 Android 平台”。

模块化、集成性和可维护性是未来Java SEJava EEJava 嵌入式平台的主要目标。2010 年 9 月,Mark Reinhold、Roberto Chinnici 和 Greg Bollella 在 JavaOne 2010 大会上阐述了 JSE、JEE 和 Java 嵌入式平台的新技术和新特性。Mark 谈到了一些新的项目和特性,如Coin 项目PLambda 项目DaVinci Machine 项目(JSR 292)和Jigsaw 项目。这 些功能将随着 Java SE 7(计划 2011 年中发布)和 Java SE 8(2012 年中期)发布。他同时提到了其他特性如在 Collections API 新的类(Predicate 和 Extractor)中使用 filter 和 map 操作符添加块数据操作逻辑,以通过 Lambda 表达式简化代码。另一个语言新特性是给类似Collection的接口添加了默认方法。

2010 年 10 月,Apple 发布了 Mac OS X 10.6 的Java 更新版本,但是表示未来不会继续维护该平台上的 Java。随着 Java for Mac OS X 10.6 Update 3 的发布,Apple 公司移植到 Mac OS 平台的 Java 运行时将不再鼓励使用。开发人员在未来版本的 Mac OS X 系统中不应该依赖 Apple 提供的 Java 运行时。Mac OS X 10.6 Snow Leopard 和 Mac OS X 10.5 Leopard 平台上的 Java 运行时将在产品的支持周期内继续得到支持和维护。这意味着,Apple 可能在未来对 Java 停止支持,不鼓励用户在 Mac 平台上使用 Java 应用。不仅如此,有国外消息称,在 Mac App 商店即将发布的开发人员规范中,有一条准则明确指出:“采用不受推荐的技术(如 Java)开发的 Mac 应用将被拒绝在网上商店销售”。

2010 年 12 月,Apache 软件基金会宣布离开JCP 执委会,这也意味着他们彻底与 JCP 断绝了关系。根据他们此前围绕着 JCP 的声明以及关于 Apache Harmony TCK 的纷争,大多数观察家都认为 Apache 的这个举动应该在意料之内。在 Apache 软件基金会发布这个声明前,有很多人已经选择了离开,比如十月份离开的Doug Lea,他说 “我认为 JCP 已经不再是可信赖的规范和标准了”,还有最近离开的Tim Peierls,他对 Java SE JSRs 投了反对票。这个人们意料之中的决定反映出了这样一个事实:Oracle“没能履行其在 JSPA 中的职责”——为 Java SE TCK 提供合理、无差别的许可。事实上,Oracle 最近在法庭上承认他们过去一直支持 Apache 拥有开放的 TCK,同时声称“符合要求的大学、学院、 非营利组织以及个人”可以免费使用许可。

Java 技术

即使是 Java 系统也会变成“遗留”系统。每当我们想起遗留系统时,就会想起那些存储着大量文件数据并只能用 COBOL 访问的嘎吱嘎吱作响的大型主机。但事实是,Java 已经是一门具有 15 年历史的开发语言,用 Java 写就的成千上万的系统已经成功运行了十年甚至更久。因此,考虑到许多读者都会工作在某个遗留的 Java 系统上,作者根据自己的经验特地攒了这八个技巧,来帮助团队更新和激活他们的遗留 Java 应用。

Hibernate 是最流行的对象关系映射(ORM)引擎之一,它提供了数据持久化和查询服务。在你的项目中引入 Hibernate 并让它跑起来是很容易的。但是,要让它跑得好却是需要很多时间和经验的。通过作者的使用 Hibernate 3.3.1 和 Oracle 9i 的能源项目中的一些例子,本文涵盖了很多 Hibernate 调优技术。其中还提供了一些掌握 Hibernate 调优技术所必需的数据库知识。

Tellurium 自动化测试框架是由方剑在 2007 年 6 月创建的用于测试 Web 应用的框 架,并在 2008 年 6 月移步到 Google Code 成为一个开源项目。项目的核心已经历时两年,并繁衍出了多个子项目,包括:UDL、Core、Engine、Widget 扩展、Maven Archetype、Trump、Tellurium IDE、TelluriumWorks 以及参考项目。这个框架是从Selenium 框架发展而来,但又具有不同的测试理念。大多数 Web 测试框架,比如 Selenium,主要致力于单独的 UI 元素。而 Tellurium 恰好相反,它把多个 UI 元素看作一个 Widget 整体,并将其称作 UI module。

Java 类文件中包含的字节代码可以被不同平台上的 JVM 所使用。Java 字节代码不仅可以以文件形式存在于磁盘上,也可以通过网络方式来下载,还可以只存在于内存中。JVM 中的类加载器会负责从包含字节代码的字节数组(byte[])中定义出 Java 类。在某些情况下,可能会需要动态的生成 Java 字节代码,或是对已有的 Java 字节代码进行修改。这个时候就需要用到本文中将要介绍的相关技术。

本文将通过具体的实例(使用 Scala、Spring 和 JPA 编写)阐述如何借助于隐式转换和特征(traits)等 Scala 的强大概念来增强 Spring 应用。此外,本文还将介绍如何平滑填充 Java 框架与 Scala 之间的沟壑。

内存屏障,又称内存栅栏,是一组处理器指令,用于限制对内存操作的顺序。本文介绍了内存屏障对多线程程序的影响,将研究内存屏障与 JVM 并发机制的关系,如易变量、同步和原子条件式。

过去几年,Java 模块化一直都是一个活跃的话题。从 JSR 227(现已废止)到 JSR 291,以及正在进行中的 JSR 294,模块化看起来是 Java 进化过程中的必经一环。即便是基于 JVM 的未来语言,比如 Scala,也考虑了模块化的问题。那么,模块化意味着什么?为什么要关注它呢?专题文章分别从入门静态模块化动态模块化声明式模块化四个方面详细分析该问题。

把大型系统移植到 OSGi 架构上常常意味着解决复杂的类加载问题。这篇文章专门研究了面向这个领域最难问题的几个框架:有关动态代码生成的框架。这些框架也都是些超酷的框架:AOP 包装器,ORM 映射器以及服务代理生成器,这些仅仅是一些例子。

Java 社区迷你书

Maven——这一 Java 社区事实标准的项目管理工具,能帮你从琐碎的手工劳动中解脱出来,帮你规范整个组织的构建系统。本书内容全面而系统,Maven 的原理、使用方法和高级应用尽含其中;注重实战是本书的另一个特点,不仅在各个知识点都辅有大量的小案例,而且还有一个综合性的案例贯穿全书。如果你想使用 Maven,或正在使用 Maven,本书将给你绝佳的指导。

Grails 是基于 Java 和 Groovy 的快速 Web 开发框架。得益于 Grails 提供的脚手架和“惯例优于配置”,初次接触的新手会非常惊讶地看到可以快速地搭建 并运转起一个以页面为中心的 MVC Web 站点。高级的 Web 开发者则往往对可以轻易地利用他们现有的 Spring 和 Hibernate 经验而惊喜万分。《Grails 入门指南》可以加速你对这一现代 Web 框架的了解。诸如 LinkedIn、Wired、Tropicana 和 Taco Bell 这样的公司都已经在使用 Grails 了。你是否也准备好开始了呢?

最后,InfoQ 中文站 Java 社区感谢读者长久以来的厚爱和关心,在 2011 年我们将努力向大家奉献更具价值的新闻和文章,敬请关注。

Java编程语言Google社区ApacheDevOps语言 & 开发架构文化 & 方法