纵观2010年,Java世界可谓变化万千,有关Java归属、走向、领袖去留、专利权等等问题在社区中引起了巨大反响,给人一种“飘忽不定”的感觉。InfoQ密切关注其发展动态,现将中文站Java社区在2010年的精华内容整理出来,让读者一睹为快。
Java动态
2010年1月底,在经过了将近9个月的漫长等待后,Oracle终于。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了。:“Oracle选择以无事实根据的法律诉讼攻击Google和开源Java社区,我们感到失望。开源Java社区的发展不受任何一家公司的约束,每天都在致力于让世界变得更加美好。我们将坚决捍卫开源标准并继续与业界合作发展Android平台”。
模块化、集成性和可维护性是未来、和的主要目标。2010年9月,Mark Reinhold、Roberto Chinnici和Greg Bollella在JavaOne 2010大会上阐述了JSE、JEE和Java嵌入式平台的新技术和新特性。Mark谈到了一些新的项目和特性,如、、(JSR 292)和。这 些功能将随着Java SE 7(计划2011年中发布)和Java SE 8(2012年中期)发布。他同时提到了其他特性如在Collections API新的类(Predicate和Extractor)中使用filter和map操作符添加块数据操作逻辑,以通过Lambda表达式简化代码。另一个语言新特性是给类似的接口添加了默认方法。
2010年10月,Apple发布了Mac OS X 10.6的,但是未来不会继续维护该平台上的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断绝了关系。根据他们此前以及关于Apache Harmony TCK的纷争,大多数观察家都认为Apache的这个举动应该在意料之内。在Apache软件基金会发布这个声明前,有很多人已经选择了离开,比如十月份离开的,他说 “我认为JCP已经不再是可信赖的规范和标准了”,还有最近离开的,他对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调优技术所必需的数据库知识。
是由方剑在2007年6月创建的用于测试Web应用的框 架,并在2008年6月移步到Google Code成为一个。项目的核心已经历时两年,并繁衍出了多个子项目,包括:UDL、Core、Engine、Widget扩展、Maven Archetype、Trump、Tellurium IDE、TelluriumWorks以及参考项目。这个框架是从发展而来,但又具有不同的测试理念。大多数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 ]