本文来自知乎吴涛的回答今天的Java是编程的通用语:作为一门语言,它比C/C++好学,比Perl/Lisp读起来正常,比VB/PHP好用更专业。几乎没有人能看懂Java,所以你解释一个概念,用Java写出来大家都能看懂。Java作为一个平台,拥有包罗万象的类库、极度优化的虚拟机和根深蒂固的开源项目。结果是无论你想做什么,理论上你都可以——甚至99%——都能做到。用Java实现。在我写下这些话的那一刻,世界上诞生了数万行Java代码,所以如果“不再被任何人使用”是一种技术的死亡边界,那么Java显然还活着,而且还活着还不错;如果把“能找到工作”作为一项技术的死限,那么Java就更活得更好了。不知道国内的情况,但是在欧美的任何一个求职网站上都可以用Java作为关键词来找工作。很容易看出它击败了C++并打破了PHP的统治地位。没有人质疑它为什么活着,我们认为它活着是理所当然的,就像我明天上班时从来没有质疑过是否还有工作要做,理所当然。但那样的话,倒不如说Java实现了不朽。因为,如果你按照上面两个定义去翻遍TIOBE,你会发现没有任何一个稍有名气的编程语言(及其背后的技术)是真的死了。VisualBasic还活着,Delphi还活着,COBOL还活着,Fortran还活着,甚至FoxPro还活着。至于比这些更少的例子,您是否听说过IBMAS/400系统?我上个雇主还在用,刚入职时维护它的程序员工资高得离谱,因为整个公司20年的核心业务逻辑都在里面,什么都坏了。AS/400也还活着。那么当我说“Javadies/isdead”时,“dead”是什么意思?很简单:没有人再喜欢它了。本版同一篇文章中重写Nemola诗的答案完美呼应了PaulGraham的一句话“在我能想到的所有伟大的程序员中,我只知道一个愿意用Java编程的人”:十个写Java的程序员其中九人是“因为工作需要”——剩下的一个是因为他们什么都不知道。在我能想象的所有编写程序的动机中,“因为工作需要”是最令人痛心的。牺牲前列腺和脊椎的健康,长时间坐在屏幕前,忍耐着用Java写程序只是为了谋生,反正我觉得很无聊。如果你还能笑,对你有好处。而且只要不是刚从1995年穿越过来的,应该都能看出现在的Java确实不可爱。在语言特性上,与其说它没有大问题,不如说它的问题已经有很多成熟的workaround,比如不能重写的静态方法,画蛇添足的checkedexceptions,半屁股仿制药。真正难受的是它缺少的特性——我可以说C#中的struct、delegate、async/await、eventhandler、accessor、operator重载支持(好吧,这不一定是好事)甚至类型推断都缺失来自Java(或仅适用于触及表面的第三方库),当然还有真正的运行时泛型。单独来看,每一个都感觉没什么,但当所有这些加起来时,C#比Java可爱多了。这些特性可能有一天最终会出现在Java中,就像Java7终于有了switchonstringandtrywithresource,Java8终于有了lambda,但在它们出现之前,你必须忍受,伴随着JavaEE栈的臃肿,复杂而狭窄的技术迷宫一起忍受。而且多亏了Oracle,你不知道还要忍受多久——作为参考值,Java8大概相当于.NETFramework3.0,而.NETFramework3.0是2006年的东西,当时手机市场第一巨头是诺基亚。甲骨文绝不是一家为了开发者而改进工具的公司,比微软更让开发者感到烦恼,微软至少有一个组织良好、编写良好的MSDN存储库和平庸但不断改进的CodePlex开放source讲台上,有一个汗衫汗衫的光头胖子站在讲台上喊着开发者开发者开发者。甲骨文做了什么?把MySQL留在路边喂狗。将OpenOffice开发社区赶出家门。无缘无故起诉安卓。所以JamesGosling在Sun被甲骨文收购的同时辞职,堪称高瞻远瞩。难怪大家会竞相在JVM上发明新的语言,并将其他语言移植到JVM上。只是这些尝试的方向过于分散,没有人能够一统天下,让Java社区看到希望。我们目前的情况是,自2007年以来就没有人编写过JavaME;除了少数IDE项目外,JavaSE中最著名的程序是Minecraft;JavaEE和Android是仅有的两个仍然存在并发挥作用的Java程序。Dalvik作为一个单独的入口没什么好说的,所以*nix上的JVM其实是Java作为平台仅存的基石。它之前从来没有过像样的竞争对手——不是太嫩就是太空,这种情况一直持续到2014年11月12日。这就是你的问题的答案:微软,其总裁在十多年前就说过“Linux是一种癌症”,即日起正式支持其核心价值输出平台在Linux上运行,并且开源免费。世界上所有可以卖给你运行Linux的虚拟主机的服务提供商都在一夜之间变成了.NET托管服务提供商。不爱Java的人突然有了新的选择,文档详细,支持好,路线清晰。社区强大,工具易于使用,并且具有企业级可靠性。最棒的是以前写Java的经验90%都可以无缝移植。我从来没有说过它会是即时的,但想想Java曾经如此普遍——它甚至运行在你的SIM卡上,直到今天——也许它会成为我有生之年的东西。在1973年的COBOL中,人们会觉得世界是无常的。我相信现有的Java系统会逐渐成为遗留代码,人们继续维护它们只是因为它们必须继续维护。新的挣扎还是会出现的,毕竟瘦死的骆驼比马大,一群老鼠还能在骆驼的尸体上啃上一段时间——为的是让你脆弱的心脏免于阅读刚刚这句话的痛苦现在,我承认我也只是一只Java老鼠身上的跳蚤(嗯?你一点都不痛苦吗?看,你甚至不喜欢Java)——这肯定是一个漫长的过程,所以如果你Java编程新手如果您是一名员工,您不必担心您的职业发展。只要人类不发明永生技术,你就不会活到因为只会Java而找不到工作的那一天。退一步说,如果真能把自己逼到这种绝境,自己还是尽快处理吧。最后,我并没有“叫”Java死,因为这不是宣言,更不是诅咒,而是观察现状得出的结论。当然,“死”很难不带感情地读下去,就像我输入kill-9时很难让人觉得我不讨厌这个过程一样。虽然我真的不讨厌它。只有一次单击即可讨厌。还有,所谓“大牛只选择最合适的工具来解决问题,不争论谁好谁坏”,前半句是真的,后半句完全是神话。不是每个人都是实用主义者,争论工具好坏的大牛太多,说这话的人太少了。免责声明和免责声明:我目前是一名Java程序员。准确的说,如果我全职写代码,60%都是Java,包括EJB、JPA、JSF、Swing,甚至GWT。上一次写十多行C#已经是八年前的事了。前。开始写这个回答是因为等飞机很无聊,没想到写了这么久。我不想说服任何人,所以如果你不同意,对你有好处。
