`
hualala
  • 浏览: 4424 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java 7 路线图更新:反响强烈

阅读更多
在Devoxx大会上,Java SE首席工程师Mark Reinhol,做了一个关于Java 7(2010年初发布)最新发展方向的演讲。虽然,Mark称这次演讲的内容只是暂时的计划、不具约束力,但是仍然在社区中引起了很多反响,特别是针对闭包特性(Closures)的遗漏。

  出席会议的Hamlet D'Arcy提供了一个Mark演讲中有关Java 7特性的总结。其中一些比较重要的变化包括:  
        模块化——294和Jigsaw项目

  292——JVM对动态语言的支持

  JSR 203——更多新的I/O API已基本完成,包括真正同步的I/O(不仅仅是非阻塞I/O)和一个真正的文件系统API。

  JSR TBD:小的语言变化(见下)

  安全重抛出——允许一个广泛的catch语句,编译器可以更加智能的基于try语句块中抛出的异常管理重新抛出。(我以前没有见过,不过看起来不错)

  Nulll解引用(dereference)表达式——Null通过'?'语法检查,类似于Groovy...使开发人员避免一连串null检查。

  更好的类型推断(type inference)——与泛型实例化有关,但目前还不清楚这种推断会达到什么程度(我觉得越多越好)。

  多捕捉(Multi-catch)——(是的!)允许在catch语句中用逗号分割一系列异常类型。

  Joe Darcy正在领导Open JDK开发,他的博客地址是http://blogs.sun.com/darcy

  JSR 296——Swing应用框架——仍然需要更简化以方便Swing应用开发。

  6u10特性的向前兼容(Java Kernal、QUickstarter、新Plug-in等)。

  他同时提到了曾经考虑过但可能不会引入到Java 7的特性:


  闭包——围绕提议没有形成一致意见

  具体化泛型(Reified generics)

  第一类属性(1st class properties)

  操作符重载

  BigDecimal语法

  JSR 295——Bean绑定

  Java.net开展了一次有关“哪些Java 7未采纳的特性是你最感兴趣的”的调查,其中闭包明显处于其他特性之前:
  闭包 47.4% (734 Votes)

  具体化泛型 17.2% (266 Votes)

  第一类属性 10.4% (162 Votes)

  操作符重载 4.3% (67 Votes)

  BigDecimal语法 3.4% (54 Votes)

  JSR-295 Bean绑定 7.3% (113 Votes)

  我对任何特性都不感兴趣 9.7% (150 Votes)

  Ricky Clarkson认为没有闭包Java将灭亡:  
果然被证实了。虽然James Gosling想要闭包,虽然已经有了3个闭包原型编译器,虽然其他JVM语言支持闭包,Java 7还是没有闭包。

  Martin Kneissl也认为Java 7中没有闭包是个坏消息:


  应该增加闭包而不是Java 5中的“for”循环新形式。在Java 6中就应该有闭包。现在似乎Java 7中也不会有了。

  闭包并不难以理解。至少当你把它们与Java中的匿名内部类作比较时是这样的。有的人不赞同。他们觉得总有一些愚蠢的程序员,所以应该限制语言以防止他们引起太多破坏,我不认同这个理由。这是不可能的。不称职的程序员在任何语言中都会搬起石头砸自己的脚。

  幸运的是,JVM上还有其他语言可以使用Java的优点:库、可移植性和工具(某种程度上)。

  Dustin Marx在关于Java 7中最期待的特性的帖子中对闭包有一些矛盾的看法:  
就在我写这篇帖子的时候,已经有160票投完(不过很快就会出现新的投票),其中Java SE 7中最期待的落选特性是闭包。目前,闭包特性已经得到了总票数的几乎一半。从某种意义上说,这并不奇怪。闭包似乎主宰了Java SE 7的讨论直到被宣布不会在Java SE 7中引入。但是讨论是围绕着闭包的概念和如何实现闭包进行的争论。虽然闭包是Java SE 7最期待的落选特性之一,但是我个人对此非常矛盾。我有时会偶然的在工作中意识到闭包是多么有用,但是多数情况下没有它我也可以应付。也就是说,我不介意它被引入,但是当我听到没有被包含在Java SE 7中时这并没有困扰我。但是,如果我们相信目前的投票结果,那么接近一半的Java开发人员最想要这个特性。这与Java.net有关开发人员最想要 Java SE 7引入闭包的问卷调查是一致的。

  Osvaldo Doederlein对新特性感到兴奋,不过仍然很期望闭包:


  Java 7是多年基础设施智能化的最好版本:294/Jigsaw,并发类加载——我认为这会提高大应用程序的启动时间,特别是类似于JavaEE服务器和IDE 等基于微内核的应用,XRender——将最终使Java成为Linux桌面应用的一等公民,G1,全64位支持(将在6u12中首次亮相,获取beta版),ForkJoin。

  这么多的好特性,我几乎都快忘了失去闭包的悲伤了。我猜是时候转移到Scala、JavaFX或者其他现代JVM语言上了(只要不是类似于Ruby 或者Python的动态类型语言)。我认为从现在开始五年,如果我编写某种低层次的运行时,我会只写“标准”Java代码。多亏社区的保护,Java语言正在慢慢转为一种遗产和低层次的角色。

  另一方面,Matt Grommes关注于BigDecimal语法:


  我致力于一个金融系统有一年多时间了,BigDecimal语法简直太痛苦了。我真的非常不满意。

  Stephen Colebourne向Devoxx和JavaEdge的与会者展示了JDK7语言的10种可能变化,并请他们投票:


  绝对的胜者是——null处理。Null处理获得了50张最优先支持票,是排在第二位的字符串切换(string switch)特性票数的两倍,几乎是全部最优先支持票数的三分之一。而且,几乎有三分之二的与会者把它放在了前四位优先支持的特性里。

  其他受欢迎的特性包括字符串切换、异常的多捕捉、对Map的增强型for-each循环(能够删除或者查找索引)和ARM风格的资源管理。

  不受欢迎的特性(特别认为是糟糕建议的)是通过[]访问List/Map和字符串插值(字符串中的${variable} )。

  泛型推断和多行字符串处于相对较低优先级但与会者不是特别反感。

  值得一提的是,在Devoxx上对闭包特性的投票结果是50:50。
分享到:
评论

相关推荐

    java learning

    - **类库支持**:Java提供了强大的标准类库,涵盖了网络编程、图形用户界面、数据库访问等多个方面。 - **编程技术**:本书将深入探讨Java中的各种编程技巧,帮助读者掌握如何高效地进行软件开发。 #### 四、本书...

    JAVA入门经典教材.doc

    - **起源与初期发展**:Java语言起源于1991年,最初由SUN MicroSystems公司的James Gosling等人开发,最初的项目名为“Oak”,目的是为了开发用于家用消费类电子产品的交互式软件。然而,该项目并未立即获得广泛的...

    迷宫游戏的Java实现及基于蚁群算法在寻找迷宫路径上的探究.pptx

    迷宫游戏的Java实现及基于蚁群算法在寻找迷宫路径上的探究 该资源主要介绍了迷宫游戏的Java实现及基于蚁群算法在寻找迷宫路径上的探究。下面是该资源的知识点总结: 1. 迷宫游戏的Java实现: * 迷宫地图的设计:...

    JAVA介绍.pdf斤斤计较经济界

    - **面向对象**:Java支持类、接口和继承等面向对象特性,使得代码结构清晰,易于维护。 - **分布性**:Java内置了网络通信功能,方便开发分布式应用程序。 - **健壮性**:通过异常处理和垃圾回收机制,提高了...

    第章Java概述stu2022优秀文档.ppt

    Java是一种由Sun Microsystems公司开发的高级编程语言,其创始人是James Gosling,他在1991年带领团队开始了这项工作,最初命名为Oak,后来在1995年更名为Java。Java的设计初衷是用于嵌入式设备,如家用电器的控制...

    科创板地图大数据:京沪粤苏“最科创”

    文章中提到的“科创板上市委2019年召开第一次审核会议”,表明科创板的设立和发展进度是符合预期的,并且在一年的时间里取得了积极的市场反响。 根据以上信息,我们可以看到,科创板不仅为科技型企业提供了一个融资...

    电子行业周报:华为小米发布反响火热,品牌集中化趋势明显.pdf

    电子行业周报:华为小米发布反响火热,品牌集中化趋势明显.pdf

    React-Hooks:学习反响

    在这个“React-Hooks:学习反响”中,我们将深入探讨React Hooks的基本概念、核心原理以及它如何影响React开发模式。 一、React Hooks基本概念 1. useState:这是React Hooks中最基础的钩子,用于在类组件之外管理...

    Java EE 6最新版特点解析

    这意味着未来的Java EE 版本(如Java EE 7)可能会基于Java SE 7 的模块化系统进行构建。 #### 四、社区反响 Java EE 6 发布后,得到了广泛的好评。许多开发者和企业都对其带来的灵活性和简化性表示赞赏。例如,...

    java基础名词解释汇总.docx

    "Java基础名词解释汇总" Java基础名词解释汇总面向对象程序设计(Object-Oriented Programming)是指java基础名词解释汇总的主要内容。面向对象程序设计是指一种起源于六十年代,开展已经将近三十年的程序设计思想...

    Java的故事和Java编程环境搭建.docx

    7. 深入学习:逐步掌握Java Swing和JavaFX进行GUI开发,学习Java EE(企业版)以进行服务器端开发,以及Spring框架、Hibernate ORM等现代开发工具和技术。 通过不断学习和实践,Java开发者可以利用Java的强大功能...

    基于 Java +SpringBoot+mysql 实现 的高并发选课系统

    - 新产品推广:新产品的推出计划及其市场反响预测。 - **示例**:“在未来一年内,我们的目标是实现销售额增长20%,同时增加5%的市场份额。为了达到这一目标,我们将重点推广新产品X,并通过改善售后服务来提升...

    初三化学专题:初中化学计算题解题方法.doc

    * “质量守恒”指参加化学反响的各物质质量总和和生成物的各物质质量总和相等,不包括未参加反响的物质的质量,也不包括杂质。 二、溶液计算 溶液计算是初中化学计算的另一个重要部分。需要熟练掌握以下计算公式和...

    反应工程施工期末考试题.pdf

    化学反响工程是化工领域的重要分支,它主要研究化学反响在工业生产中的实施过程,包括反响器的设计、操作和优化。以下是对题目中提及的一些关键知识点的详细解释: 1. **化学反响过程**:化工生产的核心环节,涉及...

    初中化学酸碱盐推断题强化训练.doc

    根据图中信息,A物质的化学式可以通过反响②的化学方程式进行推断。反响②是炼铁工业中的主要反响,相关的化学方程式为Fe2O3 + 3CO → 2Fe + 3CO2。因此,A物质的化学式为Fe2O3。 2. 反响②的化学方程式: 反响②...

    过程控制部分习题答案.doc

    图解法可以通过画出液位进程的阶跃呼应曲线来确定进程的数学模子,而盘算法可以通过计算液位进程的数学模子来确定进程的参数。 本资源涵盖了过程控制零碎的分类、进程操纵零碎的类型、过渡进程的品质目标、液位进程...

    JAVA课程设计-练车预约系统

    【Java 语言程序设计】- 驾校预约练车 Android 客户端 随着社会的发展,驾驶训练的需求日益增长,尤其是对于忙碌的白领和学生群体而言,如何高效利用时间进行练车成为了一个亟待解决的问题。为了优化学车流程,提高...

    DWR反向调用

    3. **方法执行**:Java方法在服务器上执行,处理业务逻辑。 4. **结果返回**:执行结果被转换为JavaScript对象,然后通过HTTP响应返回给客户端。 5. **客户端更新**:DWR引擎在客户端接收到响应后,自动更新相应的...

Global site tag (gtag.js) - Google Analytics