Java已死?九百万程序员说不

openkk 10年前
   <p>        英文原文:<a title="Permalink" href="/misc/goto?guid=4958340597374152172" rel="bookmark">Java is dead? 9 million devs disagree</a></p>    <p>        Java 没死,事实上它拥有足够的能量让你的应用跑起来。那些对 Java 吹毛求疵人频繁地聚焦在一些小众问题上,总是和其他技术或者语言做些不公平的对比,这些语言并没有像 Java 一样得到广泛应用及长远的历史。</p>    <p>        现在的小孩都能学 Java,它在 Web 和企业开发中广泛被采用,特别是近些年更是有了些让人惊讶的改善,一些新特性正在筹备中。即使抛开这些最新的特性,Java 仍然很酷,应用的广泛性、JVM 平台背后卓越的设计、清晰的语法、拥有丰富的工具和库文件构成的生态系统。Oracle 说有超过9,000,000 Java 开发者(亿万的应用和设备用户),所以为什么我会听到诸如“Java 正在被淘汰中”,2007年开始,Java 就已经沦为“21世纪的 Cobol 语言”的言论?</p>    <p>        <strong>Java</strong><strong>平台是工程师的梦想</strong></p>    <p>        首先就是 Java 平台的存在,HotSpot JVM 是一项非凡的设计,CLR (公共语言运行库)有了大量的优化,Java 应用在性能上甚至可以与C相媲美,当然还有其他可选的虚拟机供可用(如:JRockit,Zing),应你的环境有特殊的需求而定。</p>    <p>        再者,多种基于 JVM 的语言使得这个平台更奇妙,如:Groovy,Jython,JavaFX,Scala,当然还不局限于以上流行的语言。Java 现在包含有字节码指令:invokedynamic 和 java.lang.invoke 包,使得 JVM 构建动态语言更简单,现在已经有超过 50 中基于 JVM 的语言。其中最有意思的一个是 <a href="/misc/goto?guid=4958340598184600917" rel="nofollow" target="_blank">php.reboot</a>,它的目标是保持 php 的哲学理念,但是移除了其中一些缺陷,而且它同样能在 Android 中运行。</p>    <p>        <strong>Java</strong><strong>是一门成熟的<strong>语言</strong>,并不适合</strong><strong>“</strong><strong>老人</strong><strong>”</strong></p>    <p>        Java 成为被批评,抱怨,诅咒的靶子,我说这门语言还没死,恰恰相反当有人抱怨 Java 的时候正是推广 Java 时机。人们总会做些奇怪的对比,好像仍然以为 Java 还是停留在1.4的版本,用记事本编写、需要 EJB2 的支持、只能用来写写简单的留言板,然后把这些用来与一个高端框架甚至是 CMS 来对比。</p>    <p>        作为 Java<a title="程序员的本质" href="/misc/goto?guid=4958202204547787659">程序员</a>, 这种对比对我来说没有任何意义。更为明智的方法对比 Java 就得理智地选择竞争对手,看看 Java vs PHP、Python 或者 Ruby,或者用框架 Play 对比 Ruby on Rails,SpringMVC vs Zend Framework,有鉴于此,我觉得 Java 似乎根本就不适合老人。</p>    <p style="text-align:center;"><img alt="Java已死?九百万程序员说不" src="https://simg.open-open.com/show/246540f450f3ff3d88e7ca153252e733.png" width="150" height="150" /></p>    <p>        <strong>Java 冗长吗?当然</strong></p>    <p>        人们常说 Java 太啰嗦了,减缓了运行速度。批评者矛头通常指向 Java 的强类型静态语言特性,缺乏前沿技术在语言中,然而,我认为他们是经过深思熟虑的,而且这正是 Java 良好的特性。动态语言在启动一个小项目时开始会觉得很受欢迎,但是可以考虑一下,在时髦框架及合适的工具(如:考虑用 IDE 代替记事本)下创建一个“Hello 留言板”类型的应用,Java 很简单,只是 10 分钟的事情,如果你想做个试验的话,使用 Spring Roo 再准备一个秒表,如果有需要的话。现在就可以开始繁琐的 CRUD 了。</p>    <p>        想象一下,你正为移动运营商搭建一个系统,运行客户登陆网站,你不得不在后台调用各种子系统收集大量的数据,Cool 框架通常分解你的程序模块而不需要匹配任何用户模型。要更多的了解建议你看看 Joel Spolsky 发表的<a href="/misc/goto?guid=4958340599729320341" rel="nofollow" target="_blank">一篇文章</a>。</p>    <p>        <strong>Java</strong><strong>是一门强类型静态语言</strong></p>    <p>        强类型静态语言有很多好处,我喜欢它简单的视觉外观,我可以粗略看一段代码就知道是做什么的,它就像是可视化的用英语反馈,语言非常易读,字母 混合成单词仍然可读。其它的一些好处是有强大的 IDE 支持,动态语言在这点一直是弊端,大项目中有强大的 IDE 和工具支持是无价的。</p>    <p>        批判者的观点在 Java 在读文件、转换 xml 或迭代集合的时候缺乏表达力,但是你可以总是创建一个方法去处理这些常用的事例,或者是用 FileUtils.readLines (),java 语言上表达力的缺点有很多库对其支持。在 Java7 中能看到一些优雅的加强型功能,如自动关闭资源、siwtch 语句支持 String、数字类型支持下划线(强烈建议读 Coin 项目)。Java8承诺了更多的东西(最有意思的应该是闭包)。Java 是不是在任何方面都是那么的完美无缺呢?当然不是,这就是 Java8、Java9在准备阶段的原因。我个人也不喜欢那些不太优雅的核心 API. 是否的确将更多的事情留给平台而不是语言本身?java 核心包括 API 进阶设计跨度长达 20 年,API 的更新会破坏向后兼容性,有些设计太抽象,但有些还不够抽象,有些太零碎,有些根本不可思议。看看其竞争对手 .NET,核心 API 做的很好,比如统一的通信 API。Java8在 Jigsaw 项目的帮助下,会有所改变。</p>    <p>        所以你值得拥有 Java,正确地使用它,它是一门很棒的语言。堪比 <a href="/misc/goto?guid=4958340600528845462" rel="nofollow" target="_blank">Klingon</a> 语言,它将继续改善并不会很快消失。不应把努力放在取代 Java 上,而是和其他 JVM 语言结合使用,这是最明智的,但是对我的下一个 Pet Clinic 还是坚持使用 Java。</p>    <p>        原文:<a href="/misc/goto?guid=4958340597374152172" rel="nofollow" target="_blank">Arnel Pällo</a>  编译:<a href="/misc/goto?guid=4958185140659301754" target="_blank">伯乐</a>在线 – <a href="/misc/goto?guid=4958340603042759995" target="_blank">刘志军</a></p>