我们看到“Java 死了吗?” 这个问题,年年都被抛出来,然而至今为止,从所有的第三方统计来看,Java 不仅活的很好,还在保持增长。虽然不断有新的语言面世,TIOBE 仍将 Java 评选为 2015 年度最热门语言,目前显示它相比 2014 年,用户增加了 5%,高于其他所有编程语言。
不仅如此, PYPL Index(一个基于谷歌搜索中教程搜索频度对语言进行评估的站点)的数据显示, Java 以 23.9% 的搜索量遥遥领先。
虽然有很多阶段性因素令 Java 在过去 2 年迎来复兴( android 开发的爆发,Java 8 的发布,Spring 社区的发展,尤其是 Spring Boot),但是市场的主导地位只可能来源于优秀的产品。以下是一些我们认为 Java 不会很快衰落原因。
JVM 和 Java 生态
Java 虚拟机(JVM)将代码编译为字节码,并在 JVM 中解释执行。由于 JVM 运行在特定的硬件和系统平台之上,这使得 Java 得以在任何设备上运行,无论是 Windows 设备、Mac,或是某个不为人知的 Linux版本。
JVM 的最大优势是它增强了兼容性和稳定性。因为你的应用运行在虚拟机而非直接运行在实体机上,你只用编写一次某个程序,就可以确保在所有的 Java 虚拟机实现上,都可以很好的运行。这一原则是 Java 的核心理念的基础:“一次编写,处处运行。” 该技术使得 Java 应用对底层环境的变化具备很好的弹性。
安全性 & 交互能力
Android 环境是研究 Java 原生安全性和通用性很好的素材。Android 占据全球移动市场89% 份额,基于 Java 运行。由于 Java 允许操作系统运行在虚拟机中,因此不需要为每台设备分别编译,这就提高了系统的稳定性和易用性。
Android 完美的展示出了 Java 的另一个优势, 它与其他基于 JVM 的程序语言之间的交互能力,比如 Scala, Groovy, Clojure, JRuby 等等。当你用“更加动态”的语言构建你的应用,依然需要使用 Java 以获得强大的功能!
巨大的 Android 市场,依然不可避免的存在漏洞利用的风险。 Android + Java 允许用户运行低可信的应用,所有应用都运行在虚拟机中可以减小这种风险。换言之,如果 APP 要利用系统内核漏洞,唯一的途径是利用 VM 实现的缺陷,好在 VM 被设计的足够紧凑,并且通过定义良好的安全接口保护系统安全。
Java在大规模产品中的应用
Amazon, Google, eBay 以及其他很多大型电子商务品牌,都使用Java作为他们的业务后台。它们选择 Java,是由于 Java 久经考验,并且有良好的扩展性。任何语言、任何后台都可以或多或少的管理一些用户,但是 Java 能可靠的应对至少 2 亿用户。我们来看一些突出的例子。
Hadoop
Apache Hadoop 是一个运行在大型硬件集群上的 Java 框架应用。 在设计之初,它便具有高吞吐能力,应用于处理或者操作海量数据集合的应用场景。 如今, Hadoop 被很多像 Facebook, Amazon, IBM, Joost, 以及 Yahoo 这样的大型公司应用于数据处理、分析、报表等方面。
Hadoop 的创始人 Doug Cutting 曾说过:“ Java 在开发者的生产率和运行效率之间取得很好的权衡。开发者可以使用广泛存在的高质量类库,切身受益于这种简洁、功能强大、类型安全的语言。“ 换言之: 没有 Hadoop 就不存在大数据,没有 Java 就没有 Hadoop。
Twitter 最近为 Java 和 Oracle 团队,赢得一场令人瞩目的胜利。Twitter 原本基于 Ruby on Rails 开发, 伴随着 Twitter 的快速流行, Twitter 的经历非常清楚的暴露了 RoR 在扩展性方面的缺陷。”失败的鲸鱼“(Twitter 的网络不堪重负时的提示)出现的越来越频繁,直到 Twitter 于 2012 年开始向 Java 迁移才有所改善。今天,Twitter 基于 Java + Scala 运行,那条 ”失败的鲸鱼“ 便绝迹了。
Minecraft
Minecraft 是一款异常成功的游戏。早在 2014 年被出售给微软之前,该游戏就早已为其开发者挣了数百万美元。而 Minecraft 就运行在 Java 上。
在广阔的 Java 社区的帮助下,Minecrafe 被传播给成千上万的潜在建模爱好者。同时,Minecraft 也将 Java 介绍给新一代的开发者。只要简单的 Google 一下 “在 Minecraft 中建模”,你会得到超过 65 万条记录,其中很多是面向 12 岁以下群体的编程教学资源。
Java 的未来
去年,Oracle 宣布 Java 9 即将到来,定于 2016 年 9 月发布。这次升级主要是将语言中众多的功能拆分为较小的组件,希望通过这一变化,使 Java 更快、更易用。Oracle 的整体投资(经常受到批评)最终还是保证 Java 可以继续支持众多依赖它的企业,同时保持着对开发新趋势的响应。
Java 和 物联网
“我确信 Java 的未来在物联网。我很希望 Oracle 及其伙伴们,会将注意力集中到为 Java 提供彻底的端到端的存储解决方案上:从终端设备开始,穿过网关,直至企业后端。构造这样一个故事,并且将其运作成功,这将有助于巩固 Java 未来 20 年里的地位。这不仅仅对整个产业蕴含着巨大的机会,而且我认为 Java 可以在这方面做得很好。”Mike Milinkovich (Eclipse 基金会执行董事)如此说道。
Oracle 对此表示赞同,前研发副总裁 Georges Saab 说:“ Java 是物联网时代最佳的技术。物联网遇到的很多挑战,都是20世纪90年代 Java 在桌面和客户端领域面对过的。你已经有了大量不同的硬件系统。你希望开发者们可以看清系统的细枝末节,深入理解它,并逐步向它迁移。Java 是少数允许你实现以上想法的技术。 ”
Java + Stormpath
也许有一些对 Java 批评的声音,而且有些观点也是合理的,但是瑕不掩瑜,比如:它提供杰出的开发、性能分析工具;JVM;海量的库等等等等。在 Stormpath 中,我们从诞生之初,后台就完全由 Java 实现,最近我们又升级到了 Spring Boot。Java 万岁!!