文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

云原生Java框架—Quarkus

2023-10-23 09:54

关注

一、简介

Quarkus是由Red Hat公司于2018年开始研发的一款面向云原生的Java开发框架,旨在使 Java 成为Kubernetes 和无服务环境中的领先平台,目前最新版本为2.3.0,已生产可用。主要特点是:

  1. 云原生:支持通过GraalVM Native-Image将Java应用打包成本地二进制镜像,减少内存使用、缩短应用启动时间

  2. 低使用成本:与常见的Java标准、框架等协同工作,如:Spring、Hibernate、Netty、RestEasy等,无需学习新的标准和规范

  3. 高开发效率:代码热更新,无需重启即可查看代码改动的结果(dev环境下),支持单元测试、本地debug等

  4. 同时支持命令式和响应式代码

  5. 支持同时运行在GraalVM和HotSpot两种虚拟机上

 

Quarkus运行时内存、启动时间对比

二、背景—Quarkus的初衷

2.1 困境

在JVM上运行企业级Java应用所需的漫长初始启动时间和庞大的内存消耗无法完美适应云原生的需要

  1. Java虚拟机的设计本身是为了满足长时间稳定运行的服务,而K8S、Serverless等场景下需要应用快速灵活的启动、销毁,难以长时间稳定运行,导致JIT编译器在程序启动时占用了比较多的时间但却很难在运行时发挥出威力。例如:AWS的Lambda函数支持的最长运行时间是15min(刚开始时仅支持5min的运行时间)。

     

  2. 从上图可以看出:应用程序在启动过程中,类加载和JIT编译消耗了比较多的时间。
    JIT原理简介:

  3. 容器环境下,每个Java应用程序启动时都需要先启动Docker容器,然后在Docker内启动JVM,最后JVM再加载应用,整个过程耗时较长

  4. 打包的镜像中,JDK动辄上百兆,远大于应用本身的大小

  5. 构建的镜像中存在大量运行时未使用的代码和依赖

  6. 内存占用大,一个空的Spring Web内存占用约为122MB左右,而Go Web应用在10MB左右 GraalVM多语言架构

2.2 契机

GraalVM的出现为Java开发者拥抱云原生打开了一扇窗户 GraalVM是Oracle发布的通用型虚拟机,当然也可以用来运行Java程序,被称为下一代Java虚拟机。2016年6月发布第一个release版本。主要特点是:

参考资料:InfoQ Quarkus Java框架答疑周志明—云原生时代的Java

三、困难与挑战—封闭的程序空间

传统的Java程序空间是开放的,即完全可以在运行时动态的加载配置、类等资源并进行初始化。但GraalVM进行Native-Image打包时,需要在构建过程中将程序运行时用到的所有类、资源等初始化好并以堆内存快照的形式保存起来,即Native-Image要求程序的运行空间必须是封闭的。实际上,SubstrateVM在构建Native-Image的阶段将探索程序的整个编译空间,并通过静态分析的方法推算出所有调用的 目标方法,最终将所有推算出的方法都纳入编译范围,这将导致动态加载其他类库、反射、动态代理和CGlib代理等功能无法正常使用。例如:传统的程序支持运行时,根据用于传入的类全限定名和方法来动态加载类并反射调用目标方法,这种功能如何在AOT编译阶段实现?

3.1 如何解决反射的使用

3.2 如何使用动态代理(不支持使用CGLib代理)

来源地址:https://blog.csdn.net/u013794243/article/details/128180933

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯