第1章 Java 简介与开发环境搭建

📅 2026/8/17 20:15:37
第1章 Java 简介与开发环境搭建
第1章 Java 简介与开发环境搭建本系列为 Java 基础入门教程从零开始每节一个知识点适合完全零基础的读者。本节介绍 Java 是什么、为什么学它以及如何搭建开发环境。一、Java 是什么Java 是一种面向对象的编程语言由 Sun 公司后被 Oracle 收购于 1995 年推出。它的核心特点是“一次编写到处运行”Write Once, Run Anywhere这得益于 Java 的跨平台机制——通过JVMJava 虚拟机屏蔽了不同操作系统的差异。Java 发展至今已有近 30 年历史依然是企业级应用开发的主流语言广泛用于后端服务开发Spring Boot、微服务Android 应用开发大数据技术栈Hadoop、Spark金融、电商等大型系统为什么 Java 能长盛不衰一是生态庞大大多数需求都有现成库二是自动内存管理不用手动管理指针三是性能足够JIT 技术完全能支撑电商、金融这种量级。二、Java 的运行机制Java 程序从源码到运行要经过两个关键步骤编译javac将.java源码编译成字节码.class文件运行java命令启动 JVMJVM 加载并执行字节码Hello.java --(javac)-- Hello.class --(java)-- JVM 执行JVM 是关键同一个.class文件在 Windows、Linux、macOS 上都能运行因为每个平台都有对应的 JVM 实现字节码只跟 JVM 打交道不直接接触操作系统。字节码是给 JVM 看的中间语言——好比电影的母带放进任何一家电影院JVM都能放映至于电影院开在哪个国家操作系统并不重要。代价是运行时要多一道解释字节码的工序启动通常比 C 稍慢但 JIT 预热后长时间运行差距很小。三、JDK、JRE、JVM 的区别这三个概念初学者经常混淆名称全称作用JVMJava Virtual Machine运行字节码的虚拟机JREJava Runtime Environment运行时环境包含 JVM 和基础类库JDKJava Development Kit开发工具包包含 JRE 和编译器 javac 等工具简单理解你要运行 Java 程序需要 JRE你要开发 Java 程序需要 JDK。JDK 是最大的那个包JRE 包含在 JDK 里JVM 包含在 JRE 里。三个概念层层包含可类比厨房JVM 是灶台干活的地方JRE 是装了食材的厨房能做饭JDK 是厨房外加菜谱刀具能研发新菜日常开发直接装 JDK 就够了。补充一点JDK 8 安装目录下有独立的jre文件夹JDK 11/17 则不再单独提供 JRE 目录。四、搭建开发环境macOS 为例1. 安装 JDKJDK 有多个版本本系列统一按JDK 8、JDK 11、JDK 17三个 LTS长期支持版本讲解这也是目前实际项目中最常见的三个版本JDK 8老项目的主力版本很多公司至今还在用维护量大JDK 11介于 8 和 17 之间的过渡 LTS 版本部分企业选它作为基线JDK 17目前最主流的 LTS 版本新项目基本都用它三个版本的日常写法大部分相同个别语法有差异比如后面会讲到的var、switch 新写法、文本块等遇到差异时文中会明确指出。如果你是新手建议直接安装 JDK 17。macOS 上可以用 Homebrew 安装# 安装 OpenJDK 17brewinstallopenjdk17# 配置环境变量zshechoexport PATH/opt/homebrew/opt/openjdk17/bin:$PATH~/.zshrcsource~/.zshrc也可以从官网下载安装包注意选对架构——Apple 芯片 Mac 选 arm64、旧 Intel Mac 选 x86_64先运行uname -m确认选对版本——新手直接选 17LTS。需要 JDK 8 的话推荐从 AdoptiumTemurin或 Azul Zulu 官网下载注意 JDK 8 的内部版本号写作1.8。2. 验证安装在终端输入以下命令能看到版本号即安装成功java-versionjavac-version输出类似java version 17.0.10 2024-01-16 LTS javac 17.0.103. 选择开发工具IDEAIntelliJ IDEAJava 开发首选社区版免费VS Code轻量级装 Java Extension Pack 插件即可文本编辑器 命令行最朴素的方式适合初学者理解编译运行过程五、第一个 Java 程序用记事本/编辑器创建Hello.javapublicclassHello{publicstaticvoidmain(String[]args){System.out.println(Hello, Java!);}}终端编译并运行javac Hello.java# 编译生成 Hello.classjavaHello# 运行输出Hello, Java!注意public class Hello的类名必须和文件名Hello.java一致否则编译报错。这是 Java 的基本规则下一节我们会详细拆解这个程序。运行后目录里会多出Hello.class——它就是javac编译产生的字节码java Hello执行的就是它。六、扩展知识1. JVM 内存分区初识JVM 运行时会把自己的内存划分成几个区域不同区域存放不同类型的数据。先混个脸熟学完变量、对象再回头看会有豁然开朗的感觉栈Stack存放方法调用过程中的局部变量方法执行完自动销毁堆Heap存放new出来的对象是所有线程共享的区域也是垃圾回收的主战场方法区/元空间存放类结构信息、静态变量、常量池等程序计数器记录当前线程执行到哪一条指令多线程切换时靠它恢复现场。用一段代码直观感受一下publicclassMemoryDemo{staticintcount0;// 静态变量 → 方法区元空间publicstaticvoidmain(String[]args){intage25;// 局部变量 → 栈内存StringnameJava;// name 引用在栈字符串对象在堆int[]numsnewint[3];// nums 引用在栈数组对象在堆}}先记住一句话基本类型的局部变量在栈上new出来的对象在堆上。2. PATH 与 JAVA_HOME 的作用装完 JDK 还要配环境变量这两行配置分别解决什么问题PATH告诉终端去哪找命令把$JAVA_HOME/bin加进去才能在任何目录敲java、javacJAVA_HOME告诉 IDEA、Maven、Tomcat 等工具JDK 装在哪。很多工具不读 PATH只认 JAVA_HOME所以两个都要配。# 写入 ~/.zshrcmacOS 默认 shellexportJAVA_HOME/opt/homebrew/opt/openjdk17exportPATH$JAVA_HOME/bin:$PATH# 验证配置是否生效echo$JAVA_HOME# 输出 JDK 路径whichjava# 输出 java 命令的实际位置3. 多版本 JDK 共存切换一台电脑装多个 JDK 很常见老项目 JDK 8、新项目 JDK 17macOS 上可以用jenv管理brewinstalljenv jenvadd/opt/homebrew/opt/openjdk8# 添加 JDK 8路径按实际安装位置填jenvadd/opt/homebrew/opt/openjdk17# 添加 JDK 17jenv versions# 查看已添加的版本七、易错点1. 类名与文件名不一致// ❌ 文件名是 Hello.java类名却叫 HelloWorldpublicclassHelloWorld{publicstaticvoidmain(String[]args){}}// ✅ 类名必须和文件名完全一致publicclassHello{publicstaticvoidmain(String[]args){}}编译时报错类 HelloWorld 是公共的, 应在名为 HelloWorld.java 的文件中声明。2. 没配环境变量命令行找不到 java# ❌ 未配置 PATH 直接运行java-version# bash: java: command not found# ✅ 先配置环境变量再验证exportPATH/opt/homebrew/opt/openjdk17/bin:$PATHjava-version3. 下载错架构/版本# ❌ 在 Apple 芯片 Mac 上装了 x86_64 版 JDK运行报错或异常卡顿# ✅ 先确认 CPU 架构再下载对应安装包uname-m# Apple 芯片输出 arm64Intel 输出 x86_644. javac 和 java 命令混用# ❌ JDK 8 下直接运行源码文件单文件直接运行需 JDK 11/17 才能运行javaHello.java# ✅ 先编译再运行JDK 8/11/17 三个版本通用javac Hello.javajavaHello5. 改完配置忘记 source# ❌ 编辑 ~/.zshrc 后不刷新当前终端仍然找不到 java# ✅ 让配置立即生效source~/.zshrc6. 只装了 JRE没有 javac# ❌ 只安装 JRE运行时后javac-version# javac: command not found# ✅ 开发必须装 JDK它才包含编译器 javac八、小结Java 跨平台的秘密是 JVM开发用 JDK运行只需要 JRE写代码 →javac编译 →java运行三步走推荐 JDK 17 IDEA 作为起步配置本系列按 JDK 8/11/17 三个 LTS 版本讲解PATH 让终端找到 java 命令JAVA_HOME 让开发工具找到 JDKJVM 内存初步了解局部变量在栈上、对象在堆上下一节我们详细讲解第一个程序 Hello World 的每一行代码。下一篇第2章 第一个 Java 程序Hello World