恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Java入门必知:JDK、JRE与JVM详解及环境配置指南

  • 首页
  • 资讯中心
  • /
  • Java入门必知:JDK、JRE与JVM详解及环境配置指南

相关资讯

应届生软件测试面试攻略:从八股到项目实战全解析 2026/10/4 18:44:38
Observable性能侦测模组:MC卡顿元凶一键定位工具 2026/10/4 18:39:37
Codex实战部署与工程化集成指南 2026/10/4 18:39:37

最新资讯

Minitab正交试验全流程解析:从田口设计到注塑工艺优化
vtkPolyData核心详解:VTK几何数据结构与渲染管线实战
千笔降AIGC助手实战:从检测原理到人工复查全攻略
AI Agent实战指南:从RAG到多Agent的项目拆解与避坑经验
比 Vibe Coding 强 100 倍!字节 Trae 2.0 登场,TaoToken 统一 Key 打通 SOLO 上下文工程
智慧监测-红外极小目标检测与分割数据集 远距离红外监控,识别入侵低空无人机、飞鸟,提前告警,防范黑飞。

今日推荐

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本周热门

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Java入门必知:JDK、JRE与JVM详解及环境配置指南

发布时间:2026/10/4 18:44:38
Java入门必知:JDK、JRE与JVM详解及环境配置指南 1. 先搞清楚Java在你的电脑里是怎么活着的很多人学Java第一周就被劝退了原因不是语法难而是压根没弄明白自己装的那些东西到底是什么。你在百度上搜Java入门下载了JDK配好了环境变量写了第一个Hello World然后呢你连自己刚才敲的命令在干什么都不清楚更别提JVM、JRE、JDK这一堆长得差不多的词。我当年也是这样靠着死记硬背把配置步骤背下来结果碰到换电脑、换系统、换版本直接傻眼。所以这篇文章我想先带你把这层窗户纸捅破。1.1 三个缩写词到底差在哪JDK、JRE、JVM这三个词在入门阶段必须分清楚因为它们直接决定了你下载什么东西、配什么环境变量、以及别人报错时你能不能听懂。先给结论JVMJava Virtual MachineJava虚拟机负责把编译后的class文件翻译成当前操作系统能执行的机器指令。它是跨平台的真正执行者。JREJava Runtime EnvironmentJava运行环境包含了JVM和Java核心类库。如果你只是要跑别人写好的Java程序装JRE就够了。JDKJava Development KitJava开发工具包包含了JRE的全部内容另外加上了编译器javac、调试工具、文档生成工具等。你要写代码、编译代码就必须装JDK。用个生活化类比JDK是一整套厨房JRE是厨师用的那把刀JVM是点火烧菜的灶台。你想自己做饭开发程序就要整套厨房你只想吃饭运行别人开发的程序有灶台和刀就够了。这个区分直接影响实践中的一个常见操作很多教程会告诉你装JDK也有的教程会让你把JDK装完再单独装一个JRE这其实是老版本时代留下的做法。JDK 11之后的版本JRE已经被内置在JDK里再单独下JRE反而容易把PATH变量搞乱导致打开命令行一敲java就报不是内部或外部命令。我见过太多新手把两个版本混装最后卸载重装好几轮。建议就是只装一个最新LTS版本的JDK不要额外装JRE。1.2 Java跨平台的原理一句话就能说透一次编写到处运行是Java最经典的口号但很多人理解错了以为Java程序能在所有设备上无脑跑。真相是Java源代码.java文件先被javac编译成字节码.class文件这个字节码不针对任何具体操作系统而是针对JVM。你安装的JVM才会去适配Windows、Linux、macOS。换句话说JVM才是那个负责翻译的角色。这个机制带来的实际好处是你写的代码在Windows上编译出来的class文件拷到Linux服务器上只要那边装了对应版本的JVM就能直接运行不需要重新编译。这也就是为什么后端服务器领域Java这么普及——服务器系统五花八门开发机却常常是Windows或macOS两者之间的代码流转成本极低。但也正因为这个机制诞生了一个经典问题版本兼容性。用JDK 8编译的项目放到JDK 17的环境里运行大概率能跑但用JDK 17的新语法写的代码放到JDK 8的JVM上直接编译期就挂了。你在入门阶段记住一句话写代码的javac版本要和运行环境的JVM版本匹配最好一致后端部署时特别容易踩这个坑。2. 环境配置的每一步我都替你踩过坑了环境配置是初识Java路上最劝退的一关但它的难点从来不是技术含量高而是教程混乱版本多样导致的信息过载。你搜java环境变量配置详细教程能搜出几万篇帖子十年前的拿出来还在教你怎么配classpath其实那玩意儿在JDK 1.5之后就完全不要求手动配了。下面我按现在的主流做法把整个流程拆开讲顺便告诉你为什么这样做以及每一步最常出的幺蛾子。2.1 JDK版本的选型建议首先选版本。官网的下载页面有Oracle JDK和OpenJDK两个入口Oracle JDK是官方商用版OpenJDK是开源版。对于学习阶段两者在功能上基本没有感知差异用哪个都行。比较重要的是版本号现在网上还有大量项目跑在JDK 8上而新项目普遍用JDK 11、JDK 17或者更新版本。我个人建议新手直接选JDK 17。为什么不是JDK 8因为JDK 8太老很多现代Java框架和库比如Spring Boot 3.x已经转向JDK 17你在写作业时可能没感觉但后面接触真实项目、看他人源码时会发现语法和API的差异导致你根本看不懂更别说面试时被问项目为什么用JDK 17你答不上来。为什么不是最新版因为生态还没完全跟上而且学习阶段用LTS长期支持版本是最稳妥的路线JDK 17是当前最主流的LTS版本。这是我的实操建议代表了很多一线后端开发者的实际选择。下载时注意Oracle官网下载JDK需要注册Oracle账号但免费的OpenJDK则可以直接从Adoptium、Azul等发行版网站下载无需注册。很多人卡在这一步觉得要账号就放弃了其实注册只要一分钟。另外记住一定下载和你系统匹配的版本Windows选x64 InstallermacOS选对应芯片Apple Silicon选aarch64Intel选x64Linux选tar.gz或rpm。2.2 环境变量配置的现代做法装好JDK之后关键在于配置环境变量。现代JDKJDK 9其实只需要配一个JAVA_HOME和PATH完全不需要折腾classpath。具体步骤如下以Windows 11为例打开系统属性 - 高级 - 环境变量。在系统变量中点击新建变量名填JAVA_HOME变量值填你的JDK安装路径比如C:\Program Files\Java\jdk-17。注意不要填到bin目录就填到JDK根目录。找到Path变量编辑新增一条%JAVA_HOME%\bin。一路确定保存然后重新打开一个CMD窗口输入java -version验证。很多人配置完之后发现cmd里输入java还是报错一种可能是没重新开窗口另一种是Path里没有加成功还有一种是同时配了多个版本的JDK导致系统优先识别了老的。我建议在验证前先重启一下命令行还不行就用where java命令查看当前捡到的是哪个路径下的java这个命令能直接告诉你系统到底找到了哪个可执行文件排查效率极高。macOS和Linux上更简单编辑~/.zshrcmacOS或~/.bashrcLinux加上export JAVA_HOME/path/to/jdk和export PATH$JAVA_HOME/bin:$PATH执行source生效。这部分配置属于配一次、省三年的事值得认真处理好。2.3 验证安装时别急着写代码java -version看到如下输出就算装好了openjdk 17.0.9 2023-10-17 OpenJDK Runtime Environment (build 17.0.99) OpenJDK 64-Bit Server VM (build 17.0.99, mixed mode, sharing)注意看这里不会显示你配的JAVA_HOME但只要你没有额外报错就算成功。接下来才是很多新手刚开始就彻底懵掉的环节你写了一个Hello.java然后发现javac编译不过去报无法将 Hello.java 识别为内部或外部命令——这往往不是环境变量问题而是你没有把当前目录切到代码文件的目录。javac只会在当前目录找.java文件你如果人在桌面却对D盘的文件执行javac自然就凉了。另外强烈推荐在学习阶段搭配使用一个趁手的编辑器或IDE。很多新手一上来就上IntelliJ IDEA这没问题但我的建议是头两个星期可以刻意用纯文本编辑器命令行编译强迫自己把javac和java命令搞熟之后再切换到IDE。这样你一旦碰到IDE里跑不起来的诡异问题不至于连编译这层都看不懂。反过来一上来就用IDE自动帮你完成一切你很可能连classpath是什么都不清楚后面做项目时反而更难。3. 第一个Java程序和你以为的不太一样环境装好之后很多人会立刻开始背语法但我建议你先花十分钟亲手写、亲手编译、亲手运行一个最简单的程序把写代码-编译-运行这条完整链路走通这比什么都重要。Java和大一时学的那种脚本语言不一样它需要编译这一步搞清楚这一步你后续学习语法时会少很多困惑。3.1 Hello World背后的三步过程新建一个Hello.java文件内容如下public class Hello { public static void main(String[] args) { System.out.println(Hello, Java!); } }然后在命令行执行javac Hello.java java Hello第一行javac Hello.java把源代码编译成字节码文件Hello.class第二行java Hello让JVM读取并执行这个class文件。注意第二行不要带.class后缀带后缀反而报错这就是一个新手的经典失误。关于代码本身有几个常规认知需要打破文件名必须和public类名一致也就是Hello.java里必须有个public class Hello。如果类名和文件名不一致javac直接报错这是Java语法规矩不是编辑器开玩笑。public static void main(String[] args)是程序入口。这个签名是固定的虽然现在还不用深究每个词的含义但建议自己动手改一改试试把static去掉试试把public去掉试试观察编译/运行时的报错这种主动破坏式的学习法比背定义高效得多。System.out.println才是真正输出到控制台的内容。很多人把System写得少了字母把out和println记混编译报错后就开始怀疑环境变量有问题其实只是拼写问题。3.2 基本数据类型和标识符命名比你想的要讲究热搜词里反复出现Java数据类型和Java标识符命名规则说明这两块确实是初学阶段的硬知识。Java的基本数据类型有八种从实践中记忆比背表格更牢整型byte1字节、short2字节、int4字节、long8字节浮点型float4字节、double8字节字符型char2字节布尔型boolean只有true和false面试常问的点是为什么long的赋值要带L后缀long a 100L;float的赋值要带F后缀float b 1.5F;因为Java默认把整数字面量当作int把带小数的字面量当作double你不写后缀编译器就可能报损失精度。这背后是类型的自动和强制转换规则初学时容易踩。标识符命名规则更基础但它的重要性往往被低估。规则包括不能以数字开头、不能使用关键字、严格区分大小写、见名知义。同一个类里一个String name和一个String Name是两个完全不同的变量——Java是大小写敏感的很多初学者调试半天找不到bug最后发现是这个原因。3.3 运算符和排序基础入门最容易栽的地方热搜词里出现了java排序和冒泡排序java说明很多新手的第一学期就在和排序打交道。入门阶段建议手写三种排序冒泡排序、选择排序、插入排序。不是因为这些排序在生产中多常用而是它们能帮你熟练循环、数组、交换变量这三件最基本的事。以冒泡排序为例一个便于理解的写法是public static void bubbleSort(int[] arr) { for (int i 0; i arr.length - 1; i) { for (int j 0; j arr.length - 1 - i; j) { if (arr[j] arr[j 1]) { int temp arr[j]; arr[j] arr[j 1]; arr[j 1] temp; } } } }注意两个细节内层循环的j上限是arr.length - 1 - i意思是每趟排序后最大的数已经沉到末尾不需要再和它比较交换变量用了一个临时变量temp如果不用temp直接arr[j] arr[j1]就会把原值覆盖掉。这些细节恰恰是初学者最常出错的点面试时考察排序本质是在考察你是否真的理解数组和循环的执行顺序。4. 面向对象从语法到思维的转变面向对象编程Java是热搜词里的大热门但绝大多数初学者对面向对象的理解停留在类就是模板对象就是实例这种背诵层面。说实话这个理解没错但它解释不了你为什么要用继承为什么要重写为什么要用接口。面向对象不是Java发明的Java只是把它贯彻得最彻底的一门语言。我的看法是理解面向对象要从它解决了什么麻烦入手而不是从它有什么语法入手。4.1 类与对象的关系用一个案例讲透类是对现实事物的抽象描述。比如你写一个电商系统会有一个User类里面有username、password、email这些属性以及login()、register()这些方法。对象就是根据这个类创建出来的具体实例比如张三的账号是User类的一个对象李四的账号又是另一个对象。public class User { private String username; private String password; public User(String username, String password) { this.username username; this.password password; } public void login() { System.out.println(username 登录成功); } } User zhangsan new User(zhangsan, 123456); zhangsan.login();每个对象拥有独立的username和password但共享类的行为。用new关键词创建对象的过程是在堆内存中分配一块区域再把引用变量指向这块区域。这背后的内存模型面试时经常被追问初学阶段可以在脑中有个大概图景即可。4.2 封装、继承、多态的真实意义封装把属性设为private对外只提供getter/setter方法。初学者觉得这纯属多此一举直接把字段设成public多方便。但一旦字段被外部改成了非法值比如密码长度小于6你连排查入口都没有。封装的意义在于给所有修改这个字段的行为设置一个统一入口你可以在setter里做校验、做日志、做权限控制。这对应了热搜词里的行级权限java这类企业级需求——权限控制的基础就是对访问路径的管理。继承A extends B子类自动获得父类的属性和方法本质是代码复用和层级建模。但继承不是万能的滥用继承会导致类爆炸。在我的实践认知里能用组合或接口解决的问题优先不要用继承这是很多框架设计背后的原则新手可能无法马上领悟但至少别写出猫继承狗这种逻辑混乱的设计。多态同一个方法在不同对象上有不同表现。最常见的形式是方法重载同名不同参和方法重写子类重新实现父类方法。多态最直白的例子就是ListString list new ArrayList();——声明类型是接口List实际对象是ArrayList。你写代码时只依赖List这个抽象类型具体怎么实现数组实现还是链表实现由运行时决定。这就是面向接口编程也是面试中经常围绕展开的话题。4.3 String、容器和常用API别小看基础类库热搜词里Java容器出现了好几次这指的是集合框架主要是List、Set、Map这三大家族。List是有序可重复的ArrayList、LinkedListSet是无序不可重复的HashSet、LinkedHashSet、TreeSetMap是键值对HashMap、LinkedHashMap、TreeMap。初学时最常犯的错误是搞不清什么时候用List什么时候用Map存储一批用户用ListUser存储用户名-用户信息的映射用MapString, User。HashMap的底层原理数组链表/红黑树、ArrayList与LinkedList的区别、HashSet如何保证元素唯一这三件事是面试必问也是理解Java容器比较重要的一组知识点。我在入门阶段有个笨办法闲着没事就打开源码看看不懂没关系先混个眼熟后来实际做项目时遇到性能问题就会自然想起源码里的实现细节。常用库函数algorithm java和java工具类相关热搜也反映出很多人在刷算法题之前特别关心Java有没有类似C STL的库。答案是有的但建议先掌握核心的几个Collections.sort()、Arrays.sort()、StringBuilder别用String做大量拼接、Math.max/min、Integer.parseInt、HashMap的getOrDefault等。刷蓝桥杯或面试算法题时这些够用了。5. 从初识到能干活学习路线与常见误区标题是初识Java但我知道很多人实际的愿望是学会Java找一份体面工作。这两个目标的学习路径在前两个月完全一致后面开始分叉。下面这节我给一条自学路线并告诉你哪些是浪费时间、哪些必须学扎实。5.1 尽量务实的学习路线图我的建议分六个阶段每阶段都要有产出环境与基础语法1-2周完成上面第二、三部分的内容掌握变量、数据类型、运算符、流程控制、数组。面向对象2-3周类与对象、封装继承多态、接口、常用类库String、集合框架。产出一个简单的学生成绩管理系统不连数据库数据用集合存。异常处理与I/O1周try-catch、自定义异常、文件读写。很多初学觉得这part不重要直接跳过到做项目时面对一行行报错完全不知道从哪查起就是这里的债。数据库与JDBC2-3周学会MySQL的基本CRUD再学JDBC连接数据库。到这里你的程序开始活了——能存取数据。Web基础与框架4-6周JavaWeb基础Servlet、JSP可以快速略过现在公司很少直接用了然后上Spring Boot MyBatis。这不只是对应spring boot mybatis 的 java 开源多商户跨境商城源码下载这样的热搜词更是当前Java后端开发的主流组合。项目实战持续挑一个真实的业务场景比如博客系统、商城系统、后台管理系统自己做需求设计、建表、写接口、做联调。一个完整的项目比十套练习题更能反应你的真实水平。5.2 学习中最常见的几个误区误区一把大量时间花在背八股文上。热搜词里java八股文是热门搜索说明很多人在为了面试而背题。我要泼一盆冷水背题治标不治本面试官深挖几层你就露馅了。正确的态度是先动手写上几遍把原理搞懂了再去看面经用来查漏补缺顺序绝对不能反。误区二只学语法不做项目。语法是砖头项目是房子。你光把砖头摆一排面试官问你这房子能住人吗你说我砖头认识得可全了这是不对的。误区三盲目追求最新版本。每出一个新版本就立刻更新结果社区生态没跟上遇到问题搜不到答案反而卡住学习进度。这对应了热搜词里java 8 201这类对版本号的纠结。新手阶段选一个稳定LTS版本学到头比频繁追新更重要。误区四不重视调试能力。看到报错就慌就复制粘贴去网上搜。正确做法是先认真读报错信息找到自己代码行号用IDE的断点调试一步一步看变量变化。大多数bug的根因都能通过debug找到Google只能帮你解决环境问题帮不了你理解代码逻辑。5.3 Java不能只学不说面试的视角java面试题、java开发工程师面试题这些热搜词的背后是大量自学者在职业化道路上感到茫然。我结合身边新同事的反馈给一个建议学完一个知识点后尝试把它讲给一个完全不懂的人听讲不明白的地方就是你还没真正学会的地方。这不是空话。Java核心知识的面试问题实际上是有些套路的——比如HashMap的底层实现、JVM内存区域、Spring Bean的生命周期——但你只有先把知识点学扎实面经上的答案对你才有参考价值否则你连它在问什么都未必能读懂。另外关于python与java的优缺点这类高频热搜初学阶段没必要纠结。这两门语言的定位有重叠也有差异Python开发效率高、语法简洁适合数据分析、机器学习和快速原型Java偏向大型企业级应用生态成熟、稳定性强尤其在金融、电商、物流、政务后端领域有压倒性优势。我的建议是不管你是Java还是Python起步先把一门语言学深学透第二门语言的习得成本会低很多。最怕的是今天听说Python工资高去学Python明天听说Java岗位多又回来看Java两个都浅尝辄止最后两手空空。6. 写给新人的几条实在建议最后说几条我带了这么多年新人、也带了自己的实践体会后最想强调的东西。第一给自己一个最小可运行目标。不管学什么知识点都尽量写一个能运行的最小程序验证它哪怕是三行代码。比如学HashMap就写一个往里面放数据、取数据的程序学继承就写一个父类子类的demo。看得见的输出比什么都让人有成就感而成就感恰恰是自学能够坚持下去的最大燃料。第二把编程环境当成自己的家具来熟悉。从一开始就养成认真读报错信息的习惯每次报错都先自己读一遍再看是编译错误、运行异常还是逻辑错误然后尝试自己定位。这个习惯越早养成后面项目调试时越省力。第三给自己做一个wiki。平时遇到解决的问题、记不住的API、踩过的坑都记到一个笔记系统里。几个月后回头翻自己的笔记你会惊讶于自己已经积累了这么多东西考试、面试、做项目时这本笔记会比任何教程都更适合你。Java是一棵很大的树初识阶段只需要摸清树干和主枝后面枝枝叶叶是在实战中慢慢长出来的。希望这篇文章能帮你把初识这步走得稳一点、细一点。你去装一个JDK写第一个程序吧剩下的路代码会告诉你往哪走。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号