Java是否还能再辉煌十年?
一、前言
Java语言,熟悉的coffee标志,一直以来在后台开发领域都是比较吃香的语言。想必有学过后台开发的同学,应该都有听说过Java衍生出来的工具和框架。为什么Java会备受人们追捧呢?它今后的发展又会是怎样的呢?能否再次辉煌十年?而最近热门的人工智能,备受欢迎的是Python语言,它相对于Java的优势所在是什么?
我们这个世界,Java这门语言究竟主要运用于什么领域?而市场上有许许多多的编程语言,Java并不是一家独大,同时有许多的编程语言正在侵蚀Java的市场。有这么多的语言,为什么我们有些人选择Java去开发呢?
本文将结合Java的应用领域和不擅长的领域中与其它编程语言的对比进行分析,讲讲Java究竟是一门怎样的编程语言?
二、如今的Java语言
2.1 位居TIOBE榜首
上图是2020年4月的TIOBE Index,
2020年4月的TIOBE Index的前十名,其中Java仍然位居榜首,但是与第二名C语言的差距非常之小,由此可见Java的受欢迎程度多么之高。
在java的基础上可以做web开发,可以做安卓开发,可以做小程序。有丰富的生态圈,已经造好的轮子有很多,可以使开发专注于业务代码的实现。而且Java代码还能跨平台运行(基于不同的JVM)。但是也是由于JVM,Java的代码运行效率明显没有C++和C语言这种编程语言高效。
2.2 革命性的语言
Java 之所以被称作革命性的语言,是因为传统的软件往往与具体的实现环境有关,一旦环境发生变化就需要对软件做出一系列改动,既费时又不省力。而 Java 语言所编写的软件,能在执行码的层次上相容,只需要计算机提供了 Java 的虚拟机环境,用 Java 语言编写的软件程序就能在其本地运行。
一次编译,到处运行。
但是,并不是Java一家独大,仍受到许多挑战。
三、Java受到的挑战
3.1 后台服务器软件的语言竞争
目前主流电商平台的编程语言,还是Java占主流,但是有另外的互联网公司,如知乎,B站,还是用GO语言等编程语言来写后台。
3.1.1 Python
目前Python在人工智能领域十分火爆,简短的代码,许多的库可以导,编程方式变得更加新手友好,使其越来越受编程人员的喜爱。
3.1.2 GO
说起GO语言,不得不提的是它的协程,语言级别支持协程(goroutine)并发(协程又称微线程,比线程更轻量、开销更小,性能更高),操作起来非常简单,语言级别提供关键字(go)用于启动协程,并且在同一台机器上可以启动成千上万个协程。
更简单、更高效
下面是使用GO语言的实际案例。
3.1.3 PHP
传说中世界上最好的语言。
做中小型网站的一门十分热门的语言。
- PHP语法简单,短平快,代码易懂。(没有那么多sao操作)
- PHP可以支持热部署,而JAVA需要重新编译。PHP改完一段代码,发布后就可以看到结果了,这省去了不少维护的工作量。
- 开发环境轻量化
3.1.4 Node.js
Node.js 推出后统一了前后端。
前端常用的后台语言,比如说前端自己模拟后台的数据,或者想创建自己的服务,这是十分前端程序员十分友好的编程语言。
3.6 小结
中小型网站用PHP和Node.js或者Python的比较多,为了提高性能,大型网站的后台会用到GO语言编写,而Java由于生态比较好,有各种框架,通常都适用各种网站的开发,但是效率方面肯定没有GO语言的高。
四、在Java不擅长的领域
4.1 前端领域
4.1.1 为什么JSP当不了主流的前端语言?
JSP(全称JavaServer Pages)的缺点所在:
- 传说中的用后台思维写前端页面。写的时候爽,后面看代码MMP。
- JSP调试困难,新手用断点调试不友好。
- 占用大量内存。
4.1.2 前端三剑客的称霸
想必学前端的同学,肯定对这三个东西十分熟悉。
4.1.3 百花齐放的前端框架
- 在大型超大型web应用开发上,看好Angular
- 小型应用上,看好vue
- 个性化需求、中型应用,更倾向react
4.2 安卓软件领域
4.2.1 Java在安卓端最棘手的对手Kotlin
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。(有强大的官方支持)
4.2.2 与JS进行对抗的Dart语言
优势所在:
-
由 Google 主导开发,于 2011 年 10 月公开。它的开发团队由 Google Chrome 浏览器 V8 引擎团队的领导者拉尔斯·巴克主持,目标在于成为下一代结构化 Web 开发语言。
知乎网友:等到chrome一统江山那天,就是dart君临天下的时刻!
-
Flutter
Flutter应用程序可以使用Dart编程语言编写。
作为谷歌的开源移动UI框架,Flutter可以快速在iOS和Android上构建高质量的原生用户界面,今年,Google I/O 大会宣布了 flutter 支持 web 开发。
flutter 目前的目的就是全平台开发,一套代码同时运行在 iOS 、Android、web和桌面端。
4.3 嵌入式开发
简介
嵌入式系统是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用VCD机或手机,甚至组成普通PC终端设备的键盘、鼠标、硬盘、Modem等均是由嵌入式处理器控制的。
4.3.1 C++
名副其实的专业造轮子的语言
对新手不友好,开发学习代价太高。
- 泛型编程
- STL库的支持
- 嵌入式应用中每小段内存都昂贵的情况下,C++十分吃香
4.3.2 C
C语言的应用领域
- 应用软件。Linux操作系统中的应用软件都是使用C语言编写的,因此这样的应用软件安全性非常高。
- 对性能要求严格的领域。一般对性能有严格要求的地方都是用C语言编写的,比如网络程序的底层和网络服务器端底层、地图查询等。
- 嵌入式设备开发。手机、PDA等时尚消费类电子产品相信大家都不陌生,其内部的应用软件、游戏等很多都是采用C语言进行嵌入式开发的。
4.3 小结
Java相对于C和C++这两种语言,在性能上还是比不过编程语言的祖师爷。
Java = C++-- ,即Java的起源。
五、总结
在技术新陈代谢十分迅速的编程世界中,没有一项语言能够完全没有缺点,都是为了实际需求而进行使用。Java的生态圈好,有成熟的框架,但也不是说最好的编程语言,只有最适合你的编程语言。
编程语言的本质也就是为了简化人类的工作,如果你现在做这项工作,用这门语言能够更适合的话,何乐而不为呢?编程语言相通的方向有许多,我们往往只需掌握其中最重要的共同点,贯通共同的编程思想。就算一门编程语言再火,其本质也是一个工具,其目的都是为了让人类更好地“偷懒”。
参考资料
https://www.zhihu.com/question/304531859/answer/877587651
https://www.cnblogs.com/qcloud1001/p/9199246.html
https://www.php.cn/php-ask-430212.html
https://www.jianshu.com/p/61570c030b90
https://www.yoytang.com/dart-intro.html