世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。
1、Java的优点:
(1)“一次编写,到处运行”(Write Once, Run Anywhere)
(2)相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题
(3)实现了热点代码检测和运行时编译及优化
(4)大量来自商业机构和开源社区的第三方类库
2、Java技术体系
Sun官方所定义的Java技术体系包括:
(1)Java程序设计语言
(2)Java虚拟机
(3)Class文件格式
(4)Java API类库
(5)来自商业机构和开源社区的第三方Java类库
JDK(Java Development Kit)是用于Java程序开发的最小环境,包括Java语言、Java虚拟机和Java API类库。
JRE(Java Runtime Environment)是支持Java程序运行的标准环境,包括Java SE API子集和Java虚拟机。
3、Java发展史
1991年,Java语言的前身Oak
1995年,Oak改名为Java,Java1.0正式发布
1996年,JDK1.0发布,代表技术包括:Java虚拟机(Sun Classic VM)、Applet、AWT等
1997年,JDK1.1发布,代表技术包括:jar文件格式、JDBC、JavaBeans、RMI(远程方法调用,Remote Method Invocation)、内部类、反射等
1998年,JDK1.2发布,把Java技术体系拆分为J2SE、J2EE、J2ME,代表技术:EJB、Java Plug-in、Java IDL、Swing,并且Java虚拟机第一次内置了JIT(Just in time)编译器
1999年,HotSpot虚拟机发布
2000年,JDK1.3发布,主要改进:JNDI开始被作为一项平台级服务提供,使用CORBA IIOP来实现RMI通信协议,Java 2D API改进,新增JavaSound类库等
2002年,JDK1.4发布,新特性:正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器等
2002年,微软的.NET Framework发布
2004年,JDK1.5发布,新特性:自动装箱、泛型、动态注解、枚举、可变长参数、foreach循环、java.util.concurrent并发包等。另外,JDK1.5是可支持Windows 9x平台的最后一个JDK版本
2006年,JDK1.6发布,主要改进有:提供动态语言支持、提供编译API和微型HTTP服务器API等
2006年,Sun公司宣布会将Java开源,并建立了OpenJDK组织
2008年,Oracle收购BEA公司(WebLogic、JRockit)
2009年,Oracle收购Sun公司
2011年,JDK7发布,新特性:switch中使用字符串、泛型实例化类型自动推断、同时捕获多个异常、java.util.concurrent.forkjoin包等
2014年,JDK8发布,新特性:Lambda表达式、函数式接口、新的日期时间API、彻底移除HotSpot的永久代等
2017年,JDK9发布,新特性:模块化、轻量级JSON API、JShell等
2018年,JDK10发布,Java被Oracle“扫地出门”,所有权捐赠给Eclipse基金会;JDK11发布,OracleJDK11与OpenJDK11在代码和功能上是完全相同的
2019年,JDK12发布,OracleJDK12与OpenJDK12不兼容
4、Java虚拟机发展史
(1)Sun Classic/Exact VM
Sun Classic VM是世界上第一款商用Java虚拟机,只能使用纯解释器方式来执行Java代码,如果要使用JIT编译器,就必须进行外挂。
(2)Sun HotSpot VM
HotSpot是Sun JDK和OpenJDK中所带的虚拟机,也是使用范围最广的Java虚拟机。
(3)Sun Mobile-Embedded VM/Meta-Circlar VM
移动和嵌入式虚拟机
(4)BEA JRockit/IBM J9 VM
(5)Azul VM/BEA Liquid VM
(6)Apache Harmony/Google Android Dalvik VM
(7)Microsoft JVM及其他