阅读更多

6顶
4踩

编程语言

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

2013-10-24 11:34 by 副主编 WnouM 评论(36) 有16427人浏览
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 条 请登录后发表评论
36 楼 darkise 2013-11-25 17:29
If Java Is Dying, It Sure Looks Awfully Healthy 这个翻译作“Java那么健壮,怎么会挂?”,你是不是没看文章呀?还是想完全弯曲作者的本意?
35 楼 white_crucifix 2013-11-11 15:20
论坛拉人气三大利器:java,eclipse,360.
嗯,就是这样
34 楼 shuhen2011 2013-11-11 15:11
估计这样的文章回复会很多很火爆,赶紧来看看,果然不错
33 楼 yixiandave 2013-11-06 09:27
aa87963014 写道
ui 好不好看 和什么语言开发的有什么关系?
swing只是一套默认界面,和最终开发完成的没任何关系


swing做界面真心累,布局定义、主题定义,还有一大堆Listener混在一起。所以MFC和QT很轻松的干掉了swing,至于现在的.net就更简单了
32 楼 aa87963014 2013-11-06 09:21
ui 好不好看 和什么语言开发的有什么关系?
swing只是一套默认界面,和最终开发完成的没任何关系

31 楼 white_crucifix 2013-11-06 09:18
alvin198761 写道
white_crucifix 写道
桌面主要还是UI不好弄呗,不像网页,UI取决于css和js,用户体验好做。java的桌面端要做的好看好用,非常不容易

js那套效果n年前就在java swing中实现了,拜托你多去看看国外的网站好不好,不看别的,你就看看netbeans和eclipse的那些各种插件,别的有牛逼的我都不想说了


居然有人说nb和ecli的插件UI牛逼?这让idea的UI情何以堪…… 不要活在5年前了啊,搜搜看iteye上那swing的几把刀吧,做swing的做漂亮很幸苦的,不要再黑他们了啊
30 楼 alvin198761 2013-11-06 09:05
white_crucifix 写道
桌面主要还是UI不好弄呗,不像网页,UI取决于css和js,用户体验好做。java的桌面端要做的好看好用,非常不容易

js那套效果n年前就在java swing中实现了,拜托你多去看看国外的网站好不好,不看别的,你就看看netbeans和eclipse的那些各种插件,别的有牛逼的我都不想说了
29 楼 talkweb_xiang 2013-10-31 15:47
我想就算语言编程编程古董,但不代表它会挂吧!
28 楼 无地自容 2013-10-31 10:34
小白 默默的看着 围观 有木有啊
27 楼 aa87963014 2013-10-31 09:09
jianhao84 写道
整个国家电网都用java,你怎么说?

国家电网的oa系统么
26 楼 jianhao84 2013-10-30 23:56
整个国家电网都用java,你怎么说?
25 楼 dohkoos 2013-10-29 16:41
客户端Java早就该进博物馆了,swing,JavaFX,有那么些时间还不如多打些安全补丁
24 楼 rex0654335 2013-10-29 16:05
还嫌coding得不够吗。
23 楼 bitray 2013-10-29 10:02
white_crucifix 写道
桌面主要还是UI不好弄呗,不像网页,UI取决于css和js,用户体验好做。java的桌面端要做的好看好用,非常不容易

用了好的lookandfeel还是很好看的,但是如果想布局就比较麻烦,如果不频繁改变大小样式的话,用拖拽的形式也不错啊
22 楼 white_crucifix 2013-10-29 09:39
桌面主要还是UI不好弄呗,不像网页,UI取决于css和js,用户体验好做。java的桌面端要做的好看好用,非常不容易
21 楼 aa87963014 2013-10-29 09:18
java的强项在于server
web指的是servlet jsp

其实我想知道为什么java的客户端 桌面程序开发如此弱。性能?jre?
20 楼 white_crucifix 2013-10-28 15:44
哈哈,继续@alvin198761吧。
我都不以为你是喷子,你就不要再自我强调了,虽然你第一次说话时已经用了某脏词,所以不要再自己打脸了。
另外我转移了啥了……,我给你解释了遗留系统的部分,给你解释了java代码的部分,你还用你那隐晦的文笔提了什么不明显的问题?真的没看出来。
然后,既然你提到了回答问题……呵呵,你看看我打了多少个问号?你回答了吗?自己打脸打的太响了吧……
最后,希望你不要觉得自己是喷子,连我都一直在你那没有力道的言语中,尽可能学习一些我不了解过的知识,所以,希望你也是……

19 楼 QING____ 2013-10-28 13:32
竟有人黑我大java语言................这个世界上,没有免费的性能结余...
18 楼 alvin198761 2013-10-28 13:13
white_crucifix 写道
@alvin198761, 为了不占用空间,我不引用了了
首先,我是对人,不对事。java的好,不用我说;java的缺陷,大家也有目共睹。
然后,你说写两段代码看看,我就知道你没有理解我所说的区别。这是java的设计导致的,在这个设计内代码不管怎么写,多线程写的锁是不可避免的,io的层层嵌套语法是不可避免的,io的资源关闭是不可避免的(当然java8中这一点改进了,可以说是java的进步或者妥协?),那么,等等这些方面,如果有更好的实现,我们是不是依然选择性无视呢?
其次,我没有说你不了解其他语言,第三点里都是问句,第五点里用了“即便”,请你仔细捉摸。
接着,你说的桌面开发是指的server开发还是desk app呢?在我看来desk app和web本质是一样的,服务的方向不同而已。
最后,事实上你所坚持的java的“主流”,绝大部分都是web,而你又对web开发敬而远之,我可以说你是:
Java的高级黑吗?

我不是喷子,没空跟你聊,你在两次回复中都在转移话题,不敢正面回答,有意思吗?
17 楼 white_crucifix 2013-10-28 12:35
@alvin198761, 为了不占用空间,我不引用了了
首先,我是对人,不对事。java的好,不用我说;java的缺陷,大家也有目共睹。
然后,你说写两段代码看看,我就知道你没有理解我所说的区别。这是java的设计导致的,在这个设计内代码不管怎么写,多线程写的锁是不可避免的,io的层层嵌套语法是不可避免的,io的资源关闭是不可避免的(当然java8中这一点改进了,可以说是java的进步或者妥协?),那么,等等这些方面,如果有更好的实现,我们是不是依然选择性无视呢?
其次,我没有说你不了解其他语言,第三点里都是问句,第五点里用了“即便”,请你仔细捉摸。
接着,你说的桌面开发是指的server开发还是desk app呢?在我看来desk app和web本质是一样的,服务的方向不同而已。
最后,事实上你所坚持的java的“主流”,绝大部分都是web,而你又对web开发敬而远之,我可以说你是:
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能写游戏脚本...

  • 1300张图片训练效果

    1300张图片训练效果

Global site tag (gtag.js) - Google Analytics