Java小白進階筆記(1)-重新認識Java

kissjz發表於2018-04-17

重新開始學習Java了,這也是為了以後找工作考慮。熱愛的機器學習就先放一放了,作為興趣愛好研究,不花太多精力了>﹏<
因為大二上學期有過一門Java課,作為快速複習。在CSDN上找到了偏頭痛楊的Java入門系列文章,寫得非常好!

1.偏頭痛楊的Java入門教學系列之認識Java篇

這是偏頭痛楊的第一篇原文連結,其中,在系列的第二篇開頭作者佈置了十道題,下面是我的回答(大多是作者的文章摘錄)。

1.Java為什麼能跨平臺?

跨平臺是指跨不同的作業系統,因為從寫java程式碼到執行,需要經過兩個過程,Java程式的原始碼(.java)編譯成虛擬機器(JVM)能看懂的位元組碼(.class),然後再由虛擬機器解釋執行成對應的作業系統能看懂的機器碼。
從而實現了所謂的跨平臺,一次編譯處處執行(Write Once,Run Anywhere)。
需要注意的是不同作業系統上要裝對應的JVM,但這並不與跨平臺衝突,因為即使不同作業系統上的虛擬機器的一些細節是不一樣的,但它們所能看懂的位元組碼(.class)都是一樣的,而位元組碼是與平臺無關的

2.Java抄了哪個程式語言?

C++

3.Java是由哪個公司搞出來的?

Sun公司

4.Java的爸爸是誰?

詹姆斯-高斯林

5.Java的工作機制?

Java程式的原始碼(.java)編譯成虛擬機器(JVM)能看懂的位元組碼(.class),然後再由虛擬機器解釋執行成對應的作業系統能看懂的機器碼

6.JDK&JRE&JVM分別是什麼以及他們的關係?

JVM(Java Virtual Machine):

Java虛擬機器,主要負責執行Java編譯器編譯後的位元組碼檔案(*.class檔案),它存在於記憶體中,與記憶體打交道。
JVM執行在作業系統之上,與硬體沒有直接互動,JVM是實現跨平臺的核心。
JVM是一種抽象&虛擬出來的計算機,和實際的計算機一樣,
它具有指令集並使用不同的儲存區域,它負責執行指令,還要管理資料,記憶體和暫存器,指令集,暫存器,
類檔案的格式,棧,垃圾回收堆,儲存區等。
JVM在執行位元組碼時,把位元組碼解釋成具體平臺上的機器碼執行。
JVM自己無法執行,必須要聯合JRE中的Java基礎&核心類庫才能使用

JRE(Java Runtime Environment):

Java執行環境,支援Java程式執行的標準環境,包括了JVM(Java虛擬機器)的標準實現以及Java基礎&核心類庫。

jre1.8目錄包含:

  • bin:有java.exe但沒有javac.exe,無法編譯Java程式,但可以執行Java程式,可以把這個bin目錄理解成JVM。
  • lib:Java基礎&核心類庫,如rt.jar,也包含JVM執行時需要的類庫。

JRE=JVM+Java基礎&核心類庫

JDK(Java Development Kit):

Java開發工具包,是一個編寫Java應用程式的開發環境(程式設計師專用)
JDK是整個Java的核心,包括了JRE(Java執行環境)與一些Java開發工具(例如:jconsole、javac、java、javadoc、native2ascii、jar等)。
主流的JDK是Sun公司釋出的JDK,除了Sun公司之外,還有很多公司和組織都開發了自己的JDK,
例如:IBM公司開發的JDK,BEA公司的JDK,還有GNU組織開發的JDK。

jdk1.8目錄包含:

  • bin:一堆exe檔案,可執行的開發工具,最主要的是javac, 例如:jconsole、javac、java、javadoc、native2ascii。
  • jre:java執行環境,包括JVM+Java基礎&核心類庫 。
  • lib:包含dt.jar+tools.jar的常用類庫,開發依賴包。
  • db:jdk從1.6之後內建了Derby資料庫,它是是一個純用Java實現的記憶體資料庫,屬於Apache的一個開源專案。用Java實現的,所以可以在任何平臺上執行;另外一個特點是體積小,免安裝,只需要幾個小jar包就可以執行了。
  • include:java和JVM互動用的標頭檔案。

JDK=JRE+Java開發工具(編譯器、偵錯程式等)

JDK&JRE&JVM總結:

JRE是個執行環境,JDK是個開發環境,因此寫Java程式的時候需要JDK,而執行Java程式的時候就需要JRE。
而JDK裡面已經包含了JRE,因此只要安裝了JDK,就可以開發Java程式,也可以正常執行Java程式。
但由於JDK包含了許多與執行無關的內容,例如編譯器、偵錯程式等,佔用的空間較大,
因此執行普通的Java程式無須安裝JDK,而只需要安裝JRE即可(例如在伺服器中執行Java程式)

7.Java的應用場景?

網際網路應用的服務端程式(包括分散式系統)

很多第三方交易系統、銀行、金融機構、大型網站、網際網路平臺都選擇用Java開發。
大多數情況下,Java被用在伺服器端開發,但多數沒有任何前端,它們通常是從一個伺服器接收資料,
處理後發向另一個處理系統。

Android應用

許多的 Android應用都是Java程式設計師開發者開發。雖然 Android運用了不同的JVM以及不同的封裝方式,
但是程式碼還是用Java語言所編寫。相當一部分的手機中都支援JAVA遊戲,這就使很多非程式設計人員都認識了JAVA。

大資料技術

Hadoop以及其他大資料處理技術很多都是用Java,例如Apache的基於Java的HBase和Accumulo以及 ElasticSearchas。

網站

Java在電子商務領域以及網站開發領域佔據了一定的席位。開發人員可以運用許多不同的框架來建立web專案,
SpringMVC,Struts2.0以及frameworks。即使是簡單的 servlet,jsp和以struts為基礎的網站在政府專案中也經常被用到。
例如醫療救護、保險、教育、國防以及其他的不同部門網站都是以Java為基礎來開發的。

嵌入式領域

Java在嵌入式領域發展空間很大。在這個平臺上,只需130KB就能夠使用Java技術(在智慧卡或者感測器上)。

桌面應用

例如:jmeter,netbeans,freemind,eclipse等。

遊戲

火遍全球的《我的世界》以及一堆java小遊戲。

8.java與javac命令的作用?

javac命令是在jdk的bin資料夾下的,作用是將Java源程式(.java)編譯為虛擬機器能明白的位元組碼(.class)

java命令是在jre的bin資料夾下的,作用是將虛擬機器中的位元組碼(.class)解釋執行成對應平臺作業系統能明白的機器碼。

9.Java環境如何配置?

這個省略,去看作者(偏頭痛楊)的文章,或者百度都能OK!

10.Java的部分特點?

  • 跨平臺
  • 重要的網路程式語言
  • 吸收了C++的優點,摒棄了多繼承,指標的概念
  • 不僅僅是一門語言,還是一個龐大的技術體系(包括程式語言、虛擬機器、- – 開發環境、應用程式環境、部署環境等)


相關文章