2010-06-09 64 views
2

我已经使用JDK 1.4创建了该项目。现在我想在我的项目中使用JDK 1.6版本。 为此,需要哪些步骤。我想知道代码中需要进行哪些更改才能获得JDK 1.6功能。基本上,我正在讨论在JDK 1.6中添加的功能。如果有任何一个列表出现了变化,它是非常有用的。JDK 1.4和JDK1.6之间有什么区别

在此先感谢..............................

+7

JDK 1.4和JDK 1.6之间的区别大约是JDK 0.2。 (“大约”,因为浮点舍入错误可能会给你稍微不同的结果。) – 2010-06-09 06:13:25

回答

7

我的意见,这四个最突出的改进,因为Java的1.4.2是

  • 泛型
  • 枚举
  • 增强的for循环和
  • 批注

有很多额外的类和API增强,但如果你想“升级”你的代码,我建议开始你的重构使用泛型和通过增强的for循环替换循环的标准。两者都可以在不进行主要代码更改的情况下完成,清理代码(可以删除大量代码行)并提高可读性。并且使用泛型可能会揭示一些隐藏的bug;)

+0

你能提供一个类似于jdk 1.6代码和jdk 1.8代码的比较吗? – 2016-12-30 11:11:01

1

有这么多6.0中添加的更改。

但是,您的所有1.4代码都能顺利运行。 有关版本进一步参考,请参阅以下链接

http://en.wikipedia.org/wiki/Java_version_history#Java_SE_6_.28December_11.2C_2006.29

希望它能帮助。

+3

除了,如果您使用'Enum'作为类名称:) – 2010-06-09 05:57:12

+0

作为类名的枚举确实是一个问题在AXIS 1.3或1.4中 – stacker 2010-06-09 05:59:29

+0

@ J-16 SDiZ - 作为类名的'Enum'不应该是一个问题,它是使用'enum'作为字段或方法名或者在包名中。 – 2010-06-09 06:05:06

17

更好地看到1.4和1.5之间的差异,然后是1.5和1.6之间的差异。 可以在每个版本检查的新功能上official web site,但低于有点年表...

JDK 1.0(1996年1月23日),橡木

  • 首次发布

JDK 1.1 (1997年2月19日)

  • 更换机器AWT事件模型的
  • 内部类添加到语言
  • 的JavaBeans
  • JDBC
  • RMI

J2SE 1.2(1998年12月8日)操场 这和后续版本通过J2SE 5.0进行回顾性更名的Java 2 &版本名称“J2SE” (Java 2平台标准版)取代了JDK,以区分基本平台从 J2EE(Java 2平台,企业版)和J2ME(Java 2平台,微版)。

  • Strictfp关键字
  • 反思
  • 摇摆API集成到核心类
  • JVM配备了JIT编译器
  • Java插件
  • 的Java IDL
  • 的IDL实施corba互操作性
  • 集合框架

J2SE 1.3(可8,2000)隼

  • 热点JVM包括
  • JavaSound包括在核心库
  • JNDI
  • Java平台调试器架构(JPDA)
  • RMI是修改以支持与corba的可选兼容性

J2SE 1.4(2002年2月6日)梅林

  • assert关键字
  • 正则表达式
  • 异常链(允许例外封装原始较低级异常)
  • 因特网协议版本6(IPV6 )支持
  • 非阻塞NIO(新的输入/输出)
  • 记录API
  • 图像I/O的API阅读和格式,如JPEG和PNG写入图像
  • 集成的XML解析器和XSLT处理器(JAXP)
  • 集成的安全性和加密扩展(JCE,JSSE,JAAS)
  • Java Web Start的

J2SE 5.0(九月三十日,2004年)虎[原本编号1.5]

  • 泛型:提供了一种用于集合 和Eli编译时 (静态)类型安全减少了对大多数 类型转换(类型转换)的需求。
  • 元数据:也称为注释;允许使用附加数据标记语言结构(如类和方法),然后可以通过元数据感知实用程序处理这些数据。
  • 自动装箱/拆箱:原始类型(如int)和原始包装类(如整数)之间的自动转换。
  • 枚举:enum关键字创建一个类型安全的有序值列表(例如day.monday,day.tuesday等)。以前这只能通过非类型安全常量整数或手动构造类(类型安全枚举模式)来实现。
  • 摇摆:新的可换肤的外观和感觉,称为合成器。
  • Var args:方法的最后一个参数现在可以使用类型名称后跟三个点(例如Void drawtext(string ... Lines))来声明。在调用代码中,可以使用该类型的任意数量的参数,然后将它们放入数组中以传递给方法,或者调用代码可以传递该类型的数组。
  • 针对每个循环都进行了增强:for循环语法使用特殊语法进行了扩展,以迭代数组或任何可迭代对象的每个成员,例如标准集合classesfix以前破坏的Java内存模型的语义,该语义定义线程通过记忆交互。
  • rmi对象的自动存根生成。
  • 静态导入包java.util.concurrent中的并发实用程序。
  • 扫描仪类,用于解析来自各种输入流和缓冲区的数据。
  • 断言
  • StringBuilder类(在java.lang包)
  • 批注

Java SE 6中(2006年12月11日)野马 阳光取代了名为 “J2SE” 与Java SE和掉线版本号“.0”。 测试版本是在二月和2006年6月发布,导致这一12月11日,2006年 当前版本发生了最终版本更新20

  • 支持较老版本WIN9X下降。
  • 脚本语言支持:用于与脚本语言集成的通用API,&内置mozilla javascript rhino集成
  • 对核心平台和swing的显着性能改进。
  • 通过JAX-WS JDBC 4.0支持改进的Web服务支持
  • Java编译器API:允许Java程序以编程方式选择和调用Java编译器的API。
  • 将JAXB升级到版本2.0:包括集成stax解析器。
  • 支持可插拔注释
  • 许多GUI改进,例如API中的swingworker集成,表格排序和过滤以及真正的双重缓冲(消除灰色区域效应)。

Java se 6更新10 在最终用户可用性方面的重大改进。

  • Java部署工具包,一套 JavaScript函数来缓解 部署小应用程序和Java Web 启动应用程序。
  • Java内核,一个只包含最常用的jre类的小型安装程序。增强版更新。
  • 增强的版本控制和pack200支持:不再需要服务器端支持。
  • Java快速入门,提高冷启动时间。
  • 使用direct3D和硬件加速提高了windows上的java2D图形基元的性能。
  • 一种新的Swing外观叫做NIMBUS,基于合成器。
  • 下一代java插件:小程序现在运行在一个单独的进程中,并支持web启动应用程序的许多功能。

Java SE 6的更新12 此版本包括备受瞩目的64位Java插件(仅适用于64位浏览器),Windows Server 2008的支持, 和Java和JavaFX应用程序的性能改进。

...........

您可以wikipedia检查,直到最新的更新。

+2

请注意,这可以在这里找到:http://en.wikipedia.org/wiki/Java_version_history。 (我更喜欢简单的链接到维基百科而不是copy'n'paste) – 2010-06-09 06:17:12

0

关于1.5扩展的重要细节在这些slides中涵盖,其中还提供了代码示例。

4

我已经使用JDK 1.4创建了项目。现在我想在我的项目中使用JDK 1.6版本。为此,需要采取哪些步骤。

实际上,您几乎不需要开始使用JDK 1.6运行JDK 1.4应用程序。在几乎所有情况下,您只需要使用JDK 1.6编译器重新编译代码并在JDK 1.6 JVM中运行它。你很可能会遇到的唯一问题是:

  • 如果你的代码使用“枚举”作为标识符,您需要将其更改为其他内容。 enum是一个以Java 1.5开始的关键字。

  • 如果您的代码直接依赖Sun专有/内部类,则可能需要处理未经宣布的API更改。

  • 您可能会发现某些官方API类或方法已被标记为已弃用。

  • 每个发行版都会有一些API实现/行为更改,这些更改可能会影响您的应用程序。这些通常在升级文件中突出显示。

一旦你得到了你的应用程序上的Java 1.6工作,你可以再想想是否以及何时开始使用Java 1.5语言扩展,并在类库新/增强API。

表示我想知道在代码中需要进行哪些更改才能获得JDK 1.6功能。

几乎没有变化要求。但显然,如果你想要或需要使用新功能,你需要改变你的代码来做到这一点。

维基百科有an summary的各种Java版本发生的最重大变化。


UPDATE

截至2014年五月,Java 6中已经“结束lifed”,和Java 8已经发布了一个月左右(无显著提前释放数量剧)。您现在应该考虑转移到至少Java 7,可能是Java 8.

适用相同的原则。重新编译并运行你的回归测试,你很可能会很好。然后开始学习所有关于Java 8语言扩展的知识。

0

1.5中的volatile关键字在行为上存在很大差异 - 远离C++行为的C#行更多。但它只是使代码更安全。所以没有代码改变。

相关问题