Spring Native

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
函数计算FC,每月15万CU 3个月
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: Spring Native

@[toc]

Spring Native


Spring Native 是什么

Spring Native 可以通过 GraalVM 将 Spring 应用程序编译成原生镜像,提供了一种新的方式来部署 Spring 应用。
Spring Native 支持 Java 和 Kotlin。

这个项目的目标是寻找 Spring JVM 的替代方案,提供一个能将应用程序打包,并运行在轻量级容器的方案。期望能够
在 Spring Native 中支持所有的 Spring 应用程序(几乎不用修改代码)。

优点

  • 编译出来的原生 Spring 应用可以作为一个独立的可执行文件进行部署(不需要安装 JVM)
  • 几乎瞬时的启动(一般小于 100 毫秒)
  • 瞬时的峰值性能
  • 更低的资源消耗

缺点

  • 比 JVM 更长的构建时间
  • 相比于传统的 Java 运行方式,运行时优化不足

原生镜像(native image)和常规 JVM 程序的区别

  • 在构建时会从主入口点,静态分析应用程序
  • 在构建时会移除未使用的代码
  • 需要配置反射、动态代理等
  • classpath 在构建时就已经确定
  • 没有类延迟加载:可执行文件中所有的内容都会在启动时加载到内存中
  • 在构建时就运行了一些代码
  • 构建原生镜像还存在一些 局限性

前置条件:GraalVM

GraalVM 介绍起来篇幅比较长,这里仅简要介绍。官网:https://www.graalvm.org/

GraalVM 是一个高性能的多语言运行时环境。设计目的是能够提高用 Java 和其他 JVM 语言编写的应用程序的执行速度,同时
还为 JavaScript、Ruby、Python 和许多其他流行语言提供运行时。GraalVM 的多语言能力使得在一个应用程序中混合使用
多种编程语言成为可能,同时消除了不同语言间互相调用的成本。详细内容可参考:Get Started with GraalVM

支持的语言

  • GraalVM For Java
  • Python
  • Ruby
  • JavaScript & Node.js
  • R
  • LLVM

关键特性

  • 高性能
  • 提前编译
  • 多语言
  • 高级工具

GraalVM 下的 Java 微服务

  • 启动时间快 50 倍以上
  • 内存占用只需要 20% 左右

相关文章
|
3月前
|
Dubbo Java Nacos
【实战攻略】破解Dubbo+Nacos+Spring Boot 3 Native打包后运行异常的终极秘籍——从零开始彻底攻克那些让你头疼不已的技术难题!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但使用Dubbo+Nacos+Spring Boot 3进行GraalVM native打包后常遇运行异常。本文剖析此问题及其解决策略:确认GraalVM版本兼容性;配置反射列表以支持必要类和方法;采用静态代理替代动态代理;检查并调整配置文件;禁用不支持的功能;利用日志和GraalVM诊断工具定位问题;根据诊断结果调整GraalVM配置。通过系统排查方法,能有效解决此类问题,确保服务稳定运行。
98 0
|
6月前
|
Java Maven Docker
0.07 秒启动一个 SpringBoot 项目!Spring Native 很强!!
0.07 秒启动一个 SpringBoot 项目!Spring Native 很强!!
83 2
|
6月前
|
Cloud Native Java Docker
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用
|
Java 关系型数据库 Serverless
走向Native化:Spring&Dubbo AOT 技术示例与原理讲解
Java 应用在云计算时代面临“冷启动”慢、内存占用高、预热时间长等问题,无法很好的适应 Serverless 等云上部署模式,GraalVM 通过静态编译、打包等技术在很大程度上解决了这些问题,同时针对 GraalVM 的一些使用限制,Spring 和 Dubbo 等主流框架也都提供了相应的 AOT 解决方案。本文我们将详细分析 Java 应用在云时代面临的挑战,GraalVM Native I
208 0
走向Native化:Spring&Dubbo AOT 技术示例与原理讲解
|
Dubbo Java 应用服务中间件
走向 Native 化:Spring&Dubbo AOT 技术示例与原理讲解
走向 Native 化:Spring&Dubbo AOT 技术示例与原理讲解
691 1
|
Java Linux API
Spring Native 的 Hello World
Spring Native 的 Hello World
103 0
|
Oracle JavaScript 前端开发
在spring boot3中使用native image
在之前spring boot3文章中我们介绍了,spring boot3的一个重要特性就是支持把spring boot3的应用编译成为GraalVM的Native Image。 今天我们用具体的例子来给大家演示一下如何正确的将spring boot3的应用编译成为native image。
在spring boot3中使用native image
|
Java 测试技术 编译器
Spring Native 0.10.0 发布,重大突破!!
6 月初的时候给大家介绍了 Spring 团队的最新杀手锏项目:Spring Native,它的存在就是干掉 JVM,另起一个 JVM 之外的生态,上篇也简单实战了一下,相信大家都有了一个全新的认知,没看过的可以点链接进去看下。
300 0
Spring Native 0.10.0 发布,重大突破!!
|
Kubernetes Java 微服务
Spring Cloud or Cloud Native
Cloud Native时代,Spring Cloud Netflix OSS还是最佳实践吗?
2681 0