java的诞生:

  • 1991 年Sun公司成立了一个计算机开发小组,由James Gosling等人开发一款希望用于控制嵌入在有线电视交换盒、PDA等的微处理器的计算机语言,本来他们想直接扩展C++,后来发现C++无法满足他们的需求,所以他们基于C++重新开发了一门名为 Oak 的计算机语言,这就是Java的前身。
  • 此后他们将Oak这门语言进一步优化并完善,有一次开发组成员们在一家名为“爪蛙”的咖啡店讨论给这门新的语言重新取个新名字时,有人灵机一动说:“就叫Java如何?”,之后得到其他人的赞同,由此Java语言诞生,这也是为什么Java的图标是一杯咖啡的原因。


  • 1995年5月23日, Oak语言正式更名为Java,因为James Gosling在开发中贡献巨大,所以之后被人们称为“Java之父”,可以理解为Java的祖师爷。


JDK全名为Java Development Kit,翻译过来就是Java开发工具包,里面包含着Java的核心类库,如果你还是搞不懂也没关系,继续学习后你就能慢慢了解,姑且认为是使用Java所需要的工具就行。


Java的发展:

  • 1996年JDK 1.0发布,其新特性以及更新修改如下:

    1. Sun Classic VM(虚拟机)
    2. Applet(java小应用程序)
    3. AWT(java图形设计)
  • 1997年JDK 1.1发布,其新特性以及更新修改如下:

    1. JAR(jar包)
    2. JDBC(Java DataBase Connectivity)(连接数据库)
    3. JavaBeans(java规范)
    4. RMI(远程调用)
    5. Inner Class(内部类)
    6. Reflection(反射)
  • 1998年,JDK1.1被下载超过2百万次。

  • 1998年,JDK迎来了一个新的里程碑,JDK1.2正式发布,1.2版之后改名为Java2,之所以说是里程碑是因为在之后1999年,Sun 公司重新组织Java平台的集成方法,并将Java企业级应用平台作为发展方向,将Java技术体系拆分为3个发展方向:

    1. J2ME——即Java2 Micro Edition,用于嵌入式Java消费电子平台。无线通信、手机、PDA等小型电子装置都可采用其作为开发工具及应用平台
    2. J2SE——即Java2(Software Development Kit)Standard Edition,是Java最通行的版本,是用于工作站、PC机的Java标准平台,也是java的基础。
    3. J2EE——即Java2 Enterprise Edition(可扩展的企业应用Java2平台),它提供了企业Business架构及Web Services服务,其深受广大企业用户欢迎之处是其开放的标准和优越的跨平台能力。


  • 2000年5月8日,JDK1.3发布,其新特性以及更新修改如下:

    1. 数学运算
    2. Timer API(时间)
    3. Java Sound API(声音)
    4. CORBA IIOP实现RMI的通信协议
    5. Java 2D新特性
    6. jar文件索引
  • 2000年5月29日,JDK1.4发布。

  • 2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机。

  • 2001年9月24日,J2 EE 1.3发布。

  • 2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升。

  • 2004年9月30日 JDK1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0。其新特性以及更新修改如下:

    1. 自动装箱拆箱
    2. 泛型
    3. 元数据
    4. Introspector(内省)
    5. enum(枚举)
    6. 静态引入
    7. 可变长参数(Varargs)
    8. foreach(高级虚幻)
    9. JMM(内存模型)
    10. concurrent(并发包)
  • 2005年6月,JavaOne大会召开。此时,Java的各种版本更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。


  • 2006年11月13日 Sun公司宣布Java开源,建立OpenJDK组织对代码进行管理。

  • 2006年12月,Sun公司发布了JDK1.6(也被称为Java SE 6)。


  • 2007年11月,Java语言作为服务器端编程语言,已经取得了极大地成功;而Android平台的流行,则让Java语言获得了在客户端程序上大展拳脚的机会。

  • 2009年4月20日,Oracle宣布将以每股9.5美元的价格收购Sun,该交易的总价值约为74亿美元。但Oracle通过收购Sun公司获得了两项软件资产:Java和Solaris。


  • 2011年7月28日,Oracle公司发布Java SE 7

  • 2014年3月18日,Oracle公司发布Java SE 8,其新特性及更新修改如下:

    1. Lambda表达式
    2. 函数式接口
    3. 方法引用和构造器调用
    4. Stream API
    5. 接口中的默认方法和静态方法
    6. 新时间日期API

从Java SE9开始遵循半年一个版本的更新速度,Oracle将每三年指定一个版本作为长期支持(LTS)版本。到目前为止已经发布到Java SE16,下个版本java SE 17将成为长期支持(LTS)版本。

这里重点在说一下人们常说的jdk8、jdk1.8、 java SE8、java8可以说是等价的,之所以这么多叫法,只是java在更新版本后,对命名修改所造成的。

现在企业常用的是jdk8,也有一些企业在慢慢过渡到jdk11,但我觉得技术更新是很快的所以能学新的还是学新的,所以还是希望大家学习jdk11,因为里面也包含着jdk8的内容。




更多精彩内容敬请关注微信公众号:【平兄聊Java】

原来Java的发家史是这么回事的更多相关文章

  1. 论C++的发家史以及相对其他语言优缺

    C++发家史: 最初导致C++诞生的原因是在Bjarne博士等人试图去分析UNIX的内核的时候,这项工作开始于1979年4月,当时由于没有合适的工具能够有效的分析由于内核分布而造成的网络流量,以及怎样 ...

  2. Java 测试驱动开发--“井字游戏” 游戏实战

    TDD 介绍 TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前,先编写单元测试用 ...

  3. Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)

    之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...

  4. java实现发短信功能---腾讯云短信

    目录 java实现发短信功能 前言 开发环境 腾讯云 ---短信 代码 效果 结束语 java实现发短信功能 前言 如今发短信功能已经成为互联网公司的标配,本篇文章将一步步实现java发送短信 考察了 ...

  5. Java实现发邮件功能---网易邮箱

    目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...

  6. 小白学Java:迭代器原来是这么回事

    目录 小白学Java:迭代器原来是这么回事 迭代器概述 迭代器设计模式 Iterator定义的方法 迭代器:统一方式 Iterator的总结 小白学Java:迭代器原来是这么回事 前文传送门:Enum ...

  7. 关于java mail 发邮件的问题总结(转)

    今天项目中有需要用到java mail发送邮件的功能,在网上找到相关代码,代码如下: import java.io.IOException; import java.util.Properties; ...

  8. java ipv6发邮件需要注意的点

    和ipv4发邮件一样,毕竟ip只是用来找地址的,v4 v6使用上基本没区别. 但有一点得注意:java ipv6采用发送RST包来通知邮件服务器断开连接,这样会导致客户端抛 MessagingExce ...

  9. JAVA反射其实就是那么一回事

    概念:什么是反射 java反射机制: JAVA反射机制是在运行状态中, 对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及 ...

随机推荐

  1. py python-pptx 创建ppt

    创建一个简单的PPTX文件 from pptx import Presentation class Main(): def __init__(self): prs = Presentation() t ...

  2. nasm astrcmp函数 x86

    xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export as ...

  3. react小白笔记

    diff算法主要是同级比较,生成数组,进行数组替换 reducer可以接收state,但是绝不能修改state 纯函数指的是:给固定收入,就一定有固定的输出,而且不会有任何副作用[不能例如:new d ...

  4. vue-eahars生产编译报错

    { test: /\.js$/, loader: 'babel-loader', include: [resolve('src'), resolve('test'), resolve('node_mo ...

  5. VMware安装centos.6.8无法访问主机的问题

    安装步骤 点击下一步,如下图: 接上图: 接上图: 接上图 接上图: 接上图: 接上图: 接上图 接上图: 接上图: 接上图: 接上图: 接上图: 接上图: 点击 完成: 启动虚拟机进行安装: 发现报 ...

  6. 6. vue组件详解(一)

    主要内容: 1. 组件的基本使用 2. 全局组件和局部组件 3. 父组件和子组件 4. 组件语法糖的写法 5. 组件data关联的写法 6. 父子组件的通信 组件系统是 Vue 的一个重要概念,因为它 ...

  7. JAVA 判断一个字符串是否是合法的日期格式?

    采用SimpleDateFormat类的parse方法进行判断,如果转换不成功,就会出现异常.另外,还需要判断字符串的长度,若不判断,第二个字符串就会验证通过,实际上也不是合法的.话不多说,且看代码: ...

  8. Java基本概念:异常

    一.简介 描述: 异常(Exception)指不期而至的各种状况,异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据. 要打开的文件不存在. 网络通信时连接中断,或者JVM内存溢出. 异常 ...

  9. 使paramiko库执行命令时,在给定的时间强制退出

    原因: 使用paramiko库ssh连接到远端云主机上时,非常偶现卡死现象,连接无法退出(可以是执行命令时云主机重启等造成).需要给定一段时间,不管命令执行是否卡住,都退出连接,显示命令执行超时错误. ...

  10. SnowNLP——获取关键词(keywords(1))

    一.SnowNLP的获取文本关键词 前面介绍了SnowNLP的获取关键词的方法,这里再重现一下 1 from snownlp import SnowNLP 2 # 提取文本关键词,总结3个关键词 3 ...