JAVA发展历程

2023-11-19

 Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

Java具有简单性、面向对象、分布式健壮性安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统嵌入式系统应用程序等 。

Java之父——James Gosling

詹姆斯·高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大Java编程语言的共同创始人之一,一般公认他为“Java之父”。

1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位。

 JAVA发展历程

Java 的历史要追溯到 1991 年, 由 Sun 公司带领的开发小组, 想设计一种小型的计算机语言,主要用于有线电视转换盒这类的消费设备。 由于这类设备的处理能力和内存都非常有限,所以语言就必须设计的非常小且能够生成紧凑的代码。 另外,由于不同的厂商会选择不同的 CPU, 因此很重要的一点就是这种语言不应该与任何特定的体系结构绑定。这个项目被命名为 “Green”。

Sun 公司的人都有 Unix 的应用背景, 所以开发的语言用了 C++ 为基础。并把这种语言称为 “Oak”, 后来, Sun 公司的人后来发现, Oak 是一种已经有的计算机语言的名字, 于是, 将其改名为 “Java”。

1995年5月23日,Java语言诞生

1996年1月,第一个JDK-JDK1.0诞生1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术1996年9月,约8.3万个网页应用了JAVA技术来制作

JDK 1.0 开发代号为 Oak ( 橡树 )。

1997年2月18日,JDK1.1发布

JDK 1.1 引入的新特性包括:

  • 引入JDBC(Java Database Connectivity);

  • 支持内部类;

  • 引入Java Bean;

  • 引入RMI(Remote Method Invocation);

  • 引入反射(仅用于内省)。

1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录1997年9月,JavaDeveloperConnection社区成员超过十万1998年2月,JDK1.1被下载超过2,000,000次

1998年12月8日,JAVA2企业平台J2EE发布

1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)

2000年5月8日,JDK1.3发布

2000年5月29日,JDK1.4发布

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

2001年9月24日,J2EE1.3发布

JDK 1.3 开发代号为Kestrel(红隼)

  • 引入的新特性包括:

  • 引入Java Sound API;

  • jar文件索引;

  • 对Java的各个方面都做了大量优化和增强。

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

JDK 1.4 开发代号为Merlin(隼)

  • 引入的新特性包括:

  • XML处理;

  • Java打印服务;

  • 引入Logging API;

  • 引入Java Web Start;

  • 引入JDBC 3.0 API;

  • 引入断言;

  • 引入Preferences API;

  • 引入链式异常处理;

  • 支持IPv6;

  • 支持正则表达式;

  • 引入Image I/O slot machine API。

2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0

JDK 1.5 开发代号为Tiger(老虎)

  • 引入的新特性包括:

  • 引入泛型;

  • 增强循环,可以使用迭代方式;

  • 自动装箱与自动拆箱;

  • 类型安全的枚举;

  • 可变参数;

  • 静态引入;

  • 元数据(注解);

  • 引入Instrumentation。

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME

2006年12月,SUN公司发布JRE6.0

JDK 1.6 开发代号为Mustang(野马)

  • 引入的新特性包括:

  • 支持脚本语言;

  • 引入JDBC 4.0 API;

  • 引入Java Compiler API;

  • 可插拔注解;

  • 增加对Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持;

  • 继承Web Services;

  • 做了很多优化。

2009年12月,SUN公司发布Java EE 6

2010年11月,由于Oracle公司对于Java社区的不友善,因此Apache扬言将退出JCP

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

JDK 1.7 开发代号是Dolphin(海豚)

  • 引入的新特性包括:

  • switch语句块中允许以字符串作为分支条件;

  • 在创建泛型对象时应用类型推断;

  • 在一个语句块中捕获多种异常;

  • 支持动态语言;

  • 支持try-with-resources;

  • 引入Java NIO.2开发包;

  • 数值类型可以用2进制字符串表示,并且可以在字符串表示中添加下划线;

  • 钻石型语法;

  • null值的自动处理。

2014年3月18日,Oracle公司发表Java SE 8

JDK 1.8 开发代号是Spider(蜘蛛)

  • 支持 lambda支持;

  • 增强日期与时间API的功能;

  • 对垃圾回收的性能也进行了改进;

  • 并且移除了permgen区。

  • Lambdas表达式与Functional接口

  • 接口的默认与静态方法

  • 方法引用

  • 重复注解

  • 更好的类型推测机制

  • 扩展注解的支持

2017年7月,Oracle 公司将发布 JDK 9。这个版本算是比较大的调整,加入了很早之前就规划的模块化功能。并且对整个 JDK 基于模块进行了重新编写。Java 9 提供了轻量级 JSON API; 使用 G1 作为默认的垃圾收集器,替代了之前默认使用的 Paralel GC; 引入了 jShell 这个交互性工具。并且全面支持 HTTP 2.0。

也就是在这一年,2017 年 8 月,Oracle 决定将 Java EE 移交给开源组织,最后 Eclipse 基金会接手。

由于甲骨文不允许开源组织用 Java 的名号,于是 Eclipse 选出了 "Jakarta EE" 和 "Enterprise Profile" 两个后续名字,最终前者以 64.4% 的票数获胜。

也就是说,Java EE 已经正式更名为 Jakarta EE(雅加达)。

Oracle公司发表Java SE 9

2018年,从 2018 年开始, 每6个月就会发布一个 Java 版本, 以更快地引入新特性。这里又分为 LTS 版和最新版。 生产环境中最好只使用 LTS 版本, 因为这个版本更加稳定, 维护周期更长。2018 年 3 月 21 日, Java 10 发布。2018 年 9 月 25 日, Java 11 LTS 发布。

2019 年,2019 年 2 月 Java 12 发布2019 年 9 月 Java 13 发布。

2020 年,2020 年 3 月 17 日,Java 14 发布。2020 年 9 月 15 日,Java 15 发布。

2021 年,2021 年 3 月 16 日,Java SE 16 发布。2021 年 9 月 14 日,Java SE 17 LTS 发布。

这个是继 Java 11 之后的有一个长期支持版本, 并且直接支持到了 2029 年 9 月。这可能是下一个 Java 8。所以学习的话, 可以直接学习这个版本。当然也可以直接学习 Java 17 这样的话, 对于工作来说 3 年之内不会有大的变化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA发展历程 的相关文章

随机推荐

  • 使用python对银行信息管理系统的简单实现

    一 首先是用户属性的类 class account object 储存用户信息的类 def init self id1 name tel money self id id1 账户 self name name 姓名 self tel tel
  • mo管理器java_Android开发之通过包管理器获取安装应用信息

    最近在自己写一个APP 有一个模块需要获取手机应用的一些信息 坑还是有 但都基本踩过了 自己把他实现了出来 实现方法还是很需要掌握的 底部弹出的对话框中四个选项的实现不多做说明 主要讲讲如何获取这些安装的应用信息 好了 不多说 看看效果图
  • 1024,干程序才懂得节日!

    1024程序员节 1024程序员节是广大程序员的共同节日 1024是2的十次方 二进制计数的基本计量单位之一 针对程序员经常周末加班与工作日熬夜的情况 部分互联网机构倡议每年的10月24日为1024程序员节 在这一天建议程序员拒绝加班 程序
  • 【C/C++】报错问题积累

    1 出现Deprecated declaration XXX give arg types c文件中 有没有参数的函数时 声明需要加void即 main c void fun main h void fun void
  • androidX 在AndroidMainfest里面加入provider后编译不通过

  • 【three.js练习程序】创建简单物理地形

  • ubuntu 18.04 双系统安装

    下载镜像 Ubuntu 18 04 6 LTS Bionic Beaver 磁盘分区用于ubuntu存储 在C盘中分出200M用于ubuntu的引导启动 C盘已经分出200M空间 D盘分配出160G用于存储文件 U盘制作系统盘 刻录软件 推
  • linux下TUN或TAP虚拟网卡的使用

    tun tap 驱动程序实现了虚拟网卡的功能 tun表示虚拟的是点对点设备 tap表示虚拟的是以太网设备 这两种设备针对网络包实施不同的封装 利用tun tap 驱动 可以将tcp ip协议栈处理好的网络分包传给任何一个使用tun tap驱
  • ClickHouse安装(集群版)

    ClickHouse安装 集群版 一 准备工作 1 设置hostname 2 hosts映射 3 关闭防火墙 4 同步时间 5 关闭selinux 6 安装好zookeeper 7 重启 二 搭建ClickHouse集群 1 下载安装包 2
  • c++类模板与继承详解

    c 类模板 继承 详解 类模板和类模板之间 类模板和类之间可以互相继承 它们之间的派生关系有以下四种情况 1 类模板继承类模板 2 类模板继承模板类 3 类模板继承普通类 4 普通类继承模板类 include
  • 【linux】shell 编程之字符串与数组

    前言 对字符串的操作在众多的编程语言中可以说是最基础的了 字符串 String 就是一系列字符的组合 字符串是 Shell 编程中最常用的数据类型之一 除了数字和字符串 也没有其他类型了 一 shell 中字符串的几种格式 在shell中
  • 吃透Chisel语言.18.Chisel模块详解(五)——Chisel中使用Verilog模块

    Chisel模块详解 五 Chisel中使用Verilog模块 上一篇文章讲述了用函数实现轻量级模块的方法 可以大幅度提升编码效率 Chisel中也提供了一些好用的函数 方便我们编写代码 也方便Chisel编译器优化生成的硬件电路 在Chi
  • Blender 之修改器代码分析

    转载 Blender 之修改器代码分析 KAlO2 博客园 Blender 之修改器代码分析 Blender的修改器 modifier 模块 默认界面右下块 Property 面板的扳手 分类 修改 生成 形变 模拟 列出所有的修改器 也可
  • 使用七牛云Python SDK来实现自动下载所有文件

    安装七牛云Python SDK 在终端中输入以下命令 pip install qiniu 连接七牛云存储 创建下载链接并下载文件 示例代码如下 import os from qiniu import Auth BucketManager 配
  • iOS和macOS上Swift编写的EOS区块链开源框架SwiftyEOS

    SwiftyEOS是一个用于与EOS交互的开源框架 用Swift编写 可以在iOS和macOS上使用 特点 EOS密钥对生成 私钥导入 签名哈希 基本的RPC API 链 历史 可查询客户端 交易 EOS token 转账 帮助类处理iOS
  • C/C++语言实现WiFi(socket)数据收发(客户端和服务端)

    目录 客户端 client 服务端 server C C 实现TCP通信 接收WIFI数据 编程环境 VC 6 0 手机端 使用WiFi调试助手 提示 整个过程在局域网中进行 很多编程语言都可以实现socket通信 本博客将通过C C 实现
  • Unity小游戏-勇闯小岛(PC) 项目展示+完整项目源码

    游戏录像 游戏玩法 主角可以变换四种状态 玩家通过四种状态特有的技能来击败眼前的怪物闯关 切换到棕色 有一个一直围绕自己旋转的大摆斧攻击敌人 切换到绿色 可以抵挡一切的投掷物 但是无法攻击敌人 切换到粉色 切换瞬间可以发出飞镖 切换到蓝色
  • gradle 笔记

    1 各种options Simon ZOUYUN PC f AndroidstudioProjects KeyguardTest master gradle help USAGE gradle option task h help Show
  • Linux 进程系统

    Linux 进程系统 守护进程的产生 process namespace namespace 是 Linux 内核用来隔离内核资源的方式 通过 namespace 可以让一些进程只能看到与自己相关的一部分资源 而另外一些进程也只能看到与它们
  • JAVA发展历程

    Java是一门面向对象的编程语言 不仅吸收了C 语言的各种优点 还摒弃了C 里难以理解的多继承 指针等概念 因此Java语言具有功能强大和简单易用两个特征 Java语言作为静态面向对象编程语言的代表 极好地实现了面向对象理论 允许程序员以优