JAVA要死了吗?不!我来告诉你为什么!
我们看到“Java 死了吗?” 这个问题,年年都被抛出来,然而至今为止,从所有的第三方统计来看,Java 不仅活的很好,还在保持增长。虽然不断有新的语言面世,TIOBE 仍将 Java 评选为 2015 年度最热门语言,目前显示它相比 2014 年,用户增加了 5%,高于其他所有编程语言。
不仅如此, PYPL Index(一个基于谷歌搜索中教程搜索频度对语言进行评估的站点)的数据显示, Java 以 23.9% 的搜索量遥遥领先。
以下是一些乐橙谷认为 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。
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 万岁!!
本文由华宇互联旗下领先教育品牌乐橙谷提供。
JAVA要死了吗?不!我来告诉你为什么!的更多相关文章
- JAVA还没死的原因
尽管 TIOBE 指数显示,Java 是一门正在衰落的语言,但它仍然稳居榜首.从 2016 年到 2017 年间,这个数字可能会大幅下降,但最近下降速度有所放缓:在 2018 年 10 月到 2019 ...
- 我们为什么要学习Java
有人说Java已死,学Java还有前途吗? 这怎么可能呢? “Java已死”的论断从12年开始就反复有人提,但是直到今天,Java仍然活着,2015年还荣登TIOBE指数的编程语言奖,成为年度冠军.如 ...
- Programming for thread in Java
Programming for thread in Java Override Annotation package java.lang; import java.lang.annotation.El ...
- Java是什么?我们为什么要学习Java?
Dear All: 首先请允许我为大家介绍下什么是Java?,我们为什么要学Java? 1.Java名字的由来 : Java名字的由来,实际上是一个有趣的故事,我们所见到的Java标志,总是一杯热咖啡 ...
- JAVA GUI THREAD---***
针对用户界面的多线程 GUI下面的多线程方式 1.与GUI类分离方式 分离方式,在创建线程类实例时需要代入GUI句柄,通过GUI句柄操作GUI,也就是说线程类和GUI类都要有对方的实例,以便相互操作. ...
- Java匹马行天下之Java帝国的崛起(大结局)
Java匹马行天下之Java帝国的崛起大结局 前言: [博客*缘] 网络真情伴, 博客友谊连. 笑中藏泪暖中寒. 回想那些悲喜, 苦涩也缠绵. 往事难回首, 新篇染旧言. 世间多少梦能全. 感谢相牵, ...
- Java多线程编程(七)线程状态、线程组与异常处理
一.线程的状态 线程对象在不同的运行时期有不同的状态,状态信息就存在于State枚举类中. 调用与线程有关的方法后,会进入不同的线程状态,这些状态之间某些是可双向切换的,比如WAITING和RUNNI ...
- 7.Java帝国的诞生
1972年,C诞生,而Java是1995年诞生的.它贴近硬件,有汇编语言的特性,运行极快,效率极高.早期,用在操作系统.编译器.数据库.网络系统等.但它有两把沉重的枷锁一直在程序员身上,那就是指针和内 ...
- python和java哪个更值得学?Python会超越Java吗?
Java快死了吗?当然不是.但是Python的普及率每年都在增长.每个都有自己的优点和缺点,并且两者都是值得了解的. 根据IT编程趋势,就工作数量,现有Java开发人员的数量以及IT中的总体使用情况而 ...
随机推荐
- vultr vps服务器存在的7个优势及选择原因
原本准备在第一篇文章的时候完整的新注册账户的,但是考虑到对于这款VPS主机的了解,还是先整理这篇关于网络上和我自己在使用vultr vps主机产品的时候可能自认为的优势之处,这样可以加强很多新用户对于 ...
- cURL入门
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性,以及在PHP中如 ...
- Makefile 一点一滴(三)—— 尝试简单的变量替换
上一版的 makefile: TestCpp : ./debug/TestCpp.o g++ -o TestCpp ./debug/TestCpp.o ./debug/TestCpp.o : ./sr ...
- git 小结
git cherry-pick de0ec64 可将另一个分支中的提交 cherry-pick到当前分支来
- Visual Studio 下C#编译器在解析属性名时如果增加一个get_[您的另一个已经包含在类中属性名]的属性会报错,微软大哥这是什么鬼?
假设在在我们的vs环境新建一个类 copy以下代码,表面看好像一切都没有问题. using System; using System.Collections.Generic; using System ...
- druid.properties的配置
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://NoOne:3306/eyes<!--需修改--> username=root ...
- 输出MYSQL所有SQL语句
在my.cnf中的mysqld段增加如下参数,然后重启MYSQL: log-output = FILE general_log = 1 general_log_file = "D:/Visu ...
- php项目中使用memcache
memcache为分布式内存缓存系统,通过在内存中存取数据和对象减少对数据库的访问从而减轻数据库的负载,memcache分为客户端和服务端,服务端为C实现,有现成的服务端应用程序,无需开发,只需要配置 ...
- MVC 请求处理流程(二)
[上一篇]中我们说到了对象AsyncControllerActionInvoker,在Controller的ExecuteCore方法中调用AsyncControllerActionInvoker对象 ...
- OPENCV配置 C1083: 无法打开包括文件:“opencv2/opencv.hpp”
本人没实操过C/C++,理论看过不少. 目前出于提升技术的考虑想做OPENCV 配置了2天,总算是配置好了..遇到不少问题. 计算机配置WIN10,用户环境变量配置也郁闷过... JDK等配置方式,配 ...