[一]java技术体系和发展史

一、Java 技术体系

以下所有内容来自于 《深入理解 Java 虚拟机》这本书的理解和回顾,非照抄原文,肯定有错误,也有故意致错,一切皆为方便理解

​ 从广义上来说,kotlin,JRuby,Groovy等运行于 java 虚拟机的编程语言都属于 Java 体系,从传统来看,JCP 官方定义java 体系包含以下几个部分:

  • Java 程序设计语言
  • Java 各个平台的虚拟机
  • class 文件格式
  • Java 类库 API
  • 第三方 Java 类库

[一]java技术体系和发展史

上图是整个 Java 技术体系包含的内容,Java 设计语言,类库,虚拟机统称为 JDK

JRE:Java 程序运行的最低条件,包括 jvm 和部分 Java Se API

通常我们在下载 JDK 后就没有必要另外下载 JRE,

Java 产品线

Java card

Java Card技术主要是让智能卡或与智能卡相近的设备上,以具有安全防护性的方式来运行小型的Java Applet,此技术也被广泛运用在SIM卡提款卡上。

第一个运用Java Card技术的智能卡是在1997年发表,由数家公司所共同采行,包括过去Schlumberger公司的卡片部门(今日为Axlto公司)与Gemplus公司。Java Card的产品皆以Java Card Platform specifications(爪哇卡平台规格)为依循标准,此技术规格标准由Sun微系统所研发。整体而言,Java Card的主要特点及诉求在于移携性与安全性。

Java ME

Java ME以往称作J2ME(Java Platform, Micro Edition)是为机顶盒移动电话PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API。它和Java SEJava EE一起构成Java技术的三大版本,并且同样是通过JCP(Java Community Process)制订的。

目前阶段,Java ME最流行的应用是游戏软件。因为与需要昂贵的专用设备和开发工具的竞争对手(如索尼和任天堂)相比,Java ME程序可以在PC机上开发和仿真运行,然后很容易地部署到目标机上,从而使其开发、测试和发布的变得容易和廉价。实际上Java ME的用途和前景要广泛得多。

Java SE

支持面向桌面级应用,提供完整的 Java 核心API,目前应用最成功的系列

Java EE

支持多层架构的企业应用,主要面向web开发,在JDK 10 后捐给 Eclipse 基金会 管理,改名叫Jakarta EE。已经凉了

1.为什么目前整个 Java 体系看起来只有 Java SE C位出道?

Java card:集中在智能卡,市场小

Java me: 最大的移动终端市场–手机,尽管Android是用Java编写的,但手机中使用的是 Dalvik和最新的Art虚拟机,和me无缘,自然没有影响力

Java ee: 面向WEB 等企业开发,本质 ee == se + web; 而 web 领域基本都有更加优秀的替代品,ee 的本意是前后端开发都使用 Java,官方提供的有 jsp,sevlet,但是前端有vue,js,node等,服务器有Tomcat,所以没有什么应用,凉透了,jdk 10已经被 Oracle 放弃,转手给 Eclipse 基金会处理

2.Java 产品线有这么多,为什么 jdk 只有一个系列,如 jdk1.8,难道他们是通用的吗?

Java card : jdk 是 wtk,官方提供规范,厂商实现

me,se,ee,共用一套jdk,不同之处在于,me,se在具体使用的时候还需要添加一些额外的jar包,

比如:ee == jdk1.8 + sevlet.jar

3.SDK和JDK区别

SDK:软件开发工具包

JDK:Java 程序开发工具包

可以理解为,SDK是开发工具包的统称,是软件开发的平台,JDK只是属于 Java 的开发包

比如你下载了一个软件开发平台 eclipse-SDK-3.2.2-win32.zip,它本身里面是没有jdk的。

但是只要开发java程序就必须使用jdk(javaee和javase)。

二、Java 发展史

说来话长,长话短说,只列举重要的几个版本,至于11以后的基本没有大动作或者使用人数还不多,就先晾着,目前最高版本为 OpenJdk 16体验版

时间 事件 代表技术
1995-5.23 Oak 改名 Java,发布 java 1.0,提出 “Write Once,Run Anywhere”
1996-1.23 Jdk 1.0发布,第一个正式版本的运行环境, Applet,AWT
1997-2.19 JDK1.1,基本确定了直至现在的 Java 主要技术点 JAR文件格式,JDBC,JavaBean,Rmi,内部类和反射
1999-4.27 hotsport 诞生,JDK 1.3 以后所有JDK 默认虚拟机
2002-2.13 1.4发布,标志着 Java 走向成熟的版本 正则,日志,xml
2004-9.30 1.5(15),改变命名方式,改进语法易用性,大量语法糖 装箱,泛型,注解,枚举,可变长参数,遍历循环
2006-12-11 J2ee改名Java ee,se,me同理,Java开源,成立OpenJDk,管理
2009-4.20 Oracle 收购 Sun,并取得世界三大商用虚拟机其中两个,Hotspot,JRockit
2014-3.18 Jdk 1.8,目前使用最多的版本 Lambda,彻底移除Hotspot永久代
2017-9.21 1.9(Java 19)发布,从此以后,每年三月和9九月各发布一个版本,每六个版本划出一个长期版本(LTS),提供三年更新支持,8和9为LTS
2018-3.20 JDK 10发布,引入新的即时编译器Graal
2018 Java ee送给Eclipse,撤销 Java one 大会
同年9月 JDK 11,ZGC 垃圾收集

1.OpenJDK和正宗的Oracle提供的JDk有什么区别吗?

首先 OpenJDK 和官方JDK 几乎一模一样,使用没有区别

打一个不恰当的例子:

Oracle 将 Java JDK 分为免费版和付费版,付费版就是VIP,会有一些额外的增持,然后自己运营付费版,将免费版交给 Open JDK 打理,每当发布新版本时,会同步两者更新

Oracle 将 Java JDK 分为免费版和付费版,付费版就是VIP,会有一些额外的增持,然后自己运营付费版,将免费版交给 Open JDK 打理,每当发布新版本时,会同步两者更新

还有一点,在 Oracle 下载 JDK 需要注册