点击上方“Java遇见PythonGo”,选择“星标”
超级无敌干货第一时间推给你!!!
一、前言
Java语言长期以来一直霸占多数热门编程语言榜单的榜首,可见这是一个备受程序员热捧的编程语言。Java语言具有什么魅力?想必这都是已经为大多数人们所熟知的了,不值得过多赘述。而Java语言发展至今,面对发展势头迅猛又十分简单易学的python,以及各种层出不穷的高级语言,Java程序员的份额已经逐步下降,那它是否还能在未来保持领先的优势呢?本文就主要从Java语言所不擅长的领域,以及它在自己的领土内受到的对手入手,聊一聊Java语言在未来所面临的挑战。
二、Java帝国的今天
2.1 依然霸占TIOBE热门编程语言的榜首
2.2 曾经想扼杀Java的微软宣布加入OpenJDK
2.3 Oracle发布开源全栈虚拟机GraalVM
三、Java帝国受到的挑战
3.1 后端服务器开发
J2EE作为Java平台的重要组成部分,现在广泛应用于Web后台服务器开发领域,在这个领域,Java拥有很多好朋友,比如Spring框架,Mybatis和Hibernate等,使得开发者可以快速构建Web应用程序。这是Java帝国一块重要的领土,但也有很多挑战。下面就是几个强大的竞争者。
3.1.1 Python 的竞争
-
语法简单直观,这意味着开发速度快
-
第三方库强大,可以写复杂的逻辑
当然Python和Java相比执行效率上肯定是更低了,因此主要应用于小型的网站后台,像阿里这样的大厂就是拥抱Java后台的了。
3.1.2 C++ 的竞争
C++语言和Java相比,具有以下优点:
-
执行效率高
-
对内存管理自由,而Java由GC来管理
C++适合大型高性能的服务器开发。腾讯更多的就是使用C++进行开发,这点和阿里不同。当然C++相比Java,学习和开发的难度更高。
3.1.3 node.js 的竞争
node.js的出现大概是前端程序员最高兴的事情了,因为node.js可以让他们写的JavaScript代码运行在服务端,这样就可以使得前端不用学Java也能自己写后台,摆脱后台爸爸的束缚(误)。得益于node.js的事件驱动机制,node.js具有很高的并发性能,可以应对大规模的http请求。但也有缺点,因为js只支持单核,因此没法充分利用服务器的性能,它不适合CPU密集型应用。
Go语言是最近很火的开发语言,适合用于开发高性能分布式系统。这是一个十分强大的竞争对手,被认为是未来的服务端语言。它具有下面这些优点:
-
学习难度低,容易上手,易于维护
-
得益于协程,并发性能优越
-
编译型语言,执行效率高
3.1.5 小结
可以看到,在后端服务器开发领域,Java在不同方面受到多种语言的竞争,轻量小型的服务器,人们可以选择Python,node.js或者PHP。而大型高性能服务器,人们可以选择C++。Go语言就更强大,兼具了比Java更简单的语法和更高的并发性能,背后又是Google爸爸。因此,在这一领域,Java面临巨大的竞争压力。
3.2 安卓系统应用开发
Java用于安卓应用程序开发已经是很成熟的方案了,目前绝大多数的安卓应用都是用Java写的。很多安卓程序员也都是学Java过来的。但是随着新语言不断推出,和安卓应用开发方式的演变,Java慢慢不再是安卓开发的首选。比如下面这些语言,就是比较热门的选择。
3.2.1 Kotlin 成为 Android 开发的首选语言
3.2.2 Flutter 框架和 Dart 语言
3.2.3 大前端时代下的H5应用
随着时代发展,现在的前端不再只是写web网页,而是逐渐发展为大前端,web,Android,IOS通吃,H5应用的流行就是一个例子,大家应该都发现,手机上开始出现快应用,小程序这些使用前端语言进行开发的app,这些应用使用HTML,JS和CSS进行开发,无需使用Java。相比之下,H5应用轻量级,启动快,跨平台,用户体验方面也逐渐开始接近原生应用的流畅度。因此大有流行的趋势。
3.2.4 小结
这一小节介绍了安卓开发的现状,Java作为曾经的安卓开发第一首选语言,正在面临诸如Kotlin语言,Flutter和Dart语言等新的开发语言的挑战,同时,随着安卓应用开发逐渐出现H5应用的趋势,前端语言也逐渐开始来到Java的地盘。
四、Java不擅长的领域
4.1 前后端分离和JSP的没落
4.2 C#和.NET抢占桌面程序地盘
Java曾经也被广泛用于开发桌面客户端,其中Swing框架就是一个有名的GUI框架。然而,曾经想要扼杀Java的微软,开发了C#语言。C#成为Java的竞争对手,C#编写运行于Windows系统的桌面应用程序上具有优势,Java写的桌面应用,虽然可以跨平台到处运行,这对于程序员当然是好事,但是对于用户来说,在Windows上运行个Java程序还得安装JRE,显得十分麻烦。而且,Java桌面程序运行起来比C#程序慢。因此,C#和.NET逐渐占领了桌面应用程序的市场。
4.3 C/C++活跃的嵌入式系统领域
Java曾经是为了嵌入式系统开发而设计的。然而,Java程序员并不能直接操作硬件,并且,Java是相对较重的语言,对内存等硬件资源不友好,执行效率也相对较低。而在嵌入式系统中,往往只有很少的内存空间,却对运行效率有很高的要求。因此,在嵌入式领域,更多的是C语言和C++甚至是汇编语言的天下。
4.4 小结
五、总结
end
<p style="caret-color: rgb(255, 0, 0);line-height: 1.8em;orphans: 4;font-size: 15px;letter-spacing: 0.1em;white-space: pre-wrap;font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;margin: 2em 5px !important;"><span style="color: rgb(0, 122, 170);"><strong>Java遇见PythonGo</strong></span>,现已正式上线!<br /></p><p style="caret-color: rgb(255, 0, 0);line-height: 1.8em;orphans: 4;font-size: 15px;letter-spacing: 0.1em;white-space: pre-wrap;font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;margin: 2em 5px !important;">接下来我们将会在该上,为大家<span style="color: rgb(0, 122, 170);"><strong>分享优质的 Java,Python,Go领域干货</strong></span>,不限于 BAT 面试, 算法,数据库,微服务,高并发, Python数据分析,自动化运维,机器学习等相关知识,期待与您一同进步。</p><p style="text-align: center;"><img class="rich_pages" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="860" style="box-sizing: border-box !important;visibility: visible !important;width: 253px !important;" src="https://www.zkxjob.com/wp-content/uploads/2022/05/wxsync-2022-05-178736b906215c94f4adf1a0ef954636.jpeg" /></p><p style="text-align: center;"><span style="color: rgb(255, 76, 65);font-size: 15px;letter-spacing: 2px;text-align: center;white-space: pre-wrap;word-spacing: 1px;background-color: rgb(255, 255, 255);">集合三大编程语言为一体的</span></p>
<p data-darkmode-bgcolor-159576399027510="rgb(25, 25, 25)" data-darkmode-original-bgcolor-159576399027510="rgb(255, 255, 255)" data-darkmode-color-159576399027510="rgba(163, 163, 163, 0.9)" data-darkmode-original-color-159576399027510="rgba(230, 230, 230, 0.9)" data-darkmode-bgcolor-15962880628855="rgb(25, 25, 25)" data-darkmode-original-bgcolor-15962880628855="rgb(255, 255, 255)" data-darkmode-color-15962880628855="rgba(163, 163, 163, 0.9)" data-darkmode-original-color-15962880628855="rgba(230, 230, 230, 0.9)" data-darkmode-bgcolor-15963755570771="rgb(25, 25, 25)" data-darkmode-original-bgcolor-15963755570771="rgb(255, 255, 255)" data-darkmode-color-15963755570771="rgba(163, 163, 163, 0.9)" data-darkmode-original-color-15963755570771="rgba(230, 230, 230, 0.9)" style="text-align: right;"></p>
本篇文章来源于: 菜鸟学Python
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Python 进阶编程之字典的高级用法05/29
- ♥ 如何在mongodb数据库中创建表11/14
- ♥ IT转行为什么一定要学Python?什么是 Python 职业发展?12/20
- ♥ 30个Python常用极简代码,拿走就用06/10
- ♥ Python bool 布尔类型11/05
- ♥ \t在python中代表什么08/18
内容反馈