Java 语言是一门存在了 20 多年的语言,其年纪比我自己还大。虽然存在了这么长时间,但 Java 至今都是最大的工业级语言,许多大型互联网公司均采用 Java 来实现其业务系统。大到国际电商巨头阿里巴巴,小到无名小公司,我们均可看到 Java 的身影。

我是 2010 年开始接触 Java 语言的,在我刚刚接触 Java 的时候,我经常对于 Java 中的一些基本概念弄不清楚。例如:JDK 7 与 Java SE 7 有什么区别?JDK 与 JRE 有什么区别 ?Java SE 与 Java EE 有什么区别 ?等等。

上面这些问题其实都是 Java 中最最基础的知识,如果没有搞懂这些基础的知识,就不用谈更加深入的学习了。所以在开始学习 JVM 相关知识之前,我们这一节就来把那些我们经常混淆的概念弄清楚。

JDK 与 JRE

JDK 与 JRE 是我们经常遇到的概念,但许多学习了几年的开发都搞不懂他们之间的区别。简单地说 JRE(Java Runtime Environment)仅包含运行 Java 程序的必需组件,包括 Java 虚拟机以及 Java 核心类库等。而 JDK(Java Development Kit)除了包含 JRE外,还附带了一系列开发、诊断工具。

一般来说,如果只需要运行 Java 程序,那么你安装 JRE 即可。但如果你要进行 Java 程序的开发,那么你就需要安装 JDK。

JDK 与 J2SE

JDK 与 Java SE 是我们经常混淆的东西,其实 JDK 是指包含了开发、诊断工具的一个组件,Java SE 则是 Java 三大技术体系的一个。要弄懂这一点,就要了解 Java 语言的历史。在 1998 年,JDK 1.2 发布,Java 技术体系被拆分为 J2SE、J2EE、J2ME 三大体系。

J2SE 称之为标准版技术体系(Java 2 Standard Edition),它包含了构成 Java 语言核心的类,例如:数据库连接、网络编程、接口定义等。J2SE 技术体系主要用于桌面应用软件的编程。正因为 J2SE 包含了 JDK 核心类,所以在我们下载 JDK 时,你会看到其实下载处的文字说明是「Java SE 11.0.1 is the latest release for JDK 11」。

J2EE 称之为企业版技术体系(Java 2 Enterprise Edition),它除了包含 J2SE 中的类,还包含用于开发企业级应用的类,比如:Servlet、JSP、EJB 等。J2EE 技术体系主要用于分布式的网络程序的开发,如电子商务网站等。

J2ME 称之为嵌入式技术体系(Java 2 Micro Edition),它包含 J2SE 中的一部分类。J2ME 技术体系主要用于消费类电子产品的软件开发,例如:手机、PDA、寻呼机等。

通过这么一介绍,我相信大家都明白 JDK 与 Java SE 的区别了。简单地说,JDK 是一个核心库、开发工具、诊断工具的合集,而 Java SE 则是一个技术体系。

J2SE 与 Java SE

J2SE 我们弄明白了,那么你知道 J2SE 与 Java SE 这两者有什么区别吗?

其实它们指的是同一个东西,只不过在 2006 年 JDK 1.6 发布的时候,其将 J2SE、J2EE、J2ME 的命名方式改为 Java SE 6、Java EE 6、Java ME 6。

所以在下一次 JDK 1.7 发布的时候,其对应的三个技术体系就叫做:Java SE 7、Java EE 7、Java ME 7。比起之前的命名方式,其增加了 JDK 的版本号,能够更加清晰地表明技术体系所属的 JDK 版本。

与这个类似的还有一个:JDK 1.7 与 JDK 7。其实从上面 J2SE 与 Java SE 的变更,我们可以推断,JDK 1.7 与 JDK 7 也是因为类似的命名更换导致的。

经过上面的简单介绍,相信大家对于一些基础概念的理解都差不多了。Java 语言发展至今已有多年历史,但其也不是一蹴而就的,一开始 Java 语言知识一个小小的 Oak 语言。

Java 语言的历史

在 1991 年,James Gosling 博士发布了 Oak,这个是 Java 语言的前身。但一直到 1995 年的时候,Oak 语言才改名为 Java。

  • 1991 年,James Gosling 博士发布产品 Oak,这是 Java 语言的前身。
  • 1995 年,Oak 语言改名为 Java。
  • 1996 年,JDK1.0 发布,提供了纯解释执行的 Java 虚拟机实现:Sun Classic VM。
  • 1997 年,JDK1.1 发布,代表技术有:JDBC、JavaBeans、内部类、反射。
  • 1998 年,JDK1.2 发布,Java 技术体系被拆分为 J2SE、J2EE、J2ME 三大体系。
  • 2000 年,JDK1.3 发布,默认的 Java 虚拟机由 Sun Classic VM 改为 HotSopt。
  • 2002 年,JDK1.4 发布,Java 真正走向成熟,代表技术有:正则表达式、NIO等。
  • 2004 年,JDK1.5 发布,对语法易用性做了很大改进,新增了泛型、枚举等,代表技术有:并发包等。
  • 2006 年,JDK1.6 发布,将 J2EE/J2SE/J2ME 的命名方式改为 Java SE 6、Java EE 6、Java ME 6。
  • 2009 年,Sun 公司因为经营不善被 Oracle 公司收购。
  • 2011 年,JDK1.7 发布。
  • 2013 年,JDK1.8 发布。

从上面的历史我们可以知道 Java 语言具有众多的特性,但是其众多特性并不是一蹴而就的,而是一点点迭代而来的。JDK 每个版本新增的语言特性如下:

  • 1997 年,JDK1.1 发布,新增了JDBC、JavaBeans、内部类、反射。
  • 2002 年,JDK1.4 发布,新增了正则表达式、NIO等。
  • 2004 年,JDK1.5 发布,新增了泛型、枚举、并发包等。

总结

我们这一节简单地介绍了一些常见概念上的区别,以及 Java 语言的历史。通过这一节的内容,我们能对 Java 语言的发展有一个大致的理解,便于我们后续进行更加深入的学习。

JVM系列目录

JVM系列开篇:为什么要学虚拟机?


如果只是看,其实无法真正学会知识的。为了帮助大家更好地学习,我建了一个虚拟机群,专门讨论学习 Java 虚拟机方面的内容,每周针对我所发文章进行讨论答疑。如果你有兴趣,关注「Java技术精选」公众号,通过右下角菜单「入群交流」加我好友,小助手会拉你入群。