# Java簡介
[TOC]
## Java導學
Java是一門**面向對象**的編程語言。本質上來說,Java的學習與英語日語韓語等語言的學習并沒有什么區別。
就以英語為例,我們學習英語,會學習英語的語法單詞等。在學習完以后,我們會使用英語來和懂英語的人進行對話。因為雙方的交流都是以英語為基礎,大家都懂各自的意思,所以對方才能接受。
對于編程語言也是如此,我們寫出來的東西,不僅僅是人要接受,還要計算機能夠認識。所以我們就要學習計算機能夠認識的語法結構。
## Java簡介
### 歷史
Java是由Sun Microsystems公司于1995年5月推出的Java面向對象程序設計語言和Java平臺的總稱。由James Gosling和同事們共同研發,并在1995年正式推出。
Java分為三個體系:
* JavaSE(J2SE)(Java2 Platform Standard Edition,java平臺標準版)
* JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平臺企業版)
* JavaME(J2ME)(Java 2 Platform Micro Edition,java平臺微型版)。
~~~ascii
三者關系
┌───────────────────────────┐
│Java EE │
│ ┌────────────────────┐ │
│ │Java SE │ │
│ │ ┌─────────────┐ │ │
│ │ │ Java ME │ │ │
│ │ └─────────────┘ │ │
│ └────────────────────┘ │
└───────────────────────────┘
~~~
2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經更名以取消其中的數字"2":J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。
2009年,Oracle公司收購sun公司,獲得Java的版權
2019年,Java SE13發布
>[success] 小故事
> Java語言其實是有個曾用名的,叫Oak,而且起這個名字的時候也是很隨心的,只是因為看到了窗口外的一顆橡樹,所以就叫為Oak,但Oak這個名字已經被注冊。最后他們以Java這個名字命名了這個語言,據說是Sun公司的程序員們都很喜歡喝咖啡,而且對爪哇島的一種咖啡印象很深,所以就有了Java這個經典的名字和咖啡的圖標。
### Java的特性
Java可以理解為編程語言或者開發工具。
>[warning] Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程
> Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性(跨平臺)、多線程、動態性等特點?。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。
**對于跨平臺的理解**
為了讓平臺對編程人員透明,寫出可以在不同平臺運行的相同源代碼,Java 開發出了 JVM (Java 虛擬機)。
>[info] 一次編譯,到處運行。
### 目的
Java 最終的目的是用于編寫直接在機器上運行的程序。
與 HTML 運行依靠瀏覽器,SQL 運行依靠數據庫系統對比,Java 能做的事情更多,更加的普遍。
### 開發準備
1. JDK下載
本次課程我們使用JDK 1.8,可以在Oracle官網上進行下載。
建議下載exe版本的JDK使用。
2. JDK安裝
下載完成以后直接進行安裝,直接下一步就好。

>[info]bin:存放了一系列的Java命令和工具
jre:JavaRuntimeEnvironment,Java運行時的環境,如果你的計算機要運行Java編寫的程序,可以沒有JDK,但是不能沒有JRE
lib:類庫,JavaSE提供的標準類庫,用的時候也稱為API
src.zip:source源代碼
但是安裝完成以后此時還不能很方便的使用,需要我們進行環境變量的配置。
通常情況我們需要配置以下三個變量:
1. JAVA\_HOME:指向Jdk的安裝目錄,作用是一些基于Java開發的工具會用到,比如tomcat,Eclipse,如果不用這些工具不需要配置。
`JAVA_HOME=d:\xx\xx\jdk1.8`

2. Path:指向jdk安裝目錄下的bin目錄,作用是指定命令搜索路徑,bin目錄下有編譯、啟動(javac/java)等命令,為了任何目錄位置下都可以直接輸入命令,而不用輸入長長的路徑了。如果配置了JAVA \_HOME ,直接把%JAVA\_HOME%/bin追加到PATH中即可。
`%JAVA_HOME%\bin;%JAVA\_HOME%\jre\bin;`

3. CLASSPATH:在于告訴Java執行環境,在哪些目錄下可以找到我們所要執行的Java程序所需要的類或者包。不過在JDK1.5之后的版本完全可以不用設置classpath環境變量就能正常運行程序
### 一些概念
之前我們已經下載并安裝了Java的JDK,那么jdk到底是什么,它有著什么樣的作用呢,接下來我們就來認識幾個新的概念

>[info] SDK——soft development kit,軟件開發工具包。sdk是一個大的概念,比如開發安卓應用,你需要安卓開發工具包,叫 android sdk,比如你開發java程序,需要用到java sdk,所以一般使用sdk這個概念,你需要在前面加上限定詞。
JDK——可以理解為 java sdk,它是編寫java程序,使用到的工具包,為程序員提供一些已經封裝好的 java 類庫。

## 開發第一個Java程序
我們來新建一個Java文件來驗證剛剛配置的開發環境是否正確。
### 編寫源代碼:
**類編寫的注意點:**
1. 文件名**必須**用大寫字母開頭,而且用駝峰命名方式,盡量不要出現怪異的字符,文件后綴名用.java,比如StudentScore.java
2. 代碼中的類名**必須**和文件名一致
3. 在類定義的文件路徑中盡量不要出現中文
4. 嚴格仿照代碼格式等書寫以做測試
在某個目錄中新建一個名叫 Hello.java 的文件(注意把文件后綴隱藏選項去掉),文件內容如下
~~~
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
~~~
### 編譯源代碼
1、使用 javac 命令將 Hello.java 文件編譯成 Hello.class 字節碼文件
> 在.java文件所在目錄,按住shift鍵,右鍵打開控制臺,或者從控制臺切換到工作目錄
> 執行javac Hello.java,注意:這邊Hello.java一定要攜帶.java后綴
~~~
PS D:\jdk> javac Hello.java
~~~
2、使用 java 命令,調用本機的 JVM 執行字節碼文件
> 經過編譯后多出一個Hello.class文件(即字節碼文件)
> 字節碼文件就是運行在JVM(Java Virtual Machine)
> 執行java Hello命令,在控制輸出Hello,World!字符
~~~
PS D:\jdk> java Hello
Hello,world
~~~
### Java代碼跨平臺的原理
> 源代碼通過javac命令編譯成.class的二進制字節碼文件
> 在不同的操作系統的JVM中,可以運行相同的.class文件,輸出程序內容,這也是Java跨平臺的主要原因

具體說來,就是以下圖示:

## 使用eclipse開發Java程序
### Eclipse的安裝
下載地址:[https://www.eclipse.org/downloads](https://www.eclipse.org/downloads)
注意:eclipse的版本下載要同電腦安裝的jdk版本相對應。
~~~
打開cmd命令提示符,輸入java -version,查看本機的jdk版本
~~~
以下是eclipse版本和jdk版本的對應表:


安裝:下載完jar包后,解壓到文件夾中。
ps:注意解壓的路徑中不要出現中文和空格,以及特殊字符。
### eclipse的使用
IDE (集成開發環境):可以自動編譯(保存即編譯)、代碼提示。
**工作空間**
在 Eclipse 中可以建立多個工作空間(workspace),每個工作空間可以建立多個項目(project)
一個工作空間就是一套配置信息,在進行了工作空間切換后,之前工作空間的配置將不會生效。
程序在 project 中開發。
**使用**:
* 解壓后打開eclipse文件夾,雙擊文件夾中的eclipse.exe文件,就可以打開
* 打開后會要求我們設置workspace工作空間,這個工作空間就是我們以后代碼存放的地方。
* 右擊Package Explorer區域,new->Java Project新建一個java項目,并在project name中輸入項目名字。
* 在 src 中新建 class 文件
* 運行程序,在 class 文件中右鍵 「run as」-> 「java application」。

