走进Java(杂七杂八、奇奇怪怪的Java“秘闻”)

1. Java发展史

Java语言的前身:Oak(橡树)

  • 1991年4月,James Gosling博士领导的绿色计划开始启动
  • 该计划的目的是开发一种能够在各种消费性电子产品(如冰箱、收音机、机顶盒等)上运行的程序架构,叫做Oak
  • 1995年,互联网浪潮兴起,Oak更新自己的市场定位
  • 在1995年5月23日改名为Java,在SunWorld大会上正式发布Java 1.0 版本,首次提出Write Once, Run Anywhere的口号(跨平台特性)

JDK的发展

时间重要事件备注
1996年1月23日JDK 1.0 发布Java第一个正式版本的运行环境,提供了纯解释执行的Sum Classic VM
1997年2月19日JDK 1.1 发布提供了JAR文件格式、JDBC等最基础的支撑技术
1999年4月8日JDK 1.2发布把Java技术体系拆分为3个方向:J2SE(面向桌面应用开发)、J2EE(面向企业级应用开发)、J2ME(面向手机等移动终端开发)
1999年4月27日Hot Spot VM发布Sun公司1997年从一家名为Lonview Technologies的小公司收购来的;
Hot Spot VM,成为JDK 1.3 及其后续版本的Sun JDK和OpenJDK的JVM
2000年5月8日JDK 1.3 发布主要是对一些类库的改进
2002年2月13日JDK 1.4 发布增加了很多技术新特性:正则表达式、异常链、NIO、日志类、XML解析器等
2004年9月30日JDK 1.5 发布1. 对语法易用性做了很多改:如自动装箱、泛型、动态注解、枚举、可变长参数、for-each循环;
2. 在JVM的API层面,JSR-133对Java内存模型的增强(volatile和final内存语义)、java.util.concurrent并发包;
3. 从JDK 1.5开始,官方文档使用 JDK 5、JDK 6这样的命名,JDK 1.X 是程序员内部使用的开发版本号
2006年12月11日JDK 1.6发布1. 废弃从JDK 1.2 开始的J2SE、J2EE、J2ME的命名,改为 Java SE 6、Java EE 6、Java ME 6;
2. 对JVM的改进:锁与同步、垃圾收集、类加载等都有很多改动;
3. 对synchronized的改进:减少锁获取和释放带来的性能消耗,引入偏向锁和轻量级锁
2006年11月13日Sun公司宣布将JDK开源开源的JDK叫做OpenJDK
2011年7月28日Oracle发布JDK 1.7 正式版本1. 由于Sun公司经营不善,2009年4月20日,Oracle正式宣布收购Sun公司(这也是为啥Java中处处可见Oracle的商标);
2. Oracle JDK和Sun JDK为商用JDK,OpenJDK是开源JDK;
3. Oracle收购Sun以后,拥有两大商业VM:BEA公司的JRokit和Sun的HotSpot,宣称会在HotSpot的基础上整合JRokit

2. 一些热点问题

2.1 每个版本的JDK有哪些新特性?

  • JDK版本的特性,笔者更多的关注使用较多的新特性

    时间版本号新特性
    1996年JDK 1.0Sun Classic VM、Applet (小应用程序)+ AWT(抽象窗口工具包)
    1997年JDK 1.1JAR、JDBC、JavaBean、RMI(远程调用)、Inner Class(内部类)、Reflection(反射)
    1998年JDK 1.2Collections集合类、JIT(Just In Time)编译器、Swing(GUI工具包)、EJB(企业级JavaBean)
    200年JDK 1.3Timer API、Java Sound API(声音)、RMI通信协议的实现
    2002年JDK 1.4正则表达式、异常链、Loggin API、NIO、断言
    2004年JDK 1.5自动装箱、泛型、枚举、for-each、可变长参数、JMM的改进(JSR-133)、java.util.concurrent
    2006年JDK 1.6对锁与同步、垃圾收集、类加载的改进
    20011年JDK 1.7try-with-resources语法、catch捕获多个异常、Fork/Join(并行任务框架)、NIO 2.0、Switch支持字符串表达式
    20014年JDK 1.8Lambda表达式、函数式接口、管道和流、接口的default方法、metaspace替代PermGen space
  • 笔者最高使用到了JDK 1.8版本,甚至对JDK 1.8版本的新特性使用都不是特别多 😂

  • 其他版本的新特性,可以参考链接:

2.2 JDK和JRE的区别?

JRE

  • Java Runtime Environment,支持Java程序运行的标准环境
  • JRE是一个JVM程序,包含了JVM的标准实现和Java的基本类库

JDK

  • Java Developmet Kit,Java开发工具包,支持Java程序开发的最小环境
  • JDK是Java开发的核心,集成了JRE及一些其他的工具,如Java代码编译工具javac

总结:

  • JRE是支持Java程序运行的标准环境,JDK是支持Java程序开发的工具包,包括JRE和其他的一些工具
  • 如果只想运行Java程序,可以只安装JRE;如果想做Java程序开发,需要安装JDK

2.3 JIT(Java即时编译器)

Java程序的编译和运行流程

  1. 执行javac命令。将Java源码编译为各平台通用的字节码文件(.class)
  2. 字节码文件被加载进JVM后,解释器将其逐条翻译为可以本地运行的机器码,从而实现程序的运行
  3. 为了提高程序的运行效率,针对一些热点代码使用JIT编译优化为机器码,后续再次执行热点代码时,可以直接执行
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值