Java小白進階筆記(1)-重新認識Java
重新開始學習Java了,這也是為了以後找工作考慮。熱愛的機器學習就先放一放了,作為興趣愛好研究,不花太多精力了>﹏<
因為大二上學期有過一門Java課,作為快速複習。在CSDN上找到了偏頭痛楊的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++的優點,摒棄了多繼承,指標的概念
- 不僅僅是一門語言,還是一個龐大的技術體系(包括程式語言、虛擬機器、- – 開發環境、應用程式環境、部署環境等)
相關文章
- Java小白進階筆記(5)-進階物件導向Java筆記物件
- Java小白進階筆記(2)-變數和資料型別Java筆記變數資料型別
- java進階筆記Day(五)Java筆記
- (小白學JAVA之)Java高階特性知識點梳理Java
- Java 混淆那些事(一):重新認識 ProGuardJava
- Java筆記1Java筆記
- 重新認識Java微服務架構-認證服務Java微服務架構
- 【進階5-1期】重新認識建構函式、原型和原型鏈函式原型
- Java小白的學習日記一(自用筆記)Java筆記
- 嵌入式狗的 JAVA 入門筆記4 進階。。Java筆記
- Java學習筆記之----------Java基本知識Java筆記
- Java進階練習題整理(1)Java
- Java面試題中高階進階(JVM篇Java記憶體)Java面試題JVM記憶體
- Java-100天知識進階-JVM記憶體-知識鋪(三)JavaJVM記憶體
- [Java] Introduction to Java Programming 筆記: Chapter 1. 概念Java筆記APT
- Java核心技術 卷1 基礎知識 部分筆記Java筆記
- java筆記1-dos命令Java筆記
- 前端進階-個人筆記-小知識前端筆記
- 進階筆記筆記
- iOS筆記:進一步認識 ==、isEqual、hashiOS筆記
- Java進階面試系列階段性總結【石杉的架構筆記】Java面試架構筆記
- 認識Java泛型Java泛型
- Java進階--Java動態代理Java
- 《Effective Java》--Java進階必備Java
- Java核心技術學習筆記——進階——第六章 Java網路程式設計——6.1 網路基礎知識Java筆記程式設計
- 記Java中有關記憶體的簡單認識Java記憶體
- 【JAVA】筆記(12)---集合(1)-概述篇Java筆記
- Java 學習筆記--Day1Java筆記
- 【Java筆記】Java JDKJava筆記JDK
- 【進階3-2期】JavaScript深入之重新認識箭頭函式的thisJavaScript函式
- Arthas進階-筆記筆記
- flaskr 進階筆記Flask筆記
- java 筆記Java筆記
- 再次認識java泛型Java泛型
- Thinking in Java--Java多執行緒學習筆記(1)ThinkingJava執行緒筆記
- 人臉識別學習筆記二:進階篇筆記
- Java進階06 容器Java
- Java 異常進階Java