JAVA簡介及特性
1、Java語言的特性
1.1、簡單性
在Java語言當中真正操作內存的是:JVM(Java虛擬機)
所有的java程序都是運行在Java虛擬機當中的。
而Java虛擬機執行過程中再去操作內存。
對于C或者C++來說程序員都是可以直接通過指針操作內存的。
C或者C++更靈活,可以直接程序員操作內存,但是要求程序員技術精湛。
C語言或者C++更有駕馭感。
Java語言屏蔽了指針概念,程序員不能直接操作指針,或者說程序員
不能直接操作內存。這種方式有優點也有缺點:
優點:不容易導致內存泄漏。(簡單了。)
缺點:效率問題,包括駕馭感比較差。
飛機航行: 如果是C語言表示程序員是飛機駕駛員。 如果是Java語言表示程序員是飛機上的乘客。
Java語言底層是C++,所以JVM是用C++語言寫好的一個虛擬的電腦。
JVM在哪里?安裝了JDK之后,JVM就代表安裝好了。
內存是什么?
對于計算機來說:最主要的幾個部件是什么?
CPU:
中央處理器,相當于人類的大腦,負責發送并執行指令。
是整個計算機的指揮官。
CPU是負責計算的,負責運算的。
10 + 20 = 30
CPU負責將30這個結果計算出來。
但是在計算過程中有三個數據需要臨時找個空間存儲一下:
這三個數據分別是:10 20 30
內存: 程序運行過程當中的臨時數據存儲空間。 斷電之后或者關機之后內存中的數據就消失了。 硬盤: 持久化設備,硬盤上的數據不會因斷電而丟失。 主板: 相當于人類的軀干,是一個載體: CPU、內存條、硬盤等主要的部件都是放在主板上的, 主板上有很多線,將以上的部件鏈接起來。 .....
1.2、java是堪稱完全面向對象的。
面向對象更容易讓人理解,人類通常是以對象的方式認知世界的。
采用面向對象的方式可以讓復雜問題簡單化。
1.3、健壯性
主要是因為Java中有一種機制:自動垃圾回收機制(GC機制)。
java語言是健壯的,相對于C語言來說,C語言沒有Java健壯。
Java不容易導致內存的泄漏。
C++或者C語言使用不當時很容易導致內存泄漏。
JVM負責調度GC機制。程序員不需要干涉。
以上講解中又描述了這幾個術語:
JVM(C++語言寫的一個虛擬的計算機)、GC(垃圾回收機制)
1.4、java完全/完美支持多線程并發。
1.5、可移植性/跨平臺
java語言只要編寫一次,可以做到到處運行。
例如:java程序編寫完之后,可以運行在windows操作系統上,
不需要做任何改動可以直接運行在Linux操作系統上,同樣也
可以運行到MaC OS上面。
一次編寫,到處運行。(平臺改變了,程序不需要改。)
JVM這種機制實現了跨平臺,那么這種機制優點和缺點分別是什么?
優點:一次編寫到處運行,可以跨平臺。
缺點:麻煩。對于運行java程序來說必須先有一個JVM。
就像你要想在網頁上看視頻,你必須先安裝一個flash是一樣的。
Java語言可以編寫病毒嗎?
可以,沒問題。但是很難讓用戶中毒。
中毒的一般都是java程序員。所以很少有人編寫java的病毒腳本。
2、JDK、JRE、JVM三者之間的關系?
JDK:Java開發工具箱
JRE:java運行環境
JVM:java虛擬機
JDK包括JRE,JRE包括JVM。
JVM是不能獨立安裝的。
JRE和JDK都是可以獨立安裝的。
有單獨的JDK安裝包。
也有單獨的JRE安裝包。
沒有單獨的JVM安裝包。
安裝JDK的時候:JRE就自動安裝了,同時JRE內部的JVM也就自動安裝了。
安裝JRE的時候:JVM也就自動安裝了。
問題:
假設你在軟件公司開發了一個新的軟件,現在要去客戶那邊給客戶把
項目部署一下,把項目跑起來,你需要安裝JDK嗎?
只需要安裝JRE就行了。
JRE體積很小,安裝非常便捷快速。
問題:
為什么安裝JDK的時候會自帶一個JRE?
因為java程序員開發完程序之后,要測試這個程序,
讓這個程序運行起來,需要JRE。所以JDK安裝的時候
內部自帶一個JRE。
3、到目前為止,我們接觸過的重點術語,總結一下:
Java體系的技術被劃分為三大塊: JavaSE:標準版 JavaEE:企業版 JavaME:微型版 安裝JDK之后: JDK:java開發工具箱 JRE:Java運行環境 JVM:Java虛擬機
4、對Java的加載與執行的理解(理論比較重要)
java程序從編寫到最終運行經歷了哪些過程????
java程序非常重要的兩個階段:
編譯階段
運行階段
注意:java程序員直接編寫的java代碼(普通文本)是無法執行被JVM識別的。java程序員編寫的java代碼這種普通文本必須經過一個編譯,將這個“普通文本代碼”變成“字節碼”,JVM能夠識別“字節碼”。
java代碼這種普通文本變成字節碼的過程,被稱為:編譯。
java代碼這種普通文本被稱為:java源代碼。(你編寫的代碼是源代碼)
源代碼不能直接執行,需要先進行編譯,生成源代碼對應的“字節碼”
JVM可以識別的是字節碼。
編譯階段和運行階段可以在不同的操作系統上完成嗎?
在windows上編譯 編譯之后生成了“字節碼” 把“字節碼”放到linux上運行 完全可以,因為Java是跨平臺的。 可以做到一次編寫到處運行。
java源代碼一旦編譯之后,源代碼可以刪除嗎?只留下字節碼可以執行嗎?
完全可以執行,因為源代碼不參與程序的執行過程。 參與程序執行過程的是字節碼。 但是最好不要刪除源代碼。因為有可能執行結果不是你需要的, 當執行結果不是你需要的時候,你可以重新打開源代碼進行修改, 然后重新編譯生成新的字節碼,再重新執行。這樣會有新的執行效果。
放源代碼的文件擴展名必須是:xxx.java
并且需要注意的是:編譯生成的字節碼文件擴展名是:xxx.class
.java文件就是源文件,這個文件中編寫源代碼。
.class文件就是字節碼文件,這個文件是編譯源代碼而得到的。
另外需要注意的是:
1個java源文件是可以編譯生成多個class文件的。 最終運行的是class文件。
問題:字節碼文件是二進制文件嗎?
字節碼文件不是二進制文件。 如果是二進制的話,就不需要JVM了。 因為操作系統可以直接執行二進制。
java程序從開發到最終運行經歷了什么?
編譯期:(可以在windows上) 第一步:在硬盤的某個位置(隨意),新建一個xxx.java文件 第二步:使用記事本或者其它文本編輯器例如EditPlus打開xxx.java文件 第三步:在xxx.java文件中編寫“符合java語法規則的”源代碼。 第四步:保存(一定要將xxx.java文件保存一下) 第五步:使用編譯器(javac【JDK安裝后自帶】)對xxx.java文件進行編譯。 第六步:如果xxx.java文件中編寫的源代碼是符合語法規則的,編譯會通過, 如果xxx.java文件中編寫的源代碼違背了語法規則,那么編譯器會報錯,編譯器 報錯之后class文件是不會生成的,只有編譯通過了才會生成class字節碼文件。 并且一個java源文件是可以生成多個class文件的。(編譯實質上是檢查語法) 運行期:(JRE在起作用):(可以在windows上,也可以在其他的OS上。) 第七步:如果是在Linux上運行,需要將windows上生成的class文件拷貝過去 不需要拷貝源代碼,真正運行的是字節碼。(但是源代碼也不要刪除,有用) 第八步:使用JDK自帶的一個命令/工具:java(負責運行的命令/工具)執行字節碼 第九步:往下的步驟就全部交給JVM了,就不需要程序員干涉了。 JVM會將字節碼文件裝載進去,然后JVM對字節碼進行解釋(解釋器負責將字節碼 解釋為1010101010..等的二進制) 第十步:JVM會將生成的二進制碼交給OS操作系統,操作系統會執行二進制碼和 硬件進行交互。
注意:在以上的過程中,需要使用兩個非常重要的命令?
1. javac 命令,負責編譯
2. java 命令,負責運行
小插曲:
xxx.java源文件經過編譯之后生成了A.class、B.class、C.class等文件, 那么我們稱A是一個類、B是一個類、C是一個類。其中A、B、C是類的名字。 沒有為什么,死記硬背,SUN公司的java語法就是這么規定的。 A/B/C是類的名稱。A類、B類、C類。
源文件中編寫的代碼叫做:源代碼。
以上是一個復雜的過程,那么縮減一下,程序員到底要干啥?
新建java文件 打開java文件 寫java源代碼 保存 javac命令編譯 java命令運行 編寫、編譯、運行
5、編寫java中的第一個java程序:HelloWorld(你好世界)
這個程序不需要大家理解,大家照抄就行,因為目前我也不會講解這個程序為什么這么寫。
主要是為了搭建java的開發環境,測試java的環境是否能用。
第一步:安裝文本編輯器(EditPlus) 第二步:安裝JDK(先下載JDK) 安裝JDK13,直接下一步就行。 JDK13安裝的時候內置了一個JRE,獨立于JDK之外的JRE并沒有生成。 對于java13來說,如果你希望生成一個獨立于JDK之外的JRE的話需要執行特殊的命令。 這里先不講,后期用到的時候再說。 注意的是: JDK8安裝的時候,不僅JDK內置了一個JRE,而且還會在JDK目錄之外 獨立的生成一個單獨的JRE。(以前低版本的時候,JRE實際上是有2個。) 一個是JDK內置的,一個是獨立于JDK之外的。 JDK的bin目錄下有: javac.exe 負責編譯 java.exe 負責運行 第三步:寫代碼 寫一下第一個程序HelloWorld。 這個代碼在此強調: 文件名照抄 文件內容代碼嚴格照抄 照抄大小寫 照抄任何一個環節 照抄標點符號 括號: [] () {} 都要成對寫。 第四步:編譯 第五步:運行
Java
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。