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. js 拖拽排序

    See alsoe: https://www.runoob.com/html/html5-draganddrop.html https://developer.mozilla.org/zh-CN/do ...

  2. c++ 使用进程id获取打开的网络端口

    #pragma warning( disable : 4996) #include <winsock2.h> #include <ws2tcpip.h> #include &l ...

  3. Flutter: 粘贴板

    文档 import 'package:flutter/services.dart'; /// 把文本复制进入粘贴板 Clipboard.setData(ClipboardData(text: &quo ...

  4. go-admin在线开发平台学习-4[细节解析]

    紧接着上一期的内容,继续对go-admin的一些细节进行解析. 通用的增删改查方法 在go-admin/common/actions下封装了通用的增删改查方法.在对这些方法进行说明前,先移步到另一个文 ...

  5. RecycleView 点击事件监听

    1.定义RecycleView 监听接口类 1 package com.example.*****; 2 3 import android.view.View; 4 5 public interfac ...

  6. 死磕Spring之IoC篇 - BeanDefinition 的加载阶段(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  7. 简单梳理下 Vue3 的新特性

    在 Vue3 测试版刚刚发布的时候,我就学习了下 Composition API,但没想到正式版时隔一年多才出来,看了一下发现还是增加了不少新特性的,在这里我就将它们一一梳理一遍. 本文章只详细阐述 ...

  8. 最常用SQL joins:内连接(交集)、左外连接、右外连接、左连接、右连接、全连接(并集),全外连接

    1.内连接.两个表的公共部分用Inner join,Inner join是交集的部分. Select * from TableA A inner join TableB B on A.key=B.ke ...

  9. js中函数调用时,对参数个数和类型没有要求

    因为js是一种弱类型的编程语言,对数据类型的要求没有其他编程语言的要求严格,所以在定义函数的时候不需要像java一样对其传入参数的类型进行定,也对传入参数的个数没有要求. js函数的参数与大多数其他语 ...

  10. SpringBoot配置本地文件映射路径

    1.前言 在springboot的项目中,如果需要通过项目方式访问本地磁盘的文件,不仅可以使用nginx代理的方式,还可以使用springboot配置的方式进行访问. 实例原因说明:由于上传的图片是要 ...