以下讨论只针对PC端和移动端。
Java最大的优势真的在于跨平台吗?
以前是,但现在已经不是了。
仅仅是客户端应用存在跨平台需求,并非服务端,比如说桌面应用,你的客户有可能是Windows用户,也有可能是Linux用户,在这种情况下,若是不想投入过多成本去对各个平台做适配,那么Java所讲的“Write once, run everywhere”就会显得格外光彩。可是就在今天 ,整个软件的世界 ,都在朝着B/S应用倾斜 ,这里面嵌入式是除外的 ,哪怕是到了要做客户端跨平台的地步 ,QT等第三方框架 ,也远比Swing更为强劲 ,Java在桌面应用的领域 ,基本上已经被淘汰 ,这已然是无法争辩的事实了 ,而最早的时候Java所引以为傲的Applet ,也早就已经消失得没有踪迹了 。要是说客户端的Java ,还有那么一点点出色之处的话 ,那就只剩下Android了 。最初,安卓确实借由JVM屏蔽了不同硬件设备间的区别,进而取得了巨大成功,然而在当下,Android L里ART模式已然出现,这即将颠覆此种状况了呢,并且另外,Google还有可能打算用自家的Go语言去取代Java,使之成为Android平台的第一语言哇,故而在客户端,Java几乎是完败的啦。
服务端应用没必要跨平台,去做个Web服务器,我揣度现今没有哪家公司会此刻用Linux,到下个月就换成Windows吧?要是只是替换Linux发行版,好比从Debian换到Fedora,从本质上来说其Linux内核是保持不变的,所以像C++这种纯粹编译类型的语言已然没什么问题,要是做游戏服务器的话,我寻思几乎大都会挑选Linux而非Win平台。有着跨平台优势的Java,其优势的实用性实际上已经被极大地弱化了,能够这么讲,于实际应用里它并不显著,在通常情形下基本上无法感知到Java具备跨平台这个特性。作为三大商用JVM之一的JRockets,属于仅有编译器的JVM,就是在应用启动的时候会把字节码全部编译成本地机器码,而这些也充分表明它在很大程度上抛弃了跨平台的特性,转而追求性能。
于今日而言,Java所具备的最大优势乃是其拥有庞大且完善的生态系统,一门编程语言能否流行,主要是由其生态系统予以决定的,Java生态系统的完善性集中体现在以下几个方面:

有数量最多的程序员的是 Java 。你哪怕说他们是农民 , 但有那样的数量在呢 , 最显著的效果是公司招人时能相对轻易地招到 Java 程序员这一情况 。要是设想你想做一套软件 , 你有很棒的技术方案需用 C++ 、 Scala 或者 Ruby 等语言来实现 , 然而招不足相应的人手 , 那么计划大多会失败 。这时候你的应用用 Java 也能够达成 , 而且能很容易就招到充足的人 , 那么你选用 Java 的可能性便会更大一些 。
Java存有大量第三方类库,若想解析HTML,用C/C++这类语言恐怕大多只能自行编写解析算法库,要是Java则可轻松在Github上找到JSoup,使用Maven导入依赖后很快就能搞定HTML,为此还有句讽刺Java的话是:“我们不生产代码,我们只是Github的搬运工” ,这句话从字面看很有道理,却忽略对软件生产效率提升带来的巨大价值 。公司软件的开发行径中 ,唯一仅有的成本切实确凿是“人头费” ,每一次减少一个月的开发时间跨度之际 ,便能协助公司节省几十万甚至几千万的研发成本费用 。
Java具备强大功能诸多的IDE,对Eclipse而言,借助插件差不多能够满足你开发之中的任何种种需求,它虽说存在些许慢的情况,然而你能够经由JVM调优来提升程序的流畅程度,绝对一定不要运用默认的JVM参数,不过,IntelliJ Idea已然彻底完全超越了Eclipse,Idea的智能水准几乎能够比得上Win平台之下的VS,我属于离开Vim便无法存活下去的那类人,在这两款IDE里俱有Vim插件进而让我愉悦欢乐地存活下来。
Java具备诸多堪称杀手级的应用,这一点无需过多阐述,像Spring,Struts,Hibernate,Hadoop,Tomcat,JBoss等等 。
Java 的语法特性数量不多,没错,这同样属于一项优点,C++ 相较于 C 添加了许多特性,学习它不但费劲,使用时还会致使代码可读性降低,实际上是花费了精力却未得到好的结果,当今世界对于编程语言的要求在于语法简易,代码具备可读性,对于性能已然是退而求其次了,所以才出现了 Python、Ruby 这类编程语言,有不少人指责 Java 语法编写起来显得臃肿,我认可这一点,然而事实是,编程语言从来都并非因语法臃肿而被淘汰,决定其存亡的是生态系统。针对于批评者而言,引用知乎所说的一句话,那便是,“动态类型一时爽”,并且,“代码重构火葬场”
Java的性能已然是足够高的了,Sun/Oracle所拥有的HotSpot JVM里面置有的JIT编译器,在运行之际针对字节码已然付出了相当大的优化精力,对于服务端应用而言,启动之后给予JVM充足的“预热”,并且给出恰当合理的启动参数便行了,如果并非是对于性能极为敏感的系统类应用,Java已然是足够快的了,存在着一种简单可行的办法能够形象地将这点呈现出来,在JVM启动参数里添加+XX:PrintCompilation能够看到JIT编译器的忙碌。当前世界之中,对于软件的需求数量变得越发多,在性能能够被接受的情形之下,开发效率才属于首要位置,而此便是Python这类动态脚本语言得以流行起来的主要缘故。
仅以上述内容来做客观的分析,并非是想要引发语言方面的战争,毕竟,不存在那种最好的语言,有的只是最适宜于某种项目的语言,引用黑格尔所说的一句话,即“存在即合理” 。
本文来自作者[寻雪]投稿,不代表芝麻开门立场,如若转载,请注明出处:https://aizmkm.com/zshi/202510-9497.html
评论列表(3条)
我是芝麻开门的签约作者“寻雪”
本文概览:以下讨论只针对PC端和移动端。Java最大的优势真的在于跨平台吗?以前是,但现在已经不是了。有跨平台需求的仅仅是客户端应用,而不是服务端。...
文章不错《Java跨平台优势不再?PC端与移动端现状大揭秘》内容很有帮助