[一]java技术体系和发展史
一、Java 技术体系
以下所有内容来自于 《深入理解 Java 虚拟机》这本书的理解和回顾,非照抄原文,肯定有错误,也有故意致错,一切皆为方便理解
从广义上来说,kotlin,JRuby,Groovy等运行于 java 虚拟机的编程语言都属于 Java 体系,从传统来看,JCP 官方定义java 体系包含以下几个部分:
- Java 程序设计语言
- Java 各个平台的虚拟机
- class 文件格式
- Java 类库 API
- 第三方 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 SE、Java 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 需要注册