JAVA会这些,面试So Easy(二)
一、JAVA 概述
java应用于软件开发和跨平台部署:嵌入式系统、移动终端、企业服务器、大型机等;java是一门面向对象的编程语言,它摆脱了硬件的束缚,实现了一次编译到处运行,它提供了相对安全的内存管理和访问机制,避免了绝大部分内存泄露和指针越界的问题,实现了热点代码检测和运行时编译以及优化。
二、JAVA技术体系
· java程序设计语言
· 各种硬件平台的虚拟机实现
· Class文件格式
· java类库API
· 来自商业机构和开源社区的第三方Java类库
我们把程序设计语言、Java虚拟机、Java类库三部分统称JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境;把Java类库API中的JavaSE API子集和Java虚拟机统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。
三、Java发展史
· 1991年4月,有James Gosling 博士领导的绿色计划启动,目标是开发一种能够在各种消费电子产品(如机顶盒、冰箱、收音机)上运行的程序架构。这个计划就是Java程序语言的前身:Oak(得名于James Gosling办公室外的一棵橡树),随着1995年互联网潮流的兴起,Oak迅速找到了最适合自己的发展市场定位并锐变成为java语言。
· 1995年5月23日,Oak语言改名为java,Sun World正式发布Java1.0版本,提出了“Write Once ,Run anywhere”口号。
· 1996年1月,Java语言有了第一个正式版本的运行环境 JDK1.0提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。1996年4月,十个最主要的操作系统和计算机供应商声明将在其产品中嵌入Java技术。1996年5月底于美国旧金山举办每年一次JavaOne大会。
· JDK1.0代表技术:Java虚拟机、Applet、AWT等。
· 1997年2月19日,Sun公司发布了 JDK1.1
· JDK1.1代表技术:JAR文件格式,JDBC、JavaBeans、RMI等;Java语法增强:内部类(Inner Class)和反射(Reflection)。
· 1998年12月4日,JDK1.2发布;
· JDK1.2代表技术:EJB、Java Plug-in、Java IDL、Swing
这个版本把Java技术体系拆分为3个方向
a.面向桌面应用J2SE (Java 2 Platfrom, Standard Edition)
b.面向企业级开发的J2EE(Java 2 Platfrom, Enterprise Edition)
c.面向手机等移动终端的J2ME(Java 2 Platfrom, Micro Edition)
· 1999年4月27日,HotSpot虚拟机诞生,成为JDK1.3之后所有版本默认Java虚拟机。
· 2000年5月8日,JDK1.3发布。
· JDK1.3代表技术:Java类库,提供了大量新的Java 2D API,添加了新的Java Sound类库。
· 2002年2月13日,JDK1.4发布。
· 2004年9月30日,JDK5发布。
· JDK5,语法上做了非常大的改进:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach)等语法特性。在虚拟机和API层面上,改变了Java内存模型(Java Memory Model ,JMM),提供了 java.util.concurrent并发包。
· 2006年12月11日,JDK6发布。
· 改进包括:
a.提供初步的动态语言支持(通过内置 Mozilla JavaScript Rhino 引擎实现)、提供编译期注解处理器和微型HTTP服务器API,等等。
b.对Java虚拟机内部做的改进包括锁与同步、垃圾收集、类加载等方面的实现。
· 2006年11月13日,Java开源。
· 2009年2月19日,JDK7发布。
· 技术改进:G1收集器、加强对非Java语言支持、可并行的类加载架构等。 a.Lambda项目:支持Lambda表达式,支持函数式编程。
b.Jigsaw项目:虚拟机层面的模块化技术支持。
c.动态语言支持:Java是静态语言,为其他运行在Java虚拟机上的动态语言提供支持。
d.Garbage-First收集器。
e.Coin项目:Java语法细节进化。
· 2009年4月20日,Oracle宣布正式以74亿美元收购市值曾超过2000亿美元的Sun公司。
· 2014年3月18日JDK8发布
· 代表技术:
a.对Lambda表达式支持,让Java语言拥有了流畅的函数式表达能力。
b.内置 Nashorn JavaScript引擎的支持。
c.新的时间、日期API
d.彻底移除HotSpot的永久代
· 2016年JDK9发布
· 技术代表:
a.实现了高度模块化
b.增强了若干工具(JS Shell、JLink、JHSDB)
c.整顿了HotSpot各个模块各自为战的日志系统
d.支持HTTP2客户端API等91个JEP
· 2018年3月20日JDK10发布 主要是内部重构
a.统一源仓库
b.统一垃圾收集器
c.统一即时编译器(JVMCI在JDK9已经有了,引人新的Graa1即时编译器)
· 2018年9月25JDK11发布
· 2018年10月 JavaOne最后一届大会
· 2019年2月RedHat代替Oracle成为JDK历史版本的维护者
· 2019年3月20日JDK12发布
· 2019年9月JDK13发布
· 2020年3月JDK14发布
· 2020年9月JDK15发布
· 2021年3月JDK16发布
· 2021年9月JDK17发布