Java 概述
- 2021 年 1 月 26 日
- 筆記
1. 什麼是Java
什麼是 Java
- Java是一門面向對象程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。
- Java語言作為靜態面向對象程式語言的代表,極好地實現了面向對象理論,允許程式設計師以優雅的思維方式進行複雜的編程 。
- Java 是一個完整的平台,有一個龐大的庫,其中包含了很多可重用的程式碼,以及一個提供諸如安全性、跨作業系統的可移植性 以及自動垃圾收集等服務的執行環境。
2. jdk1.5之後的三大版本
jdk1.5之後的三大版本
- Java SE(J2SE,Java 2 Platform Standard Edition,標準版)
Java SE 以前稱為 J2SE。它允許開發和部署在桌面、伺服器、嵌入式環境和實時環境中使用的 Java 應用程式。Java SE 包含了支援 Java Web 服務開發的類,並為Java EE和Java ME提供基礎。 - Java EE(J2EE,Java 2 Platform Enterprise Edition,企業版)
Java EE 以前稱為 J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的伺服器端Java 應用程式。Java EE 是在 Java SE 的基礎上構建的,它提供 Web 服務、組件模型、管理和通訊 API,可以用來實現企業級的面向服務體系結構(service-oriented architecture,SOA)和 Web2.0應用程式。2018年2月,Eclipse 宣布正式將 JavaEE 更名為 JakartaEE - Java ME(J2ME,Java 2 Platform Micro Edition,微型版)
Java ME 以前稱為 J2ME。Java ME 為在移動設備和嵌入式設備(比如手機、PDA、電視機頂盒和印表機)上運行的應用程式提供一個健壯且靈活的環境。Java ME 包括靈活的用戶介面、健壯的安全模型、許多內置的網路協議以及對可以動態下載的連網和離線應用程式的豐富支援。基於 Java ME 規範的應用程式只需編寫一次,就可以用於許多設備,而且可以利用每個設備的本機功能。
3. JVM、JRE和JDK的關係
JVM、JRE和JDK的關係
- JVM
Java Virtual Machine是Java虛擬機,Java程式需要運行在虛擬機上,不同的平台有自己的虛擬機,因此Java語言可以實現跨平台。 - JRE
Java Runtime Environment包括Java虛擬機和Java程式所需的核心類庫等。核心類庫主要是java.lang包:包含了運行Java程式必不可少的系統類,如基本數據類型、基本數學函數、字元串處理、執行緒、異常處理類等,系統預設載入這個包 - JDK
Java Development Kit是提供給Java開發人員使用的,其中包含了Java的開發工具,也包括了JRE。所以安裝了JDK,就無需再單獨安裝JRE了。其中的開發工具:編譯工具(javac.exe),打包工具(jar.exe)等
4. 什麼是跨平台性?原理是什麼
什麼是跨平台性?原理是什麼
- 跨平台性,是指java語言編寫的程式,一次編譯後,可以在多個系統平台上運行。
- 實現原理:Java程式是通過java虛擬機在系統平台上運行的,只要該系統可以安裝相應的java虛擬機,該系統就可以運行java程式。
5. Java語言有哪些特點
Java語言有哪些特點
- 簡單性(Java語言的語法與C語言和C++語言很接近)
- 面向對象(封裝,繼承,多態)
- 分散式
- 健壯性
- 安全性
- 體系結構中立
- 可移植性
- 解釋型
- 高性能
- 多執行緒
- 動態性
6. 什麼是位元組碼?採用位元組碼的最大好處是什麼
什麼是位元組碼?採用位元組碼的最大好處是什麼
- 位元組碼:Java源程式碼經過虛擬機編譯器編譯後產生的文件(即擴展為.class的文件),它不面向任何特定的處理器,只面向虛擬機。
- 採用位元組碼的好處:
Java語言通過位元組碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。所以Java程式運行時比較高效,
而且,由於位元組碼並不專對一種特定的機器,因此,Java程式無須重新編譯便可在多種不同的電腦上運行。 - java中的編譯器和解釋器:
Java中引入了虛擬機的概念,即在機器和編譯程式之間加入了一層抽象的虛擬機器。這台虛擬的機器在任何平台上都提供給編譯程式一個的共同的介面。編譯程式只需要面向虛擬機,生成虛擬機能夠理解的程式碼,然後由解釋器來將虛擬機程式碼轉換為特定系統的機器碼執行。在Java中,這種供虛擬機理解的程式碼叫做位元組碼(即擴展為.class的文件),它不面向任何特定的處理器,只面向虛擬機。每一種平台的解釋器是不同的,但是實現的虛擬機是相同的。Java源程式經過編譯器編譯後變成位元組碼,位元組碼由虛擬機解釋執行,虛擬機將每一條要執行的位元組碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然後在特定的機器上運行,這就是上面提到的Java的特點的編譯與解釋並存的解釋。
7. 什麼是Java程式的主類?應用程式和小程式的主類有何不同?
什麼是Java程式的主類?應用程式和小程式的主類有何不同?
- 一個程式中可以有多個類,但只能有一個類是主類。在Java應用程式中,這個主類是指包含main()方法的類。
- 而在Java小程式中,這個主類是一個繼承自系統類JApplet或Applet的子類。應用程式的主類不一定要求是public類,但小程式的主類要求必須是public類。主類是Java程式執行的入口點。
- 應用程式是從主執行緒啟動(也就是main()方法)。applet小程式沒有main方法,主要是嵌在瀏覽器頁面上運行(調用init()執行緒或者run()來啟動),嵌入瀏覽器這點跟flash的小遊戲類似。
8. Java和C++的區別
Java和C++的區別
- 都是面向對象的語言,都支援封裝、繼承和多態
- Java不提供指針來直接訪問記憶體,程式記憶體更加安全
- Java的類是單繼承的,C++支援多重繼承;雖然Java的類不可以多繼承,但是介面可以多繼承。
- Java有自動記憶體管理機制,不需要程式設計師手動釋放無用記憶體
9. Oracle JDK 和 OpenJDK 的對比
Oracle JDK 和 OpenJDK 的對比
- Oracle JDK版本將每三年發布一次,而OpenJDK版本每三個月發布一次;
- OpenJDK 是一個參考模型並且是完全開源的,而Oracle JDK是OpenJDK的一個實現,並不是完全開源的;
- Oracle JDK 比 OpenJDK 更穩定。OpenJDK和Oracle JDK的程式碼幾乎相同,但Oracle JDK有更多的類和一些錯誤修復。因此,如果您想開發企業/商業軟體,我建議您選擇Oracle JDK,因為它經過了徹底的測試和穩定。某些情況下,有些人提到在使用OpenJDK 可能會遇到了許多應用程式崩潰的問題,但是,只需切換到Oracle JDK就可以解決問題;
- 在響應性和JVM性能方面,Oracle JDK與OpenJDK相比提供了更好的性能;
- Oracle JDK不會為即將發布的版本提供長期支援,用戶每次都必須通過更新到最新版本獲得支援來獲取最新版本;
- Oracle JDK根據二進位程式碼許可協議獲得許可,而OpenJDK根據GPL v2許可獲得許可。