走进java

java技术体系

  • 从广义上讲Clojure,Jruby,Groovy等运行在java虚拟机及其相关的程序都属于java体系的一员
  • 传统意义Sun官方所定义的java技术
    1. java程序设计语言
    2. 各种硬件平台的java虚拟机
    3. Class文件格式
    4. Java API类库
    5. 来自商业机构和开源社区的第三方java类库
  • java程序设计语言+java虚拟机+API类库统称为JDK(java Development Kit)java开发的最小环境
  • Java API类库中的Java SE API子集和java虚拟机统称为JRE(Java RunTime Environment)支持java运行的标准环境

在这里插入图片描述

java发展史

  • 1991年4月James Gosling领导的绿色计划开始启动,这个产品就是java语言的前身:Oak(橡树)。1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上java1.0版本并第一次提出"Write Once,Running AnyWhere"的口号
  • 1996年1月23日,JDK1.0发布,提供了一个纯解释执行的java虚拟机实现(Sun Classic VM)。代表技术:java虚拟机、Applet、AWT等
  • 1998年12月4日,里程碑式的版本JDK1.2,工程代号Playground(竞技场)。sun在这个版本将java拆分为三个方向:J2EE J2ME J2SE。代表技术:EJB、Swing、Java Plug-in等。这个版本第一次内置了JIT(Just IN Time)编译器(这一时期曾bing并存过三个虚拟机,Class VM、HotSpot VM和Exact VM)
  • 2000年5月8号,工程代号为Kestrel(美洲hongyun美洲红隼)的JDK1.3。主要是在1.2的基础上对类库的改进
  • 2002年2月13日工程代号Merlin(灰背隼)JDK1.4,这是java真正走向成熟的一个版本。代表技术:正则表达式、异常链、NIO、日志类、XML解析器、XSLT转化器等。
  • 2004年9月30日工程代号Tiger(老虎)JDK1.5,这一次在语法易用性上做出了非常大的改动。代表技术:自动拆箱、泛型、动态注解、枚举、Foreach循环等。在虚拟机和API层面上改进java的内存模型、提供了java.util.concurrent并发包等
  • 2006年12月11日工程代号Mustang(野马)JDK6。这个版本sun终结了从JDK1.2开始有8年历史的命名启用JAVA SE6.代表技术:提供动态语言支持(通过内置引擎)、提供编译API和微型HTTP服务API等。同时对虚拟机内部做了大量的改进,包括锁同步、垃圾收集、类加载等算法都有很大的改进

    JDK6发布由于代码复杂性的增加、JDK开源、开发JavaFX、经济危机及sun收购案等。JDK更新没有维持两年发布一个主版本的发展速度

  • 2009年2月19日工程代号为Dolphin(海豚)JDK7,代表技术:提供G1收集器、加强对非java语言的调用、升级类加载架构

    从7最初的规划来看,他本应是一个重要改进的JDK版本,其中Lambdax项目(Lambda表达式 函数式编程)、Jigsaw项目(虚拟机模块化支持)、动态语言支持。Garbage收集器和Coin项目(语言细节进化)。但是由于sun股票缩水以及被oracle收购导致这些被推迟到JDK8中,其中模块化更是在1.9中

  • JDK8(2104年3月)代表技术函数式接口和Lambda表达式默认方法.Date Time API
  • JDK9(2017 年 9 月)模块化,多版本兼容Jar包,接口Interface的升级,钻石操作符的升级,异常处理try的升级
  • 当然后面更新的越来越快,大概每6个月一个版本JDK11有var隐式变量声明(@Notnull var s), 垃圾收集器ZGC(1.091ms) G1(156.806ms),增强Java启动器,新的API。最近三月发布的JDk12

java虚拟机发展史

  • Sun Classic在1.0时发布,是“世界第一款商用java虚拟机。他是纯解释器方式来执行java代码,如果要使用JIT编译器就必须外挂”。java运行很慢的形象也是这个时候建立的。但在JDK1.4的时候退出历史舞台
  • Exact VM 发布在Solaris平台,已具备现代高性能虚拟机雏形:如两级及时编译器、编译器和解释器混合工作模式。并提供准确式内存管理。虽然比上面的先进很多,但是存活时间很短,还没发布Windows和Linux平台的商用版本就被HotSpot VM取代
  • HotSpot VM 是Sun JDK和OpenJDK中自带的虚拟机。也是目前使用最广的。原本是由LongviewTechnologies的小公司设计的。1997年被sun收购。HotSpot VM继承上面两款的优点并且也有很多自己新的技术比如:通过热点代码探测可以通过计数器找出最具编译的代码。2006年在GPL协议下公开了源码
  • KVM 强调简单、轻量、高度可移植。但是运行速度很慢曾在Andriod和IOS等智能手机操作系统手机平台得到过很广泛的应用

  • BEA JRockit / IBM J9 VM 除了sun研发虚拟机外其他公司规模最大和最著名的就是BEA 和 IBM。两个的广告词都是“世界上速度最快的java虚拟机”
  • Apache Harmony Harmony 实际兼容JDK1.5和JDk1.6的java的运行平台,但是没有通过TCK认证(如果一家公司的运行平台“见兼容java语言,就必须通过该认证的兼容性测试”)。Apache曾经要求sun提供TCK授权但是一直被拒绝。知道sun被收购Oracle和Apache越闹越僵,最终导致Apache退出JCP(Java Community Process)组织,这是目前为止java社区最严重的的一次“分裂”
  • Goolgle Android Dalvik VM Dalvik VM是Android平台的核心组成部分之一。他并不是一个java虚拟机没有遵循java虚拟机规范。不能执行java的class文件。但是和java有紧密联系,他执行的dex文件可通过Class文件转化而来,使用java语法编写程序,可直接使用大部分的java api。最近Oracle和google的官司也是因为这件事,Oracle告google没有遵循他的规范而使用他的大部分东西。要赔偿90亿美元
  • Microsoft JVM 微软曾今是java技术的铁杆粉丝。诞生初期以JDK1.2发布为分界,主要应用之一是在浏览器中运行Java Applets程序,微软在IE3为支持该应用开发自己的java虚拟机,是windows下性能最好的虚拟机。但是好景不长,1997年sun正式以侵犯商标,不正当竞争控告微软。最终微软因为垄断赔偿给sun公司的金额高达十亿美元,并承诺终止其java虚拟机的发展,并逐步在产品中移除java虚拟机的相关功能。试想一想如果sun当年没有起诉微软,微软继续保持对java的热情,java的世界会变成什么样子?.NET是否会发展起来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值