本文作者:Yuchao Huang

www.cnblogs.com/misterchaos/archive/2020/04/06/12650643.html

一、前言

Java语言长期以来一直霸占多数热门编程语言榜单的榜首,可见这是一个备受程序员热捧的编程语言。

Java语言具有什么魅力?想必这都是已经为大多数人们所熟知的了,不值得过多赘述。

而Java语言发展至今,面对发展势头迅猛又十分简单易学的python,以及各种层出不穷的高级语言,Java程序员的份额已经逐步下降,那它是否还能在未来保持领先的优势呢?

本文就主要从Java语言所不擅长的领域,以及它在自己的领土内受到的对手入手,聊一聊Java语言在未来所面临的挑战。

二、Java帝国的今天

1、依然霸占TIOBE热门编程语言的榜首 

这是来自权威开发语言排行榜TIOBE的最新数据(截止到2020年4月),可以看到Java语言依然在语言排行榜霸占第一的位置!

虽然下面Python小老弟近几年搭上大数据的热潮,发展实为迅猛,在其他一些排行榜上面甚至超越大哥,但是在TIOBE这样权威的排行榜上面,Python依旧是小老弟!

2、曾经想扼杀Java的微软宣布加入OpenJDK

这又是一个IT界的真香现场,Sun 公司曾以“歧视使用 Java 软件”为由起诉微软。而微软在2001年推出新版操作系统 Windows XP 时,故意不安装 Java 软件,并且推出高仿 Java 的语言 C# 和 .net 框架。

在现在,微软却宣布加入OpenJDK,拥抱Java技术微软的宇宙第一 IDE Visual Studio也开始支持Java开发(通过VS的 Visual Studio Live Share ,可以关联到VS code上面的Java项目,协同编程,间接地支持了Java开发)。

3、Oracle发布开源全栈虚拟机GraalVM

这是大名鼎鼎的Oracle公司搞出来的开源产品,从官网“Run Programs Faster Anywhere”这句口号和产品的命名GraalVM就可以看出,GraalVM是升级版的JVM。

在GraalVM上面执行Java程序的效率更高(得益于其中的JIT编译器技术)。最牛逼的地方在于,GraalVM支持多语言应用!在GraalVM里面,多种不同的语言可以互相传递数据,支持Java、Python、Ruby、R、Scala、Kotlin,JavaScript等多种语言。

三、Java帝国受到的挑战

1、后端服务器开发

J2EE作为Java平台的重要组成部分,现在广泛应用于Web后台服务器开发领域,在这个领域,Java拥有很多好朋友,比如Spring框架,Mybatis和Hibernate等,使得开发者可以快速构建Web应用程序。关注公众号互联网架构师可以获取系列Spring/Mybatis教程。

这是Java帝国一块重要的领土,但也有很多挑战。

下面就是几个强大的竞争者。

1)Python 的竞争

Python语言和Java相比,具有下面这些优点:

  • 语法简单直观,这意味着开发速度快

  • 第三方库强大,可以写复杂的逻辑

当然Python和Java相比执行效率上肯定是更低了,因此主要应用于小型的网站后台,像阿里这样的大厂就是拥抱Java后台的了。

2)C++ 的竞争

C++语言和Java相比,具有以下优点:

  • 执行效率高

  • 对内存管理自由,而Java由GC来管理

C++适合大型高性能的服务器开发。腾讯更多的就是使用C++进行开发,这点和阿里不同。当然C++相比Java,学习和开发的难度更高。

3)node.js 的竞争

node.js的出现大概是前端程序员最高兴的事情了,因为node.js可以让他们写的JavaScript代码运行在服务端,这样就可以使得前端不用学Java也能自己写后台,摆脱后台爸爸的束缚(误)。

得益于node.js的事件驱动机制,node.js具有很高的并发性能,可以应对大规模的http请求。但也有缺点,因为js只支持单核,因此没法充分利用服务器的性能,它不适合CPU密集型应用。

4)Go 的竞争

Go语言是最近很火的开发语言,适合用于开发高性能分布式系统。这是一个十分强大的竞争对手,被认为是未来的服务端语言。它具有下面这些优点:

  • 学习难度低,容易上手,易于维护

  • 得益于协程,并发性能优越

  • 编译型语言,执行效率高

5)小结

可以看到,在后端服务器开发领域,Java在不同方面受到多种语言的竞争,轻量小型的服务器,人们可以选择Python,node.js或者PHP。

而大型高性能服务器,人们可以选择C++。Go语言就更强大,兼具了比Java更简单的语法和更高的并发性能,背后又是Google爸爸。因此,在这一领域,Java面临巨大的竞争压力。

2、安卓系统应用开发

Java用于安卓应用程序开发已经是很成熟的方案了,目前绝大多数的安卓应用都是用Java写的。很多安卓程序员也都是学Java过来的。但是随着新语言不断推出,和安卓应用开发方式的演变,Java慢慢不再是安卓开发的首选。比如下面这些语言,就是比较热门的选择。

1)Kotlin 成为 Android 开发的首选语言

在2019年的Google I/O 大会上,Google 官方正式宣布,Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言。

Java 占据 Android 开发绝对统治的时代一去不复返了。Kotlin 可以编译成Java字节码,可以在JVM上面运行,也可以编译成JavaScript,在没有JVM的机器上运行。Kotlin语言比Java更安全,更简洁,随着谷歌爸爸推崇,将来的发展前景可期。

2)Flutter 框架和 Dart 语言

这两个都是谷歌最近推出的东西,Flutter是一款用于帮助开发者在iOS和Android两个平台构建高质量原生应用的全新移动UI框架,Dart是由Google开发的一门全新的计算机编程语言,而Flutter使用Dart语言开发。

Fuchsia是谷歌开发的一款全新的操作系统,Flutter 是 Fuchsia 的开发框架。Flutter编写的代码可以同时生成IOS和Android两个平台下的应用程序,因此Flutter框架逐渐热门。

3)大前端时代下的H5应用

随着时代发展,现在的前端不再只是写web网页,而是逐渐发展为大前端,web,Android,IOS通吃,H5应用的流行就是一个例子,大家应该都发现,手机上开始出现快应用,小程序这些使用前端语言进行开发的app,这些应用使用HTML,JS和CSS进行开发,无需使用Java。

相比之下,H5应用轻量级,启动快,跨平台,用户体验方面也逐渐开始接近原生应用的流畅度。因此大有流行的趋势。

4)小结

这一小节介绍了安卓开发的现状,Java作为曾经的安卓开发第一首选语言,正在面临诸如Kotlin语言,Flutter和Dart语言等新的开发语言的挑战,同时,随着安卓应用开发逐渐出现H5应用的趋势,前端语言也逐渐开始来到Java的地盘。

四、Java不擅长的领域

1、前后端分离和JSP的没落

JSP是一度火爆的技术,Java曾对其寄予厚望,希望通过JSP技术占领web应用程序领域。然而,随着网页开发越来越复杂,用JSP开发网页变得很麻烦,前端和后端混杂在一起,开发效率很低。

因此前后端开始分离,而JSP这种运行于服务器端的网页程序也就慢慢退出了舞台。关注公众号互联网架构师可以阅读系列前后端分离教程。

2、C#和.NET抢占桌面程序地盘

Java曾经也被广泛用于开发桌面客户端,其中Swing框架就是一个有名的GUI框架。然而,曾经想要扼杀Java的微软,开发了C#语言。C#成为Java的竞争对手,C#编写运行于Windows系统的桌面应用程序上具有优势。

Java写的桌面应用,虽然可以跨平台到处运行,这对于程序员当然是好事,但是对于用户来说,在Windows上运行个Java程序还得安装JRE,显得十分麻烦。而且,Java桌面程序运行起来比C#程序慢。因此,C#和.NET逐渐占领了桌面应用程序的市场。

3、C/C++活跃的嵌入式系统领域

Java曾经是为了嵌入式系统开发而设计的。然而,Java程序员并不能直接操作硬件,并且,Java是相对较重的语言,对内存等硬件资源不友好,执行效率也相对较低。而在嵌入式系统中,往往只有很少的内存空间,却对运行效率有很高的要求。因此,在嵌入式领域,更多的是C语言和C++甚至是汇编语言的天下。

4、小结

这一小节主要针对Java所不擅长的领域来讨论。可以看到,Java最为有名的特性“Write once, run anywhere”,也成了它最大的缺陷:在执行效率上做不到卓越。

因此,在桌面应用程序和嵌入式系统两个领域Java不是王者。而随着时代发展,前后端分离,JSP也被时代所抛弃。

五、总结

综上所述,相信大家对于Java语言有了更全面的了解,看到了Java背后的芸芸众生,各种层出不穷的高级语言和新技术,和Java相爱相杀。

Java作为现在世界上最热门的编程语言,依然在各个不同的领域具有重要的地位 ,Java的强大之处在于,它十分全能,几乎没有什么是Java不能做的,但它并不都是做得最好的,我们也可以看到许许多多的竞争者在不同方面比Java语言更加优越。

但是,我写这篇文章的目的,不在于比较各个语言的优劣,各种语言都有自己的优点和缺点,我们也不必因为某种语言更好就着急转语言。

总而言之,语言只是工具,各种语言之间,语法的差别都不是特别大,背后的原理也是大同小异,往往只是多了几个新特性,而语言背后的编程思维才是最重要的。

关注微信公众号:互联网架构师,在后台回复:2T,可以获取我整理的教程,都是干货。

猜你喜欢

1、GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结

2、如何才能成为优秀的架构师?

3、从零开始搭建创业公司后台技术栈

4、程序员一般可以从什么平台接私活?

5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6、滴滴业务中台构建实践,首次曝光

7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

8、15张图看懂瞎忙和高效的区别

9、2T架构师学习资料干货分享

Java 会是未来第一编程语言吗?相关推荐

  1. Java是世界上最好的语言?会是未来第一编程语言吗?

    一.前言 Java语言长期以来一直霸占多数热门编程语言榜单的榜首,可见这是一个备受程序员热捧的编程语言.Java语言具有什么魅力?想必这都是已经为大多数人们所熟知的了,不值得过多赘述.而Java语言发 ...

  2. 与java类似的电脑程序语言_2018十大最热门编程语言排行榜出炉,Java竟不是第一!...

    请注意这个排行榜只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少.请注意这个排行榜只是反映某个编程语言的 热门程度,并不能说明一门编程语言好不好,或者一门 ...

  3. TIOBE 7 月编程语言排行榜:C、Java 和 Python 争夺第一

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) TIOBE 官方最新发布了 7 月的编程语言榜单,而本月也是 TIOBE 榜单成立 20 周年,一起来看这个月榜单中有哪些最新变化吧? ...

  4. 2018十大最热门编程语言排行榜出炉,Java竟不是第一!

    编程语言的受欢迎程度.学习的人群数量,以及由于人工智能的兴起,最热门的编程语言排行榜也发生了变化.让我们来看看. 1.Python Python的历史可以追溯到1989年,因其高度可读的代码而深受其粉 ...

  5. 超越Java:Python正式登顶世界第一编程语言

    编程语言流行指数(PYPL)排行榜近日公布了2019年2月份的最新榜单,多年王者Java终于跌落神坛,Python则登上了No.1. Python拥有简单.免费.兼容性.面向对象.库丰富等突出优点,这 ...

  6. 9 月编程语言推荐榜:C、Java 和 Python 争夺第一

    TIOBE 官方最新发布了9月的编程语言榜单,而本月也是 TIOBE 榜单成立20周年,一起来看这个月榜单中有哪些最新变化吧? C.Java 和 Python 争夺第一 回想 2001年仅作为个人项目 ...

  7. Java 17 采用率增长 430%、Java 11 稳居第一,最新 Java 编程语言报告来了!

    编译 | 苏宓 出品 | CSDN(ID:CSDNnews) 1995 年,Sun Microsystem 公司发布了 Java 程序设计语言,为开发现代多媒体应用程序提供了一种更加可移植和交互的方式 ...

  8. 刷爆了!Java蝉联5次第一,网友:最强王者!附70k架构师Java学习路线

    图片来源:视觉中国 最近在知乎上,看到一位蚂蚁金服的Java工程师分享,985硕士,校招就拿到了30w的offer.群内也有群友分享,自己通过三年的奋斗,终于年薪70w.这让很多同龄人羡慕,但是羡慕的 ...

  9. Java核心技术(Java白皮书)卷Ⅰ 第一章 Java程序设计概述

    第1章 Java程序设计概述 1.1 Java程序设计平台  具有令人赏心悦目的语法和易于理解的语言,与其他许多优秀语言一样,Java满足这些要求.  可移植性  垃圾收集  提供大型的库   如果想 ...

  10. (三)展望Java技术的未来

    本篇主要简单 了解一下Java技术的未来,结合着[深入理解Java虚拟机]一书当中整理了本篇博客,感兴趣的可以跟着博主学习一下! 一.Graal VM 网上每隔一段时间就能见到几条"未来X语 ...

最新文章

  1. 太赞了,Intellij IDEA 竟然把 Java8 的数据流问题这么完美的解决掉了!
  2. 机器人产业:借人工智能突破“拐点”
  3. python基本输入输出函数有_新手学Python,输入输出函数、赋值语句常见5个错误,弄懂即过关...
  4. Aizu 2224 Save your cats
  5. python 内置递归
  6. JS 转换数字为大写
  7. anjularjs ajax 调用,AngularJS AJAX调用的服务(AngularJS Ajax Call in Service
  8. nio框架中的多个Selector结构
  9. 现男友代言!最强自拍手机荣耀20S正式发布:售价1899元起
  10. 新手如何入门PyTorch
  11. FOSRestBundle功能包:使用指南
  12. 菲氏微积分与Keisler微积分:两个不同时代的微积分教材
  13. 算法学习——K近邻算法
  14. 最新行政区划省市区镇街道村 导入数据库 MYSQL (2021年4月 )
  15. html表单有几部分组成,网页制作时表单由哪两部分组成
  16. 菜鸟好文推荐(七)——他改了密码,姑娘说了“Yes, I do”
  17. Hifn容量优化卡成功支持Bull公司备份方案
  18. 手把手教你搭建Windows环境微信小程序的本地测试服务器
  19. 【解读黑客】何为Rootkit?
  20. 全国计算机等级考试.pdf,全国计算机等级考试.pdf

热门文章

  1. 【树莓派之旅】第01期:一根网线搞定树莓派可视化界面
  2. P2540 斗地主增强版
  3. 【总结整理】如何成为小白用户----摘自《人人都是产品经理》
  4. myeclipse打开JSP电脑很卡,CPU使用率90%以上
  5. 革新—决定磁带未来的最大挑战
  6. Troubleshooting High CPU Java
  7. [Android实例教程] 教你如何拍照+相册选择图片+剪裁图片完整实现
  8. HAProxy的安装和部署
  9. ORACLE10G让空间管理变轻松【SPACE MANAGEMENT MAKE EASILY ON ORACLE10G】
  10. 在苹果Mac中如何不用鼠标刪除文件?