世界上并没有完美的程序,因为程序的核心就是不断追求完美的过程。同样没有一门语言在一诞生就是完美的,不变的唯有变化。Java诞生至今已经不仅仅是一门语言,背后所涵盖的是一个庞大的技术体系。
不知道从什么时候开始,总能看到很多人在唱衰Java的发展前景,说Java会被xxx语言在未来取代,但是很可惜,虽然今年算是互联网寒冬,可是Java的岗位依旧不少.
在过去二十年Java的发展是孤独求败的,在未来,Java也在迎接着各种挑战,这种挑战来自云原生、容器化、也来自其他设计更完善的语言,相信身怀各种绝技的Java会焕发出更加夺目的光彩,重新攀登另一个高峰。
Java发展史
Java是在1991年由SUN公司的James Gosling(Java之父)及其团队所研发的一种编程语言,第一个版本耗时18个月,最开始命名为Oak(一种橡树)。Java现在广泛应用于各种大型互联网应用,其设计的最初动机主要是平台独立(即体系结构中立)语言的需要,可以嵌入到各种消费类电子设备(家用电器等),但市场反应不佳。
随着1990年代互联网的发展,SUN公司看到了Oak在互联网上的应用场景,在1995年更名为Java(印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名),随着互联网的崛起,Java逐渐称为重要的Web应用开发语言。Java的发展可以主要看JavaWeb的发展,Java也见证了互联网的发展过程。
发展至今,Java不仅是一门编程语言,还是一个由一系列计算机软件和规范组成的技术体系,Java 是几乎所有类型的网络应用程序的基础,也是开发和提供嵌入式和移动应用程序、游戏、基于 Web 的内容和企业软件的全球标准。
从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!
- 97% 的企业桌面运行 Java
- 美国有 89% 的桌面(或计算机)运行 Java
- 全球有 900 万 Java 开发人员
- 开发人员的头号选择
- 排名第一的部署平台
- 有 30 亿部移动电话运行 Java
- 100% 的蓝光盘播放器附带了 Java
- 有 50 亿张 Java 卡在使用
- 1.25 亿台 TV 设备运行 Java
- 前 5 个原始设备制造商均提供了 Java ME
说到Java自然离不开JDK、JVM、JRE,三者有什么关系。
- JDK(Java Development Kit)Java开发工具包,包含Java语言、Java虚拟机、Java类库,是支持Java程序开发的最小环境。
- JVM(Java Virtual Machine)Java虚拟机,运行于各种操作系统Linux,Windows,Solaris等之上,执行编译好的Java字节码class文件。
- JRE(Java Runtime Environment)Java运行时环境,包含JavaSE中核心类库API和Java虚拟机,简单理解为JVM+核心类库API。
接下来主要围绕JDK的发展,和JVM中常见的GC收集器及算法描述。
JavaWeb发展
Java发展最为广泛的就是在互联网领域,这其中既包含了官方对于Web方向发展的一些规范及实现,也有非常出色的产品,如体系庞大且上手友好的Spring,也有小而美的JFinal、Vert.x等,未来将是云原生,提倡Serverless无服务模式的,Java无论是JDK层面还是GC、Web框架层面也涌现了一批优秀的框架,正在跃跃欲试,如Spring Native、Spring WebFlux、RedHat Quarkus、Eclipse MicroProfile、Oracle Helidon等反应式、云原生框架,去打造一个全新的轻量级微服务时代。
未来发展
- 展望未来(以容器化、云原生、反应式为关键特征)
- Quarkus
- Spring Native
- kubernetes
随着容器化技术Docker、Kubernetes,让云原生似乎成为了未来的发展方向,云原生(Cloud-Native)这个概念最早由Pivotal公司的Matt Stine于2013年首次提出,提到云原生首先想到的关键词可能就是容器化、微服务、Lambda,服务网格等,当然这些是必要元素,但是不代表拥有这些元素就是云原生应用,很多应用的部署只能说是基于云来完成,比如私有云、公有云,这也是未来的趋势。云原生本质上不是部署,而是以什么方式来构建应用,云原生的最终目的是为了提高开发效率,提升业务敏捷度、扩容性、可用性、资源利用率,降低成本。
个人认为,未来应用发展不应该像Spring Cloud时代过分关注于组件的功能,组件的本身是服务于业务场景的,而组件更应该依托于容器化部署方式来实现其功能,在这一点上来说Spring的脚步对比Quarkus确实略慢一筹,期待未来百花齐放的云原生时代。