quarkus号称超音速亚原子JAVA为Graalvm量身定制的java堆栈,是否名副其实呢?下面就来看看真实情况如何。动手前先简单介绍下Graalvm,它是oracle出品的一个AOT编译器,可以将应用程序编译成本地映像,通俗的说可以将java编译成机器可直接执行的程序,可以参考go语言的编译输出产物。而且graalvm不仅仅支持java,对其他语言也有很好的支持。下面先看一张quarkus的java应用程序在传统的vm下面和graalvm下面的资源占用图。
作者 | Jason Greene, John Clingan, Eric Deandrea
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《quarkus依赖注入》系列的第三篇,前文咱们掌握了创建bean的几种方式,本篇趁热打铁,学习一个与创建bean有关的重要知识点:一个接口如果有多个实现类时,bean实例应该如何选择其中的一个呢?可以用注解来设定bean的选择逻辑 如果您熟悉spring,此刻应该会想到ConditionalXXX注解,下面的代码来自spring官方,注解Con
在结束了审查之后,JEP 460,Vector API(第七轮孵化) 已从 JDK 22 的 Proposed to Target 状态提升为 Targeted 状态。该 JEP 由 Panama 项目赞助,整合了对前六轮孵化反馈的改进:JEP 448,Vector API (第六轮孵化),在 JDK 21 中交付;JEP 438,Vector API (第五轮孵化),在 JDK 20 中交付;JEP 426,Vector API (第四轮孵化),在 JDK 19 中交付;JEP 417,Vector API (第三轮孵化),在 JDK 18 中交付;JEP 414,Vector API (第二轮孵化),在 JDK 17 中交付;以及 JEP 338,Vector API (孵化器),在 JDK 16 中作为孵化器模块发布。JEP 448 最重要的变更包括对 JVM 编译器接口(JVMCI)的增强,以支持 Vector API 值。
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demo 本篇概览 本文是《quarkus实战》系列的第五篇,一起去熟悉quarkus的maven插件(就是下图红框中的那个plugin),用好它可以使我们更加得心应手的在项目中配置和控制quarkus 📷 插件quarkus-maven-plugin提供了丰富的功能,它们都有对应的命令,执行mvn quarkus:xxx即可执行,其中xxx就是具体的命令,例如mvn qu
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《quarkus实战》系列的第七篇,前文讲述了如何在将配置信息传入quarkus应用,今天要练习的是如何使用这些配置信息 整篇文章由以下内容构成: 创建工程,作为演示使用配置项操作的代码 演示最基本的使用配置项操作 展示配置项不存时会导致什么问题 演示如何设置默认值,这样配置项不存在也不会出错 默认值是字符串,而实际的变量可以是多种类型,它们之间
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demo 关于《quarkus实战》系列 《quarkus实战》系列是欣宸在2022年春季推出的又一个精品原创系列,作者将自己对java的热爱渗透到每段文字和每行代码中,全系列秉承欣宸一贯的知识+实战风格,既有知识普及、更有实际操作,在涉及基础知识之处更有深入分析,尽最大努力,将自己眼中云端的java的样子呈现出来 引子 作为一名Java程序员,如何适应目前的容器化趋势?将
本文翻译自 Best Practices for Java Apps on Kubernetes 。
作者 | KimJohn Quinn, Rakesh Raja, Jason Moehlman
作者 | Michael Redlich 译者 | 平川 策划 | 丁晓昀 Java 近期新闻综述,内容主要涉及 OpenJDK、JDK 19、JDK 20、Spring 点版本、GlassFish 7.0.0-M6、GraalVM Native Build Tools 0.9.12、Micronaut 3.5.2、Quarkus 2.10.0、Reactor 2022.0.0-M3、Apache Camel Quarkus 2.10.0 及 Apache Tika 2.4.1 版本和 1.28.
Quarkus 是一个为 Java 虚拟机(OpenJDK HotSpot)和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架,用于专门针对容器优化 Java,并使其成为无服务器、云和 Kubernetes 环境的高效平台。
最近,Red Hat 开源了 Quarkus 1.0 项目,这标志着其在为 Kubernetes 提供 Java 实例上取得了一个里程碑。
作者 | Daniel Oh 译者 | 平川 策划 | 丁晓昀 随着云部署的兴起,IT 部门使用的物理服务器减少,用电量也相应降低,结果是通过减少碳排放帮助缓解了气候变化。云架构有助于实现这一点,因为它们不需要维护竖井式的计算资源,而是在需要保持业务服务运行时,高效共享所在云上的可用资源。 然而短期内,云迁移的这些好处对于二氧化碳的排放并没有产生显著的影响。这是因为采用云的速度比转向无碳基础设施的速度要快得多。例如,谷歌云目前已实现碳中和,但他们正在努力成为无碳、可持续的云计算系统。 与此同时,开
Quarkus 是小红帽开源的专门针对云容器环境优化的云原生java框架,目前已迭代到1.6.0版本,已完成了大部分的框架库的集成扩展,为了让你低成本迁移到Quarkus来,它兼容主流的框架开发模式api,如spring web。Quarkus已具备企业级应用开发能力。而且未来容器云肯定是主流了,可以预见,未来的软件都是运行在k8s这样的容器集群里。而容器环境需要应用具备启动速度快,资源占用小,响应时间短等特性,Quarkus就是顺应这种趋势而生的。博主接下来的项目估计都会使用这个框架来开发,相关的问题都会记录在这个博客,这篇博文是个开篇。有感兴趣的欢迎一起来交流。
备注:我的mac和ubuntu上的IDEA都没见到这个选项,难道我装了两个假的IDEA?
作者 | Michael Redlich 译者 | 平川 策划 | 丁晓昀 OpenJDK JEP 430(字符串模板预览版)已经从 JDK 21 的 Candidate 状态提升到 Proposed to Target 状态。该 JEP 预览版由 Amber 项目提供支持。它提议用字符串模板(包含嵌入式表达式的字符串字面量)来增强 Java 编程语言。字符串模板在运行时进行解释,即对嵌入式表达式进行计算和验证。评审预计将于 2023 年 4 月 13 日结束。 Oracle 技术顾问 Gav
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是《支持JDK19虚拟线程的web框架》系列的中篇,前文咱们体验了有虚拟线程支持的web服务,经过测试,发现性能上它与其他两种常见web架构并无明显区别,既然如此,还有必要研究和学习吗? 当然有必要,而且还要通过实战更深入了解虚拟线程与常规线程的区别,在各大框架和库广泛支持虚拟线程之前,打好理论和实践基础,这才是本系列的目标 为了接下来的深入
上一篇文章主要介绍了Quarkus以及给Quarkus提供“神力”的Java虚拟机GraalVM,并演示了如何安装GraalVM以及Quarkus的初步用法。本文将主要指向Quarkus的“亮点”——本地化应用程序。
专为OpenJDK HotSpot和GraalVM量身定制的Kubernetes本机Java堆栈,采用最佳Java库和标准精制而成。
就其本身而言,Kubernetes为IT组织提供了很多价值。它将容器从开发人员感兴趣的东西变为可以在生产环境中大规模部署的东西。2019年CNCF的一项调查发现,Kubernetes在云计算社区中的使用率从2018年的58%上升到2019年的78%。 在这里,笔者将重点介绍5个值得关注的开源项目。 Quarkus Java是最流行的编程语言之一,诞生于20世纪90年代中期。在近20年的时间里,它主要针对运行动态单体应用程序进行了优化——这些应用程序假设只有主机CPU和内存(虚拟化)的所有权,而不是早期的面向
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《支持JDK19虚拟线程的web框架》系列文章链接 支持JDK19虚拟线程的web框架,之一:体验 支持JDK19虚拟线程的web框架,之二:完整开发一个支持虚拟线程的quarkus应用 支持JDK19虚拟线程的web框架,之三:观察运行中的虚拟线程 支持JDK19虚拟线程的web框架,之四:看源码,了解quarkus如何支持虚拟线程 支持JDK19虚拟线程
作为一个Java开发者,Spring框架应该基本上都用过的,由于Spring框架太过于强大,导致我们可能只知道Spring框架,但其实还有很多优秀的框架可以供我们使用,本文将介绍6个和spring框架类似的框架。
Quarkus中的web模块是基于java标准web规范jax-rs构建的,实现则选用了jboss的resteasy。这部分只是请求路由转发部分实现。真正的请求接收则使用了eclipse开源的vert.x框架,底层也是基于netty的一个响应式开发框架。Quarkus将vert.x和resteasy集成在了一起,所以支持响应式和非响应式应用混合开发,这也是Quarkus的一大卖点。基于以上的认知,我们来看看在Quarkus中,怎么写过滤器和解决跨域的问题
截至2020年,Java仍然是构建Web应用程序的最流行的编程语言之一,尽管它必须面对来自Go,Python和TypeScript等新型语言的激烈竞争。
Quarkus和RESTEasy团队非常高兴地宣布了Quarkus中的RESTEasy Reactive集成已进入master分支,并将成为下一个Quarkus 1.11发行版的一部分。我们期待每个人对其进行测试。并为我们提供尽可能多的反馈。以典型的Quarkus方式,该项目可作为一组新的扩展使用。这是一个非常令人兴奋的消息,所以博主用自己蹩脚的英语+google翻译翻译了官方的公告,迫不及待的想要和大家分享。
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《quarkus实战》系列的第四篇,如标题所示,今天的任务是完成远程热部署实战 作为一名Java程序员,以下场景相信您很熟悉: 在本地电脑上:用IDEA写代码,编译构建成jar或者docker镜像 在服务器上:运行jar或者docker镜像 遇到问题时:通过热部署,使本地的改动立即在服务器上生效,这一切都是自动的,无需打包部署等操作 就是下图这
作者 | Karsten Silz 译者 | 张卫滨 策划 | 丁晓昀 Leyden 项目的目标是“解决 Java 启动时间慢、达到性能峰值慢和占用空间大等长期痛点问题”。它想通过在 OpenJDK 中“引入静态镜像的概念”来实现这一目标。静态镜像来自于对原生可执行文件的提前(Ahead-of-Time,AOT)编译。在两年没有公开的活动之后,Leyden 项目在 2022 年 5 月改变了方向,首先优化即时(Just-in-Time,JIT)编译。由此产生的优化几乎肯定要比最初计划的要弱,它最早会在 20
作者 | Michael Redlich 译者 | 屠灵 策划 | 丁晓昀 JDK 18 更新、Loom 18-loom+4-273 构建版、Spring Framework 和 Spring Data 单点版本、Quarkus 2.4.2.Final、Hibernate Reactive 1.1.0.Final、Piranha 21.11.0、Groovy 4.0.0-beta-2、Apache Camel Quarkus 2.4.0.Final、Neo4J Migration 1.0.0、苹果公
支持JDK19虚拟线程的web框架,之一:体验 支持JDK19虚拟线程的web框架,之二:完整开发一个支持虚拟线程的quarkus应用
Quarkus是为GraalVM和HotSpot量身定制的Kubernetes Native Java框架,由最佳的Java库和标准精心打造而成。Quarkus的目标是使Java成为Kubernetes和无服务器环境中的领先平台,同时为开发人员提供统一的反应式和命令式编程模型,以优化地满足更广泛的分布式应用程序架构。
Quarkus 是一个为 Java 虚拟机(JVM)和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架,用于专门针对容器优化 Java,并使其成为无服务器、云和 Kubernetes 环境的高效平台。
Quarkus 2.8.0.Final发布,特性包括:将RESTEasy Reactive作为默认 REST 层;将 GraalVM 22.0 作为默认版本;新的QuarkusTransaction API;以及 Elasticsearch Dev Services(可以自动启动dev和test模式的 Elasticsearch 容器)。此外,由于存在二进制兼容性不可靠问题,AssertJ被从 Quarkus BOM 中删除。开发人员需要在他们的应用程序中明确指定 AssertJ 3.22.0
Graalvm通过静态分析提前编译来为Java应用程序构建高度优化的本机可执行文件,这就需要在编译时就知道所有的程序类型,而java中的反射、动态代理等功能,在编译时不确定具体的类型,所以在使用GraalVm构建native image前需要通过配置列出反射可见的所有类型。反射的配置是一个json格式的文件。为了简化这种反射的配置,GraalVm提供agentlib工具,来辅助生成这个配置文件
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《quarkus实战》系列的第八篇,经过前面的学习,咱们对配置有了足够了解,但问题也随之而来:如何让应用以最小的改动同时运行在不同环境(如本地、测试、生产等) 举个例子,下面是个简化版配置文件,有两个配置项,第一个固定不变,第二个随环境变化各不相同: # 这个配置信息在各个环境中都是相同的 greeting.message=hello # 这个配
作者 | Alex Soto 译者 | 张卫滨 策划 | 丁晓昀 为何需要微服务特性? 在微服务架构中,应用程序是由多个相互连接的服务组成的,这些服务协同工作以实现所需的业务功能。 所以,一个典型的企业级微服务架构如下所示: 最初,我们可能认为使用微服务架构实现一个应用程序是很容易的事情。但是,要恰当地完成这一点并不容易,因为我们会面临一些新的挑战,而这些挑战是单体架构所未曾遇到的。举例来讲,这样的挑战包括容错、服务发现、扩展性、日志和跟踪等。 为了应对这些挑战,每个微服务都需要实现在 R
你好呀,我是 Guide!这里是 JavaGuide 的「优质开源项目推荐」第 7 期,每一期我都会精选 5 个高质量的 Java 开源项目推荐给大家。
2022 年 1 月 31 日的 Java 每周新闻综述,主要介绍了 OpenJDK(JEP 423)、JDK 18、JDK 19、Loom 项目 Build 19-loom+3-89、Spring Framework 更新、Quarkus 2.7.0. Final、一个新的 Micronaut Serialization 模块、Apache Camel Quarkus 2.7.0、Apache Camel 3.15.0、JReleaser 第二个早期访问构建、JobRunr 4.0.7 和 4.0.8 版本以及 Failsafe 3.2。
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是《quarkus依赖注入》系列的第八篇,目标是掌握quarkus实现的一个CDI特性:装饰器(Decorator) 提到装饰器,熟悉设计模式的读者应该会想到装饰器模式,个人觉得下面这幅图很好的解释了装饰器模式,左下角的红框是关键点:自己的send方法中,先调用父类的send(也就是被装饰类的send),然后才是自己的业务逻辑 📷 quarku
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于虚拟线程 随着JDK19 GA版本的发布,虚拟线程(来自Project Loom)这一特性也闪亮登场,虚拟线程是 JDK 而并非OS 实现的轻量级线程(Lightweight Process,LWP),许多虚拟线程共享同一操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量(可以参考golang的协程) 虚拟线程方面的文章,如今已经有很多优秀博主写
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《quarkus实战》系列的第六篇,咱们来掌握一个常用知识点:配置 如同SpringBoot中的application.properties文件,对一个quarkus应用来说,配置是其重要的组成部分,web端口、数据库这些重要信息都放在配置中,咱们在编码时也会将一些业务参数做成配置,而不是硬编码(hard code) 与配置有关的知识点不少,本文
使用io.quarkus.vertx.http.runtime.filters.Filters,继承ContainerResponseFilter
今天升级了quarkus到最新版本1.8.0.final版本,然后就GG了,之前在ContainerRequestFilter注入的一个业务Bean就报错了,百度和Google 了半天没找到具体的解决方案,最后在一个不相干的论坛里找到了蛛丝马迹,然后解决了问题,所有这里记录下解决方案
Java 近期新闻包括:OpenJDK 的新特性,一个新的值对象相关的草案、JDK 18、JDK 19、Loom 项目、其他供应商对 Log4Shell(Log4j 在 Shell 下的实现)的声明、大量的 Spring 和 Quarkus 的更新、Hibernate ORM 60.0-M3、以及 Apache Camel、Camel Quarkus、Apache Tika 2.2.1、GraalVM Native Build Tools 0.9.9 的小版本发布(point release)。
JDK 21 早期访问构建Build 30 在上周发布,其中包括 Build 29 的更新,主要是修复了各种问题。要了解关于这个版本的更多细节,请查看发布说明。
Java 近期新闻综述,内容主要涉及 OpenJDK、JDK 19 相关 JEP、JobRunr 5.1.0、Quarkus 2.8.3.Final、Hibernate ORM 6.0.1.Final、Kotlin 1.7.0 预览、 Apache Camel 3.14.3 和 3.11.7 版本、Apache Tika 2.4.0 和 1.28.2 版本、Micronaut 最小 JDK 版本调查和 JFokus 2022。
作者 | Michael Redlich 译者 | 张卫滨 策划 | 丁晓昀 OpenJDK 甲骨文的技术顾问成员、Loom 项目的负责人 Ron Pressler 提交了 JEP Draft 8302326,即隐式类和主方法增强(Implicit Classes and Enhanced Main Methods)(预览)。该特性 JEP 提议“改进 Java 语言,从而能够让学生无需了解为大型程序所设计的语言特性,就能编写出第一个程序”。这个 JEP 进一步推进了甲骨文的 Java 语言架构师 Br
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于《数据库篇》 《quarkus数据库篇》系列是《quarkus实战》的子系列,目标是与大家一起在quarkus框架下完成常用的数据库操作,如配置、增删改查、事物等 本篇概览 本篇敢号称比官方demo更简单,是因为官方关于操作数据库的demo中还有web服务的代码(如接收http请求和响应,以及web库的依赖),而本篇不会有这些代码和依赖,只有存粹的数据
来源:分布式实验室 译者:黄亮 至今,Java仍旧是用来构建Web应用的最流行编程语言之一 —— 但是它不得不面对诸如Go,Python和TypeScript等新语言的严峻挑战。
领取专属 10元无门槛券
手把手带您无忧上云