我学习到的Java概念

两套运行时的内部构成(浏览器 / Node.js)

并列、独立的两套 JavaScript 运行环境;它们都内置了 V8 引擎

1. 浏览器的内部构成

  • 核心执行引擎:V8 引擎,只负责解析、执行 JS 代码
  • 专属能力:Web API(DOM、BOM、fetch、定时器、事件循环等浏览器特有接口)
  • 额外组件:HTML/CSS 渲染引擎、GUI 界面、安全沙箱
  • 定位:面向网页的客户端运行环境

2. Node.js 的内部构成

  • 核心执行引擎:V8 引擎(和浏览器同源,负责执行 JS)
  • 专属能力:Node 内置 API(文件读写 fs、网络服务 http、进程管理、路径处理等服务端能力)
  • 配套工具:npm、npx、CommonJS/ESM 模块系统等开发工具链
  • 定位:面向服务端 / 工程化的服务端运行环境

Node.js 运行时本体 和 Node.js 完整安装包 区别

1. Node.js 运行时本体(V8 + Node 内置 API)

这是 Node.js 最核心的部分,唯一职责就是运行 JS 代码,除此之外什么都不做。

  • 底层执行引擎:V8,负责解析执行 JS 语法
  • 上层能力库:Node 内置 API(fs 文件读写、http 建服务、path 路径处理等)
  • 对应命令:node xxx.js
  • 类比 Java:等同于 JRE(JVM + Java 核心类库) ,只提供运行能力,不提供开发、打包、依赖管理工具。

举个例子:你写一个 test.js,只用了 fs.readFile 读文件,执行 node test.js 能跑通 ------ 这一步只用到了「运行时本体」,没有用到任何额外工具链。

2. Node.js 完整安装包

就是你从官网下载、一键安装的那个安装程序,它 = 运行时本体 + 全套开发工具链。除了能跑 JS 的运行时,还额外附带了:

  • npm:包管理工具,下载第三方依赖、执行脚本命令(对应 Java 的 Maven)
  • npx:一键执行远程 npm 包的工具
  • 核心模块源码、调试工具、性能分析工具等
  • 对应命令:npm installnpm run buildnpx vite
  • 类比 Java:等同于 JDK(JRE + javac/jar 等开发工具)

举个例子:你执行 npm install axios 安装依赖、npm run dev 启动 Vite 开发服务 ------ 这些用的是安装包里的工具链,和「运行 JS 代码」本身没有直接关系。

Java核心定位

1. javac(Java Compiler)

  • 本质:Java 源码编译器,一个独立的命令行程序
  • 唯一工作:把你写的 .java 纯文本源代码,翻译成 JVM 能识别的 .class 字节码文件
  • 特点:只做「语法检查 + 代码翻译」,不执行任何业务逻辑,不会运行你的 main 方法、不会打印输出

2. jar 命令

  • 本质:Java 打包归档工具
  • 工作:把编译好的一堆 .class 文件、配置文件、资源文件,打包压缩成一个 .jar 包,方便部署、分发
  • 特点:纯文件打包工具,类似高级版 zip,和代码执行完全无关

3. JVM(Java Virtual Machine)

  • 本质:Java 字节码执行引擎,一个独立的虚拟机进程
  • 唯一工作:加载 .class / .jar 字节码文件,逐行翻译成当前操作系统能识别的机器指令,交给 CPU 执行
  • 特点:真正执行业务代码,你写的循环、判断、接口逻辑、数据库调用,全都是 JVM 在运行时执行

以一个 HelloWorld 程序从编写到运行为例:

  1. 你手写 HelloWorld.java 源代码
  2. 执行 javac HelloWorld.java:javac 编译器检查语法,生成 HelloWorld.class 字节码
  3. (可选)执行 jar 命令:把 class 文件、配置文件打包成 demo.jar
  4. 执行 java HelloWorld(或 java -jar demo.jar):启动 JVM 进程
  5. JVM 加载字节码,翻译成机器码,真正执行 main 方法,控制台打印输出

前端类比记忆

  • javac ≈ tsc / babel:把高级源码(TS/ES6+ / Java)翻译成运行环境能识别的低版本代码(JS / 字节码)
  • jar 命令 ≈ vite/webpack 打包:把零散的编译产物、资源文件打包成一个可部署的产物(dist 文件夹 /jar 包)
  • JVM ≈ V8 引擎:真正执行代码的核心引擎,负责把编译后的代码跑起来,产生实际运行效果
相关推荐
吠品10 分钟前
Wine 在 Linux 上运行 Windows 软件完整指南
java·linux·服务器
2601_9537208212 分钟前
【计算机毕业设计】基于Vue与Spring Boot的高校兼职信息服务平台设计与实现
spring boot·后端·课程设计
亚历克斯神1 小时前
智能搜索系统的升级复盘——从 Elasticsearch 到混合检索的检索质量提升
java·spring·微服务
再吃一根胡萝卜2 小时前
用 Rust 写一个桌面悬浮图标:为什么它比 Python 更适合 AI 桌面工具?
后端
IT_陈寒2 小时前
Vue的computed属性把我坑惨了,原来我一直用错姿势
前端·人工智能·后端
金銀銅鐵2 小时前
[Java] 一个方法最多可以有多少个入参?
java·jvm
哭哭啼2 小时前
JAVA服务问题诊断
java·开发语言·jvm
evans在进步3 小时前
Spring Boot 核心机制详解:可执行 JAR、CORS、静态资源与配置绑定
spring boot·后端·jar
Sayuanni%33 小时前
SpringBoot 从注解到源码:核心知识点总结
java·spring boot·后端
坚定信念,勇往无前3 小时前
Maven 私有仓库-nexus
java