從頭再學Java——Java核心技術卷I讀書筆記1
第一章 Java程式設計概述
無論是以前本科時學習的課程還是後來跟著網上教程學做的Java Web專案,實際上都對java用到的概念和細節有很多模糊的地方,或者是對背後的底層原理不是很懂。這次打算通過閱讀Java核心技術並輔以自己的理解以及查閱的其他資料整理成讀書筆記記錄下來以把Java從底層原理到實現細節詳細的學習一遍。
1.1 Java程式設計平臺
Java語言具有令人賞心悅目的語法和易於理解的語義。同時Java是一個完整的平臺,有一個龐大的庫,庫中包含了很多可重用的程式碼和一個提供諸如安全性、跨作業系統的可移植性以及自動垃圾收集等服務的執行環境。
1.2 Java的12個關鍵術語
1.簡單性
Java在設計之初儘可能的接近C++,但提出了C++中許多很少使用、難以理解、易混淆的特性(如:標頭檔案、指標、結構、聯合、操作符過載、虛基類)。即Java語法是C++語法的一個“純淨”版本,不過設計者沒有清除C++中所有不適當的特性(如:switch)
同時,簡單性還指Java在設計之初的直譯器以及類支援較小。現在隨著不斷的擴充套件,類庫已經相當龐大,具有最初設計目的(嵌入式消費電子裝置)和較小類庫的則是JavaME版本(Java Micro Edition)。
2.面向物件
面向物件設計指將重點放在資料(將其物件化)再考慮這個資料在事件中的行為。
舉個例子:如果在程式中需要實現 a add b這樣一個運算步驟。面向物件設計需要先建立一個類和類中方法
,然後由該類的例項化物件呼叫方法,即:a.add(b);這個步驟是物件a的行為。
面向過程設計則關注程式中的每一個步驟,將步驟設計為函式
直接使用:add(a,b)。
相比於面向過程,面向物件需要例項化物件,因此效能會差一些。但是具有使用的靈活度高、擴充套件性強的特點。同時由於介面的特點,可以設計出高內聚低耦合的系統。
3.分散式
方便在程式中處理HTTP、FTP之類的TCP/IP協議。
4.健壯性
Java的健壯性體現在對問題檢測和問題的處理上,包括編譯器的早期問題檢測和執行時的動態檢測。
5.安全性
分為兩方面:
首先是高階特性-平臺安全性,Java的平臺基於一個動態、可擴充套件、標準、可操作的安全架構。內建加密、身份驗證、授權、祕鑰等基礎架構確保安全特性。
其次是低階特性-Java的編譯器與虛擬機器的內建語言安全特性
*資料型別管理-滿足型別轉換規則才能轉換成功
*記憶體自動管理-垃圾回收、去除指標使用引用避免記憶體洩漏
*位元組碼校驗-一系列位元組碼校驗規則
*安全的類載入-類載入機制
6.體系結構中立
Java語言在編譯時會先生成一個
平臺無關
的位元組碼檔案。在執行時將位元組碼檔案交由對應平臺的JVM進行解釋執行
因此,在解釋執行時的速度會低於編譯型語言直接執行編譯之後的機器碼的速度。不過虛擬機器存在一個即時編譯選項可以將執行最頻繁的位元組碼序列翻譯成機器碼以加速執行。
7.可移植性
Java的基本資料型別大小固定,相關運算有明確說明而
不依賴於平臺去實現
。所以在程式編寫時可以不考慮底層作業系統進而具有強大的可移植性。
8.解釋型
Java並非是編譯型語言,而是最終需要位元組碼在不同JVM上進行解釋執行。
9.高效能
即時編譯器可以監控經常執行的程式碼並優化以提高執行速度。同時還具有內聯的優化功能。
10.多執行緒
Java是第一個支援併發程式設計的主流語言,多執行緒的設計可以讓執行緒輪流執行而不用擔心某種阻塞(如I/O)使整個系統卡住。
11.動態性
允許將某些程式碼新增到正在執行的程式中去。