@levinzhang
2022-01-25T23:06:16.000000Z
字数 2342
阅读 527
本文结合Java语言和生态的发展现状,分析了在云原生和无服务器架构的大趋势下,Java和相关的支撑框架会有怎样的发展。
本文最初发表于Medium网站,由InfoQ中文站翻译分享。
2020年的事实告诉我们,如今对未来进行预测是很天真的。但是,当涉及到中长期投资决策的时候,预测是一件非常重要的事情。对于开发人员来讲,规划自己的职业生涯并有效地投资时间也是至关重要的。因此,我们了解一下最重要的Java趋势,这将有助于我们保持正确的方向。
在Web、桌面和移动开发以及嵌入式软件领域,Java依然是最流行的语言之一。在2017年Kotlin进入安卓开发领域之前,Java是唯一的官方语言。要在谷歌应用商店中找出使用Java的应用的份额并不那么容易。因为像React Native、Cordova、Phonegap、Iconic这样的混合应用程序在底层会使用Java,但是其业务逻辑是使用JS的。
另外,我们也很难找到有力的参考数据,但是全球11个流量最大的网站中,其中有8个是使用Java的,至少后端编程是使用Java的。这一事实让我们清楚地看到了它的实力和受欢迎程度。此外,对企业来讲,Tomcat和Elasticsearch分别是最受欢迎的web服务器和搜索引擎,它们也在使用Java。与此同时,尽管是最受欢迎的可选方案之一,并且经过了时间的考验,但Java也在适应云部署和容器化等大趋势。我们逐步深入地研究一下。
云计算的趋势在新冠肺炎大流行之前早就已经出现了,但是这一切正在加速发展。平均来看,每个人每天使用36个基于云的服务,81%的企业都在研究他们的多云战略。按照Gartner的说法,公共云服务的支出将从2020年的2700亿美元增长到2021年的3323亿美元,增幅超过23%。
Java领域对此已经做出了什么样的反应,接下来又会怎么样发展呢?你可能已经注意到,由于容器化工作负载的兴起,AWS和其他一些云服务的采用率正在不断增加。因此,云原生和支持Kubernetes的框架,如Micronaut、Quarks和Spring Boot正在变得更加流行。
Spring Boot是这个领域的领导者,它消除了搭建Spring应用程序所需的模板化配置。它的一些特性使得应用的构建和配置变得更加简单,比如嵌入式的服务器以及带有倾向性的“starter”依赖。健康检查、度量指标以及外部配置都是使用它所能带来的额外收益。
据报道,Micronaut是第一个在无服务器架构中高效运行的Java平台。虽然在受欢迎程度上它还无法与Spring Boot竞争,但是它在GitHub上已经拥有大约5000颗星。尽管Micronaut有一些类似于Spring的特性,但它最大的特点是编译时的依赖注入机制。这个框架会在编译时建立其依赖注入数据,这与大多数框架是不同的。因此,我们可以实现更小的内存占用和更快的应用程序启动。
除此之外,Micronaut还对客户端和服务器的反应式编程提供了良好的支持。RxJava和Reactor项目都能得到支持。它还支持多种服务发现工具,如Eureka和Consul,以及不同的分布式跟踪系统,如Zipkin和Jaeger。
Quarkus由红帽公司于2019年发布,在GitHub上拥有超过9000颗星。InfoQ的Java编辑Erik Costlow指出,Quarkus正在使用云、Jakarta EE和GraalVM中最好的组成部分。它可以自动创建容器,并具有快速重新加载的功能。除此之外,借助其插件生态系统,Quarkus可以连接到其他系统中。如果需要的话,你还可以查阅每个插件的详细文档。它支持Kubernetes、Hibernate、OpenShift、Kafka和Vert.x。
借助Quarkus,开发者可以专注于代码,而不是技术工作以及与资源进行交互。此外,它是建立在标准之上的,所以你不需要学习任何新东西。
GraalVM和静态编译是走向云端的关键构件。GraalVM拥有提前编译(AOT)等功能,使用了最流行语言的功能和库,并提供了调试、监控、剖析和资源消耗优化等工具。Spring、Quarkus、Micronaut和Helidon框架都能与GraalVM集成。
Java 8和11仍然是目前最流行的版本。根据JetBrains 2020的调查,75%的受访者选择了Java 8,Java 11版本则排在第二位。
JDK 16在2021年3月发布。它拥有17项增强功能,如JVM改进、新工具、库分类、孵化器和预览功能,以提高我们的生产力。SE 15包括以下改进。
使用Record来声明类,它会自动生成toString、hashCode、getter和equals方法以及构造器。
隐藏类(Hidden class),通常是在运行时动态生成的,不能通过名称来访问,也不能将其与其他类的字节码进行链接。
另外,JDK 17也已经在2021年的9月份发布,目前是最新的长期维护版本。
由于甲骨文公司在发布后六个月以上不提供零成本的Java二进制文件,市场上选择了非甲骨文公司的供应商,如AdoptOpenJDK、Azul和Amazon。
Java紧跟云计算和无服务器架构等大趋势,所以云原生支撑框架的发展势头很好。Micronaut、Quarks和Spring Boot都位列其中,它们能够让开发者专注于代码而不是基础设施。Java 8 LTS仍然是最受欢迎的,但JDK 17也已经于2021年9月发布。至少,到目前为止,还没有任何趋势可以击败Java 8。