vlambda博客
学习文章列表

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发布