设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

今日Java:Cay Horstmann访谈

2014-2-17 11:15| 发布者: joejoe0332| 查看: 4083| 评论: 0|原作者: Jeff Martin|来自: InfoQ

摘要: 近日InfoQ荣幸邀约Cay Horstmann,就Java最新形势和Cay的新书Java核心技术:卷一&卷二(第九版)进行探讨。自1995年首版发布以来,Java历经多次变更:从语言规约的扩充到Oracle并购Sun后所有权的变动。本次访谈的第 ...


  InfoQ: 庞大的遗留代码会产生问题。

Horstmann: Scala会让你体会残酷性。似乎每隔半年所做的一切就会被全然颠覆,你将从头开始。


  InfoQ: 确实。这种情况很多?

Horstmann: 是的。有些时候必须结束。但目前你必须全部重新编译,因为Scala并非二进制兼容。Scala的语言特性存在足够的变化空间,而这也正是修正良机。


  InfoQ: 这对语言发展极好但不利于继承。

Horstmann: 是的。那也是为什么有时他们会说“好吧,我们之前已经做得足够有趣,现今我们将使之平稳。”


  InfoQ: 全面审视后,若由你来负责Java,你认为Java所要克服的最大障碍是什么?(舍弃或改良)

Horstmann: 也许是基本数据类型。基本数据类型带来的复杂性非常烦人。还有什么我真正讨厌并想摆脱的?我从未想过。你也知道,Java语言特性不算多。但我讨厌漫长的启动时间,那妨碍了Java被作为脚本使用。这点是我从未关注的。也许是Java 9,也许是我的孙子活着时,我希望Oracle能通过模块化关注这点。这限制了Java的适用范围。

另一件与Java本身无关而与环境相关的问题是安全。用户正在流失,因为Oracle无法像承诺所述的那样更新JVM客户端。从来没有人会抱怨Flash不安全,因为Adobe每三周都会推送给你一个新版本。而就我Windows机器上运行的Java而言,一打开它我就会看到一个Java需要更新的小图标;但每次点击图标,都会报出无法执行的错误。这么多年过去了,一切如旧。


  InfoQ: 我从未想过能这样比较Java和Flash,但这观点不错。Adobe相比运行时Java似乎有更好的解决方案。

Horstmann:是的。只要单击按钮Flash就会更新。而Java,则是报错。就我的观察,几乎每个学生的机器中都有一些旧版Java等待移除。


  InfoQ: 活跃开发者也许更容易找到所安装的程序并保证程序正确安装,但可以肯定的是,远程诊断会带来困惑。

Horstmann: 确切而言,是的。分析之后,你会为常规用户提供什么样的补救方案?“是时候格式化硬盘了?”


  InfoQ: 你还想改变其他的一些么?

Horstmann:如果你是在问哪些不好的语言特性需要消除的话,用不到且不希望存在的特性有很多,比如带标号的break。为了消除偶发复杂型,这些特性是我想舍弃的,但这些特性极少使用,所以并不妨碍。另一方面,并非任何特性我都想舍弃,有些特性确实代表了Java的设计。至于添加特性,噢,另一件我想舍弃的特征是属性。我不喜欢getter和setter方法。

这并不像解决世界饥饿,但没有模版也不错。我喜欢Scala的一个原因是,你能在几行内定义一个简单类。


  InfoQ: Java的模版类型常被指责。

Horstmann: 是的,但让我们认真回顾下。人们赞誉Java是新一代Cobol。Java横空出世时Cobol正濒临灭亡。还记得有段时间,世界上一多半的程序员都用Cobol编程,几年之后,没有人再用Cobol。那种变化非常非常快。至于Java,我认为还有很多事情Java可以做而Cobol中不存在的,比如,具备一个可移植性强的世界一流虚拟机。由于这些原因,我认为Java会存在更久。

另一件事情是,Cobol消亡时,有一些更好的替代品。可目前,什么值得人们趋之若鹜?我的意思是,并不存在其他值得你高呼哈利路亚的替代品。


  InfoQ: 是的。我指其他一些语言。比如C++圈内,C++的自我复兴最为引人注目。

Horstmann: 你想用C++编程么?


  InfoQ: 如果你是C++程序员,也许会更认同,但我不知道对新程序员而言,那是否足够吸引。再看C#,很多用户觉得C#优于Java,而这部分用户中很多是程序员,这部分人认定微软将放弃C#转向支持更新的技术。

Horstmann: 综合看来,C#就是Java。C#具备一些Java不具备的特性,但如果某一特性真的重要,Java会很快具备。


  InfoQ: 但对Java程序员而言,使公众接受似乎并不够。如果你是C#拥护者,会很高兴。但绝大多数阵营都已分化。程序员新手并非从已分化阵营中来。那之后,尽管我不想用悲观的腔调说,但你只会得到……

Horstmann: 市场定位。


  InfoQ: 是的。不同的大小,不同的竞争语言群体。

Horstmann: 是的,从这一点看,没有语言能一统天下。若你能找到那么一种语言,告诉我,我会写下一本书。


  InfoQ: 有很多新语言,其中一些至少小范围内很流行,但没有一种广泛流行。现在每种语言都有支持者和批评家,但没有真正的狂热者或是或仅仅推动任何事。

Horstmann: 广泛流行很困难。不光是语言。而今,人们期盼一种合适大小的库,一个虚拟机。直接在裸机上运行语言的时代已告结束。一些你能在VM上做的优化,像Objective-C之类的语言想都不要想。JavaScript运行得相当好,他们让虚拟机更具生气。


  InfoQ: 几乎只有两类主流库。一类静态类型推断为主,希望得到更多语言特性。另一类追求速度为主。两类库间存在重叠而不存在共性。

Horstmann: 这点也不错。我认为强类型语言能提供更多。看看Google为Dart所做的就知道了。他们试图弥合动静态间的区别。那确实是一条很有趣的路。但那些是否会是下一代主流语言的竞争者?我认为Java还会强势一段时间。


  InfoQ: 似乎每次Java经历过一段沉静期后,一种新技术就会重新使之扬名。从伪革命性的applets,到原生web应用,再到目前的Android。似乎Java永远有一个领跑者促使语言前进。

Horstmann: 另一个Java会持续一段时间的原因在于Java是开源的,其专利会很快失效。专利有个妙处,20年之内保值。


  InfoQ: 也许正有下一个领跑者。十分感谢,祝好。

Horstmann: 客气,谢谢。


关于受访者

Cay S. Horstmann是《Java核心技术,卷一&卷二》,《快学Scala》(Addison-Wesley, 2012)的作者, 《JavaServer Faces 核心编程》第三版(Prentice Hall, 2010)的共同作者,是圣荷西州立大学的计算机系教授,是一名Java Champion,也是各类程序员会议上的活跃讲演者。

 

转自 http://www.infoq.com/cn/articles/java_cay_horstmann?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部