Java 10大优点—Part2—Core API

感谢大家对本系列第一篇文章“Java 编译器”的所有回应。如你所见,从这140多个的评论里可以看到Java仍然能够产生那么多的激情和讨论,真是太好了!

评论见此

还有这里

更多评论在RebelLabs!

客观地讲,我确实有几十年开发经验,并且熟悉几种语言和各种开发环境。然而由于时间有限,我对它们半数的了解不及我想了解的一半。即使是我喜欢的这一小半,对它们的关注程度不到它们应得的一半。可以说,这几篇文章是我思想和经历的一个快照。它既不是一份量化的科学报告,也不是一个深度的对比。可能我的一些言论点燃了一些有用的思想之火,如果你觉得有必要分享自己的想法,请不要忘记“如果你总是让它们忙碌,顽皮的精怪在白天也会安静下来”。

言归正传,还有很多理由需要陈述。作为一个提醒,这里再次列出了我最爱的Java 10个优点:

  • Java编译器
  • Core API
  • 开源
  • Java内存模型
  • 高性能虚拟机(VM)
  • 字节码(Bytecode)
  • 聪明的IDE
  • 性能分析工具
  • 向后兼容性
  • 成熟与创新

这次我将讨论第二部分——Core API。是什么让Core API成为Java基石之一?

有趣的是,Core API最棒的是:它总是在那里,仍将在那里,并且一直向后兼容。它足够完整,如果你想做(Java工具生态系统可不会感激你),可以让你在没有其他类库支持的情况下编写大多数应用程序。听起来似乎并不美好,但是我发现它成为Java的基石并且不断推动Java发展的理由:

那就是封装!

听到有关Java Core API最普遍的抱怨是:它过于详细。这恰恰是人们使用第三方类库,比如Google Guava或者Apache Commons的原因。许多人甚至使用其他语言完成Core API功能,比如基于JVM语言(Groovy的正则表达式、Scala的String处理等等)。

这些大多数实际上是在Java核心API基础上,封装成类库,并且语言作者专注于提供他们想要的干净的功能。而且由于内部使用Core API,无须担心被孤立于必须自己转换和协调String实现、线程原语(primitive)、sockets等壁龛,从而可以轻松组合并匹配你的喜好。

我在C++项目中看到过三个或者更多的String,对此感到十分吃惊——每个都不同,每个都不兼容,每自己通过byte数组实现转换、处理编码、设置字节顺序……。对于线程原语,Boost、Qt、STL、Juce都有不同实现,这让事情变得更加麻烦。获得正确的并发非常困难,必须处理各自实现的微妙区别。线程可能会同时活跃,可以说这是一个真正的性格测试。

译注:字节顺序(endianness):又称端序、尾序。在计算机科学领域中,是跨越多字节的程序对象的存储规则。

Java的决心不仅要创建一种语言、一个虚拟机,而且要规范化核心类库。从创建的那一天起,直到实际广泛使用一直如此。当然,其他语言稍后也提出了类似的方法,但很少像Java一样保持稳定。

稳定性允许你前进

Python是另一种拥有漂亮的Core API和丰富扩展库的语言。但令人遗憾的是,它一直以来就不具备稳定性,内部语言类型、标准库都经历了不兼容的彻底更改。这有效地联系了现有项目和老版本,因为它可以作为沟通大型应用程序和新版本的桥梁。不支持静态类型让开发变得更加复杂,每个目标系统都必须完全保证所有的代码要么提供自动化测试,要么完全通过手动验证。这项工作如此艰巨以至于需要整本书进行解释。

最近,我重拾用了10年的RIFF框架和一些用它创建的项目。当我发现仅仅使用Java7就可以完成这些时,简直就像呼吸了新鲜空气。一切已经编译并且仍然可以正常工作,编译器能够立即发现接口的细小改变(专门针对JDBC3和JDBC4)。这让我可以毫不费力的做事。在Java8的默认方法帮助下,甚至连那些已经过时的代码都可以正常运行。

站在所有人的肩膀上

当类库和框架的的作者使用同一种编程语言和相同的API原语进行交流时,每个项目都可以成为另一个项目有用工具,这样可以逐步增加平台的整体可能性。这也是为什么Java拥有一个如此充满活力的开源社区原因之一。

因为C++的现有方法依赖于Boost、Qt 甚至其他的Core API,所以当必须用到它们时,搜索这些信息会让人感觉在C++上做开发很不爽。加入这些库意味着转换、协调以及添加到项目中的额外变化。这使得选择类库变得非常的麻烦,当然前提是已经考虑了兼容许可。

如此更好

总结一下,的Core API非常稳定并向后兼容,允许各种库、框架和各个版本之间彼此交流。它创造了构建、使用各种其他高级JVM功能的基础。这也是Core API的成为基石的原因所在。

因此,Core API使得你创建一个自己的小项目,就能够与其他项目甚至很多年前的项目协同工作。这种机制如此强大,以至于对第3个优点“开源”进行了铺垫。下次我们会讨论“开源”这个优点。(尽管被《绯闻女孩》所吸引,但我仍会保持克制)。

原文链接: zeroturnaround 翻译: ImportNew.com - 王村平
译文链接: http://www.importnew.com/7522.html
[ 转载请保留原文出处、译者和译文链接。]



相关文章

发表评论

Comment form

(*) 表示必填项

2 条评论

  1. CF 说道:

    文章很细腻,见解独到,期待更新。。

    Thumb up 0 Thumb down 0

  2. test 说道:

    啥时候说说java.util.Date的优点 我想知道

    Thumb up 0 Thumb down 0

跳到底部
返回顶部