这是来自jaxcenter组织的一个讨论,谈论了Java在无服务器浪潮冲击下面临的机会和挑战。下面摘录主要部分:
Spring推动者Pivotal有一个名为 Riff的函数即服务平台,它是一个开源的、Apache 2许可的、函数即服务平台,基于Kubernetes和刚刚宣布的KNative技术。
还有Spring Cloud Function,它能让你编写与任何一个函数即服务且与平台无关的代码,并使用适配器进行部署。Spring是以其注释和POJO为中心的组件模型,意味着编写函数就像在Java中一样简洁。它可以像一个类一样简单,一个方法返回一个`java.util.Function `实例。或者甚至只是一个实现`java.util.Function `的类。
当然,这样的应用程序与Node.js相比有更多代码行,并且启动速度稍慢,它比同等的Go应用程序慢得多,但不是影响成为无服务器平台的关键原因,无服务器是关于提高组织敏捷性; 比如我能以多快的速度发送电子邮件、调整图像大小或运行报告以及响应触发事件的作业?有了像Project Riff这样的平台,获得结果会非常快!无服务器已经在重塑Java。
无服务器要求代码按需立即启动(冷启动),因此 启动时间非常重要,JVM的JIT编译器针对长时间运行的系统进行了优化 ,随着时间的推移,JIT将越来越多的代码编译为机器语言并引入 其他优化。
随着更多内存增加成本,无服务器的内存消耗更为重要,Java的一些垃圾收集算法消耗了大量内存。这些问题是如此根本,以至于无法解决。但是,GraalVM会提前编译代码,以加工代码并显着缩短启动时间,因此,Java将来似乎更适合无服务器!
为了在无服务器领域竞争,Java将不得不改善其启动时间和占用空间。该领域正在开展工作,但在与其他语言的足迹和启动时间竞争时还有很长的路要走。