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許可獲得許可。