JavaOne2008上有个session《Upcoming Java Programming Language
Features》,讲了即将到来的jdk7可能引入的新的语言特性,比较开眼界的是jsr308对Annotation的扩展使用,更多地作为断言或者
说checker使用以便减少bug。在ppt前面,我觉的更有意思的是对java语言演化的讲述,做个笔记。
1
、应用
VS.
语言
应用是特性越多越好,应用是
rich
的;而语言是
pure
的,更少的、普通的特性更好。
2
、添加一个
java
语言特性的三个前提:尊重过去、着眼未来以及顾及模型。
无论是增加、减少或者改变一个
feature
都可能
broken
已经存在的代码,一个新增加的
feature
必须兼容已经存在的代码,兼容是个沉重的包袱,就
java
语言而言,我相当认同尊重过去
这一点,哪怕加入闭包这样的特性也不应当以损坏兼容性为代价,更好的选择是将这些特性让
jvm
上的新语言去实现(比如JRuby、Scala),
java
语言作为成熟的工业语言本身不应当做太大的改变。而着眼未来,也就是说新的语言特性应该为未来的语法扩展留有空间,它的语法
/
语义不应当跟现存的或者潜在的特性相冲突,以便可以持续地演化。再谈顾及当前的模型,一门语言代表着一种计算模型,比如
simula
是
OO
模型(
classes)
,
Erlang
就是
inter-process
communication
的模型
(actor
)。
Java
语言也有一个简单的模型:首先它是“高层”语言,是一门通用、并发、基于类的
OO
语言,其次,它跟
API
、
JVM
有良好的结合。
Java
语言模型有四个原则:
a)
鼓励
high-level
实践,通过抽象来隐藏偶然复杂度。简而言之:
do
the right thing
。
b)
追求清晰,程序被读的时候远远多于写。简而言之:
do
the thing right.
c)
青睐静态类型,静态类型能增进对代码的信心,静态类型能证明
bug
在编译时的不存在,而测试和动态类型能证明
bug
的存在。我的观点是,大多数难以寻找和解决的
bug
都是
runtime
的,静态类型在此方面能给出的帮助有限,充分并且适宜的测试更加能增强你对应用的信心。
d)
语言比之
API
的更广泛。
one
language,many
api
。
API
来去匆匆,而语言却是
forever
,因而将语言和
API
分离是明智的,一些特性可以做为库来实现,
jdk5
并发库的引入就很好,
jdk7
在并发方面同样将引入
fork/join
模型。
java语言
的演化也当遵循这四个原则。再看看传说中的闭包语言,当它跟泛型结合的时候写出来的东西还谈得上清晰吗?闭包的实现能否解决兼容性问题也是个疑问。就四个
提案,C3S需要引入method关键字(类似lambda),FCM的#号看起来比较怪异,在我看来,CICE和BGGA更符合胃口,CICE对
java语言的变动应该最小,学习曲线也比较平缓,BGGA的=>符号更有函数式语言的味道。闭包的引入,某种程度上能减少敲击键盘的次数并实现一
些高阶功能,特别是在聚合操作(如filter、map等)和单抽象方法类(如Runnable,Callable)的使用上,但是在现代IDE的自动化
帮助下,这个带来的价值是值的怀疑的。
分享到:
相关推荐
斯蒂芬·科尔伯恩和比尔·文纳斯在JavaOne 2010大会上的对话,揭示了Java平台未来可能的发展趋势,包括更高效的语言设计、更强的互操作性以及对现代Web技术的更好支持。 总之,Java 7作为JVM的一个重要升级,不仅...
### JAVA教程——PDF:基础知识概览 #### Java语言:历史与发展 Java,源自Sun公司的创新,最初名为Oak,旨在为家用电子产品开发一个分布式代码系统,让日常设备如电冰箱、电视机具备网络通信能力。然而,由于C++...
作者在JavaOne大会的经历中提到,社区中的每一个开发者都有对Java语言特性改进的想法。 在现有语言的发展中,设计者面临的主要挑战是兼容性。新语言设计者关注功能,而现有语言设计者则更注重如何在不破坏已有用户...
JavaOne 2008是Sun Microsystems举办的一年一度的技术大会,主要聚焦于Java技术及其应用。该会议通常在旧金山的Moscone中心举行,吸引了全球各地超过15,000名开发人员、架构师和技术爱好者参与。2008年的JavaOne延续...
随着移动互联网的兴起,Java语言在移动应用开发领域找到了新的舞台——Android系统。本文将深入探讨Java语言与Android系统的紧密联系及其背后的技术细节。 #### 二、从J2ME到Android:Java在移动领域的演变 ##### ...
【标题】"Sun2008JavaOne" 指的是2008年由Sun Microsystems主办的全球知名Java开发者大会——JavaOne。这是一场汇聚了全球Java开发者、技术专家和行业领袖的重要盛会,旨在分享Java技术的最新进展、创新应用以及未来...
Java技术不仅仅包含Java编程语言,它还包括Java Media APIs、Security APIs、Management APIs、Java Applet、Java RMI (Remote Method Invocation)、Java Bean、Java OS、Java Servlet、Java Server Pages以及JDBC ...
Java 技术包括 Java 语言和 Java Media APIS、Security APIs、Management APIs、Java Applet、Java RMI、JavaBean、JavaOS、Java Servlet、JavaServer Page 以及 JDBC 等。Java 语言是一种高级编程语言,支持面向...
随着1995年春季Java语言的首次发布,它不仅带来了一种全新的编程范式,同时也引入了用于构建图形用户界面(Graphical User Interface,简称GUI)的强大工具包——抽象窗口工具包(Abstract Windowing Toolkit,简称...
Java编程语言的发展历程可以追溯到1992年,当时它被称为"Oak",由Sun Microsystems的一个名为"绿色小组"的团队开发。这个团队由James Gosling领导,他们的目标是创造一种适用于小型电子设备的编程语言。Oak这个名字...
起初项目团队考虑使用C++作为开发语言,但由于C++过于复杂且安全性不足,最终决定开发一种新的编程语言——Oak,即后来的Java。 1995年,Oak更名为Java,并在当年的SunWorld会议上正式发布。同年,众多知名科技公司...
在Sun正式发布Java 1.0之后,Java这门新生的语言就拥有了自己的会议——JavaOne,这次会议初试啼音就吸引了600多名参与者。 Java的应用就像是世界上的顶级玩家们组成的一个公开联盟,告诉全世界我们大家就是都在用...
Java编程基础教程Pdf Java是一种广泛使用的高级编程语言,由詹姆斯·...Java编程基础教程Pdf,Java开发环境、Java语言的发展历程、Java的发展速度非常快、Java的重要里程碑、Java编译过程、JVM、JRE、JDK之间的关系。
Java 语言发展史 Java 语言设计始于 1991 年,SUN 公司想在消费类电子产品方面寻求市场,成立了由 James Gosling 领导的 Green 开发小组,首要目标是编写可内嵌于家用小型电器设备内部的软件,使得机器更聪明,更...
Java技术不仅仅包括Java语言本身,还包括一系列相关的技术和工具,如Java Media APIs、Security APIs、Management APIs、Java Applet、Java RMI、Java Bean、Java OS、Java Servlet、Java Server Page以及JDBC等。...