如果说云计算对甲骨文来说算是急欲探索的新兴市场的话,那么Java在甲骨文的地位则是无需言语的。最近最令人期待的Java 8已于2014年3月18日发布,该版本包含很多令人兴奋的新特性,被认为是自Java 5发布以来对Java做出的最大改变。对于开发者而言,最值得注意的特性包括:Lambda表达式/闭包、接口支持静态方法、默认方法、函数式接口、java.util.stream、改善了泛型中对类型推理的支持、java.time以及Nashorn JavaScript引擎。另外,新版本还移除了PermGen。 而被一部分人认为是Java替代者的Scala则是一门有趣的语言,它一方面吸收并继承了多种语言中的优秀特性,另一方面也没有抛弃Java这个强 大的平台,它可以运行在 Java 虚拟机之上,能够轻松地与Java互联互通。与Java不同的是,Scala既支持面向对象的特性,又支持函数式编程,它的风格和特性吸引了大量的开发人 员,那么新版本的Java能否借助大量的特性“创新”干掉Scala呢?系统架构师、开源布道者Ahmed Soliman最近在自己的博客上发表了一篇博文表达了自己的看法,同时这篇文章在LinkedIn和Hacker News上也引起了激烈的讨论。 Ahmed Soliman认为:Java 8新引入的Lambda表达式并不像Scala中的Lambda那么强大,它仅仅触及了Lambda的皮毛。例如,并不是所有函数都可以作为一等元素 (first-class)传入其他函数中,函数必须被显式地定义为Lambda表达式或者使用函数式接口。在集合操作方面,借助于新的 java.util.stream包,开发人员可以在一些Java集合上编写函数式风格的操作,这和Scala中的方法类似,但是后者更简洁、类型更精 确。Java和Scala之间依然有很大的差距,Java并不会变成一门函数式语言,它的目标是企业,同时要保证稳固的向后兼容性;而Scala的目标则 是多核软件开发。Java 8向前迈出了伟大的一步,这一点让很多人都非常兴奋,甚至对于Scala程序员也是如此,但是它的目标并不是“干掉”Scala,事实上,这两者应该是一 种互补的关系。更多内容我们将在本次专辑中为大家带来…… 既然说到了Java 8,那么我们就来一起看看Java 8中你可能没听过的10个新特性。最新的lambda表达式,lambda表达式,还是lambda表达式。一提到Java 8就只能听到这个,但这不过是其中的一个新功能而已,Java 8还有许多新的特性——有一些功能强大的新类或者新的用法,还有一些功能则是早就应该加到Java里了。 default方法:这是Java语言的一个新特性,现在接口类里可以包含方法体(这就是default方法)了。这些方法会隐式的添加到实现这个接口的每个子类中。 这使得你可以在不破坏代码的前提下扩展原有库的功能。它绝对是个利器。但从另一个方面来说,这使得接口作为协议,类作为具体实现的界限开始变得有点 模糊。但好处就是,它通过一个很优雅的方式使得接口变得更智能,同时还避免了代码冗余,并且扩展类库。不好的地方就是,我估计很快就会看到有在接口方法里 获取this引用然后强制转化成某个具体类型的写法了。 终止进程:一旦启动外部进程的话,当这个进程崩溃,挂起,或者CPU到达100%的时候,你就得回来擦屁股了。Process类现在增加了两个新的方法,可以来教训下那些不听话的进程了。 第一个是isAlive()方法,有了它你可以判断进程是否还活着。第二个方法则更加强大,它叫destroyForcibly(),你可以用它来强制的杀掉一个已经超时或者不再需要的进程。更多特性我们将在本次专辑中为大家带来…… 除了新版本的到来,Java在最近还发生了一件大事。5月10日上午消息,甲骨文在与谷歌的Java专利侵权案中获得了一项关键的胜利。美国上诉法院本周判决称,甲骨文有权根据版权法来保护其软件。此前,下级法院曾驳回了甲骨文的起诉。 在一份长达69页的判决书中,由3名法官组成的小组判决称,甲骨文可以就谷歌在Android系统中对Java的使用主张版权。甲骨文此前指控称,谷歌在未得到授权的情况下就使用了Java的代码。 这起案件被称作“知识产权案件的世界大赛”,并受到了软件行业的密切关注。这起案件主要关于,平台向软件开发者提供的API(应用程序接口)是否也受版权法的保护。API通常被用于不同软件之间的通信。美国旧金山地区法官威廉·阿尔苏普(William Alsup)2012年时判决称,这种情况不受版权法保护。 此外,上诉法院还要求对此前的另一项判决发回重审,即谷歌是否根据合理使用的规则来使用这些代码。下级法院陪审团此前无法就这一问题做出判断。甲骨文此前起诉称,谷歌在开发Android系统的过程中抄袭了许多材料,包括超过37个Java的API,以及11行Java源代码。与其他知识产权内容一样,这些内容受到版权法的保护。甲骨文此前还起诉谷歌侵犯了与Java有关的专利权,但未能胜诉。 |