阅读更多

6顶
4踩

编程语言

转载新闻 Java那么健壮,怎么会挂?

2013-10-24 11:34 by 副主编 WnouM 评论(36) 有16351人浏览
Dr. Dobbs主编Andrew Binstock日前发布了一篇关于Java的帖子《Java那么健壮,怎么会挂?》。该帖发出后立刻成为了各大科技网站的讨论热点,并很快收到了近1000条回复。Andrew Binstock似乎早就预料到了会产生这样的局面,因此在1000条回复产生后,他立刻又写了一篇关于网友回复的帖子,再次阐述了自己对网友的回复的一些观点。

原文翻译如下。

我在上周发表的专栏“Java这么健壮,怎么可能挂?”深深地触动了很多开发人员的神经。在Reddit、Hacker News和Slashdot上,这篇文章的回复数量都超过了1000。让我觉得有些意外的是,其实只有很少一部分人不同意我的观点。也就是说,其实号称Java即将挂掉的说法在现实当中其实是不太站得住脚的。

不过,即使如此,我还是要在这里列举一些大家的观点:

1.  Java不会挂,但是却将成为“古董语言”

这个观点可能是留言中最普遍的一种了。“古董语言”,在我的印象中,需要具备两个特点:首先,是用这门语言所写的代码库除了需要维护之外,不会再有人去修改,也就是说,新的项目基本上不会再考虑用“古董语言”去开发;其次,新的语言会用来代替“古董语言”,去开发那些早先由“古董语言”编写的那些种类的软件。在这样的概念下,COBOL就完全符合“古董语言”的这两个特性:现今的商业程序已经不再使用COBOL编写,转而使用其他各类语言来实现,尤其是,Java。

所以我不同意Java是“古董语言”这种观点,因为我根本找不到证据去证明这个观点。单单是Android就能够保证Java在很多新的移动应用开发项目中被使用。在企业开发方面,我也没发现有什么语言能够取代Java的地位。Spring框架的流程程度也证明了Java在企业级开发领域是一门广受欢迎的语言。JavaScript在前端开发的统治地位以及通过Node.js在服务器端的表现可能最终会把Java在Web应用程序的市场份额挤掉一部分,同样的道理,Ruby on Rails同样也会占据小规模站点的市场份额。在非常狭义的领域里,Java或许成为了“古董语言”,但是现在就要断言未来发生的事情还为时过早,在很多新项目中,基于Java语言编写的框架的表现还是非常活跃的。

2.  Java之所以看上去要挂了的样子,是因为那帮“酷小子”喜新厌旧

我本人同意这种观点。软件开发正在经历新技术,新语言的“黄金时代”。在过去的15年里,Erlang,Lua, Ruby, Scala, Groovy, Clojure, 还有很多其他语言(尽管某些语言发明的时间并不“新”,但是他们成名却较晚)层出不穷,于此同时,还有:Go,Rust,CoffeeScript,R,Haskell,等等一大堆语言争先恐后地引起人们的注意。在计算机发展的历史上,还从来没有哪一个时期像现在这样盛产新语言和新技术。如果说Java作为很多大学采用的计算机科学教学语言,代表了一般编程语言的标准,那么这些新语言则代表了新兴的技术和实例,更容易吸引技术人员的眼球。我同意这样的说法。我本人喜欢探索新语言,但是这些新语言并不能取代Java。就像一个Reddit网友说的那样:“我本人在编程领域是个新手,今年刚刚拿到学位,我要说Java和C#/.NET并没有‘挂掉’。我现在正在做我的第二份工作,不过我的第一份和第二份工作都用到了Java编写程序。”

3.  Java桌面应用开发挂了

在这里,我还是要说我偏向于同意这种观点。Java applet现在几乎已经彻底消失了,只有在相当少的领域内才会作为一些特殊的用途使用。甚至是JavaFX,作为Swing的一个重要技术升级,我也不认为它有足够的实力让Java占据客户端接口开发的主要地位,尤其是桌面应用方面。然而,Java从来就不是桌面应用开发方面的主角,所以说即使是现在Java不擅长桌面领域的开发,也并不影响Java的整体表现。

4.  Oracle因素

我必须承认Oracle的形象在开发者眼中并不怎么好。Oracle对大量从Sun遗留下来的技术资产(尤其是许多开源项目)的处理方式,更加巩固了程序员对公司的敌意。但是从另一个角度来看,Java处于Oracle的羽翼之下,我相信一定会比当年在Sun的经营下更加有利,因为Sun只是把Java作为一门计算机语言来发展,而Oracle会做得更多更全面。我在我的上一篇文章中提到了这一点。尤其是,我非常质疑一个观点:“发展语言本身才是硬道理。” 你看JavaScritp, 不需要我再去陈述这个语言在互联网时代的作用了吧。JavaScript从语言特性上来说,几乎是人见人恨,而且这么多年了,也没见有什么改进。但是这门语言的不思进取完全不影响它成为互联网领域最火爆的语言,甚至很多开发人员就是喜欢它的这些所谓的“语言限制”。

5.  最后

有些评论完全同意我上一篇文章的观点,并且还认为我说得不够深刻全面。他们特别指出,在Java生态系统中有很多高质量的工具软件;尤其是IDE;还有数目众多的工具库,而且这些都是开源的;还有就是Java字节码高度的可移植性;以及很多现成的文档和资源可供开发者使用,但是我要说的是,没有哪种编程语言——无论老还是新——能够做到像Java一样拥有这么多的可用资源。

原文链接: http://www.drdobbs.com/ 翻译: ImportNew.com - 黄小非
译文链接: http://www.importnew.com/6325.html
来自: importnew
6
4
评论 共 36 条 请登录后发表评论
16 楼 alvin198761 2013-10-28 12:03
white_crucifix 写道
alvin198761 写道
white_crucifix 写道
同意java是古董语言,java已经完成了不朽的历史使命,要不是现在有大量的遗留系统,不然java也可以功成身退了

首先,古老语言很多,比如汇编,比如C,C++,java,但他们仍然是主流
再次,一些八竿子打不这的人来评论java,你叫他用java写段代码出来让人看那,要么他不会写,要么写一堆10年前水平的代码,其实java没古董,古董的是评论的人,心中装着一坨屎,看什么都是屎。
最后,在强大的语言也会挂,不过这个挂看你怎么理解罢了。但java还没有走到挂的这个地步,不行你看看你公司人用的手机,安卓的比例是多少。你说有大量的遗留系统,啥叫遗留的系统?你不敢举例子说,因为你举的例子,可能有两种:一种是国内一些公司的内部系统,这种东西我不做评价,只能说你看到的也就这些。一种是一些知名的软件或系统,但是会有很多人告诉你,这些系统还在升级,很多公司还在用,很多人还在用。
--------------
对事不对人,没有骂你的意思,只是劝你了解在发话


1. 你用了大量的“你”,这不是对事,而是对人,所以不要自欺欺人
2. 不要把C和其他语言相提并论,虽然c也是古董,很多语法设计也不够现代,但是c的性能卓越,决定了它永远不会被淘汰
3. 说java古董,不代表java差,事实上java很优秀。但你了解java的语法(异常,IO等)和其他语言的差别吗?你了解java在并发编程上和其他语言的差别吗?你了解java8的新特性吗?你知道java在很多新特性上也在向很多“现代”语言靠拢吗?(到底谁更不了解?)
4. 另外,java不可能马上淘汰,至少在很长一段时间内绝对不会被淘汰,就好比一个庞大人口基数的国家,不是想减少人口就能减少人口的。
5. 即便你只会写java,但是眼界千万不要只放在java上。
6. 最后,所谓的遗留系统,是指因为有大量的java遗留系统需求在社会的关键位置,使得每年会有大量的学生学习java,而大量的人决定了又会诞生大量的新系统。这是一个雪球,就是前面说的“人口基数”。
7. 最后一点,看的越多,你才知道你了解的越少。几年前我只会写java,写SSH,后来接触了server端的开发,MQ,nosql,又接触了perl,python,groovy,node,erlang等等其他语言,虽然看的比写得多,但是你会发现,这世界很美妙,并不是只有c独大,也不是只有java独大。

我想请你用java 的io和异常写一些代码,我来看看你是怎么写的,无法是自己写的方式不对,怪java语法?
你凭什么说我不了解别的语言,写ssh,web开发的?格式搞桌面开发的,web开发的臃肿我敬而远之
15 楼 QING____ 2013-10-28 11:22
一切还在,任何新语言,如果不能被广大开发者接受,这门语言终归是"昙花一现",国外的一些开发者喜欢捣鼓各种新语言..不过,在商业项目开发上,不会断然采用一门"新鲜"的语言..
14 楼 white_crucifix 2013-10-27 12:04
alvin198761 写道
white_crucifix 写道
同意java是古董语言,java已经完成了不朽的历史使命,要不是现在有大量的遗留系统,不然java也可以功成身退了

首先,古老语言很多,比如汇编,比如C,C++,java,但他们仍然是主流
再次,一些八竿子打不这的人来评论java,你叫他用java写段代码出来让人看那,要么他不会写,要么写一堆10年前水平的代码,其实java没古董,古董的是评论的人,心中装着一坨屎,看什么都是屎。
最后,在强大的语言也会挂,不过这个挂看你怎么理解罢了。但java还没有走到挂的这个地步,不行你看看你公司人用的手机,安卓的比例是多少。你说有大量的遗留系统,啥叫遗留的系统?你不敢举例子说,因为你举的例子,可能有两种:一种是国内一些公司的内部系统,这种东西我不做评价,只能说你看到的也就这些。一种是一些知名的软件或系统,但是会有很多人告诉你,这些系统还在升级,很多公司还在用,很多人还在用。
--------------
对事不对人,没有骂你的意思,只是劝你了解在发话


1. 你用了大量的“你”,这不是对事,而是对人,所以不要自欺欺人
2. 不要把C和其他语言相提并论,虽然c也是古董,很多语法设计也不够现代,但是c的性能卓越,决定了它永远不会被淘汰
3. 说java古董,不代表java差,事实上java很优秀。但你了解java的语法(异常,IO等)和其他语言的差别吗?你了解java在并发编程上和其他语言的差别吗?你了解java8的新特性吗?你知道java在很多新特性上也在向很多“现代”语言靠拢吗?(到底谁更不了解?)
4. 另外,java不可能马上淘汰,至少在很长一段时间内绝对不会被淘汰,就好比一个庞大人口基数的国家,不是想减少人口就能减少人口的。
5. 即便你只会写java,但是眼界千万不要只放在java上。
6. 最后,所谓的遗留系统,是指因为有大量的java遗留系统需求在社会的关键位置,使得每年会有大量的学生学习java,而大量的人决定了又会诞生大量的新系统。这是一个雪球,就是前面说的“人口基数”。
7. 最后一点,看的越多,你才知道你了解的越少。几年前我只会写java,写SSH,后来接触了server端的开发,MQ,nosql,又接触了perl,python,groovy,node,erlang等等其他语言,虽然看的比写得多,但是你会发现,这世界很美妙,并不是只有c独大,也不是只有java独大。
13 楼 alvin198761 2013-10-27 11:29
white_crucifix 写道
同意java是古董语言,java已经完成了不朽的历史使命,要不是现在有大量的遗留系统,不然java也可以功成身退了

首先,古老语言很多,比如汇编,比如C,C++,java,但他们仍然是主流
再次,一些八竿子打不这的人来评论java,你叫他用java写段代码出来让人看那,要么他不会写,要么写一堆10年前水平的代码,其实java没古董,古董的是评论的人,心中装着一坨屎,看什么都是屎。
最后,在强大的语言也会挂,不过这个挂看你怎么理解罢了。但java还没有走到挂的这个地步,不行你看看你公司人用的手机,安卓的比例是多少。你说有大量的遗留系统,啥叫遗留的系统?你不敢举例子说,因为你举的例子,可能有两种:一种是国内一些公司的内部系统,这种东西我不做评价,只能说你看到的也就这些。一种是一些知名的软件或系统,但是会有很多人告诉你,这些系统还在升级,很多公司还在用,很多人还在用。
--------------
对事不对人,没有骂你的意思,只是劝你了解在发话
12 楼 kuchaguangjie 2013-10-26 15:07
Oracle 的托, 妈的
11 楼 kidneyball 2013-10-25 15:05
这个事情就相当于:一个人发现他楼下一家连锁餐馆的烤鸡非常对自己胃口,同时他发现这种烤鸡的制作过程非常有趣,充满欢乐,而且效率颇高。于是他回家写了一篇文章:《KFC已死》。而事实上他之所以有这种想法,是因为他已经很久没有吃过快餐了。

只要Java在规模化生产上的地位没有被撼动,它就不太可能挂。而适合规模化生产的工具和方法一般需要满足:
1. 流程或方法能被轻易分解和并在人群中复制 (所谓的流水线)
2. 从业门槛相对较低,不求甚解的工人按照既定的流程仍然能做出不算太差的产品
3. 有成熟的体系的业绩评估方法
4. 人员变动和沟通的成本较低 (所谓的可维护性)
5. 任何“聪明”的点子只要触犯以上4点中任何一点,就是坏点子。

其中3和4需要时间来沉淀,但1,2和5恰恰是现在大多数新语言社区所不屑或反对的。
10 楼 zhuchao_ko 2013-10-25 13:27
喜欢就用,不喜欢就别用,屁话那么多有病,得治。
9 楼 white_crucifix 2013-10-25 10:42
youarestupid 写道
white_crucifix 写道
同意java是古董语言,java已经完成了不朽的历史使命,要不是现在有大量的遗留系统,不然java也可以功成身退了

那么什么是新希望语言呢?ruby?python?貌似这两门语言也不“新”了啊!


即便java性能不如c,也轮不到ruby和python来做比较

java和oo之所以兴起,是因为历史需要,在软件工业的拓荒期,需要一门语言来传达人类世界的面向对相观,用以大规模全球化的软件协作,而java就是其大成者。
但是如今的世界越来越趋向于多线程,高并发,而面向对象编程在个方向并不是最佳,国外已经有学院准备将java课程从计算机初级课程中去掉的行为就可窥视一二。

如果说java还有用武之地,那么完全可以用java的衍生品scala或者groovy代替,如果要讲究“新”的东西,那么erlang甚至node也许可以胜任
8 楼 bitray 2013-10-25 10:37
white_crucifix 写道
yixiandave 写道
white_crucifix 写道
同意java是古董语言,java已经完成了不朽的历史使命,要不是现在有大量的遗留系统,不然java也可以功成身退了

java生命力依然非常强大,Spring依然在刷版本,新增的Groovy也为java增添了不少活力。java和C依然稳居StackOverflow语言排名的前2名


嗯,其实应该说jvm还很强大。语言层面,groovy,scala等都要比java来的更”现代“。

但是他们还不能替代java存在,新事物不是新出现的事物,而是生命力旺盛的事物
7 楼 youarestupid 2013-10-25 10:00
white_crucifix 写道
同意java是古董语言,java已经完成了不朽的历史使命,要不是现在有大量的遗留系统,不然java也可以功成身退了

那么什么是新希望语言呢?ruby?python?貌似这两门语言也不“新”了啊!
6 楼 caizi12 2013-10-25 09:54
yixiandave 写道
white_crucifix 写道
同意java是古董语言,java已经完成了不朽的历史使命,要不是现在有大量的遗留系统,不然java也可以功成身退了

java生命力依然非常强大,Spring依然在刷版本,新增的Groovy也为java增添了不少活力。java和C依然稳居StackOverflow语言排名的前2名


功成身退,言之过早,java如日中天,正值壮年。传统软件厂商、互联网公司有多少公司不用java的,无论新旧项目。
5 楼 lteb2002 2013-10-25 08:52
如果说JAVA要挂了,那么能不能明确给我说一种替代技术?
4 楼 mathgl 2013-10-24 23:23
说java, 通常可以指代

一个平台

一种语言

作为平台,没那么容易消亡,语言则未必。
3 楼 white_crucifix 2013-10-24 16:54
yixiandave 写道
white_crucifix 写道
同意java是古董语言,java已经完成了不朽的历史使命,要不是现在有大量的遗留系统,不然java也可以功成身退了

java生命力依然非常强大,Spring依然在刷版本,新增的Groovy也为java增添了不少活力。java和C依然稳居StackOverflow语言排名的前2名


嗯,其实应该说jvm还很强大。语言层面,groovy,scala等都要比java来的更”现代“。
2 楼 yixiandave 2013-10-24 14:48
white_crucifix 写道
同意java是古董语言,java已经完成了不朽的历史使命,要不是现在有大量的遗留系统,不然java也可以功成身退了

java生命力依然非常强大,Spring依然在刷版本,新增的Groovy也为java增添了不少活力。java和C依然稳居StackOverflow语言排名的前2名
1 楼 white_crucifix 2013-10-24 12:44
同意java是古董语言,java已经完成了不朽的历史使命,要不是现在有大量的遗留系统,不然java也可以功成身退了

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 【Java基础知识 1】Java入门级概述

    CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。

  • 关于《Java那么健壮,怎么会挂?》的1000条回复Jav

    关于《Java那么健壮,怎么会挂?》的1000条回复Java开发Java经验技巧共3页.pdf.zip

  • Java健壮性和_Java的健壮性

    因此,在设计Java时,使其具备创建健壮程序的能力被提到了高优先级的地位。为了获得可靠性,Java在一些关键领域进行了限制,从而迫使程序员在程序开发中及早地发现错误。同时,使程序员不必再担心会引起编程错误的...

  • Java语言的健壮性与可移植性

    必须掌握!Java的两个重要特性!

  • 如何写出健壮的代码?

    那么如何才能写出健壮的代码?阿里文娱技术专家长统将从防御式编程、如何正确使用异常和 DRY 原则等三个方面,并结合代码实例,分享自己的看法心得,希望对同学们有所启发。你不可能写出完美的软件。因为它不曾出现...

  • java程序的健壮性与正确性

    java程序的健壮性与正确性

  • Java语言有哪些特性?

    java语言主要特性:面向对象(根据模板,创建对象)、安全性、多线程(就是同时做多件事情)、开源、跨平台(可移植性)

  • JAVA-什么是 Java?

    Java 是一种高级、健壮、面向对象且安全的编程语言。 平台:任何程序所运行的硬件或软件环境,都可被理解为一种平台。因为 Java 在运行时会基于它的运行环境(JRE)和各类 API,因此我们称它为平台。 Java 示例 让...

  • java中的泛型是什么_Java中泛型是什么?Java泛型的详细介绍

    Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常.泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型参数化类型:ArrayList中的E称为类型参数...

  • 学大数据一定要会Java开发吗?

    学大数据一定要会Java开发吗?学大数据必学Java,当前大数据领域的岗位主要集中在开发、分析、运维三大领域,其中大数据开发对于Java语言的依赖程度比较高,如果从事大数据开发岗学习Java语言很有必要。ava是目前...

  • java语言与其他语言的区别是_Java语言特点有哪些?Java区别其他语言特点详解

    Java语言特点有哪些?Java区别其他语言特点详解Java是目前最流行的编程语言之一,那你知道为什么Java这么火吗?相比其他编程语言,Java的特点又有哪些呢?跟着小编一起来了解一下吧。一、简单Java最初是为了对家用电器...

  • Java是什么?Java的特点有哪些?

    Java 是近 10 年来计算机软件发展过程中的传奇,其在众多开发者心中的地位可谓“爱不释手”,与其他一些计算机语言随着时间的流逝影响也逐渐减弱不同,Java 随着时间的推移反而变得更加强大。 从首次发布开始,Java ...

  • java中package_java 中 package 是什么?

    具体解释如下:1、当你新建一个Java项目的时候,你会填上Project name,比如项目名叫62616964757a686964616fe58685e5aeb931333365666139“baiduzhidao”。注意下面有一拦灰色的“Location”,就代表你这个项目将来会...

  • 10万字208道Java经典面试题总结(附答案)

    JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。...

  • Java面试题总结(附答案)

    Java经典面试题系列。

  • Java是什么?Java到底能干嘛?

    我刚开始学习Java的时候,很长一段时间都有这么个疑惑?Java到底是啥?它能干什么?自己也看过不少的课程和书,大部分都是从Java的发展史开始讲,总之就是那些什么Jav...

  • 你觉得学 Python 还是 Java 更好找工作?

    如果你问一名 Java 程序员,肯定会建议你先学 Java,因为他们认为Python像个乳臭未干的黄毛小子;但如果你问 Python 程序员,可能会得到一个完全相反的答案,他们认为 Java 是刻板啰嗦的老大爷,而人生苦短,我用 ...

  • java是什么?java的内容都有哪些?

    Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。 全面系统的Java内..

  • java能写游戏脚本吗_java能写游戏脚本吗?

    java能写游戏脚本。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征,可以做到编译游戏脚本。java能写游戏脚本...

  • 新建文本文档.txt

    新建文本文档

Global site tag (gtag.js) - Google Analytics