Java小史:从1到5

简介: 介绍Java从1到5的版本变化

下面介绍一下Java从1到5的的版本变化,其中表红色的为现在还在影响Java的重要改变。

JDK 1.1:

1997年2月19日发布。新增功能主要包括

  • AWT事件模型大规模重新编制
  • 加入了内部类
  • JavaBeans
  • JDBC
  • RMI
  • 能够支持自理的反射能力,在运行时不可能有修改。
  • 针对 Microsoft Windows 平台上运作的版本,附带由Symantec为JavaSoft生产的JIT编译器
  • 支持国际化和Unicode,该功能源自Taligent

J2SE 1.2:

1998年12月8日发布,代号为Playground。 该版本到J2SE 5.0为止的后续版本被更名为Java 2,而版本名称“J2SE”(Java 2平台,标准版)取代JDK以区别J2EE(Java 2平台,企业版) 和J2ME(Java 2 Platform,Micro Edition)基础平台。这是Java的一个非常重要的版本,它将Java平台的大小增加至原先的三倍,在59个程序包中达到了1520个类。主要增加包括:

  • strictfp 关键字
  • 主类别中集成了Swing图像化API
  • 首次为Sun提供的JVM配备JIT编译器
  • Java plug-in(即 Java Applet)
  • Java IDL,一个与CORBA互通的接口描述语言实现
  • Java集合框架

J2SE 1.3

代号为Kestrel。在的版本中最著名的改变包括:

  • 包含了HotSpot JVM(HotSpot JVM第一次被发布是在1999年4月,名为J2SE 1.2 JVM)
  • 为了支持与CORBA的选择兼容性而修改了RMI
  • Java命名和目录接口(Java Naming and Directory Interface,缩写JNDI)包含在主程序库中(先前为扩展组件的形式)
  • Java Platform Debugger Architecture (JPDA)
  • JavaSound
  • 用于实现动态代理的类

扩展:JNDI和Log4j

J2SE 1.4

代号为Merlin。2002年2月6日发布了JSR 59,是第一个在JCP下开发的Java平台。主要的变化包括︰

  • 语言上的改变
  • assert关键字
  • 程序库的改善
  • 仿照Perl的正则表达式
  • 异常链,允许一个异常来封装原先处于较低级别的异常
  • 支持Internet Protocol version 6 (IPv6)
  • 非阻塞I/O(取名为 Nonblocking Input/Output,NIO)
  • 日志API
  • 图像 I/O API来读取和写入图片,支持JPEG、PNG等格式
  • 集成了XML解析器和XSLT处理器(JAXP)和JSR 63
  • 集成安全和加密扩展组件(JCE, JSSE, JAAS)
  • 内置了Java Web Start (Java Web Start 在2001年3月第一次被发布,作为J2SE 1.3的可选组件)
  • 首选项 API (java.util.prefs)

J2SE 5.0/Java 5.0

代号为Tiger。这个在2004年9月30日发布的版本原本以1.5编号,也就是仍然使用内部版本编号。这个数字辈改变是为了“更好地反映成熟度、稳定性、可扩展性和 J2SE 的安全水准”。

J2SE 5.0在2008年4月8日进入其即将停止公开更新的期间;2009年11月3日正式不公开开放更新。Oracle客户直到2015年5月都能透过付费的方式获取更新 。

Tiger增加了若干个重要的新语言功能。

  • 泛型(Generics): 为集合提供编译期间 (静态) 类型安全,且不须为大多数类型转换 (类型转换)
  • 元数据(Metadata): 也称作注解。让语言结构(像是类别和方法)能够用额外的资料标记,可以由元数据意识工具处理
  • 自动封装与解封装: 在基本的资料类型(如int)和基本的的外覆类别 (如Integer) 之间能够自动转换
  • 枚举(Enumerations): 以enum 关键字创造出一种类型安全,有排序值的清单(如Day.MONDAY、 Day.TUESDAY 等);以前这只能透过非类型安全的恒定整数或自行撰写的类别来达成 (类型安全的枚举模式)
  • 可变参数函数(Varargs):方法的最后一个参数现在可以用一个类型名称加上三个点宣告(如:void drawtext(String... lines));在调用代码中,类型中参数里任何的数字可以被使用,而它们再放在一个数组来传递给方法,或是其它的调用代码可以传递那个类型的数组
  • 强化 foreach 循环:for 循环的语法被用特别的语法扩展了,适用于数组或 Iterable,用于迭代每个成员,如基本的Collection 类别
  • 改进多线程 Java 程序的执行语义;新的 Java 存储器模型改善了复杂性、 有效性和以前的规格性
  • 静态导入

另外也有以下这些对于基本程序库的改善:

  • 自动给RMI产生桩模块
  • Swing:新的接口外观,叫做synth
  • 异步实用工具在java.util.concurrent
  • Scanner 类别来解析来自各式各样的输入和缓冲

Java 5是Java的最后一个正式支持Microsoft Windows 98和Windows ME的版本,而Windows Vista是J2SE 5在2009年10月的Java 5生命周期之前支持的Windows的最新版本。

Java 5 Update 5(1.5.0_05)是Java在Windows 95(装了Internet Explorer 5.5 的)和Windows NT 4.0上运行的最后一个版本。

Java 5 最初出现在 Mac OS X 10.4 (Tiger),到了 Mac OS X 10.5 (Leopard)时成为了默认的 Java 版本。

版本控制系统的改变

此版本推出了JAVA语言中,一个新的版本控制系统,而旧版本控制系统仍然可以在开发者资源库中继续使用。

这种对应关系持续维持到以后的版本 (Java 6 = JDK 1.6, Java 7 = JDK 1.7, 以此类推).


目录
相关文章
|
存储 easyexcel Java
EasyExcel教程
EasyExcel教程
17180 0
|
3月前
|
人工智能 缓存 自然语言处理
阿里云百炼Token Plan(团队版)收费价格、支持的模型及各模型适用场景详解
阿里云百炼Token Plan团队版是面向企业和开发者的AI大模型订阅服务,以Credits统一计量,提供标准(198/月)、高级(698/月)、尊享(1398/月)三档套餐及共享用量包,按月订阅、预算可控。服务支持千问、万相、DeepSeek、Kimi、GLM、MiniMax等百余款主流模型灵活切换,覆盖文本、图像、视频生成等全场景能力,兼容OpenClaw、Qwen Code、Claude Code等主流AI编程与智能体工具。
|
存储 安全 Java
解析 Java 的 MultipartFile 接口:实现文件上传的全面指南
在现代的 Web 开发中,文件上传是一个常见的需求,而 Java 中的 `MultipartFile` 接口正是用来处理这类任务的重要工具。无论是上传图片、音频、视频还是其他文件类型,`MultipartFile` 都提供了便捷的方法来处理文件的接收和存储。本文将带您深入探索 Java 中的 `MultipartFile` 接口,揭示其功能、用法以及在实际开发中的应用场景。
|
2月前
|
域名解析 存储 弹性计算
海宝云-阿里云服务器续费太贵?这有一份不同机型降配与省钱方案的“榨干”测评!
本文由阿里云官方服务商海宝云撰写,直击云服务器续费痛点:新客低价、老客高价。详解三大省钱策略——“续费降配”“跨代降配”“数据迁移”,辅以节省计划、停机模式等隐藏技巧,并提醒缩容、IP变更、共享型风险等避坑要点,助你合法合规砍掉50%~80%续费成本。
|
10月前
|
前端开发 UED
按钮的呼吸感:你的用户为何停留?
按钮的呼吸感:你的用户为何停留?
344 118
java引入本地 MultipartFile 实现多部分文件上传
在Java中,`MultipartFile`通常用于处理通过HTML表单上传的文件。但在某些情况下,需要直接从本地文件系统获取文件并上传。本文介绍如何创建一个实现了`MultipartFile`接口的本地类`LocalMultipartFile`,将本地文件转换为`MultipartFile`对象,简化文件上传流程。此方法适用于批量上传等场景,避免了表单上传的复杂性。代码示例展示了如何实现和使用该类进行文件上传操作。作者:华科云商小彭。链接:[稀土掘金](https://juejin.cn/post/7377559533785530431)。
864 18
|
存储 缓存 安全
大厂面试高频:ConcurrentHashMap 的实现原理( 超详细 )
本文详细解析ConcurrentHashMap的实现原理,大厂高频面试,必知必备。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:ConcurrentHashMap 的实现原理( 超详细 )
|
Java 数据库连接 数据库
SpringBoot 整合jdbc和mybatis
本文详细介绍了如何在SpringBoot项目中整合JDBC与MyBatis,并提供了具体的配置步骤和示例代码。首先,通过创建用户实体类和数据库表来准备基础环境;接着,配置Maven依赖、数据库连接及属性;最后,分别展示了JDBC与MyBatis的集成方法及其基本操作,包括增删查改等功能的实现。适合初学者快速入门。
855 3
SpringBoot 整合jdbc和mybatis
|
存储 缓存 前端开发
CacheStorage详解
CacheStorage 是 Web API 的一部分,用于管理缓存对象的存储。它允许开发者在客户端存储和检索请求-响应对,实现离线访问和性能优化。通过 CacheStorage 接口,可以创建、删除和查询缓存,以及控制资源的缓存策略。
美团面试:Redis锁如何续期?Redis锁超时,任务没完怎么办?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试一线互联网企业时遇到了关于Redis分布式锁过期及自动续期的问题。尼恩对此进行了系统化的梳理,介绍了两种核心解决方案:一是通过增加版本号实现乐观锁,二是利用watch dog自动续期机制。后者通过后台线程定期检查锁的状态并在必要时延长锁的过期时间,确保锁不会因超时而意外释放。尼恩还分享了详细的代码实现和原理分析,帮助读者深入理解并掌握这些技术点,以便在面试中自信应对相关问题。更多技术细节和面试准备资料可在尼恩的技术文章和《尼恩Java面试宝典》中获取。
美团面试:Redis锁如何续期?Redis锁超时,任务没完怎么办?

热门文章

最新文章