【IT168技术评论】
概述
从语言中移除特征可以在一段时间里保持语言的简洁性,尤其是当语言中添加了新的特征时。在最近贴出的一则博客文章中,Neal Gafter问到是否把checked exceptions(已检验异常)作为候选从Java中移除。如果不是checked exceptions,那么你认为应该从Java中移除哪些特征呢?
在新的语言特征开始负面影响开发人员的效率时,Java将会变得多么复杂?这个问题日益成为未来Java发展方向大讨论的一部分。最近,一场必然的讨论也开始出现:如果新的特征会使Java语言过于复杂的话,那么移除一些旧的,不常用的特征将会使这种语言复杂性得以平衡。
跟很多其他语言比起来,Java在它十年的发展历史中一直反对语言特征的移除。部分原因是为了保持对几百万行Java代码向后兼容的必要,这超出了修剪语言复杂性树所带来的好处。然而,如果其他语言的演进有任何借鉴意义的话,在Java未来的发展中也会消减语言特征。
添加新的特征和管理复杂性之间的紧张局面最近在Neal Gafter的博客--移除语言特征?一文中被讨论得热火朝天。在文章中,Java Closures Proposal的领袖级作者Gafter,这样写道,“在checked exceptions的使用问题上一直争论不休。很多人对Java的checked exceptions机制持批评态度,把它们称作软件工程中一次失败的实验。在实际使用中,checked exceptions会导致API的复杂性,并且仅仅为了满足编译器的需要,程序看起来成了异常处理代码的集簇。一些人认为checked exceptions是一种好的语言特征,但是没有被正确使用,即使是在JDK中。随着“专家级人物”越来越少,我们怎么能够期望普通Java程序员做得更好呢? ”
Checked exceptions一直是Java的核心语言特征之一,很多人认为移除它们将会使Java丧失一个最强有力的工具。例如,Elliotte Rusty Harold在为Checked Exceptions投票反对移除Checked Exceptions时说认为,如果你真正理解Java的异常处理是唯一被嵌入到编程语言中的最好的错误处理和报告机制的话你就不会想把它移除了。它是语言的强项,而不是弱点。到现在为止,我认为没有其他任何一种语言能比得上Java鲁棒的异常处理,原因在于它能从未检验异常中区分出已检验异常。
你支持从Java中移除checked exceptions吗?如果不是checked exceptions,那么你最不喜欢Java语言的那个特征并且希望它从将来的版本中消失掉呢?
附录:
JDK核心工程组介绍了代号为“Mustang”的Java 6将包含的重要特性。Java 6目前正在规范制订阶段,今年2月发布的JSR-270(http://jcp.org/en/jsr/detail?id=270)为Java 6的重要特性划出了一个范围。
根据这篇文章的介绍,Java 6中一些重要的特性将包括:直接嵌入JSR-223规定的脚本语言和Rhino(即JavaScript)解释器;扩展java.io.File,使其可以充分利用磁盘空间;提供内嵌的轻量级HTTP服务器;XML数字签名API;JAX-WS 2.0;JAXB 2;JDBC 4;JMX 1.3等等。