回覆列表
  • 1 # 新時代的IT農民工
    現在企業開發一般都用的是jdk8。我的建議,當然也是我們公司目前的情況, 選擇開發環境和部署環境,關鍵還要看是做專案還是做平臺, 做專案的話,根據專案實際情況,從非功能性需求,(可靠性,穩定性,可擴充套件性,可移植性,效能,易用性,開發人員技術,可用性,可維護性等多方面考慮),選擇開發環境和部署環境也就屬於非功能性需求的一部分,其實已經可以決定了 做平臺的話,當然就是長遠來考慮,穩定性和可靠算是最主要的考慮因素,當然做平臺就會考慮支援從1.5到最新版本都支援,這也就不存在選擇的問題,而是通用性的問題。

    JDK 11 目前出現了4個JEP,計劃於 2018 年 9 月釋出。

    JEP 309: 動態類檔案常量。JEP 318: 低開銷垃圾收集器 Epsilon。JEP 320: 移除 Java EE 和 CORBA 模組。JEP 323: Lambda 引數的本地變數語法。

    JDK 10

    JDK 10 按計劃將於2018年3月20日釋出。新特性有:

    JEP 286: 區域性變數的型別推導。該特性在社群討論了很久並做了調查,可檢視 JEP 286 調查結果。JEP 296: 將 JDK 的多個程式碼倉庫合併到一個儲存庫中。JEP 304: 垃圾收集器介面。透過引入一個乾淨的垃圾收集器(GC)介面,改善不同垃圾收集器的原始碼隔離性。JEP 307: 向 G1 引入並行 Full GC。JEP 310: 應用類資料共享。為改善啟動和佔用空間,在現有的類資料共享(“CDS”)功能上再次拓展,以允許應用類放置在共享存檔中。JEP 312: 執行緒區域性管控。允許停止單個執行緒,而不是隻能啟用或停止所有執行緒。JEP 313: 移除 Native-Header Generation Tool (javah)JEP 314: 額外的 Unicode 語言標籤擴充套件。包括:cu (貨幣型別)、fw (每週第一天為星期幾)、rg (區域覆蓋)、tz (時區) 等。JEP 316: 在備用記憶體裝置上分配堆記憶體。允許 HotSpot 虛擬機器在備用記憶體裝置上分配 Java 物件堆。JEP 317: 基於 Java 的 JIT 編譯器(試驗版本)。JEP 319: 根證書。開源 Java SE Root CA 程式中的根證書。JEP 322: 基於時間的版本釋出模式。“Feature releases” 版本將包含新特性,“Update releases” 版本僅修復 Bug 。

    JDK 9

    JDK 9 於2017年9月21日釋出。新特性有:

    模組化 —— Jigsaw互動式命令列 —— JShell預設的垃圾回收器 —— G1程序操作改進競爭鎖的效能最佳化分段程式碼快取最佳化字串佔用空間

    這個版本中最引人注目的時候模組化,透過這個工作,可以構建更小的執行時環境,只需要包括Java平臺中任務依賴的部分。這可以更好地適應雲端的開發。

    具體的特性包括:

    JEP 102: 改善了控制和管理作業系統程序的 API。JEP 110: 定義了一個新的 Http 客戶端 API,它實現了 和 ,並且可以替代遺留的 API。該 API 將會以一個 incubator 模組的形式進行交付。JEP 143: 提高競爭 Java 物件的監視效能。JEP 158: 統一 JVM 的日誌。JEP 165: 透過支援執行時管理來增加對 JVM 編譯器的管理。JEP 193: 對變數處理的改進。JEP 197: 將程式碼快取劃分成不同的段。JEP 200: 採用 Java 平臺模組化系統(Java Platform Module System,JPMS)對JDK進行模組化。JEP 201: 原始碼模組化。JEP 211: 在 import 語句中 省略 的警告。JEP 212: 解決 lint 和 doclint 警告。JEP 213: Project Coin 的改變JEP 214: 移除 JDK 8 中 GC 組合器的廢棄說明。JEP 215: 在 javac 中實現了一個新的型別檢測策略。JEP 216: 正確地處理匯入宣告。JEP 217: 註解流水線 2.0。JEP 219: 定義了資料傳輸層安全(Datagram Transport Layer Security, DTLS)API。JEP 220: 模組化執行時映象。JEP 221: 簡化 API。JEP 222: jshell - Java 中的互動式命令列。JEP 223: 新的版本字串模式。JEP 224: 增強了 javadoc 工具來生成 HTML5 標記。JEP 225: 增加了 javadoc 搜尋。JEP 226: UTF-8 屬性檔案資源的Bundle相關變化。JEP 227: Unicode 7.0。JEP 228: 增加更多可診斷的命令。JEP 229: 將預設的秘鑰庫從 JKS 替換為 PKCS12。JEP 231: 移除執行時 JRE 版本選擇。JEP 232: 增強了安全相關應用的效能。JEP 233: 開發了一個工具來自動測試執行時編譯器。JEP 235: 增加關於 javac 生成類檔案屬性的 測試。JEP 236: 定義瞭解析 API 來支援 Nashorn 的 ECMAScript 抽象語法樹。JEP 237: Linux/AArch64 埠相關。JEP 238: 多版本 JAR 檔案。JEP 240: 移除 JVM 的 TI hprof 客戶端。JEP 241: 移除 jhat 工具。JEP 243: 提供 Java 語言級的 JVM 編譯介面。JEP 244: TLS 應用層協議協商。JEP 245: 驗證 JVM 命令列標誌引數。JEP 246: 利用 CPU 指令提升 GHASH 和 RSAd 的效能。JEP 247: 對老平臺版本的編譯支援。JEP 248: G1 作為預設的垃圾回收器。JEP 249: 基於 TLS 實現 OCSP Stapling。JEP 250: 在類資料分享(CDS)歸檔中儲存 interned 字串。JEP 251: 多方案映象。JEP 252: 預設使用 CLDR Locale Data。JEP 253: 為 JavaFX UI 控制 和 CSS API 的模組化做準備。JEP 254: 採用一個空間更加高效的 String 內部表示。JEP 255: 合併 Xerces 2.11.0 中的更新。JEP 256: BeanInfo 註解調整。JEP 257: 更新 JavaFX/Media 中 GStreamer 的版本。JEP 258: 使用 HarfBuzz 作為字型佈局引擎。JEP 259: 定義了一個高效標準的 Stack-Walking API。JEP 260: 封裝大部分的內部 API。JEP 261: 實現模組化系統。JEP 262: 支援 TIFF 影象 I/O。JEP 263: 實現 Windows 和 Linux 高解析度影象介面。JEP 264: 平臺日誌 API 和 服務。JEP 265: Java 2D 使用 Marlin Graphics Renderer。JEP 266: 併發相關的一些更新。JEP 267: 支援 Unicode 8.0。JEP 268: 支援 XML 目錄。JEP 269: 增加一些集合類建立的工廠方法。JEP 270: 為臨界區預留棧的某些區域。JEP 271: 統一 GC 日誌。JEP 272: 增加特定平臺的桌面特性。JEP 273: Deterministic Random Bit Generator (DRBG) 的實現。JEP 274: 增強方法處理器。JEP 275: Java 應用模組化打包。JEP 276: 語言定義物件模型的動態連結。JEP 277: 改善 Deprecation。JEP 278: 為 G1 中的巨大物件增加測試。JEP 279: 改進測試故障排除。JEP 280: 指示字串串聯。JEP 281: HotSpot C++ 單元測試框架。JEP 282: Java聯結器 jlink。JEP 283: 在 Linux 上支援 GTK 3。JEP 284: 新的 HotSpot 構建系統。JEP 285: 自旋等待提示。JEP 287: 實現 SHA-3 Hash 演算法。JEP 288: 禁止 SHA-1 驗證。JEP 289: 廢棄 Applet API。JEP 290: 過濾輸入的序列化資料。JEP 291: 廢棄 Concurrent Mark Sweep (CMS) 垃圾收集器。JEP 292: 在 Nashorn 中支援 ECMAScript 6 特徵。JEP 294: Linux/s390x 埠。JEP 295: 提前編譯。JEP 297: 統一 arm32/arm64 埠。JEP 298: 移除過時的例子。JEP 299: 重新組織文件。

    JDK 8

    JDK 8 於2014年3月14號釋出。從 Java 8 開始開發代號已經棄用了。新特性有:

    Lambda 表示式Pipelines 和 StreamsDate 和 Time APIDefault 方法Type 註解Nashhorn JavaScript 引擎併發計數器Parallel 操作移除 PermGen ErrorTLS SNI

    第三個有里程碑意義的 Java 版本。其中最引人注目的便是 Lambda 表示式了,從此 Java 語言原生提供了函數語言程式設計能力。Java 8 更加適應海量雲計算的需要。

    具體的特性包括:

    JEP 117: 移除註解處理工具(Annotation-Processing Tool,apt)。JEP 124: 增強證書撤銷檢查 API。JEP 130: 實現 SHA-224 訊息摘要演算法。JEP 131: 在 64-bit Windows 中支援 PKCS#11。JEP 112: Charset 實現改善。JEP 129: 實現 NSA Suite B 加密演算法。JEP 105: DocTree API。JEP 106: 擴充套件 API 來支援 javadoc 的訪問。JEP 113: 在 JDK 的 Kerberos 5 中新增 MS-SFU 擴充套件。JEP 114: TLS Server Name Indication (SNI) 擴充套件。JEP 121: 提供更強的 Password-Based-Encryption (PBE) 演算法實現。JEP 122: 移除永久帶(Permanent Generation)。JEP 127: 改善 Locale Data Packaging,並且採用 Unicode CLDR Data。JEP 128: Unicode BCP 47 本地匹配。JEP 133: 支援 Unicode 6.2。JEP 136: 增強錯誤驗證。JEP 153: 啟動 JavaFX 應用。JEP 177: 最佳化 。JEP 103: 並行陣列排序。JEP 135: Base64 編碼和解碼。JEP 138: 基於 Autoconf 的自動構建系統。JEP 139: 增強 javac 來提高構建速度。JEP 142: 減少對於特定域的快取記憶體的爭奪。JEP 147: 減少類元資料佔用。JEP 148: 支援小虛擬機器(不超過3M)的建立。JEP 149: 減少核心庫的記憶體使用。JEP 150: 新的 Date 和 Time API。JEP 160: lambda 函式表示式。JEP 164: 利用 CPU 指令進行 AES 加密。JEP 166: 針對JKS、JCEKS、PKCS12秘鑰儲存的修改。JEP 170: JDBC 4.2。JEP 172: DocLint。JEP 173: 放棄一些很少使用的 GC 組合。JEP 101: 泛華目標型別介面。JEP 104: 在 Java 型別上加註解。JEP 107: 增加集合的批次資料操作。JEP 109: 在核心庫中增加 Lambda 表示式。JEP 115: 認證加密的密碼套件。JEP 118: 在執行時訪問引數名稱。JEP 119: 透過反射實現 API。JEP 120: 重複註解。JEP 123: 可配置的安全隨機數生成。JEP 126: lambda 表示式和虛擬擴充套件方法。JEP 140: 限制的 doPrivileged。JEP 155: 併發庫更新。JEP 161: 緊湊版本。JEP 162: 為模組化做準備。JEP 171: 在 中增加三個記憶體排序相關的指令。JEP 174: Nashorn JavaScript 引擎。JEP 176: 提供呼叫者敏感的檢測機制。JEP 178: 靜態連結的 jni 庫。JEP 179: JDK API 的文件的支援和穩定。JEP 180: 對於頻繁衝突的 HashMap 使用平衡樹。JEP 184: HTTP URL的許可權。JEP 185: 限制外部 XML 資源的獲取。

    JDK 7

    開發代號是 Dolphin(海豚),於2011年7月28日發行。新特性有:

    語句塊中允許以字串作為分支條件;在建立泛型物件時應用型別推斷;在一個語句塊中捕獲多種異常;支援動態語言;支援 ;引入 Java NIO.2 開發包;數值型別可以用2進位制字串表示,並且可以在字串表示中新增下劃線;鑽石型語法; 值的自動處理。

    這個版本中的主要的特性是 NIO2 和 Fork/Join 併發包,Java 虛擬機器的穩定性真正做到的工業級,成為一個計算平臺而服務於全世界。

    JDK 6

    開發代號為 Mustang(Mustang),於2006年12月11日發行。新特性有:

    支援指令碼語言;引入 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;做了很多最佳化。

    這個語言語法改進不多,但在虛擬機器內部做了大量的改進,成為一個相當成熟穩定的版本,時至今日國內的很多公司依然以 Java6 作為主要 Java 開發版本來使用。

    同年 Sun 公司做出一個偉大的決定,將 Java 開源。OpenJDK 從 Sun JDK 1.7 版本分支出去,成為今天 OpenJDK 的基礎。

    JDK 5

    開發代號為Tiger(老虎),於2004年9月30日發行。新特性包有:

    引入泛型;增強迴圈,可以使用迭代方式;自動裝箱與自動拆箱;型別安全的列舉;可變引數;靜態引入;元資料(註解);引入 Instrumentation。

    Sun 不再採用 J2SE, J2EE 這種命名方式,而使用 Java SE 5, Java EE 5 這樣的名稱。

    Java 5 是第二個里程碑式的版本。Java 語言語法發生很大的變化,如註解 (Annotation),裝箱 (Autoboxing),泛型 (Generic),列舉 (Enum),foreach 等被加入,提供了 java.util.concurrent 併發包。

    Java 5 對於 Java 語言的推動是巨大的,特別是註解的加入,使得語言定義靈活了很多,程式設計師可以寫出更加符合領域定義的描述性程式。

    JDK 1.4

    開發代號為 Merlin(隼),於2004年2月06日發行(首次在JCP下發行)。新特性有:

    XML 處理;Java 列印服務;引入 Logging API;引入 Java Web Start;引入 JDBC 3.0 API;引入斷言;引入 Preferences API;引入鏈式異常處理;支援 IPv6;支援正則表示式;引入 Image I/O slot machine API。

    Java 語言真正走向成熟,提供了非常完備的語言特性,如 NIO,正則表示式,XML 處理器等。

    同年微軟的.NET 框架釋出,兩者開始了為期十幾年的暗自競爭。從語言特性上來說,.NET 後發先至,一直處於優勢。但 Java 依賴良好的開發者生態,絕大多數大型軟體公司的使用者眾多和不斷貢獻,以及對 Linux 作業系統良好的支援,漸漸的在伺服器端獲得優勢地位。

    JDK 1.3

    開發代號為 Kestrel(紅隼),於2000年5月08日發行。新特性有:

    引入Java Sound API;jar 檔案索引;對 Java 的各個方面都做了大量最佳化和增強。

    J2EE 中的 Servlet 規範獲得了極大的成功,伴隨著網際網路的興起,和瀏覽器直接透過 HTTP 協議互動的 Servlet,和眾多的 MVC 框架,成為 Web1.0 的網紅。

    JDK 1.2

    開發代號為 Playground(操場),於1998年12月8日發行。新特性有:

    引入集合(Collection)框架;對字串常量做記憶體對映;引入 JIT(Just In Time) 編譯器;引入對打包的 Java 檔案進行數字簽名;引入控制授權訪問系統資源的策略工具;引入 JFC(Java Foundation Classes),包括 Swing 1.0、拖放和 Java 2D 類庫;引入 Java 外掛;在 JDBC 中引入可滾動結果集、BLOB、CLOB、批次更新和使用者自定義型別;在 Applet 中新增聲音支援。

    Java 第一個里程碑式的版本。JIT(Just in time)編譯器技術,使得語言的可遷移性和執行效率達到最優的平衡,同時 Collections 集合類設計優良,在企業應用開發中迅速得到了廣泛使用。

    Sun 公司把 Java 技術體系分成三個方向,分別是 J2SE(面向桌面和通用應用開發),J2EE(面向企業級應用開發),J2ME(面向移動終端開發)。這個分類影響非常久遠,體現出主流語言設計者的思想:針對於不同的應用領域,在形態,API 集合等進行劃分。

    JDK 1.1

    於 1997年2月19日發行,新特性有:

    引入JDBC(Java Database Connectivity);支援內部類;引入Java Bean;引入RMI(Remote Method Invocation);引入反射(僅用於內省)。

    Java 語言的基本形態基本確定了,比如反射 (reflection), JavaBean, 介面和類的關係等等,一直到今天都保持一致。然而,Java 最初的一些目標,如在瀏覽器中執行 Applet,以及跨平臺的圖形介面 Awt 很快遭遇到負面的評價。

    JDK 1.0

    開發代號為Oak(橡樹),於1996年1月23發行。特點有:

    提供了一個解釋執行的 Java 虛擬機器;Applet 能在 Mozilla 瀏覽器中執行。

    Java 的 Applet 能在 Mozilla 瀏覽器中執行,被看作是未來的網際網路語言。

    起源

    Java 語言源於 1991 年 Sun 公司 James Gosling 領導的的 Ork 專案,1995 年 Sun 公司正式起名為 Java,並提出“Write once, Run anywhere"的口號。

  • 2 # 青盟日誌

    jdk8,oracle官網對8的update也是最積極的。

    選擇哪個版本,當然要選擇最成熟的。

  • 中秋節和大豐收的關聯?
  • 三項機制具體內容包括哪些?