JavaOne 2013 已于近日在旧金山举行。9 月 22 日,来自 Oracle 员工 Peter Utzschneider 、 Nandini Ramani 和 Cameron Purdy 的战略主题演讲拉开了此次庆典的序幕,活动持续到9 月26 日。
这是第十八次JavaOne 大会,Java 社区并没有显出放缓的迹象。Utzschneider 告诉观众,Java 仍然是世界第一的开发平台,并且Java 用户组的数量以每年10% 的速度增长。
Java**** 的未来
Ramani 探讨了 Java 的现状以及 Java 如何有若干不同的 SDK,这里仅举几例,如 Java SE 7、CDC 1.1(基于 SE 1.4.2)、CLDC(基于 SE 1.3)和 Java ME。过去,这些实现能很好地服务于特定的垂直市场,但多年来,每种实现都各自演变而变得越来越孤立。在 Java 8 中,Compact Profile 将取代 CDC。
Java ME 和 Java SE 之间的 API 会很类似,Java 语言会支持两者的所有特性。Java 8 会带来统一的平台:代码可移植、通用的 API 和工具——从 SE 嵌入式开发到服务器端 Java EE 开发。Java 开发人员的类型将来会只有一种。
Java 平台战略的其它要素还包括:同步发布(Java 8 预览版现在已经可以下载)以及与合作伙伴(ARM、Freescale 和 Qualcomm)一起使 Java 成为芯片上的一等公民。为了能够简单地移植和扩展 Java Embedded,Oracle 在 8 月份启动了 Java 平台集成器项目。
Java EE 7 在刚刚过去的夏天发布,上两届 JavaOne 大会都针对它进行了讨论,可见这是一个重要的里程碑。Purdy 提到,Java EE 7 重点关注三个方面:开发人员的生产力、满足企业需求和 HTML5。
两年前,在 Java EE 7 宣布的时候,主题是云。现在,Java EE 7 有许多用于云部署的简单易用的特性,包括安全增强、默认资源、数据库结构生成、RESTful 服务客户端 API 以及用于多租户应用程序的 JSF 皮肤。最后,Cameron 宣布 Avatar 项目从现在起开源。Avatar 跟 Node.js 类似,但运行在 JVM 上。
Java 8**** 是革命性的,Java 回来了
Java 8 是此次大会一个很重要的演讲主题,这点从 Mark Reinhold 的技术主题演讲中可见一斑。Java 8 包含了许多新特性,包括新的Date 和Time API( JSR 310 )、Nashorn JavaScript 引擎、类型注解( JSR 308 )、Compact Profile 和 Lambda 项目( JSR 335 )。
Lambda 是编程模型最大的单一升级,比以往任何升级都要大,甚至比泛型还大。我们精心协调,同时对虚拟机、语言和库进行了改良,自从有 Java 以来,这是第一次。但结果感觉仍然像 Java。——Mark Reinhold
Oracle Java 语言架构师 Brian Goetz 继续展示 Lambda 表达式如何去掉大量只用于表达简单思想的样板文件。在 Lambda 表达式出现之前,开发人员经常使用蹩脚的“牛肉面包比(beef to bun ratio)”来表达思想,通常是用内部类。Goetz 展示了下面的例子:
Collection<Person> people = …; Iterator<Person> ip = people.iterator(); while (ip.hasNext()) { Person p = ip.next(); if (p.getAge() > 18) { ip.remove(); } }
为了抽象上述思想,开发人员可以用 Predicate 重写上述测试代码,写法如下:
Collections.removeAll(people, new Predicate<Person>() { public boolean test(Person p) { return p.getAge() > 18; } });
使用 Lambda 表达式,写法要简单许多:
Collections.removeAll(people, p -> p.getAge() > 18);
Lambda 表达式不仅仅是一种更好的语法,它还使用 invokedynamic 生成一种更简洁高效的字节码。作为 Java 语言及其 API 已经变得更好的证明,Goetz 谈论了新的流 API 以及如何用它在集合上进行批量操作。例如:
int highestWeight = people.stream() .filter(p -> p.getGender() == MALE) .mapToInt(p -> p.getWeight()) .max();
这提供了语法、性能和抽象,而开发人员还获得了并行。Java 7 新增了用于任务分解的 Fork/Join 框架,但其 API 使它很难使用。在 Java 8 中,开发人员只需修改一行代码,将 stream()改成 parallelStream()即可:
int highestWeight = people.parallelStream() .filter(p -> p.getGender() == MALE) .mapToInt(p -> p.getWeight()) .max();
要了解更多关于 Lambda 项目的信息,查看这里或者下载Java 8 。
NetBeans 7.4
NetBeans 工程总监 John Ceccarelli 用象棋游戏演示了 HTML5 应用程序(用 Knockout.js 编写)的编辑。他示范了如何在 NetBeans 中调整属性(与在 Firebug 或者 Chrome 开发人员工具中的操作类似)并使调整结果即时反映在浏览器中,而且无需重新加载。这看起来非常像 IntelliJ IDEA 的 LiveEdit 插件。
去年,NetBeans 引入了 Easel 项目,其目的是在 NetBeans 中增加高级 HTML5 支持。Ceccarelli 提到,社区对此的反应是“嘿,那太棒了,不过我们希望在 EE 项目里完成这一工作。”好消息是,就在 JavaOne 大会前夕,NetBeans 7.4 RC1 发布了,支持 HTML5、Java EE、Java Web 和 Maven Web 项目。
除了 HTML 和 CSS 的实时编辑功能外,NetBeans 7.4 还支持 Angular、jQuery 和 Knockout.js 等 JavaScript 框架。这意味着代码编辑器可以识别 JavaScript 中所有的 DOM id 以及 Model 名称。NetBeans 7.4 全是关于移动 Web 应用程序和移动混合应用程序的开发(通过支持 Cordova 3.0)。有趣的是,如何在桌面浏览器之外的移动设备上使用实时编辑功能。最新的候选版本可以从 netbeans.org 上下载。
上文提到的演示程序,其象棋服务器用 Java EE 7 编写,并部署在 GlassFish 4 服务器上。该应用程序有五个不同的模块:象棋端点、玩家注册、象棋引擎、象棋游戏管理器和持久性管理器。
象棋服务器使用了许多 Java EE 新技术,包括:WebSockets、Batch、EJB、JPA 和 JAX-RS 2.0。客户端与服务器的所有通信都是通过 JSON 完成。GlassFish 团队的一名成员 Santiago Pericas-Geertsen 展示了一些代码,用于说明在 Java EE 7 中建立 WebSocket 端点非常容易:
@ServerEndpoint(value = "/chessserver", encoders = MessageEncoder.class, decoders = MessageDecoder.class); public class ChessServerEndpoint { @Inject private GameCatalog catalog; @OnMessage public Message onMessage(String message, Session session) { return message.processMe(this); } ... }
跟该端点交互的客户端 API 与此非常类似,而且看上去很容易实现。
Oracle 技术主题演讲中展示的最后一项技术创新是 DukePad 。这是一款可以在家 DIY 的平板电脑,基于 Raspberry Pi 和 JavaSE 8 Embedded。他们发现 CPU 性能欠佳:Raspberry Pi CPU 的速度几乎和 Pentium Ⅱ一样,比 Samsung Galaxy S4 慢 14 倍,比 Intel Core i7 处理器慢 94 到 100 倍。不过,它的 GPU 非常好,比 Pentium Ⅱ在 1996 年的速度快 400 倍。
OpenJFX 开源了大部分组件,包括 iOS 和 Android 原型。演讲者提到,OpenJFX 论坛很健康,他们已经从用户那里收到了大量的 Bug 报告。他们也收到了相当数量的社区贡献。JavaFX 包含在 JavaSE 8 中。
对于 Java 9 及其未来,Oracle 有若干方案,主要包括 Java On GPUs、Reification(处理泛型的类型擦除问题)、JNI 2.0、Memory-Efficient 数据结构以及用 Jigsaw 构建模块化平台。
Java**** 社区
Oracle 产品管理高级主管 Donald Smith 拉开了 Java 社区主题演讲的序幕。他带来了许多不同的人,在台上谈论 Java 技术令终端用户欢欣鼓舞的案例。
Tori Wieldt 谈了“ Raspberry Pi 挑战”活动,25 名开发人员参与其中,完成了六个项目。“心脏眼镜(Heart of Glass)”(用谷歌眼镜实时监控心率)和 MTAAS(怪兽卡车服务)是此次活动中出现的两个成功的项目。Donald Smith 还宣布,Oracle 已经与 Raspberry Pi 基金会签订了一项 OEM 协议。后者将开始在他们的一部分镜像中包含 Java SE,因此 Java 会以开箱即用的方式包含其中。
在社区主题演讲中,还有其它值得注意的公告,包括 Square 成为 OpenJDK 的一员以及 Devoxx4Kids 正在寻找 JUG 负责人和家长,以便在他们所在的城市主办讲习班。当然,Aditya Gupta 如何成为 Minecraft 编程高手的演示,也是亮点之一。同时,这也是主题演讲中的第一个 Eclipse 演示程序。他让猪飞起来,并使爆炸创造更多的爆炸。他是从他的爸爸 Arun Gupta 那里和 Minecraft Forge 上学到了其中大部分知识。
Alison Derbenwick Miller 提到了 Oracle 学院。后者为从幼儿园到 12 年级的学生以及大学生提供课程。该学院去年培训了 250 万名学生,并提供了学生讲习班、教师发展和认证折扣。
在社区主题演讲的教育部分之后,进行了许多机器人演示。James Gosling 甚至还作为嘉宾谈了他目前的工作。
Java**** 回来了的证据
为什么说 Java 回来了?战略和技术主题演讲都帮助解释了这个问题。Java 8 希望再次使 Java 编程变得有趣(通过减少样板代码),而 Java EE 7 中大量的 API 将会使构建现代应用程序变得简单。在最近的一些文章中,还有进一步的证据:
- Wired 的“ Java 迎来第二个春天:遗物归来,统治 Web ”
- Dr. Dobb 的“ Java 频临死亡?它看起来确实非常健康”
如果读者没有机会参加今年的 JavaOne 大会,可以在日历上记下明年的会议日期。如果不是为了技术内容,那么可以来参与交流。Oracle 答谢晚会上有免费的食物、啤酒以及 Mroon 5 和 Black Keys 的音乐表演。之后还有派对,展厅里到处都是人。
最重要的是,开发人员社区的热情似乎一如既往的强烈。
关于作者
Matt Raible成年以后大部分时间都在构建Web 应用程序。他甚至在Netscape 1.0 发布之前就开始摆弄Web。在超过15 年的时间里,Matt 帮助企业采用开源技术(Spring、Hiberate、Apache、Struts、Grails、Bootstrap 和jQuery),并有效地使用这些技术。Matt 著有_Spring Live_ 和_Pro JSP_。他还是AppFuse 的创建者,这是一个可以使开发人员快速上手Java 框架的项目。同时,他还是Apache Roller 和Apache Struts 项目的提交者。他了解并喜爱:HTML5、CSS、JavaScript、CoffeeScript、jQuery、AngularJS、Java、Spring、Scala、Play!Framework、Groovy、Grails、Tomcat、Jetty 以及PhoneGap。
查看英文原文: JavaOne 2013 Roundup: Java 8 is Revolutionary, Java is back
评论