云时代的 JVM 原理与实战
康杨
京东资深架构师
3111 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 39 讲
云时代的 JVM 原理与实战
15
15
1.0x
00:00/00:00
登录|注册

02|挑战与趋势:云原生时代JVM的演进之路

你好,我是康杨。
今天我想和你聊聊关于趋势的事儿。我们一起来看看 JVM 在云时代面临的挑战,还有它是如何应对的,以此来推断出我们应该做哪些准备,来更从容地应对这个快速变化的时代。

趋势的力量

还记得 2004 年,我刚开始第一份编程工作的时候,那时候还是 Win32 的天下,我的老板是个台湾人,他是 Delphi 的拥趸,经常挂在嘴边的一句话就是“Delphi 永垂不朽”,但是现在听说过 Delphi 的人,想必寥寥无几。
2008 年,Facebook 刚刚兴起,social game 火遍全球,国内做社交网站或者社交游戏的互联网公司如雨后春笋般涌现,做 ActionScript 3 的工程师,工资水涨船高,但现在基本都转型了。
其实不光是编程语言,NOKIA 与柯达的故事,也都印证了那句话“其兴也勃焉,其亡也忽焉”,而这背后就是趋势的力量。所以在学习任何语言或技术之前,如果能对趋势有一定的预判,将很大程度上避免自身陷入窘境。

云原生时代

几年前“是否上云”还是社会上的热门话题,但当时间来到 2023 年,不管是互联网大厂还是传统的金融机构,都早已完成了基础设施的建设和应用上云的转化。
而这不过是印证了 Berkeley 在 2009 年发布的那篇论文《Above the Clouds : A Berkeley View of Cloud Computing 》,这也让我们不得不认真审视 Berkeley 的另一篇论文《Cloud Programming Simplified : A Berkeley View on Serverless Computing 》 ,这篇论文预言了云原生时代的到来。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

JVM在云原生时代的演进之路 云原生时代对JVM构成了挑战与趋势的交织,这一现象引发了JVM的演进之路。文章首先回顾了编程领域的历史趋势,强调了对趋势的预判对技术发展的重要性。随后,文章详细介绍了云原生时代的发展趋势,包括无服务器、容器化、Kubernetes、分布式等方面。接着,文章指出了云时代对JVM的挑战,包括启动时间、启动性能、内存占用和面向对象等方面。最后,文章探讨了JVM的发展趋势,包括拥抱容器化和AOT原生镜像编译等方面。总的来说,文章深入浅出地介绍了JVM在云原生时代的演进之路,展现了JVM在面对挑战时的积极应对和发展趋势。 在JVM的演进过程中,一些关键技术和趋势值得关注。首先是JVM对函数式编程的支持不断增强,通过逃逸分析、栈上分配等操作提升栈的利用效率,同时引入Epsilon垃圾收集器和Lambda表达式的改进,彰显了JVM在加强函数式编程方面的努力。其次,GraalVM作为高性能JDK发行版,通过全新的即时编译器和AOT编译支持,大幅提升了在JVM上运行程序的性能,更适应在云原生环境下运行。此外,JVM版本的快速更迭和不断出现的JVM提供商,也为JVM的持续迭代提供了重要的支持。 总的来说,JVM的发展方向主要包括性能优化、对容器化的支持以及安全性和可靠性的提升。这些发展趋势将有助于JVM适应云原生时代的需求,为读者提供了对JVM在云原生时代的演进之路的全面了解。 通过本文的总结,读者可以快速了解JVM在云原生时代的发展趋势和面临的挑战,以及JVM在适应新时代需求方面的积极应对和发展趋势。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《云时代的 JVM 原理与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 临风
    说一下我的感受,工作中大部分人都不会使用面向对象这一特性,因为这需要一定的抽象封装能力。我遇到最多的代码就是过程式的,对象只是作为DTO存在,只有get/set逻辑,大量的业务逻辑都是平铺直叙,一个人写的代码其他人很难直接复用。 为什么会造成这样的情况,就是因为spring这类基础框架封装的太好了,即使不使用面向对象的思维,仍然能完成任务。而开发时间少,人员流动快,进一步加剧了这个情况。对于开发人员,封装和抽象一定是需要花费更多的时间思考的,还往往伴随着对老代码的重构,出错的风险也加大了。相反,如果只追求完成功能,简单copy一下,修改一下就能解决,谁还管之后好不好维护呢。 对我而言,写代码还是喜欢用面向对象的思路,因为这样的单元测试是最好写的,依赖是最简单的,而且这样写代码才有乐趣,copy代码会让我感觉很无聊。但我不知道这样的现象是不是很普遍,不知道老师对于这个现象有什么看法?

    作者回复: 编程的本质是什么?面向对象和面向函数,面向过程是什么关系?很多人其实的认知被封印在一个习惯性的范围内,就像柏拉图的洞穴隐喻讲到的,其实可以跳出固有的思维去考虑下,包括DDD是什么,DDD和面向对象的关系,我的经验思考本身其实比掌握某些知识更重要,水有万千重,我们又能看到那一重呢,其实整个教程,其实是想表达我的对编程本身的理解,不仅仅的知识点的传播,建议自己品味第一篇,也许会有不一样的发现,我也会在后面陆续展开,从不同方面来讲明我的思考

    2023-08-23归属地:广东
    2
    2
  • peter
    请教老师几个问题啊: Q1:“面向对象”其实是“面向过程”吗? 开篇词部分,老师认为“面向对象”其实是“面向过程”,是这样吗?(也许我的理解是错误的) Q2:一个APP对应一个JVM吗? 后端程序,或者手机上的安卓APP,一个应用都会起一个JVM吗? Q3:Oracle JDK收费了吗?我以前都是在Oracle官网上下载JDK的,并没有收费啊。不过近几年没有下载了,以前用的版本也是8或者11.现在收费了吗?收费是怎么体现的?付费才能下载JDK吗? Q4:老师推荐用哪个JDK?作为小公司的网站开发者,还是用Oracle的JDK吗?另外,JDK用哪个版本?好像要从JDK17起步了啊。 Q5:函数式编程怎么理解? 用Class,Class也主要是由函数组成的,代码流程也是调用不同的函数啊。函数式编程特殊在哪里?

    作者回复: Ruby之父松本行弘在《代码的未来》 一书中讲到的,“闭包 跟 面向对象 是一棵树上的两条枝 ,实现的功能是等价的” 其实闭包才是和面向对象互为依赖的一对概念,而面向过程还是面向函数,才是标准着编程的两大流派, 代表着图灵与阿隆佐·邱奇之争。函数式编程我会在第三篇为大家分享我的理解,但是见你提前了解下,欢迎到时候一起探讨。目前JDK 8还是主流,但是11和17已经逐步在各个大厂应用了,所以提前学习这些,对于去更大的平台也是一个很好的敲门砖。所有的技术选型没有一个最佳的方法,建议还是因地制宜,选择最适合的,因为技术是持续演进的。 对于后端程序,一般来说,每个应用都会运行在自己的JVM实例上。每个Java应用程序通常会创建一个独立的JVM进程,该进程负责运行应用程序的代码。每个JVM进程都有自己独立的Java虚拟机实例,包括堆、线程、类加载器等,用于执行应用程序的逻辑。在安卓平台上,每个应用程序并不会起一个独立的JVM,而是共享一个全局的虚拟机实例,并运行在独立的进程中。

    2023-08-23归属地:北京
    2
  • Jaising
    引用下周志明大佬在 2020 年 QCon 大会上的分享《云原生时代,Java 的危与机》,视频地址:https://time.geekbang.org/opencourse/detail/100067401,文本地址:http://icyfenix.cn/tricks/2021/geekbang.html。与康老师很多观点是类似的: 1、Java 的平台无关性优势被容器削弱了很多 2、Java 面向大规模长时间运行的服务端应用设计,容器亲和性差,内存消耗、启动时间、镜像体积等都无法与云原生语言媲美 3、Java 也在做着转型努力,比如致力于脱离 JVM 直接运行原生代码的 Leyden,提前识别编译的 GraalVM,提高内存利用率的 Valhalla,以同步代码风格解决异步执行问题的 Loom,减少镜像体积的 Portola 等 从目前大规模使用的语言市场分析,Java 还是更适合应用层面,面向业务、多人协作,Rust 和 Go 成为了中间件的新兴力量,C 则持续在操作系统层面耕耘。
    2023-08-31归属地:浙江
    1
    6
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部