2010-06-09 109 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#行更多。但它只是使代碼更安全。所以沒有代碼改變。

相關問題