天天看點

碼出高效:Java開發手冊-第2章(2)

2.2 初識Java

面向對象程式設計思想把所有的有形或無形的事物都看作對象,并給對象賦予相應的屬性和行為,建立對象之間的聯系,使程式員更加立體、形象地解決程式設計領域的問題。面向對象語言的忠實代表是Java 語言,它是一門富有生命力的語言,在最受歡迎的語言排行榜上,多年位居第一。Java 語言是1995 年由Sun 公司首次釋出的。次年Java 開發工具包釋出,即Java Development Kit,簡稱JDK1.0,這是Java 發展的一個重要裡程碑,标志着Java 成為一門獨立的成熟語言。随後,Sun 公司再接再厲釋出了Just-in-time 編譯器,簡稱JIT,不斷進步的JIT 技術使Java 的執行速度接近甚至超過其他進階語言。

JDK 随着時代不斷往前發展。在衆多版本中,最具劃時代影響力的版本是JDK5,項目代号Tiger。Doug Lea 推出的并發包,使Java 如虎添翼,成為工業級語言,在企業服務端得到極為廣泛的應用。随着後續版本的陸續推出,Java 的發展與時俱進,推出了diamond 文法、函數式、子產品化、var 類型推斷等新特性。最新的JDK 版本是JDK11。

JRE(Java Runtime Environment)即Java 運作環境,包括JVM、核心類庫、核心配置工具等。其中JVM(Java Virtual Machine)即Java 虛拟機,它是整個Java 體系的底層支撐平台,把源檔案編譯成平台無關的位元組碼檔案,屏蔽了Java 源代碼與具體平台相關的資訊,是以Java 源代碼不需要額外修改即可跨平台運作。JVM 不僅支撐着Java 語言,還包括Kotlin、Scala、Python 等其他流行語言。其中Kotlin 是Jetbrains 開發的跨平台語言,其文法簡潔、類型安全,可以編譯成位元組碼運作在JVM上,與Java 語言非常友善地進行混合程式設計。1999 年,Sun 公司釋出公開版本的HotSpot,它是目前主流的Java 虛拟機。2006 年,在JavaOne 大會上開源相關核心技術,啟動OpenJDK 項目,逐漸形成了活躍的OpenJDK 社群。在社群的帶動下,Java 生态也随之繁榮,包括AJDK、Spring、Hadoop、Dubbo、JStorm、RocketMQ 等Java 相關解決方案,極大地提升了Java 語言的生産效率。

Java 語言擁有跨平台、分布式、多線程、健壯性等特點,是當下比較主流的進階程式設計語言。它的類庫非常豐富、功能強大、簡單易用,對開發者友好,不僅吸收了C++ 的優點,還摒棄了其難以掌控的多繼承、指針等概念。Java 比較好地實作了面向對象理論,允許開發工程師以優雅的思維方式處理複雜的程式設計場景。

現在我們簡要回顧和總結一下從JDK5 到JDK11 的重要類、特性和重大改變。

JDK5 新特性:foreach 疊代方式、可變參數、枚舉、自動拆裝箱、泛型、注解等重要特性。

JDK6 新特性:Desktop 類和SystemTray 類、使用Compiler API、輕量級HTTPServer API、對腳本語言的支援、Common Annotations 等重要特性。

JDK7 新特性:Switch 支援字元串作為比對條件、泛型類型自動推斷、try-withresources資源關閉技巧、Objects 工具類、ForkJoinPool 等重要類與特性。

JDK8 新特性:接口的預設方法實作與靜态方法、Lambda 表達式、函數式接口、方法與構造函數引用、新的日期與時間API、流式處理等重要特性。

JDK9 新特性:Jigsaw 子產品化項目、簡化程序API、輕量級JSON API、錢和貨币的API、程序改善和鎖機制優化、代碼分段緩存等重要特性。

JDK10 新特性:局部變量的類型推斷、改進GC 和記憶體管理、線程本地握手、備用記憶體裝置上的堆配置設定等重要特性。

JDK11 新特性:JDK11 于2018 年9 月與《碼出高效:Java 開發手冊》同期釋出,JDK11 中删除了Java EE 和 CORBA 子產品,增加基于嵌套的通路控制,支援動态類檔案常量,改進 Aarch64 内聯函數,提供實驗性質的可擴充的低延遲垃圾收集器ZGC等重要特性。

JDK12 新特性:Shenandoah 低暫停時間的GC、Switch 表達式功能增強、G1 收集器的優化。