java 画笔跟swing组件_Java学习教程(基础)--Java版本历史(二)
Java語言自JDK1.0版本以來經(jīng)歷了許多次更新,也在基本程序庫中增加了大量的類別和包。從J2SE 1.4開始,Java語言的變動由 Java Community Process(JCP)管理,JCP使用Java規(guī)范請求(Java Specification Requests,JSRs)來建議和定義對Java平臺內容的新增和修改。Java語言由Java語言規(guī)范(Java Language Specification,JLS)定義,對JLS的更改則根據(jù)JSR 901管理。
除了語言上的變化,多年來Java標準庫(JCL)發(fā)生了巨大的變化,從JDK 1.0中的幾百個類暴增到J2SE 5中的三千多個類。Swing、Java2D等的全新API被加入其中,而許多原本JDK 1.0的類和方法已被棄用。當然,仍然有一些程序可以將Java程序從新版本的Java平臺轉換為較舊版本(例如Java 5.0降轉到1.4)。
Java 7發(fā)布后,Oracle承諾回到以前每兩年發(fā)布一次的發(fā)布周期。但在2013年時,Oracle卻宣布他們將Java 8延遲一年發(fā)表,官方表示是為了修復Java的安全漏洞。
2017年9月,Java平臺的主架構師 Mark Reinhold 發(fā)出提議,要求將Java的功能更新周期從之前的每兩年一個新版本縮減到每六個月一個新版本。該提議獲得了通過,并在提出后不久生效。
Java 8 與 Java 11 為目前提供支持的LTS(長期支持)版本;Java 10 是上一個快速發(fā)布版本,且已不再被支持。2018年9月,隨著 Java 11 的發(fā)布,Java 10 自當日起不再被支持。Oracle 將在 2019 年 1 月前為商業(yè)用途中的 Java 8 長期支持,而針對非商用的更新將繼續(xù)提供,直至 2020 年 12 月;此外,AdoptOpenJDK 也為 Java 8 提供免費更新。針對 Java 11 的長期支持將不再由 Oracle 提供,而是改由 OpenJDK 社區(qū)的 AdoptOpenJDK 提供。
- JDK Alpha 和 Beta
第一個1995年發(fā)布的alpha和beta Java公開版本,API和ABI非常不穩(wěn)定。 支持Java Web瀏覽器被取名為WebRunner。
JDK 1.0
第一個版本于1996年1月23日發(fā)布,叫做為Oak。而真正第一個穩(wěn)定的版本JDK 1.0.2,被稱作Java 。
JDK 1.1
1997年2月19日發(fā)布。新增功能主要包括:
- AWT事件模型大規(guī)模重新編制
- 加入了內部類別
- JavaBeans
- JDBC
- RMI
- 能夠支持自理的反射能力,在運行時不可能有修改。
- 針對 Microsoft Windows 平臺上運作的版本,附帶由Symantec為JavaSoft生產(chǎn)的JIT編譯器
- 支持國際化和Unicode,該功能源自Taligent
J2SE 1.2
1998年12月8日發(fā)布,代號為Playground。 該版本到J2SE 5.0的后續(xù)版本被更名為Java 2,而版本名稱“J2SE”(Java 2平臺,標準版)取代JDK以區(qū)別J2EE(Java 2平臺,企業(yè)版) 和J2ME(Java 2 Platform,Micro Edition)基礎平臺。這是Java的一個非常重要的版本,它將Java平臺的大小增加至原先的三倍,在59個程序包中達到了1520個類。主要增加包括:
strictfp 關鍵字
主類別中集成了Swing圖像化API
首次為Sun提供的JVM配備JIT編譯器
Java plug-in(即 Java Applet)
Java IDL,一個與CORBA互通的接口描述語言實現(xiàn)
Java集合框架
J2SE 1.3
代號為Kestrel。在的版本中最著名的改變包括:
包含了HotSpot JVM(HotSpot JVM第一次被發(fā)布是在1999年4月,名為J2SE 1.2 JVM)
為了支持與CORBA的選擇兼容性而修改了RMI
Java命名和目錄接口(Java Naming and Directory Interface,縮寫JNDI)包含在主程序庫中(先前為擴展組件的形式)
Java Platform Debugger Architecture (JPDA)
JavaSound
用于實現(xiàn)動態(tài)代理的類
J2SE 1.4
代號為Merlin。2002年2月6日發(fā)布了JSR 59,是第一個在JCP下開發(fā)的Java平臺。
主要的變化包括︰
- 語言上的改變assert 關鍵字 (在 JSR 41 中被指定)程序庫的改善,仿照Perl的正則表達式
異常鏈,允許一個異常來封裝原先處于較低級別的異常。支持Internet Protocol version 6 (IPv6)
非阻塞I/O(取名為 Nonblocking Input/Output,NIO)(在 JSR 51 中被指定) - 日志API (在JSR 47中被指定)
- 圖像 I/O API來讀取和寫入圖片,支持JPEG、PNG等格式
- 集成了XML解析器和XSLT處理器(JAXP)(指定在JSR 5和JSR 63)
- 集成安全和加密擴展組件(JCE, JSSE, JAAS)
- 內置了Java Web Start (Java Web Start 在2001年3月第一次被發(fā)布,作為J2SE 1.3的可選組件)
(指定在JSR 56) - 首選項 API (java.util.prefs)
Java 1.4開放支源和安全性更新于2008年10月終止。Oracle客戶的付費的安全性更新也在2013年2月結束。
J2SE 5.0
代號為Tiger。這個在2004年9月30日發(fā)布的版本原本以1.5編號,也就是仍然使用內部版本編號。這個數(shù)字輩改變是為了“更好地反映成熟度、穩(wěn)定性、可擴展性和 J2SE 的安全水準”。這個版本是在JSR 176底下被開發(fā)。
J2SE 5.0在2008年4月8日進入其即將停止公開更新的期間;2009年11月3日正式不公開開放更新。Oracle客戶直到2015年5月都能透過付費的方式獲取更新 。
Tiger增加了若干個重要的新語言功能。
- 泛型(Generics): 為集合提供編譯期間 (靜態(tài)) 類型安全,且不須為大多數(shù)類型轉換 (類型轉換) (規(guī)范在 JSR 14)
- 元數(shù)據(jù)(Metadata): 也稱作注解。讓語言結構(像是類別和方法)能夠用額外的數(shù)據(jù)標記,可以由元數(shù)據(jù)意識工具處理(規(guī)范在 JSR
175) - 自動封裝與解封裝: 在基本的數(shù)據(jù)類型(如 int)和基本的的外覆類別 (如 Integer) 之間能夠自動轉換 (規(guī)范在 JSR 201)
- 枚舉(Enumerations): 以 enum 關鍵字創(chuàng)造出一種類型安全,有排序值的清單(如Day.MONDAY、
Day.TUESDAY 等);以前這只能透過非類型安全的恒定整數(shù)或自行撰寫的類別來達成 (類型安全的枚舉模式) (規(guī)范在JSR 201) - 可變參數(shù)函數(shù)(Varargs):方法的最后一個參數(shù)現(xiàn)在可以用一個類型名稱加上三個點宣告(如:void drawtext(String…
lines));在調用代碼中,類型中參數(shù)里任何的數(shù)字可以被使用,而它們再放在一個數(shù)組來傳遞給方法,或是其它的調用代碼可以傳遞那個類型的數(shù)組 - 強化 for each 循環(huán):for 循環(huán)的語法被用特別的語法擴展了,適用于數(shù)組或 Iterable,用于迭代每個成員,如基本的
- Collection 類別 (規(guī)范在 JSR 201) 改進多線程 Java 程序的運行語義;新的 Java 存儲器模型改善了復雜性,有效性和以前的規(guī)格性能
- 靜態(tài)導入
另外也有以下這些對于基本程序庫的改善:
自動給RMI產(chǎn)生樁模塊
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 最初出現(xiàn)在 Mac OS X 10.4 (Tiger),到了 Mac OS X 10.5 (Leopard)時成為了默認的 Java 版本。版本控制系統(tǒng)的改變
此版本推出了JAVA語言中,一個新的版本控制系統(tǒng),而舊版本控制系統(tǒng)仍然可以在開發(fā)者資源庫中繼續(xù)使用。
這種對應關系持續(xù)維持到以后的版本 (Java 6 = JDK 1.6, Java 7 = JDK 1.7, 以此類推).
Java SE 6
代號為Mustang。版本發(fā)布于2006年12月11日,Sun把原本的名稱“J2SE”改為“Java SE”,然后再從版本號中去掉“.0”,而開發(fā)者內部編號仍然是1.6.0。這個版本是根據(jù)JSR 270開發(fā)的。
在發(fā)展階段,新版本大概每周都發(fā)布包括一些功能增強和漏洞的修復。Beta版本在2006年2月和6月發(fā)布,也就是為什么2006年12月11日變成最終的版本。
本版本包含的主要更改:
- 支持舊的Win9x版本下降;非正式地,Java 6 Update 7是Java的最后一個顯示為在這些版本的Windows上工作的版本。
這被認為是因為在Update 10版本中的主要更改。 - 腳本語言支持(Scripting Language Support)(JSR
223):用于與腳本語言緊密集成的通用API,以及內置的Mozilla JavaScript Rhino集成。 - 核心平臺和Swing性能顯著的改進。
- 透過JAX-WS改善的網(wǎng)絡服務支持(JSR 224).
- 支持JDBC 4.0 (JSR 221).
- Java編譯器API (JSR 199):允許Java程序以寫程序的方式選擇和調用Java編譯器的API。
- 將JAXB升級到版本2.0:包括StAX解析器的集成。
- 支持pluggable annotations (JSR 269).
- 改善許多GUI,像是SwingWorker在API中的集成,表格排序和篩選,以及真正的Swing雙緩沖(消除模糊區(qū)域效果)。
Java 6可以安裝到在64位(Core 2 Duo和更高版本)處理器機器上運行的Mac OS X 10.5(Leopard)。 運行Mac OS X 10.6(Snow Leopard)的32位和64位機器也支持Java 6。
Java 6在2013年2月到了它支持生命周期的尾聲,此時所有公開更新(包括安全更新)都計劃停止。Oracle在2013年3月和4月發(fā)布了另外兩個對Java 6的更新,修補了一些安全漏洞。
Java 6 更新
JAVA 6發(fā)布后,Sun和后來的Oracle之后,發(fā)布了幾個更新,而不更改任何公開的API,增強了最終用戶的可用性或固定的漏洞。自2016 年1月,JAVA 6和其它更舊的版本已無法從Oracle下載。
Java SE 7
JAVA 7 (代號Dolphin) 是一個重大的更新,在 2011年7月7日亮相,并在2011年7月28日開放給開發(fā)者使用。發(fā)展時期被分類成十三的重要階段,最后一個階段在2011年6月6日完成。平均來看,每個里程碑各有8個版本(就是一般包括的功能增強和漏洞修復) 。在 OpenJDK 7 項目中的功能清單中列出了很多的改變。
在 Java 7 中新增的功能包括:
- JVM本身對動態(tài)語言的支持:新的invokedynamic字節(jié)碼指令(JSR-292),與多語言虛擬機(Multi Language
Virtual Machine)原型 - 64位指針壓縮(Java 6 中可以使用 XX:+UseCompressedOops 開啟)
- 一些語言方面的小改變(在Coin項目下的一個小群體):
- 在switch中使用字符串類型
- try語句中的自動資源管理
- 針對泛型實例的創(chuàng)建而改善的類型推論,被稱為鉆石操作符<>
- 簡化了varargs方法的聲明
- 二進制整數(shù)字面值
- 允許在數(shù)值字面值中加入下劃線
- 允許在一個 catch 中捕捉多個類型的異常,并使用改進的類型檢查重新拋出異常
- JSR 166下的并發(fā)實用工具
- 新的文件 I/O 程序庫 (JSR 203 定義)
增加多重文件的支持、文件原始數(shù)據(jù)和符號鏈接。新的包為:java.nio.file、java.nio.file.attribute和java.nio.file.spi - 使用 Timsort 來為集合與數(shù)組排序,取代歸并排序
- 對橢圓曲線加密算法增加標準庫級別的支持
- 一個給Java 2D的XRender傳遞途徑,改進了現(xiàn)代GPUs特有的功能的處理
- 用于圖形功能的新平臺API(最初在版本6u10中的實現(xiàn)為不支持的API)
- 增強了對新網(wǎng)絡通信協(xié)議(包括SCTP和Sockets Direct Protocol)的標準庫級別的支持
- 更新對XML和Unicode的支持,以符合最新標準
- Java部署規(guī)則集
Lambda(Java 對匿名函數(shù)的實現(xiàn))、Jigsaw(Java 對模塊化的實現(xiàn)),以及其它一些 Coin 項目中的內容在 Java 7 里被放棄,而轉為Java 8一部分(其中 Jigsaw 直至 Java 9 才得到實現(xiàn))。
從2012年4月開始,Java 7 一直是http://java.com的默認下載版本,直到 Java 8 發(fā)布。
Oracle 在每季度發(fā)布 Java 7 家族每季的公開更新,至2015年4月產(chǎn)品支持生命周期結束時停止。
Java SE 8
Java 8 于2014年3月18日發(fā)布,包含了一些原本被項目在 Java 7卻延遲的功能。
這些功能改進在 JDK Enhancement Proposals (JEPs) 的指導下得到了集成。
- JSR 335,JEP 126:Lambda項目中提供的語言級匿名函數(shù)支持(官方稱為 lambda 表達式,非官方亦稱閉包);添加默認方法(虛擬擴展組件方法),以允許在不破壞兼容性的情況下向現(xiàn)有接口中新增方法。Java社區(qū)中曾經(jīng)有過針對是否要加入 lambda
表達式支持的辯論。稍后Sun公司宣布 lambda 表達式將會包含在Java中,并請社區(qū)協(xié)助改善該特性。支持lambda表達式使得針對流中元素的函數(shù)式操作成為可能,由此可以實現(xiàn)由MapReduce啟發(fā)的函數(shù)式集合操作。默認方法允許API作者添加新的方法到現(xiàn)有接口上,而不會破壞舊的代碼中。默認方法還使得多重繼承的行為(不是狀態(tài))成為可能,但默認方法的設計意圖并非在此。 - JSR 223,JEP 174:Nashorn項目,一個 JavaScript 運行時,它允許開發(fā)人員在應用程序中嵌入
JavaScript 代碼 - JSR 308,JEP 104:在 Java 類型上的注解
- 無符號整數(shù)算術
- JSR 337,JEP 120:重復注解
- JSR 310,JEP 150:日期和時間 API
- JEP 178:靜態(tài)鏈接JNI 程序庫
- JEP 153:執(zhí)行 JavaFX 應用程序(直接執(zhí)行 JavaFX 的應用程序的 JAR 包)
- JEP 122:移除了虛擬機內存管理中的永久世代
Java 8 不再支持 Windows XP ,但JDK 8 第 25 版更新仍然可以在 Windows XP安裝和運行。先前JDK 8的更新版本可以在XP中運行,但必須通過強制解壓安裝程序來進行安裝。
2014年10月后,Java 8 成為官方網(wǎng)站上默認的下載版本。
Java SE 9
在2011年的JavaOne中,Oracle討論了一些他們希望在2016年于Java 9中發(fā)布的功能。Java 9 應當對千兆級堆擁有更好的支持,同時能夠更好地集成本機代碼,且擁有新的垃圾收集器G1和能夠自我調節(jié)的JVM。2016年初,Java 9 的發(fā)布被重新定為2017年3月;2017年3月時,發(fā)布日期又被拖延至2017年7月;后來又因Java執(zhí)行委員會對Jigsaw項目實現(xiàn)的分歧而最終定為2017年9月21日,在此期間Oracle回應了部分疑問,并對一些重要的技術問題進行了修正。在2017年6月的最后幾天,JCP對擬議的模塊系統(tǒng)方案達成了共識。
- JSR 376:在Jigsaw項目中將JDK模塊化(參見Java平臺模塊系統(tǒng)條目)
- JEP 222:jshell:Java Shell(一個 Java 交互式頂層構件)
- JEP 295:AOT編譯(通過 Graal VM 實現(xiàn))
- JEP 268:XML Catalogs
- JEP 266:更多的并發(fā)更新。包含響應式流的Java實現(xiàn),及其部分替代品java.util.concurrent.Flow。
- JEP 193:變量句柄:定義一個標準方法來調用java.util.concurrent.atomic和sun.misc.Unsafe操作的等價物。
- JEP 282:jlink:Java鏈接器。該工具可以為模塊生成一個包含了其所有依賴項的自定義運行時映像,同時允許生成一個包括運行它的JVM的可執(zhí)行文件。
- JavaDB被移出JDK
- JEP 263:高DPI圖像:自動縮放與尺寸自適應。
Java 9 的首個發(fā)布候選版于2017年8月9日發(fā)布,首個穩(wěn)定版于2017年9月21日發(fā)布。
Java SE 10
OpenJDK 10 于2018年3月20日發(fā)布。此次更新包含以下12個新特性:
- JEP 286:局部變量類型推斷
- JEP 317:實驗性的基于Java的JIT編譯器。這是 Linux x64 下 Graal 動態(tài)編譯器的集成。
- JEP 310:應用程序類級別數(shù)據(jù)共享
- JEP 322:基于時間的版本命名
- JEP 307:適用于G1的多線程完全垃圾回收
- JEP 304:垃圾回收器接口
- JEP 314:更多的Unicode語言標簽擴展
- JEP 319:內置根證書
- JEP 312:線程本地握手
- JEP 316:在可選的內存設備上申請堆內存空間
- JEP 313:刪除本地代碼頭文件生成器javah
- JEP 296:將所有JDK分支集成到同一個版本庫中
Java SE 11
JDK 11 于2018年9月25日發(fā)布。Java 11 包含如下更新:
- JEP 309:動態(tài)類文件常量
- JEP 318:Epsilon:無操作垃圾收集器
- JEP 323:lambda參數(shù)的局部變量語法
- JEP 331:低開銷堆分析
- JEP 321:HTTP Client
- JEP 332:支持 TLS 1.3
- JEP 328:添加Java飛行記錄器(JFR),其用于創(chuàng)建性能分析記錄
- JEP 333:添加ZGC(一個可擴展的低延遲垃圾收集器)
- JavaFX、Java EE、CORBA 被移出 JDK
- JEP 335:棄用 Nashorn JavaScript 引擎
Java SE 12
- JDK 12 于2019年3月19日發(fā)布。該版本包含較多新特性,例如:
- JEP 189:Shenandoah:一個實驗性的低延遲垃圾收集器
- JEP 230:細粒度性能評審包
- JEP 325:Switch 表達式(預覽階段)
- JEP 334:JVM Constants API
- JEP 340:僅保留一個 AArch64 平臺的移植
- JEP 341:默認類數(shù)據(jù)共享歸檔
- JEP 344:針對G1,提供可中止的混合垃圾收集
- JEP 346:針對G1,及時釋放已申請但未使用的內存
Java SE 13
- JDK 13 于2019年9月17日發(fā)布。該版本包含以下新特性以及很多的強化和很多的漏洞修補。
- JEP-350: 動態(tài) CDS 歸檔
- JEP-351: ZGC: 取消提交未使用存儲器
- JEP-353: 重新實現(xiàn)舊版 Socket API
- JEP-354: Switch 表達式(預覽階段)
- JEP-355: 文本框(預覽階段)
都看到這了,點個贊再走唄……嘿嘿嘿
總結
以上是生活随笔為你收集整理的java 画笔跟swing组件_Java学习教程(基础)--Java版本历史(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql subindex_mssql
- 下一篇: java impala_Java实现im