追随云原生的Java-笔记

本文探讨了Java在云原生时代的挑战,包括启动时间长、内存效率低下以及传统线程模型的问题。文章提到了Complie Native Code(AOT编译)以解决启动和性能问题,Memory Access Efficiency Improvement通过Valhalla项目改进内存访问效率,以及Coroutine(协程)来优化I/O密集型任务。Quarkus、Loom和Valhalla项目成为Java应对云原生挑战的关键,并有望在未来的Java版本中提供实质性改进。
版本 日期 备注
1.0 2022.7.4 文章首发
1.1 2022.7.4 根据反馈修改内容与标题

0. 前言

前阵子在B站刷到了周志明博士的视频,主题是云原生时代下java ,主要内容是云原生时代下的挑战与Java社区的对策。这个视频我在两年前看到过,当时也是印象深刻。现在笔者也是想和大家一起看看相关项目的推进以及一些细节。这篇笔记会大量参考视频中提到的内容,如果读者看过相关视频,可以跳过这篇笔记。

视频分享中提到,Java与云原生的矛盾大概原因有二:

首当其冲的是Java的“一次编写,到处运行”(Write Once,Run Anywhere)。在当年是非常好的做法,直接开启了许多托管语言的兴盛期。但云原生时代大家会选择以隔离的方式,通过容器实现的不可变基础设施去解决。虽然容器的“一次构建,到处运行”(Build Once,Run Anywhere)和Java的“一次编写,到处运行”(Write Once,Run Anywhere)并不是一个Level的——容器只能提供环境兼容性和有局限的平台无关性(指系统内核功能以上的 ABI 兼容),但服务端的应用都跑在Linux上,所以对于业务来说也无伤大雅。

其二,则是Java 总体上是面向长时间的“巨塔式”服务端应用而设计的:

  • 静态类型动态链接的语言结构,利于多人协作开发,让软件触及更大规模;
  • 即时编译器、性能制导优化、垃圾收集子系统等 Java 最具代表性的技术特征,都是为了便于长时间运行的程序能享受到硬件规模发展的红利。

但在微服务时代是提倡服务围绕业务能力(不同的语言适合不同的业务场景)而非技术来构建应用,不再追求实现上的一致,一个系统由不同

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值