从 Java 到 Kotlin:全面理解现代 JVM 语言生态
从 Java 到 Kotlin全面理解现代 JVM 语言生态如果你准备成为 Java/Kotlin/KMP 开发工程师那么理解 JVM 比学习某一门语言更重要。很多初学者认为Java JVM其实这是错误的。真正的关系应该是Java │ │ Kotlin ───── JVM ───── Scala │ Groovy │ ClojureJVM 才是真正的核心。Java 只是第一门运行在 JVM 上的语言。一、什么是 JVMJVMJava Virtual Machine中文Java 虚拟机很多人看到虚拟机三个字就想到 VMware、VirtualBox。其实完全不是一个东西。VMware 是Windows ↓ VMware ↓ Ubuntu它模拟了一台计算机。而 JVM 是Windows Linux macOS ↓ JVM ↓ Java程序它不是模拟计算机。而是模拟 Java 程序运行环境。JVM 到底干什么假设写一个 Java 程序public class Main { public static void main(String[] args) { System.out.println(Hello); } }执行过程Java源码 │ javac 编译 │ Main.class │ JVM加载 │ CPU执行注意CPU 根本不认识 Java。CPU 认识的是010101010101机器指令。所以JVM 的职责就是Java ↓ Bytecode ↓ 机器码 ↓ CPU二、为什么 Java 能跨平台这是 Java 最伟大的设计。看看 CWindowsC ↓ Windows.exeLinuxC ↓ Linux ELF必须重新编译。而 JavaJava ↓ Main.class ↓ Windows JVMLinuxJava ↓ Main.class ↓ Linux JVMmacJava ↓ Main.class ↓ mac JVM所以Java 编译一次即可。真正变化的是不同平台的 JVM。这就是Write Once Run Anywhere三、什么叫 Bytecode字节码很多人不知道Java 编译以后不是机器码。而是.class里面保存的是Bytecode例如Javaint a 1; int b 2; System.out.println(ab);反编译以后iconst_1 istore_1 iconst_2 istore_2 iadd invokevirtual这些CPU 根本不认识。JVM 认识。所以Java ↓ Bytecode ↓ JVM解释 ↓ 机器码四、JVM 为什么这么快很多人觉得虚拟机一定慢。实际上现代 JVM 非常快。原因就是JITJust In Time Compiler第一次执行Java ↓ 解释执行第二次JVM发现这个方法调用了10000次。于是Bytecode ↓ 直接编译成机器码 ↓ 缓存起来以后直接运行。不用解释。所以Java 很多时候性能接近 C。五、既然 JVM 这么厉害……大家开始想为什么只有 Java 能运行于是各种语言开始自己的语法 ↓ 编译成.class ↓ JVM所以JVM 不属于 Java。Java 属于 JVM。六、现代 JVM 语言的发展历史第一代只有Java时间1995作者James Gosling。目标替代 C。第二代大家开始开发Groovy Scala希望比 Java 更简洁。但是Java 当时仍然public static void main getter setter new 泛型写起来很长。第三代Google推出 Android。Java开始暴露一些问题。Google希望更少代码 更安全 空指针更少于是Kotlin 出现。2017Google宣布Kotlin First之后Android 基本全部推荐 Kotlin。七、现代 JVM 语言有哪些Java定位企业级开发。特点成熟 稳定 工作最多典型Spring Boot。Kotlin定位现代 JVM。特点Null Safety Coroutine DSL Extension Function Data Class几乎每一项都是 Java 后来才补上的。Scala定位函数式。最有名Spark。几乎所有大数据Spark Akka Play都是 Scala。Groovy定位脚本。例如Jenkins Pipelinepipeline { }CI/CD 必学。Clojure定位Lisp。函数式。Immutable。国内很少。国外不少创业公司喜欢。八、为什么 Kotlin 会成功其实Java 最大问题不是性能。而是代码太长。例如Javapublic class User { private String name; public User(String name){ this.namename; } }Kotlindata class User( val name:String )一句。结束。Null SafetyJavaString name null; name.length();运行NullPointerExceptionKotlinvar name:String?null编译器直接报错。因此大量减少线上 Bug。Extension FunctionJava不能给 String 增加方法。Kotlinfun String.hello(){ }以后abc.hello()直接能用。非常优雅。CoroutineJava线程Thread Future CompletableFuture越来越复杂。Kotlinlaunch{ }即可。九、现代 JVM 技术栈现在企业真正开发已经不是Java。而是Java Spring MySQL Redis MQ Docker Kubernetes JVM如果 AndroidKotlin Compose Coroutine Flow KMP如果大数据Scala Spark Kafka Flink十、JVM 的核心组成很多人学 Java 很久都不知道 JVM 内部长什么样。实际上一个 Java 程序启动后大致经历下面几个阶段Java Source (.java) │ javac 编译 │ Bytecode (.class) │ ClassLoader类加载器 │ ┌───────────────┴───────────────┐ │ │ Runtime Data Area运行时数据区 Execution Engine执行引擎 │ │ 方法区、堆、Java 栈、本地方法栈、PC 解释器 JIT 编译器 │ │ └───────────────┬───────────────┘ │ Garbage CollectorGC │ CPU其中最重要的几个模块是1. ClassLoader类加载器负责把.class文件加载到内存。Java 的热部署、SPI、插件化等能力都依赖类加载机制。常见的类加载器有Bootstrap ClassLoader启动类加载器Platform ClassLoader平台类加载器Application ClassLoader应用类加载器并遵循著名的双亲委派模型Parent Delegation Model。2. Runtime Data Area运行时数据区JVM 会把程序运行需要的数据放到不同区域。主要包括Heap堆存放对象实例是垃圾回收的主要区域。Java Stack虚拟机栈每个线程私有保存方法调用、局部变量等。Method Area方法区保存类信息、常量池、静态变量等。Program Counter程序计数器记录线程下一条执行指令的位置。Native Method Stack本地方法栈执行 JNI 本地方法时使用。3. Execution Engine执行引擎负责真正执行字节码。它包含Interpreter解释器逐条解释执行字节码启动速度快。JIT Compiler即时编译器把热点代码编译成本地机器码提高运行效率。这也是 Java 能兼顾跨平台和高性能的重要原因。4. Garbage Collector垃圾回收器Java 开发者通常不用手动释放内存因为 JVM 会自动回收不再使用的对象。常见 GC 包括Serial GCParallel GCG1 GC目前最常见ZGC超低延迟Shenandoah低停顿理解 GC 对排查内存泄漏、性能优化非常重要。十一、为什么说 JVM 比语言更重要很多开发者会从 Java 转到 Kotlin或者从 Kotlin 转到 Scala。但他们几乎不用重新学习内存管理垃圾回收类加载字节码并发模型部分JIT 编译JVM 调优因为这些能力都来自JVM而不是具体的语言。这也是为什么很多企业招聘写着Java/Kotlin 开发工程师熟悉 JVM 原理真正考察的往往不是语法而是对 JVM 底层机制的理解。十二、总结现代 JVM 生态已经从只有 Java发展为一个庞大的平台JVM │ ┌───────────┬───────────┬───────────┐ │ │ │ │ Java Kotlin Scala Groovy │ │ │ │ Spring Boot Android Spark Jenkins │ │ │ │ └───────────┴───────────┴───────────┘ │ GC / JIT / 类加载 / 字节码 │ Windows · Linux · macOS · Server

相关新闻

【每日夸夸】刷题Day005

【每日夸夸】刷题Day005

1.今天和B吵起来了&#xff0c;因为在Hm吃饭&#xff0c;说不准这了吃饭。后面想想自己为啥不TDan&#xff0c;也没点行动力。不过我有和 昊喆老师承诺&#xff0c;每日论坛发一帖。---至今仍然记得。1.承诺在先。----有效P244---#include <stdio.h> #define SIZE 50int …

2026/10/5 8:53:36 阅读更多 →
LightRAG技术解析:轻量级检索增强生成框架实践

LightRAG技术解析:轻量级检索增强生成框架实践

1. LightRAG技术全景解析LightRAG作为当前最热门的检索增强生成技术框架&#xff0c;正在彻底改变我们处理知识密集型任务的方式。这个轻量级解决方案完美结合了传统检索系统与大型语言模型的优势&#xff0c;我在实际项目中用它成功将客服响应速度提升了300%。不同于需要昂贵G…

2026/10/1 22:28:09 阅读更多 →
配置文件占位符技术解析与工程实践

配置文件占位符技术解析与工程实践

1. 配置文件占位符的核心价值与应用场景配置文件中的占位符&#xff08;Placeholder&#xff09;就像乐高积木里的通用连接件&#xff0c;它让静态配置具备了动态组装的能力。在实际工程中&#xff0c;我见过太多因为硬编码配置导致的部署灾难——当开发环境的数据库连接字符串…

2026/9/19 20:10:21 阅读更多 →

最新新闻

德思特 GNSS 模拟器技术参数详解:700+通道、1000Hz 迭代率、可模拟1200颗卫星的全星座仿真方案

德思特 GNSS 模拟器技术参数详解:700+通道、1000Hz 迭代率、可模拟1200颗卫星的全星座仿真方案

在高阶自动驾驶 HiL 闭环、低空无人系统及高动态 PNT&#xff08;定位、导航、定时&#xff09;测试中&#xff0c;传统户外路测往往受环境干扰大且场景难以 100% 复现。针对工程选型关注的核心参数与信号支持能力&#xff0c;德思特 GNSS 模拟器基于 Skydel 引擎与 SDA 软件定…

2026/10/11 22:52:37 阅读更多 →
vnpy量化实战:多因子选股+LightGBM动态仓位优化闭环

vnpy量化实战:多因子选股+LightGBM动态仓位优化闭环

简介&#xff1a;本资源是一套基于vn.py框架深度二次开发的量化投资实践项目&#xff0c;面向金融工程开发者、量化交易学习者及AI金融交叉领域从业者&#xff0c;解决选股自动化、策略回测工程化与机器学习模型集成等核心问题。压缩包共1656个文件&#xff0c;体量59.07MB&…

2026/10/11 22:52:37 阅读更多 →
vllm-metal 加载 GGUF 量化模型完整指南:Mac 本地部署 LLM 的省钱秘籍

vllm-metal 加载 GGUF 量化模型完整指南:Mac 本地部署 LLM 的省钱秘籍

【免费下载链接】vllm-metal Community maintained hardware plugin for vLLM on Apple Silicon 项目地址&#xff1a; https://gitcode.com/gh_mirrors/vl/vllm-metal 点击查看 免费下载 vllm-metal 是一个社区维护的硬件插件&#xff0c;让 vLLM 能够运行在 Apple Silicon&a…

2026/10/11 22:52:37 阅读更多 →
家电维修预约欧米到家|博世洗衣机维修预约|附近师傅上门检修|欧米到家报修热线

家电维修预约欧米到家|博世洗衣机维修预约|附近师傅上门检修|欧米到家报修热线

前言&#x1f306; 国内住宅业态丰富&#xff0c;各地老城老旧管网老化、水质杂质多&#xff0c;城市高层住宅水压波动频繁&#xff0c;全国大部分地区属于湿润气候&#xff0c;梅雨季、多雨季节潮湿多雨、空气湿度极高&#xff0c;冬夏温差大&#xff0c;差异化的居家工况让洗…

2026/10/11 22:52:37 阅读更多 →
构网型储能变流器参数整定:虚拟惯量、阻尼与下垂系数实战解析

构网型储能变流器参数整定:虚拟惯量、阻尼与下垂系数实战解析

最近在调试一个构网型储能样机&#xff0c;100kW 的柜子在离网工况下带 RLC 负载&#xff0c;光是 J 和 D 两个参数就调了两个晚上。功率波形要么像水面波纹一样持续荡漾&#xff0c;要么频率响应慢到让人怀疑控制器死机。后来我才意识到&#xff0c;构网型变流器能不能真正工程…

2026/10/11 22:52:37 阅读更多 →
MySQL子查询完全指南:分类、执行流程、性能优化与常见坑

MySQL子查询完全指南:分类、执行流程、性能优化与常见坑

子查询在MySQL里被很多人当成"会用但说不清"的技术点。SQL子查询用得好&#xff0c;能把复杂统计拆成清晰的嵌套逻辑&#xff1b;用不好&#xff0c;一条慢查询直接拖垮业务接口。这篇文章我把子查询从分类、执行流程到性能优化、报错排查完整过一遍&#xff0c;所有…

2026/10/11 22:51:36 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →