Java 入门第二篇,Java发展史

Java 入门第二篇,Java发展史

在这里插入图片描述

一,Java之诞生

Java的诞生可以追溯到20世纪90年代初。以下是Java诞生的背景和过程:

  1. 背景:在上世纪80年代和90年代初,计算机领域存在着多样化的硬件和操作系统,开发者需要为不同的平台编写不同的程序。这给软件开发和应用部署带来了很大的挑战。

  2. 绿色计划:为了解决这个问题,Sun Microsystems公司于1991年启动了一个名为“绿色计划”(Green Project)的项目。詹姆斯·高斯林(James Gosling)和他的团队负责这个项目,目标是开发一种能够在多个平台上运行的新编程语言。

  3. 原始设想:高斯林的团队最初的设想是开发一种名为Oak的语言,用于嵌入式系统和家电设备。然而,随着互联网的兴起,他们意识到这种语言的潜力不仅限于嵌入式系统,而是可以应用于各种平台。

  4. 重新定位:为了适应新的需求,他们将Oak语言重新设计为一种通用的、面向对象的编程语言。他们重点关注的目标是简单性、可移植性和安全性。

  5. Java的诞生:1995年,Sun Microsystems发布了Java的第一个正式版本,命名为Java 1.0。这个版本包括Java编程语言、Java虚拟机(JVM)和Java类库。Java的名称是在一个会议上被提出的,最初被称为“Oak”,但由于已经有一个同名的语言,所以被改为“Java”。

  6. 特点和优势:Java的设计具有许多独特的特点和优势。它采用了面向对象的编程范式,具有简洁、可读性强的语法。Java的跨平台性是其最重要的特点之一,通过Java虚拟机(JVM)可以在不同的操作系统上运行Java程序。此外,Java还具有内存管理、安全性和多线程支持等优势。

  7. 发展和开放源代码:Java在发布后迅速获得了广泛的关注和采用。1996年,Sun Microsystems将Java提交给国际标准化组织(ISO),成为ISO/IEC 10646标准。2006年,Sun Microsystems开源了Java的实现,发布了OpenJDK(Open Java Development Kit),进一步加强了Java的开放性和社区参与。

Java的诞生标志着一种全新的编程语言的出现,它以其简洁性、可移植性和跨平台性在软件开发领域取得了巨大的成功。如今,Java成为了一种广泛使用的编程语言,应用于各种领域和平台。

二,Java JDK 发展史

以下是Java JDK(Java Development Kit)的发展史表格:

版本发布日期主要特点和改进
JDK 1.01996年1月23日初始版本,引入了Java编程语言、Java虚拟机和Java类库。
JDK 1.11997年2月19日添加了内部类、JavaBeans组件体系结构和Swing图形用户界面工具包。
JDK 1.2 (Java 2)1998年12月8日引入了Java 2平台,包括Java 1.2版本的功能和改进。
JDK 1.32000年5月8日引入了新功能,如Java Sound API和Java Naming and Directory Interface(JNDI)。
JDK 1.42002年2月6日引入了新功能,如断言、异常链和正则表达式。
JDK 5.0 (Java 5)2004年9月30日引入了重要的新功能,如泛型、枚举类型、自动装箱/拆箱和注解。
JDK 62006年12月11日引入了新功能,如脚本语言支持、JDBC 4.0和改进的GUI工具包。
JDK 72011年7月28日引入了新功能,如字符串在switch语句中的支持、二进制字面量和多异常捕获。
JDK 82014年3月18日引入了重要的新功能,如Lambda表达式、Stream API和新的日期/时间API。
JDK 92017年9月21日引入了模块化系统(Java平台模块系统,简称JPMS)和其他改进。
JDK 102018年3月20日引入了一些小的改进和新功能,如局部变量类型推断和改进的垃圾收集器。
JDK 112018年9月25日引入了一些小的改进和新功能,如HTTP客户端API和本地变量类型推断。
JDK 122019年3月19日引入了一些小的改进和新功能,如Switch表达式和新的垃圾收集器。
JDK 132019年9月17日引入了一些小的改进和新功能,如文本块和动态CDS归档。
JDK 142020年3月17日引入了一些新的功能,如记录类和模式匹配。
JDK 152020年9月15日引入了一些新的功能,如Sealed类和隐藏类。
JDK 162021年3月16日引入了一些新的功能,如Unix套接字通道API的改进和垃圾收集器的改进。
JDK 172021年9月14日引入了一些新的功能和改进,如弃用的功能的移除和垃圾收集器的改进。

请注意,这只是Java JDK的一些主要版本和功能,还有许多其他的次要版本和改进未在表格中列出。

三 Java JDK里程碑版本

以下是Java JDK的一些里程碑版本:

  1. JDK 1.0(1996年):Java的初始版本,引入了Java编程语言、Java虚拟机和Java类库。

  2. JDK 1.2(Java 2)(1998年):引入了Java 2平台,包括Java 1.2版本的功能和改进。

  3. JDK 5.0(Java 5)(2004年):引入了重要的新功能,如泛型、枚举类型、自动装箱/拆箱和注解。

  4. JDK 8(2014年):引入了重要的新功能,如Lambda表达式、Stream API和新的日期/时间API。

  5. JDK 9(2017年):引入了模块化系统(Java平台模块系统,简称JPMS)和其他改进。

  6. JDK 11(2018年):引入了一些小的改进和新功能,如HTTP客户端API和本地变量类型推断。

  7. JDK 14(2020年):引入了一些新的功能,如记录类和模式匹配。

  8. JDK 17(2021年):引入了一些新的功能和改进,如弃用的功能的移除和垃圾收集器的改进。

这些里程碑版本代表了Java JDK在不同时间点上的重要发展和功能增强。每个版本都为Java开发者提供了新的工具和功能,推动了Java在软件开发领域的进步和广泛应用。

四,Java之父和继父

詹姆斯·高斯林(James Gosling)被公认为是Java编程语言的创造者,他在1990年代初期的Sun Microsystems公司工作时,领导了一个小组开发了这种语言。他们的目标是创建一种可以在各种设备上运行的编程语言,这就是Java的"编写一次,到处运行"的理念。

“Java继父”余胜军不是指Java编程语言的发明者詹姆斯·高斯林,一位自学成才的Java编程初学者。
余胜军,初中毕业,培训班出身,2010年找到第一份Java开发工作。他从小便开始自学编程,还创办了蚂蚁课堂。他男,汉族,中国国籍,1997年10月17日出生,蚂蚁课堂创始人、每特教育创始人&97后互联网创业者,现任武汉每特教育科技有限公司董事长职务。
所以不要看过程,要看结果。过程一定是痛苦的,结果一定是美好的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机操作系统-第十三天

目录 前言 进程通信(IPC) 进程通信的方法 共享存储 消息传递 直接通信方式 间接通信方式(信箱通信方式) 管道通信 本节思维导图 前言 !!!回归!!! …

SQL注入绕过技术

预计更新SQL注入概述 1.1 SQL注入攻击概述 1.2 SQL注入漏洞分类 1.3 SQL注入攻击的危害 SQLMap介绍 2.1 SQLMap简介 2.2 SQLMap安装与配置 2.3 SQLMap基本用法 SQLMap进阶使用 3.1 SQLMap高级用法 3.2 SQLMap配置文件详解 3.3 SQLMap插件的使用 SQL注入漏洞检测 4.1 SQL注入…

万界星空科技MES系统中的生产调度流程

MES系统生产调度的目标是达到作业有序、协调、可控和高效的运行效果,作业计划的快速生成以及面向生产扰动事件的快速响应处理是生产调度系统的核心和关键。 为了顺利生成作业计划,需要为调度系统提供完整的产品和工艺信息,MES系统生成作业计…

【C++】POCO学习总结(十三):类型和字节序、错误处理和调试、获取系统信息

【C】郭老二博文之:C目录 1、类型 POCO为固定大小的整数定义了类型 头文件:#include “Poco/Types.h” Poco::Int8Poco::Int16,Poco::Int32,Poco::Int64Poco::UInt8Poco::UInt16Poco::UInt32Poco::UInt64Poco::IntPtr, Poco::UIntPtr:与指针大小相同的…

低多边形植物模型法线贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

【STM32】DMA直接存储器存取

1 DMA简介 DMA(Direct Memory Access)直接存储器存取 可以直接访问STM32的存储器的,包括运行SRAM、程序存储器Flash和寄存器等等 DMA可以提供外设寄存器和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节…

单片机——通信协议

一.同步通信和异步通信 (1)同步通信 通信时序:同步通信是基于时钟信号的通信方式。发送端和接收端需要共享相同的时钟信号,以确定数据传输的时刻。等待:在同步通信中,发送端和接收端必须等待时钟信号的到…

I.MX RT1170双核学习(1):双核通信之MU消息单元详解

在I.MX RT1170中,它有CM7和CM4核,而消息单元(MU)模块使SoC内的两个处理器能够通过MU接口传递消息以进行通信和协调。 文章目录 1 MU特性2 功能描述3 MU通信实例3.1 轮训实现多核通信3.1.1 MU_SetFlags和MU_GetFlags3.1.2 MU_SendMsg和MU_ReceiveMsg3.1.…

路由基本原理

目录 一、路由器概述 二、路由器的工作原理 三、路由表的形成 四、路由配置 1.连接设备 2.进入系统模式 3.进入接口模式 4.配置网络 5.下一跳的设置 6.设置浮动路由 7.设置默认路由 一、路由器概述 路由器(Router)是一种用于连接不同网络或子…

力扣-383. 赎金信

文章目录 力扣题目代码分析 力扣题目 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一…

django实现增删改查分页接口

django实现增删改查分页接口(小白必备) 在上篇文章中我使用nodejs实现了增删改查分页接口,这一篇我们则使用django实现。 1.创建一个django项目,命令如下 python manage.py startapp myapp 2.在你自己的myapp文件夹中的models.py中定义你们自己的模型 f…

看图识药,python开发实现基于VisionTransformer的119种中草药图像识别系统

中药药材图像识别相关的实践在前面的系列博文中已经有了相应的实践了,感兴趣的话可以自行移步阅读即可,每篇文章的侧重点不同: 《python基于轻量级GhostNet模型开发构建23种常见中草药图像识别系统》 《基于轻量级MnasNet模型开发构建40种常…

元编程(Metaprogramming)

本章将介绍第8️⃣种编程范式---元编程,以及它的优缺点、案例分析和小项目的代码示例。 优点 元编程的优点: 灵活性和可重用性:元编程允许在运行时生成代码,使得程序更加灵活和可重用。可以根据需要动态生成代码片段&#xff0…

Kafka系列之:统计kafka集群Topic的分区数和副本数,批量增加topic副本数

Kafka系列之:统计kafka集群Topic的分区数和副本数,批量增加topic副本数 一、创建KafkaAdminClient二、获取kafka集群topic元信息三、获取每个topic的名称、分区数、副本数四、生成增加topic副本的json文件五、执行增加topic副本的命令六、确认topic增加副本是否成功一、创建K…

Linux——基本指令(二)

​ 个人主页:日刷百题 系列专栏:〖C语言小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 🌎欢迎各位→点赞👍收藏⭐️留言📝 ​ ​ 写在前面: 紧接上一章,我们在理解接下来的命令之前&#xff0c…

Baumer工业相机堡盟工业相机如何通过BGAPISDK获取相机的各种信息如SN/ID等等(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK获取相机的各种信息如SN/ID等等(C#) Baumer工业相机Baumer工业相机通过SDK获取相关生产信息的技术背景通过SDK获取相机信息的代码分析获取Baumer工业相机相关信息Baumer工业相机相关参数信息获取的测试 Baume…

【EventBus】EventBus源码浅析

二、EventBus源码解析 目录 1、EventBus的构造方法2、订阅者注册 2.1 订阅者方法的查找过程2.2 订阅者的注册过程1. subscriptionsByEventType 映射:2. typesBySubscriber 映射:2.3 总结订阅者的注册过程 3、事件的发送 3.1 使用Post提交事件3.2 使用p…

SpringBoot集成MyBatis-Plus实现分页查询

引入MyBatis-Plus依赖&#xff0c;下面注意指定自己的MyBatis-Plus版本。 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version> </dep…

Axure的使用

1.Axure是什么&#xff1f;&#xff1f;&#xff1f; Axure是一款功能强大的原型设计工具&#xff0c;它可以让用户快速地创建交互式原型&#xff0c;并针对原型进行测试和改进。Axure的主要特点包括可定制的界面元素库、交互动画效果、条件逻辑、团队协作等功能&#xff0c;适…

digit函数

题目描述 在程序中定义一函数 digit(n,k)&#xff0c;它能分离出整数 n 从右边数第 k 个数字。 输入格式 正整数 n 和 k。 输出格式 一个数字。 输入输出样例 输入 #1 31859 3 输出 #1 8 说明/提示 n≤10^9。 k≤10。 因为用整数n来做有点难&#xff0c;所以我用…