Java最大的优势真的在于跨平台吗?

下面讨论仅仅针对PC端和移动端。

曾经是,但如今已经不是了。

有跨平台需求的仅仅是client应用。而不是服务端。比如桌面应用,你的客户可能是Windows用户。也可能是Linux用户,这时候假设不想多投入成本对各个平台进行适配。那么Java所谓的”Write once, run everywhere”就显得异常光彩。然而今天,整个软件世界都在向B/S应用倾倒(嵌入式除外),即使要做client跨平台,QT等第三方框架远远比Swing更强大,Java在桌面应用领域基本被淘汰已经是不争的事实了,而当初Java引以为豪的Applet也早已销声匿迹。假设说clientJava另一点优秀的话。那仅仅有Android了。

Android最初确实靠JVM屏蔽了不同硬件设备之间的差别并取得了巨大的成功。但在今天。Android L中ART模式的出现也即将颠覆这一情况,况且Google还可能会想用自家的Go语言代替Java成为Android平台的第一语言。所以在client,Java差点儿完败。

服务端应用不须要跨平台。

做一个Webserver,我想没有哪家公司今天用Linux,下个月就换Windows吧?假设仅仅是更换Linux发行版。如从Debian到Fedora,本质上讲其Linux内核是不变的。因此像C++这样纯编译类型的语言已经没什么问题。假设做游戏server,我想差点儿都会选择Linux而不是Win平台。

Java的跨平台优势的有用性事实上已经被大大弱化了,能够说在实际应用中并不明显,在普通情况下差点儿感知不出Java还能跨平台这个特性。作为三大商用JVM之中的一个的JRockets是仅仅有编译器的JVM,即应用启动时会将字节码所有编译为本地机器码,这事实上就非常大程度上摒弃了跨平台,而追求性能。

今天,Java最大的优势在于其庞大而完好的生态系统。 一门编程语言能否流行,主要是由其生态系统决定的。Java生态系统的完好性主要体如今下面几个方面:

  1. Java拥有世界上数量最多的程序猿。你说他们是农民也好,但数量放在那里。最明显的效果就是公司招人的时候会比較easy地招到Java程序猿。

    试想假设你想要做一套软件,你有一个非常棒的技术方案须要用C++,Scala或Ruby等语言实现,但招不到足够的人手,那么计划多半泡汤。

    这时候你的应用Java也能做到,而且非常轻松就能招到足够的人,那么你选择Java的可能性就要大一些。

  2. Java拥有大量的第三方类库。假如你想解析HTML,用C/C++这类语言恐怕多半仅仅能自己编写解析算法库了,而假设是Java,你能够非常轻松地在Github上找到JSoup,使用Maven导入依赖后分分钟就搞定HTML。为此另一句讽刺Java的话是:“我们不生产代码。我们仅仅是Github的搬运工。

    ”这句话从字面上看是非常有道理的。但却忽略了对软件生产效率的提升所带来的巨大价值。对于软件的开发。公司的唯一成本事实上就是“人头费”,每降低一个月开发时间,就能帮助公司节省几十万几千万的研发成本。

  3. Java拥有功能强大的IDE。 Eclipse,通过插件差点儿能够满足你开发的不论什么需求。

    它尽管有些慢。但你能够通过JVM调优来提高程序的流畅度,千万不要使用默认的JVM參数。只是,IntelliJ Idea已经全然超越Eclipse了,Idea的智能程度差点儿能够媲美Win平台下的VS。我是那类离了Vim就活不下去的人,在这两款IDE中都有Vim插件从而让我愉快地存活下去。

  4. Java拥有非常多杀手级应用。 不必多说,Spring, Struts, Hibernate, Hadoop, Tomcat, JBoss等等。

    See 我在知乎上的一个回答

  5. Java的语法特性非常少。对,这也是一项长处。

    C++相比C加入了大量特性,学起来费事不说。用起来还会降低代码可读性,事实上是费了工夫不讨好。

    当今世界对编程语言的要求是语法简单。代码可读。对性能已经是退而求其次了,因此才诞生了Python, Ruby这种编程语言。有非常多人批评Java语法写起来非常臃肿,我承认这一点,但事实是,编程语言从来都不是由于语法臃肿而被淘汰的。决定其生死的是生态系统。对于批评者。引用知乎的一句话:”动态类型一时爽,代码重构火葬场

Java的性能已经足够高了。 Sun/Oracle的HotSpot JVM内置的JIT编译器在执行时对字节码已经做出了非常大的优化努力。服务端应用启动后对JVM进行足够的”预热”。并给出合理的启动參数就可以。假设不是对性能十分敏感的系统类应用。Java已经足够快了。有一种简单可行的方法能够形象地看出这点,在JVM启动參数中加入+XX:PrintCompilation能够看到JIT编译器的忙碌。当今世界对软件的需求量越来越大,在性能可接受的情况下。开发效率才是第一位的,这也是Python这类动态脚本语言流行的主要原因。

以上仅做客观分析。并不想引起语言战争。

毕竟,没有最好的语言,仅仅有最适合某种项目的语言。

引用黑格尔的一句话:”存在即合理。

原文地址:https://www.cnblogs.com/gccbuaa/p/7299375.html