說明:重溫Java系列是本人結合資料重新學習Java時整理的筆記,主要參考資料如下,如有侵權,請聯繫刪除!
參考資料:
- 高淇 Java300集視頻
- Java 核心卷一
- 碼出高效Java開發手冊
- 明解Java
- Oracle官方教程
說明:本系列以高淇Java300集視頻爲主線,形成整體的知識體系,然後通過所列資料對知識點補充、修改;如有遺漏,錯誤,請指正!
本章目錄:
- Java版本介紹
- Java的特點
- Java運行機制
- JVM、JRE和JDK
- Java程序員入門儀式
正文
1.Java版本介紹
Java分爲以下三個版本:
JavaSE(Java Standard Edition):標準版,定位於客戶端,主要用於桌面或簡單服務器的應用開發,這個版本是Java平臺的核心,它提供了豐富的API(Application Program Interface, 應用程序接口)來開發相關應用,包括用戶界面接口AWT及Swing、網絡功能與國際化、圖像處理以及輸入輸出等。
JavaEE(Java Enterprise Edition):企業版,定位於複雜服務器應用的開發,主要用於分佈式網絡程序開發,比如阿里巴巴的電子商務網站。
JavaME(Java Micro Edition):微型版,定位於手機和其他小型設備的應用開發。
三個版本之間的關係,如圖所示:
2.Java的特點
Java是一種高級語言,具備以下特點:
- Simple 簡單
- Object oriented 面向對象
- Distributed 分佈式
- Multithreaded 多線程
- Dynamic 動態性
- Architecture neutral 體系結構中立
- Portable 可移植性
- High performance 高性能
- Robust 健壯性
- Secure 安全性
以上10個特點摘自Oracle官方教程,僅作了解即可。
3.Java運行機制
Java最大的優勢就是跨平臺,而跨平臺主要是指字節碼文件可以在任何具有Java虛擬機的計算機或者電子設備上運行,Java虛擬機中的Java解釋器負責將字節碼文件解釋成爲特定的機器碼進行運行。
跨平臺其實是通過在不同的操作系統上安裝相應的虛擬機實現。下面可以來看一下Java運行機制。
首先要知道目前編程語言主要分爲:編譯型和解釋型,而Java則是兩者的結合。
Java的源文件(Source File)的後綴名爲.java;需要通過編譯器(javac)將源文件編譯(Compile)成以.class爲後綴名的字節碼文件;最後通過虛擬機(Java解釋器)解釋執行。
正是因爲虛擬機可以安裝在不同的操作系統中(操作系統的不同是因爲計算機只認識二進制的機器語言,並且不同平臺的計算機,其機器語言指令都是不同),通過虛擬機將Java源碼編譯成.class文件然後解釋成對應平臺認識的機器語言,所以Java程序可以在不同操作系統上運行。(.class二進制文件是平臺獨立的結構中立的)
Java跨平臺的原理,簡單總結一下:
- 一次編譯,到處運行
- 編譯器:將源碼編譯成class文件
- 虛擬機:將class文件的字節碼解釋成對應平臺的機器語言並執行
- 解釋器是虛擬機的一個重要組成部分
- Java語言的執行的需要經過編譯和解釋兩個階段。
4.JVM、JRE和JDK
JVM(Java Virtual Machine)就是一個虛擬的用於執行字節碼的“虛擬計算機”。它定義了指令集、寄存器集、結構棧、垃圾收集堆、內存區域。JVM負責將Java字節碼解釋執行,邊解釋邊運行,速度就會受到一定的影響。
不同的操作系統有不同的虛擬機。Java虛擬機機制屏蔽了底層運行平臺的差異,實現了跨平臺,也就是“一次編譯,隨處運行”。
JRE(Java Runtime Environment)就是Java運行環境,包含Java虛擬機(JVM)、庫函數、運行Java應用程序所須的文件。
JDK(Java Development Kit)就是Java開發工具包,包含JRE以及編譯器和調試器等用於程序開發的文件。
Java虛擬機總結:
• JVM是Java Virtual Machine(Java虛擬機)的縮寫
• JVM是一種用於計算設備的規範,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。
• JVM就是一個虛擬的用於執行bytecodes字節碼的計算機
• Java虛擬機是Java最核心技術,也是跨平臺的基礎。
• Java語言使用Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。
• Java虛擬機在執行字節碼時,把字節碼解釋成具體平臺上的機器指令執行。這就是Java的能夠“一次編譯,到處運行”的原因
補充:
平臺是程序運行的軟硬件環境,前面說過Java也是一個平臺,只不過Java是一個基於硬件基礎上的純軟件平臺。Java平臺包括兩部分:
- The Java Virtual Machine Java虛擬機
- The Java Application Programming Interface(API) Java應用程序接口
前面已經介紹了Java虛擬機,是Java語言的核心基礎;
API是一個提供了大量現成軟件組件的集合,提供了許多有用的功能。它被分爲相關類和接口的庫;這些庫稱爲包。
Java虛擬機和API使Java程序和底層硬件相互隔離,所以Java程序可以不用過多的關注底層硬件;但是這也使Java語言運行會慢了一點。隨着硬件性能提升和Java平臺的不斷優化,Java語言的速度不會成爲限制其發展的瓶頸。
5.Java程序員入門儀式
Java開發的準備:
- 安裝JDK
Java是一門面向對象的編程語言,其最大的優勢就是“跨平臺”,想要實現跨平臺,必須安裝Java必備的運行環境,而對於Java開發人員來說不但要安裝運行環境,還要安裝Java的開發工具,具體的安裝過程參考:https://blog.csdn.net/u012187452/article/details/72595040#comments - 安裝Java開發工具
常用Java開發工具
• 文本編輯器(選擇任意一個)
• UltraEdit
• EditPlus
• notepad++
• 集成開發環境(IDE:Integrated Development Environment)
• JBuilder (http://www.borland.com)(基本淘汰)
• Eclipse (http://www.eclipse.org)****開源 解壓即可(重點)
• MyEclipse:若進行J2EE開發,還要加MyEclipse插件。MyEclipse是Eclipse的插件,也是一款功能強大的J2EE集成開發環境。現在直接安裝集成Eclipse的MyEclipse即可。商業軟件
• NetBeans(http://java.sun.com)
• IntelliJ IDEA(https://www.jetbrains.com/idea/)(強烈推薦)
第一個Java程序
/**
* Created by lining on 2019/6/15.
*
* The HelloWorld class implements an application that
* simply prints "Hello World! I am Coming!" to standard output.
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World! I am Coming!"); // Display the string.
}
}
運行結果:
我們來分析一下這個代碼
我們可以發現這部分源碼主要包括三部分:源碼註釋、類定義和Main方法。
第一部分:源碼註釋
/**
* Created by lining on 2019/6/15.
*
* The HelloWorld class implements an application that
* simply prints "Hello World! I am Coming!" to standard output.
*/
這部分就是源碼的註釋,用來說明源碼的作用,可以提高源碼的可讀性。Java編譯器在編譯源碼是會跳過註釋,所以註釋不會出現在字節碼文件中。
Java提供了三種註釋:
/* text */
多行註釋 Java 編譯器會忽略 /和/之間的內容,多行註釋也叫作傳統註釋(traditional comment),這是因爲其註釋形式和C語言的註釋形式相同
/** documentation */
文檔註釋(documentation comment) Java編譯器同樣會忽略/** 和*/之間的內容;可以通過JDK提供的Javadoc命令,生成程序的API文檔。
// text
單行註釋(end of line comment)註釋內容從//到本行結尾
第二部分:類定義
// 這是程序的類定義
public class HelloWorld {
}
上面代碼的意思就是名稱爲HelloWorld的類(class)的類定義或類聲明(class declaration)。class關鍵字後面就是類名稱,類名稱後面會緊跟着一對大括號{},{}中間的代碼就是Java源碼。
第三部分:main方法
public static void main(String[] args) {
// java語句
}
這就是main方法的定義,每一個獨立的Java應用程序都必須有main方法。
- 修飾符public和static的組合可以是public static或者static public,一般約定使用public static;方法的入參名稱可以隨意,但是一般都是args或者argv。
- Main方法和C、C++語言的Main方法相像,都是程序的入口,main方法可以調用其他方法。
- Main方法接受一個入參,類型是字符串數組