
一、初识JavaJava帝国的诞生一场旷日持久的战争1972年C诞生贴近硬件运行极快效率极高操作系统编译器数据库网络系统等指针和内存管理1982年C诞生面向对象兼容C图形领域、游戏建立新语言语法像C没有指针没有内存管理真正的可移植性编写一次到处运行面向对象类型安全高质量类库C±-——JavaJVMJava虚拟机只要安装JVM就能运行Java可移植性Java初生1995年的网页简单而粗糙缺乏互动性图形界面的程序Applet—gsBill Gates说这是迄今为止设计的最好的语言Java 2 标准版J2SE去占领桌面 不好看Java 2 移动版J2ME去占领手机 不好看Java 2 企业版J2EE去占领服务器大量巨头加入基于Java开发了巨多的平台、系统、工具构建工具AntMavenJekins应用服务器TomcatJettyJbossWebsphereweblogicibm世界上最古老的it信息管理公司开发了Websphere推出了eclipse开发平台Web开发StrutsSpringHibernatemyBatis开发工具EclipseNetbeanintellij ideaJbuilder…2006 Hadoop大数据领域2008Android手机端三高问题高可用高性能高并发二、Java特性和优势简单性面向对象可移植性write once run anywhere高性能分布式URL动态性本身不具备动态性通过反射机制具有动态性多线程同时看视频听音乐开发Java的主流原因之一安全性健壮性去掉指针与内存之间的关系捕获异常机制Java为什么能成功天时地利人和自身实力强踩中互联网发展的节奏在机遇来临前将自己打造成更加健壮的节奏三、JDK JRE JVM1. Java的三大版本Write Once、Run AnywhereJava拥有JVMJava的虚拟机可以进行跨平台运用JavaSE标准版桌面程序控制台开发…JavaME嵌入式开发手机、小家电…快没了JavaEEE企业级开发web端服务器开发…2.JDK JRE JVMJDK:Java Development KitJRE:Java Runtime EnvironmentJava运行时环境JVM:JAVA Virtual Machine四、搭建开发环境1. JDK 卸载、下载与安装首先明确要下载那个版本的JDK第一步看项目硬性要求最重要公司/团队项目开源项目/教程考试/认证第二步看你的使用场景零基础学 JavaJDK 25跟着某本书/某套老教程学教程指定的版本维护公司老系统系统当前用的版本开发新项目/个人项目JDK 25依赖的框架还没适配新版JDK 21 或 17第三步看你对“稳定”和“新特性”的取舍想要长期不用折腾 → 选 JDK 25最新 LTS支持到 2033 年。想要生态最成熟、踩坑最少 → 选 JDK 21 或 JDK 17这两个版本经过大量项目验证中文资料也最多。只是临时跑个老工具 → 选 JDK 8但仅限这种情况。一个简单的决策流程你可以按这个顺序问自己项目有没有指定版本 有 → 直接用指定的。没有指定我是不是在跟教程学 是 → 用教程的版本。都没有我是开发新项目/学习 是 → JDK 25我依赖的框架不支持 JDK 25 是 → 降到框架支持的最高 LTS通常是 21 或 17。补充发行版怎么选版本号确定后发行版选哪个影响不大常见选择Eclipse Temurin社区最常用免费推荐。Amazon CorrettoAWS 出品免费长期支持。Oracle JDK官方版但注意商业使用许可条款。Microsoft Build of OpenJDK微软出品免费。对大多数人来说Eclipse Temurin 或 Amazon Corretto 就很好下载对应版本即可。下载JDK百度搜索JDK25找到下载地址下载电脑对应的版本首先需要判断电脑对应的操作系统版本下载 JDK 25 主要有两种方式直接下载安装包或使用包管理器自动安装。推荐优先选择Eclipse Temurin发行版它完全免费且没有商业许可限制方式一直接下载安装包推荐这是最直接的方法适合大多数人。下载地址Eclipse Temurin 官网的 Releases 页面https://adoptium.net/temurin/releases/操作步骤打开页面后在筛选框中做如下选择Operating System选择你的系统Windows / macOS / Linux。Architecture绝大多数现代电脑选x64Apple Silicon 芯片的 Mac 选 aarch64。Package Type选择JDK。Version选择25 - LTS。MSI是 Windows 的标准安装包。下载后双击运行跟着提示点“下一步”就能装好而且它会自动帮你配置好环境变量JAVA_HOME 和 PATH省去手动配置的麻烦对新手最友好。ZIP是个免安装的压缩包。下载后解压就能用但它不会自动配置环境变量你需要自己手动去系统设置里配容易出错一般不推荐。点击下载对应格式的安装包。Windows 通常选.msimacOS 选.pkg。关键一步运行安装程序时在自定义设置界面务必把 “Set JAVA_HOME variable” 和 “Add to PATH” 都启用。这样安装程序会自动帮你配好环境变量省去手动配置的麻烦。出现报错怎么处理你看到的这个页面是GitHub 的 500 错误页面也就是 GitHub 服务器端出问题了那个举着“500”牌子的小章鱼是 GitHub 的吉祥物。为什么会出现这个不是你电脑的问题也不是你操作错了。500 代表“服务器内部错误”意思是 GitHub 的服务器暂时崩了或者正在维护导致无法响应你的下载请求。Temurin 的下载文件托管在 GitHub 上。你刚才点击 MSI 下载后浏览器跳转到了 GitHub 的服务器去拉取文件正好撞上了 GitHub 抽风。怎么办非常简单等几分钟再试就行刷新页面按F5或点击浏览器刷新按钮等一会儿多刷几次。换个时间如果是晚高峰GitHub 偶尔会这样过十分钟再点一次下载链接通常就好了。或者换个下载源如果你急着用可以去 Temurin 的官网首页adoptium.net不要直接点 GitHub 链接而是在首页的下载按钮那里直接选版本下载有时它会走不同的 CDN 镜像可能会更顺畅。注意如果你刚才已经下载了一半的.msi文件确认一下文件大小是不是完整的 115MB。如果只有几 KB说明下载失败了等 GitHub 恢复后重新下载即可。 不用担心这纯粹是网站临时故障多试几次就能正常下载了。安装JDK双击安装JDK第二步验证是否安装成功关键安装完成后一定要重新打开一个新的终端窗口不要用之前已经开着的。按Win R输入cmd回车。在黑色的窗口里输入bashjava -version如果出现类似openjdk version 25.0.4.1 ...的字样就说明安装和环境变量配置全部成功了。如果提示java 不是内部或外部命令说明环境变量没自动配上需要手动检查跑通你的第一段 Java 代码熟悉流程既然环境好了先不要急着装复杂软件用记事本快速体验一下“写代码 - 编译 - 运行”的感觉。按我之前说的在桌面新建Hello.java输入那几行打印Hello, JDK 25!的代码。在 cmd 里输入cd Desktop进入桌面然后依次输入javac Hello.java和java Hello看到输出就说明整个流程完全没问题了。卸载JDK Windows 系统下的完整卸载步骤你可以按照以下顺序操作确保卸载彻底第一步通过“设置”卸载程序打开 Windows 的“设置” “应用” “安装的应用”或控制面板的“程序和功能”在列表里找到所有带Java、JDK、OpenJDK、Eclipse Temurin名字的程序把它们全部卸载掉。第二步手动删除残留文件夹卸载程序跑完后去这些常见的安装位置如果文件夹还在就把它们删除C:\Program Files\JavaC:\Program Files (x86)\JavaC:\Program Files\Eclipse Adoptium以及你之前误选的D:\java或D:\tools等目录下的 Java 相关文件夹。第三步清理环境变量最关键这是解决你当前问题的核心。打开“系统属性” “高级” “环境变量”在“系统变量”里删除JAVA_HOME变量。编辑Path变量找到所有包含java、jdk或javapath的路径把它们全部删除。删除CLASSPATH变量如果有的话。第四步清理注册表残留按Win R输入regedit打开注册表编辑器。定位到HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft把这个文件夹直接删除。 额外提示完成以上步骤后可以关闭所有窗口重新启动一下电脑让环境变量的更改彻底生效。之后新开一个 cmd 窗口输入java -version如果提示“不是内部或外部命令”就说明 JDK 已经清理干净了。2. 安装一个写代码的软件IDE下载和安装步骤去官网搜IntelliJ IDEA下载Community Edition版本注意一定是 Community它是免费的。安装过程很简单一路点“下一步”即可。第一次打开 IDEA 时点击“New Project”创建新项目Name随便起一个比如HelloWorld。Language选择Java。JDK那一栏它通常会自动识别出你装的Temurin 25。如果没识别到点击Add JDK...选择安装路径比如C:\Program Files\Eclipse Adoptium\jdk-25.0.4.101-hotspot。创建好项目后在左侧src文件夹上右键New - Java Class命名为Hello然后把之前的代码粘进去点击绿色的“运行”按钮它就会直接在下方输出结果了比在 cmd 里敲命令方便一百倍。3. JDK目录介绍1.bin目录最重要存放 JDK 的可执行命令是开发者最常使用的目录。命令作用javacJava 编译器将.java编译为.classjavaJava 运行器启动 JVM 执行字节码javadoc生成 API 文档jar打包工具生成/解压.jar文件javap字节码反编译/分析工具jps查看当前运行的 Java 进程jstat监控 JVM 统计信息jmap查看堆内存快照jstack查看线程堆栈jconsoleJVM 图形化监控工具jcmd综合诊断命令keytool密钥和证书管理jlink(JDK 9) 生成自定义运行时镜像jpackage(JDK 14) 打包为本地安装包提示把bin目录加入系统环境变量PATH后才能在任意位置使用java、javac等命令。2.conf目录JDK 9存放配置文件如security策略、net.properties等。JDK 8 时这些文件在jre/lib下。3).include目录存放 C/C 头文件.h用于 JNIJava Native Interface开发让 Java 调用本地代码。4.jmods目录JDK 9存放 JMOD 格式的模块文件是 JDK 模块化系统的一部分用于jlink生成自定义运行时。5.jre目录仅 JDK 8 及以前Java 运行时环境供只想运行 Java 程序的用户使用。jre/bin运行所需命令java、javaw 等jre/lib运行时核心类库rt.jar 等JDK 9 之后 JDK 与 JRE 合并不再单独提供jre目录可通过jlink生成。6.lib目录存放类库和工具依赖tools.jarJDK 8编译、工具类支持dt.jarJDK 8设计时类库src.zipJava 核心类库源码方便在 IDE 中查看源码7.legal目录JDK 9存放各模块的授权许可信息。8.man目录Unix/Linux 下的手册页man page。9. 根目录文件文件说明release记录 JDK 版本、厂商等信息LICENSE/COPYRIGHT许可协议README说明文档src.zip源码压缩包部分版本放在根目录4. HelloWorld 及简单语法规则1.代码publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println(Hello, World!);}}2运行3.解析以上内容public class HelloWorldDemo{}Java 是一门面向对象的语言它的规矩是所有的代码都必须写在“类class”里面不能直接裸奔在新建的文件里输入psvm然后按回车这是 IDEA 的快捷输入会自动生成public static void main(String[] args) { }。在花括号中间输入sout然后按回车会自动生成System.out.println();。在括号里写上你想打印的内容注意用英文双引号包起来比如我是新手。新手提示每次新建一个 Java 文件第一件事就是在类里面敲psvm回车把程序的“大门”先建好。没有这个方法程序就跑不起来。敲完sout回车后光标会自动停在括号()里面。这时候你要输入英文双引号在双引号里面写你想打印的内容。比如System.out.println(我是新手);五、HelloWorld随便新建一个文件夹存放代码新建一个Java文件文件名后缀名为.javaHello.java【注意点】系统可能没有显示后缀名我们需要手动打开编写代码public class Hello{ public static void main(string[] args){ System.out.print(Hello,World!); } }编译javac java文件会生成一个class文件运行class文件java class文件可能会遇到的情况每个单词大小写不能出现问题java是大小写敏感的尽量使用英文文件名和类名必须保持一致并且首字母大写符号使用了中文的六、Java程序运行机制——编译型与解释型编译型compile -操作系统程序在执行前先由编译器一次性翻译成目标平台如操作系统可识别的机器码之后直接运行。解释型网页等对运行速度要求不高的采用解释型程序运行时由解释器逐行读取源代码并即时翻译执行不生成独立的目标文件。Java既是编译型也是解释型Java 既不是纯粹的编译型也不是纯粹的解释型而是“先编译后解释”的混合机制程序运行机制核心流程编译阶段javac将.java源文件编译成平台无关的.class字节码解释阶段JVM 逐条解释执行字节码JIT 优化热点代码被即时编译为机器码兼顾速度与跨平台。一句话总结Java 通过“一次编译到处运行”的字节码 JVM 机制把编译型的高效与解释型的跨平台融为一体。