Java語言的概述
java語言的概括以及java語言的發展史。
JDK(java開發工具箱,做java開發必須安裝的,這是最根本的一個環境)
JDK不是集成開發環境
JDK這個開發工具箱中是java最核心的庫
98年的時候:java升級到JDK1.2,java被分為三大塊
J2SE:標準版(基礎,要學java,必須先學習SE。基礎語法和基礎庫)
J2EE:企業版(專門為企業開發軟件的,為企業提供解決方案,如:銀行,醫院)
J2ME:微型版(專門為微型設備做嵌入式開發的)
java誕生10周年改了名字
JAVASE
JAVAEE
JAVAME
JAVA語言的特性
1.簡單性
在JAVA語言當中真正操作內存的是:JVM(JAVA虛擬機)
所有的java程序都是運行在java虛擬機當中的。
而java虛擬機執行過程中再去操作內存。
對于c或者c++來說程序員都是可以直接通過指針操作內存的。
c或者c++更靈活,可以直接程序員操作內存,但是要求程序員技術精湛
C語言或者C++更有駕馭感。
JAVA語言屏蔽了指針概念,程序員不能直接操作指針,或者說程序員不能直接操作內存,這種方式有優點也有缺點。
優點:不容易到時內存泄漏(簡單了)
缺點:效率問題,包括駕駛感比較差。
飛機航行:
如果是C語言表示程序員是飛機駕駛員
如果是JAVA語言表示程序員是飛機上的乘客。
JAVA語言底層是C++,所以JVM是用C++語言寫好的一個虛擬的電腦
JVM在哪里????? 安裝了JDK之后,JVM就代表安裝好了
2.健壯性
主要是因為JAVA中有一種機制
自動垃圾回收機制(GC機制)
JAVA語言是健壯的,相對于C語言來說,c語言沒有JAVA健壯
JAVA不容易導致內存泄漏
C++或者C語言使用不當時很容易導致內存泄漏
JVM負責調度GC機制,程序員不需要干涉。
3.面向對象
JAVA中提供了封裝、繼承、多態等面向對象的機制。
JAVA是堪稱完全面向對象的
面向對象更容易讓人理解,人類通常是以對象的方式認知世界的
采用面向對象的方式可以讓復雜問題簡單化
4.多線程
java語言支持多個線程同時并發執行,通知也提供了多線程環境下的安全機制
5.可移植性/跨平臺
java語言只要編寫一次,可以做到到處運行
例如:java程序編寫完之后,可以運行在Windows操作系統上,
不需要做任何的改動可以直接運行在Linux操作系統上,同樣也可以運行到Mac os上面。
一次編寫,到處運行。(平臺改變了,程序不需要改)
JVM這種機制實現了跨平臺,那么這種機制優點和缺點分別是什么?
優點:一次編寫到處運行,可以跨平臺
缺點:麻煩,對于運行java程序來說必須先有一個JVM
就像你想在網頁上看視頻,你必須先安裝一個flash是一樣的
java語言可以編寫病毒嗎?
可以,但是很難讓用戶中毒
中毒的一般都是java程序員,所以很少有人編寫java的病毒腳本。
JDK、JRE、JVM三者之間的關系?
JDK:java開發工具箱
JRE:java運行環境
JVM:java虛擬機
JDK包括JRE,JRE包括JVM
JVM是不能獨立安裝的
JRE和JDK都是可以獨立安裝的
安裝JDK的時候:JRE就自動安裝了,同時JRE內部的JVM也就自動安裝了。
問題:假設你在軟件公司開發了一個新的軟件,現在要去客戶那邊給客戶把項目部署一下,把項目跑起來,你需要安裝JDK嗎?
答:只需要安裝JRE就可以了,JRE體積很小,安裝非常便捷快捷。
問題:為什么安裝JDK的時候會自帶一個JRE?
答:因為java程序員開發完程序之后,要測試這個程序,讓這個程序運行起來,需要JRE。
對java的加載與執行的理解(理論比較重要)
Java程序從編寫到最終運行經歷了哪些過程?
java程序非常重要的兩個階段:
編譯階段
運行階段
注意:
java程序員編寫的java代碼(普通文本)是無法執行被JVM識別的,java程序員編寫的java代碼這種普通文本必須經過一個編譯,將這個"普通文本代碼"變成"字節碼",JVM能夠識別"字節碼",java代碼這種普通文本變成字節碼的過程,被稱為:編譯
java代碼這種普通文本被稱為:java源代碼。(你所編寫的代碼就是源代碼)
源代碼不能直接執行,需要先進行編譯,生成源代碼對應的"字節碼"
JVM可以識別的是字節碼
編譯階段和運行階段可以在不同的操作系統上完成嗎?
在Windows上編譯
編譯之后生成了"字節碼"
把"字節碼"放到linux上運行
完全可以,因為java是跨平臺的
可以做到一次編寫到處運行
java源代碼一旦編譯之后,源代碼可以刪除嗎?只留下字節碼可以執行嗎?
完全可以執行,因為源代碼不參與程序的執行過程。參與程序執行過程的字節碼。
但是最好不要刪除源代碼,因為有可能執行結果不是你需要的
當執行結果不是你需要的時候,你可以重新代開源代碼進行修改。
然后重新編譯生成新的字節碼,再重新執行,這樣會有新的執行效果。
存放源代碼的文件擴展名必須是:xxx.java
并且需要注意的是:編譯生成的字節碼文件擴展名是:xxx.class
另外需要注意的是:一個java源文件是可以編譯生成多個class文件的
問題:字節碼文件是二進制文件嗎?
答:字節碼文件不是二進制文件,如果是二進制的話,就不需要JVM了,因為操作系統可以直接執行二進制。
java程序從開發到最最終運行經歷了什么?
編譯期:
1、在硬盤的某個位置(隨意),新建一個xxx.java文件
2、使用記事本或者其他文本編輯器例如:editplus打開xxx.java文件
3、在xxx.java文件中編寫"符合java語法規則的"源代碼。
4、保存
5、使用編譯器javac(JDK安裝后自帶的)對xxx.java文件進行編譯。
6、如果xxx.java文件中編寫的源代碼是符合語法規則的,編譯會通過,如果xxx.java文件中編寫的源代碼違背了語法規則,那么編譯器會報錯,編譯器報錯之后class文件是不會生成的,只有編譯通過了才會生成class字節碼按文件,并且一個java源文件是可以生成多個class文件的。(編譯實質上是檢查語法)運行期(JRE在起作用):可以在Windows上,也可以在別的操作系統上
7、如果在linux上運行,需要將Windows上生成的class文件拷貝過去,不需要拷貝源代碼,真正運行的是字節碼。(但是源代碼也不要刪除,有用)
8、使用JDK自帶的一個命令/工具:java(負責運行的命令/工具)執行字節碼
9、往下的步驟就全部交給JVM了,就不需要程序員干涉了,JVM會將字節碼文件裝載進去,然后JVM對字節碼進行解釋(解釋器負責將字節碼解釋為101101001….等的二進制)
10、JVM會將生成的二進制碼交給os操作系統,操作系統會執行二進制和硬件進行交互。
注意:在以上的過程中,需要使用兩個非常重要的命令。
Javac 命令,負責編譯
Java 命令,負責運行
小插曲:
xxx.java源文件經過編譯之后生成了A.class、B.class、C.class等文件,
那么我們稱A是一個類、B是一個類、C是一個類。其中A、B、C是類的名字。
沒有為什么,死記硬背,sum公司的java語法就是這么規定的。
以上是一個復雜的過程,那么縮減一下,程序員到底要干啥?
新建java文件
打開java文件
寫java源代碼
保存
javac命令編譯
java命令運行
一句話概括:編寫 編譯 運行
Java JDK
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。