跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Java 基础(一):发展历程、技术体系与 JDK 环境搭建

介绍 Java 语言的发展历程,从 Oak 命名到 Oracle 收购。详细解析 Java 技术体系,包括 SE、EE、ME 三大平台及其关系。阐述 Java 跨平台机制及 JVM 核心原理。最后指导 JDK 环境搭建,区分 JDK 与 JRE 组成,并说明 JAVA_HOME、CLASSPATH、PATH 等关键环境变量的作用与配置方法,帮助开发者快速上手 Java 开发环境。

GitMaster发布于 2026/3/29更新于 2026/5/2628 浏览
Java 基础(一):发展历程、技术体系与 JDK 环境搭建

一、Java 发展史

Java 最初由 Sun 公司的'Green'项目组开发,用于智能家电设备,最初名为 Oak。因商标问题,1995 年更名为'Java'(灵感源于印尼爪哇岛的咖啡)。

发行版本发行时间发行的各版本及其特征
Java1995 年Java 语言诞生
Java 1.01996 年首个正式版本,包含基础类库和 Applet 支持
Java 1.11997 年引入内部类(Inner Class)、Java Beans、JDBC(数据库连接)和反射 API
Java 1.21998 年JDK 1.2 发布,更名为 Java 2,分为三个平台:J2SE(标准版)、J2EE(企业版)、J2ME(微型版)
Java 1.32000 年引入 HotSpot JVM、JNDI(Java 命名与目录接口)
Java 1.42002 年新增正则表达式、断言(Assert)、NIO(非阻塞 I/O)和日志 API
Java 5.02004 年引入泛型、注解、枚举等革命性特性,为强调版本重要性,Sun 将内部版本号 1.5 公开命名为 5.0,此后版本号逐渐简化
Java 6.02006 年Sun 将产品线更名为 Java SE/EE/ME,终结'J2'前缀,并宣布开源(OpenJDK)
2009 年Oracle 以 74 亿美元收购财务困境的 Sun 公司,Java 正式归属 Oracle
Java 7.02011 年Oracle 首个大版本,支持菱形语法、多异常捕获,但因收购过渡期特性较少
Java 8.02014 年继 JDK 5 后最大更新,引入 Lambda 表达式、Stream API、新日期时间库。LTS(长期支持)版本
Java 9.02017 年发布周期改为每半年发布一次版本,每三年推出 LTS(长期支持)版本
Java 10.02018 年废弃'1.x'格式,直接使用主版本号(如 JDK 10 而非 JDK 1.10)Java EE 移交 Eclipse 基金会,重命名为 Jakarta EE(如包名从 javax.改为 jakarta.)
Java 11.02018 年新增 HTTP 客户端 API、局部变量类型推断(var)并移除部分过时功能。LTS(长期支持)版本
……
Java21.02023 年被视为继 Java 8 后的新一代主流版本,生态支持(如框架适配率)快速提升。LTS(长期支持)版本

二、Java 技术体系平台

1、JavaSE

  • JavaSE 的全称是 Java Platform Standard Edition(Java 平台标准版)
  • 面向桌面级应用(如 Windows 下的应用程序),提供完整的 Java 核心 API,是其他平台(JavaEE、JavaME)的基础
  • JavaSE 和 JDK 的关系
    • JavaSE(规范):定义接口、抽象类、具体类以及 JVM 的行为和约束(定义语言和 API 应该是什么样)
      • 例:JavaSE 规范要求必须有一个 ArrayList 类,它实现 List 接口,支持动态扩容
    • JDK(实现):提供这些接口和类的具体代码实现(按照规则实现并提供开发工具和运行环境)
      • 例 1:OracleJDK 的 ArrayList 源码中,具体实现了扩容机制(如默认扩容 1.5 倍)
      • 例 2:OpenJDK 的 ArrayList 可能实现相同的逻辑,但代码细节可能有细微差异(如注释、内部优化)
  • 历史名称:早期称为 J2SE(JDK 6 之前)

2、JavaEE

  • JavaEE 的全称是 Java Platform Enterprise Edition(Java 平台企业版)
  • 在 Java SE 基础上扩展了大量企业级 API(如 Servlet、JSP、EJB),提供分布式计算、事务管理、安全性等企业级功能
  • JavaEE 接口由官方规范定义,具体实现由应用服务器(Tomcat、WildFly)或第三方库(Hibernate、ActiveMQ)提供
  • 自 JDK 10 起由 Oracle 移交 Eclipse 基金会管理,更名为 Jakarta EE
  • 历史名称:曾用名 J2EE(JDK 6 之前)

3、JavaME

  • JavaME 的全称是 Java Platform Micro Edition(Java 平台微型版)
  • 针对移动终端(手机、PDA 等)的轻量级平台,精简了 Java SE 的 API 并加入移动设备支持
  • 随着 Android 和 iOS 的普及,JavaME 的使用逐渐减少
  • 历史名称:曾用名 J2ME

4、三者关系

  • JavaSE 是基础:JavaEE 和 JavaME 均基于 JavaSE 的核心功能构建
  • JavaEE 是扩展:在 JavaSE 基础上增加企业级服务规范(如 Servlet、JPA、EJB)
  • JavaME 是精简:仅保留 JavaSE 部分功能,并添加针对微型设备的特性

三、Java 程序运行机制及运行过程

1、Java 的跨平台性

Java 虚拟机机制屏蔽了底层运行平台的差别,实现了'一次编译,到处运行'。

2、Java 虚拟机(核心机制)

  • JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在 JDK 中
  • 对于不同的平台,有不同的虚拟机
  • Java 虚拟机机制屏蔽了底层运行平台的差别,实现了'一次编译,到处运行'

四、Java 语言环境搭建

1、JDK(Java 开发工具包)

  • 定义:JDK 是用于开发 Java 应用程序的完整工具包,包含编译、调试、文档生成等开发工具以及运行环境
  • 组成部分:
    • JRE:JDK 中内置了 JRE(包含核心类库),确保开发时可以直接运行程序
    • 开发工具:如编译器 javac(将 Java 源代码编译为字节码)、调试器 jdb、文档工具 javadoc 等
    • JDK 特有的工具类库:如:tools.jar,支持编译器(javac)、调试器(jdb)等工具的运行(位于 JDK 的 lib 目录下)
  • 用途:开发者必须安装 JDK,才能编写、编译和调试 Java 程序

2、JRE(Java 运行时环境)

  • 定义:JRE 是运行已编译 Java 程序所需的最小环境,无需开发功能
  • 组成部分:
    • JVM(Java 虚拟机):负责执行字节码,实现跨平台特性
    • *JRE 中的核心类库:以 java.包的形式存在,例如 rt.jar、resource.jar 下 java.lang、java.util 等(位于 JRE 的 lib 目录下,并由 BootstrapClassLoader 自动加载)
    • *JRE 中的扩展类库:以 javax.包的形式组织,例如 javax.sql 等(JRE 的 lib/ext 目录下,由 ExtensionClassLoader 加载)
  • 用途:普通用户只需安装 JRE 即可运行 Java 程序(如.jar 或.class 文件),无需开发工具

3、环境变量及作用

3.1、JAVA_HOME
  • 该环境变量的值是 Java 的安装路径,一些 Java 版本的软件和工具需要用到该变量

例如,当 Windows 平台上 JDK 的安装目录为'C:\java\jdk8'时,设置如下所示

JAVA_HOME=C:\java\jdk8 
3.2、CLASSPATH
  • 该环境变量用于指明 Java 字节码文件(.class 文件)的位置
  • 默认情况下,如果未设置 CLASSPATH,Java 启动 JVM 后,会在当前目录下寻找字节码文件,一旦设置了 CLASSPATH,JVM 会在指定目录下查找字节码文件
    • '.'表示当前目录,因为设置 CLASSPATH 会覆盖 JVM 的默认操作(查找当前目录),所以这里需要加上'.'
    • dt.jar 是 Java 开发工具包(JDK)中用于为 IDE 提供 Swing/AWT 组件的设计时元数据(如属性、事件描述),支持通过拖拽和图形化界面进行可视化开发的核心类库文件
    • tools.jar 的作用:包含编译工具(如 javac)所需的类库
  • Java5 之前,若用户未显式配置 CLASSPATH 环境变量 JVM 不会在当前目录查询.class 文件,所以需要配置 CLASSPATH
  • 但从 Java 5(2004 年发布)开始,默认情况,无需显式配置 CLASSPATH,JVM 会自动搜索当前目录和核心类库

环境变量 CLASSPATH 的值一般为一个以分号';'作为分隔符的路径列表,设置如下

CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
3.3、PATH
  • 该环境变量指定一个路径列表,用于搜索可执行文件
  • 不建议在 PATH 环境变量中添加当前目录'.'的主要原因:
    • 如果当前目录'.'被加入 PATH,当用户进入公共可写目录/tmp 时,攻击者可能在该目录下放置与系统命令同名的恶意程序
    • 例如:黑客在/tmp目录下创建名为 ls 的木马文件,当用户(尤其是 root 用户)执行 ls 命令时,会优先执行当前目录下的恶意程序而非系统标准的/bin/ls,导致权限泄露或数据被破坏

这样可以在命令行中直接使用 java 和 javac 命令,而不需要指定完整路径,否则就会出现以下错误:

执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找 PATH 中的每一个路径,直至找到。例如:

PATH=.;%JAVA_HOME%\bin;

目录

  1. 一、Java 发展史
  2. 二、Java 技术体系平台
  3. 1、JavaSE
  4. 2、JavaEE
  5. 3、JavaME
  6. 4、三者关系
  7. 三、Java 程序运行机制及运行过程
  8. 1、Java 的跨平台性
  9. 2、Java 虚拟机(核心机制)
  10. 四、Java 语言环境搭建
  11. 1、JDK(Java 开发工具包)
  12. 2、JRE(Java 运行时环境)
  13. 3、环境变量及作用
  14. 3.1、JAVA_HOME
  15. 3.2、CLASSPATH
  16. 3.3、PATH
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Linux 指令进阶:从系统本质到常用命令实战
  • 线性动态规划基础详解:4 道经典例题与优化技巧
  • 前端 DOM 操作核心知识与实战解析
  • 数据结构入门:动态顺序表的实现与应用
  • Flutter for OpenHarmony 实战:使用 Injectable 构建依赖注入架构
  • 基于 SpringBoot 的游戏账号在线交易系统设计与实现
  • 股票数据接口 API 实例代码 Python Java 多语言演示实时与历史数据
  • LangChain4j 中 RAG 重排序(Reranking)原理与实现
  • Python 副业开发指南:数据分析、爬虫与量化交易实战
  • Spark DataFusion Comet 向量化:Rust Native ScanExec 与 Selection Vectors
  • 数据结构与算法:单链表综合运用(合并、分割与约瑟夫环)
  • TradingAgents-CN 本地化部署实战指南
  • Java 智能仿真无人机项目 V4 版本实战
  • Yii 框架核心系统组件详解:日志、路由与缓存
  • 扣子(Coze)Skills+OpenClaw 实战:零基础玩转 AI 智能体
  • OpenClaw 本地推理方案:基于 Ollama 部署开源模型替代云端 Token 消耗
  • GitHub Copilot AI 编程助手安装与使用指南
  • 二分查找实战:旋转数组最小值与缺失数字
  • 前端开发 LocalStorage 入门指南
  • 二分查找实战:旋转排序数组最小值与缺失数字

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online