Java SE

义项:Java平台标准版
Java SE

Java SE是Java平台标准版(Java Platform, Standard Edition)的缩写,是Java平台家族中面向通用计算的核心版本,由Java虚拟机、Java语言规范和一套标准API组成[1][2]。它规定了从基本数据类型、对象到网络、安全、数据库访问、图形界面和XML解析等基础功能,是Java EE与Java ME等其他版本的基础[1]。该平台自J2SE 1.4起通过Java社区进程(JCP)以JSR形式制定规范,OpenJDK自第7版起为其官方参考实现[2]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限

定义

Java SE是一个用于开发和部署可移植代码的计算平台,主要面向桌面与服务器环境,使用Java语言编写程序[2]。它并不是单一软件,而是一份平台规范:既包含Java语言规范与Java虚拟机规范,也包含一整套通用目的的应用程序接口(API)[2]。

按照甲骨文的技术文档,Java平台共有4个版本,Java SE是其中的标准版;除核心API之外,该平台还配有虚拟机、开发工具、部署技术以及常用的类库和工具包[1]。Java社区进程对它的界定是“用于通用计算的核心Java平台”,目标环境覆盖嵌入式、桌面、服务器与云[3]。

Java SE与具体实现需要区分:Java运行时环境(JRE)供使用者运行已编写好的程序,Java开发工具包(JDK)则供开发者编写程序,两者都是实际下载安装到计算机上的文件[2]。Java SE平台本身没有统一的包名,其全部要求体现在构成它的各个API的包中[4]。

原理

Java SE的核心机制是“一次编写,多处运行”:源代码由编译器转换为字节码,再由Java虚拟机在执行时翻译或即时编译为宿主机器的指令,因此同一份字节码可以在不同操作系统和处理器上运行[1]。平台的规范由此分为两层,一层描述语言语法与语义,一层描述虚拟机的指令集与运行行为,两者均由JSR维护修订[4]。

标准API按包组织,覆盖不同层次的功能。java.io提供字节流与字符流处理,支持缓冲、回推、基本类型读写与对象序列化;java.nio自J2SE 1.4引入,支持内存映射I/O、缓冲区、字符集与通道[5]。java.math提供任意精度整数与十进制运算,供密码学密钥生成等场景使用;java.net负责HTTP请求等网络通信,java.util则包含集合框架等数据结构[5]。

并发能力是平台规范的一部分。Java语言与虚拟机中的监视器以及JSR 166定义的并发工具,构成了编写可伸缩多线程程序的基础;Java SE 7又加入了Fork/Join框架,可按可用处理器数量自适应扩展部分应用代码[4]。同一版本还通过JSR 203引入异步I/O与可移植的文件系统API,通过JSR 292引入invokedynamic字节码指令,以提升动态语言在虚拟机上的性能[4]。


flowchart LR

A[Java源代码 .java] --> B[编译器 javac]

B --> C[字节码 .class]

C --> D[Java虚拟机]

D --> E[宿主机操作系统与硬件]

D --> F[Java SE 标准API]

F --> D

发展历程

Java平台最初由太阳微系统公司(Sun Microsystems)在1995年推出,之后按应用范围被划分为面向桌面的标准版、面向企业的企业版与面向小型设备的微型版[6]。从1.2版到5.0版,标准版的名称为Java 2 Platform, Standard Edition,缩写J2SE;1.5版起改用Java Platform, Standard Edition,即Java SE[2]。

2006年发布Java SE 6时,太阳微系统公司进一步简化平台名称,去掉名称中的“2”和点号后的数字,J2SE、J2EE、J2ME分别改为Java SE、Java EE、Java ME;同一次调整中,开发工具包与运行时环境也分别恢复为JDK和JRE的名称[7]。这一版的产品版本号写作6,开发者版本号仍为1.6.0,两种编号并存[7]。

规范制定方式也在这一时期确立。2002年发布的J2SE 1.4是首个在Java社区进程下开发的版本,其总括JSR编号为59,随后J2SE 5.0对应JSR 176,Java SE 6对应JSR 270[2]。Java SE 7由JSR 336规定,专家组于2010年12月组建,2011年7月20日发布最终版本[8]。

2011年7月28日,JDK 7达到正式可用状态;甲骨文收购太阳微系统公司后曾按“Plan B”重新规划该版本,将成熟度不足的特性推迟到JDK 8及以后[9]。Java SE 8对应JSR 337,Java SE 9对应JSR 379;Java SE 17于2021年9月发布,由JSR 392规定,Java SE 21于2023年9月19日发布,由JSR 396规定,两者均为长期支持版本[10][11]。

Java SE 9起版本号方案改为JEP 223定义的格式,去掉开头的“1”;随后发布的JEP 322进一步把版本号改为$FEATURE.$INTERIM.$UPDATE.$PATCH四段,并以六个月为周期递增特性版本号,例如2018年3月发布JDK 10、同年9月发布JDK 11[12][13]。在该模型下,中间段通常恒为零,更新段在特性版本发布后一个月开始、此后每三个月递增一次[13]。

应用

Java SE的定位是通用计算平台,其规范面向嵌入式、桌面、服务器和云环境[3]。在桌面端,标准API中的图形用户界面开发类库与Swing等组件库用于构建窗口程序;在服务器端,网络、数据库访问与并发工具支撑后端服务[1]。

该平台也是其他Java版本的基础。企业版包含标准版中的大量类,并在其上增加更适合服务器程序的类;微型版则面向手机、PDA、机顶盒等资源受限设备[2]。因此,学习与开发Java应用通常从标准版起步[6]。

参考实现是平台落地的方式。OpenJDK自第7版起成为Java SE的官方参考实现,其代码在OpenJDK社区中开发,各版本对应由JSR指定的规范;同时还有JCK技术兼容性工具包用于检验实现是否符合规范[2][3]。

局限

Java SE只规定通用功能,服务器端所需的分布式事务、消息中间件等能力不属于其范围,而由在其之上扩展的企业版定义[14]。面向手机等小型设备的API集合同样独立于标准版,属微型版范畴[2]。

跨平台的抽象也有代价。以字体绘制为例,自J2SE 1.3起字体由底层本机系统绘制而非由Java完成,文本的可移植性因此受到限制[5]。文件系统访问长期是使用中的难点,良好的用户体验往往需要暴露底层平台的部分细节,Java SE 7才通过新的文件系统API部分缓解这一问题[4]。

版本与规范治理本身存在复杂之处。平台名称、产品版本号与开发者版本号历史上多次变动,JEP 223之前的方案把维护版本与安全级别混编在同一段编号中,导致大量编号被跳过[12]。JSR 336与JSR 337的表决结果为12票赞成、3票反对,Apache软件基金会与Google投了反对票,理由涉及TCK授权条件而非技术内容[15]。

参考资料

  1. The Java Programming Language Platforms [引用日期2026-10-29]
  2. epfl.ch 上的网页 [引用日期2026-10-29]
  3. JSR 393: JavaTMSE 18 [引用日期2026-10-29]
  4. JSR 336: JavaTM SE 7 Release Contents [引用日期2026-10-29]
  5. Java Platform, Standard Edition [引用日期2026-10-29]
  6. [科普中国]-java软件开发 [引用日期2026-10-29]
  7. view-source [引用日期2026-10-29]
  8. JSR 336: JavaTMSE 7 发布内容 [引用日期2026-10-29]
  9. History [引用日期2026-10-29]
  10. oracle.com 上的网页 [引用日期2026-10-29]
  11. Is An Agile Java Standard Possible? [引用日期2026-10-29]
  12. 最新的Java SE平台和JDK版本发布计划 [引用日期2026-10-29]
  13. JEP 322: Time-Based Release Versioning [引用日期2026-10-29]
  14. Java Platform, Standard Edition [引用日期2026-10-29]
  15. java-se-7-and-se-8-specs-move-forward-amid-protest [引用日期2026-10-29]
词条评价
词条统计

浏览次数:1 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:55:30Z

历史版本

本条目引用的词条
Java