1. 程式人生 > >java原理學習1

java原理學習1

一為什麼要安裝java的開發工具包

windows平臺安裝

1首先安裝java的開發工具包jdk,

2安裝完對應平臺(linux/windows)的jdk【同一軟體針對不同平臺有不同的安裝包,因為軟體在不同平臺想要執行最終都得符合對應平臺的底層硬體以及系統架構,所以開發同一款電腦軟體,需要分別對linux/windows進行開發,開發移動端客戶端,需要分別對ios/androoid系統進行開發,因此說開發pc/移動端的客戶端是個相當麻煩的活,因為你要針對不同平臺開發客戶端,因此b/s架構的開發速度要遠遠優於c/s結構的開發)每一款軟體都是針對為了能夠在系統上執行進行的獨一無二的設計,拿jdk舉例,jdk有linux版的,有windows版的,linux版jdk的解釋程式和windows版的解釋程式就大不相同,因為直譯器是負責將中間程式碼位元組碼檔案轉換成對應平臺的目的碼的,java語言之所以能夠跨平臺是因為jvm虛擬機器能夠針對不同的平臺將java的位元組碼檔案轉換成對應平臺的目的碼,因此java可以在不同平臺上執行,而對於不同平臺自然轉換的目的碼就不一樣】

之後設定CLASSPATH環境變數:jvm會去指定的路徑搜尋他想要載入的類,讓jvm知道在哪裡搜尋他要載入的類,為什麼說是開發工具包呢?jdk下的lib資料夾中裝的都是程式語言開發者為我們寫好的類檔案,在/lib/tools.jar   lib/dt.jar下面給我們提供了很多寫好的介面,而以後,我們應多看看這些介面的原始碼,加強java原理知識的掌握

有了這兩部你就可以編譯,執行java了

到jdk的bin目錄下利用javac編譯程式編譯java程式碼 javac xx.java【編譯的時候只是將java原始碼翻譯成位元組碼檔案,位元組碼是存放在硬碟上的檔案】

到jdk的bin目錄下利用java解釋程式邊解釋邊執行java程式碼 java xx【位元組碼載入到jvm中,即類被載入時,才有記憶體的概念,只有解釋的時候才會存在類載入的過程,Java的class檔案被載入到記憶體中去解釋執行,類載入的實際:執行時,依靠反射實現動態載入】

3如果你覺得每次使用java的編譯程式javac和解釋程式java比較麻煩的話,你可以在path變數中將jdk的bin目錄加上去

linux平臺安裝

由於開發的時候一般都是在mac/windows安裝jdk【提供給java開發人員使用的,jdk=java開發工具(bin目錄)+lib+jre】,linux一般是用於作為伺服器提供服務的,因此一般linux只需要安裝java的執行環境jre【java虛擬機器+java程式所需的核心類庫,虛擬機器使用c++/c實現的,java核心類庫使用java實現的】就可以了,安裝完之後無需設定classpath環境變數,也無需新增path環境變數,因為linux可以自動搜尋到類和java的解釋程式Java。安裝之後就可以將編譯好的位元組碼檔案用java的解釋程式java在linux上解釋運行了

--------------------------------------------------------------------------------------------------------------------------------------------------------------

二關於java8新特性

從1995年推出java jdk1.1到2014/3/18,Oracle釋出了java8正式版,jdk1.8,java引入了大量的新特性

想看java SE從1-8的版本更新引入的新特性請看這篇文章https://www.cnblogs.com/rese-t/p/7823378.html

重新設計的介面語法(default/static)Lamda表示式,方法引用,構造器引用,函數語言程式設計,流式程式設計,新的日期時間API

----------------------------------------------------------

四對跨平臺的理解?跨平臺語言的好處?

一次編譯到處執行的原因:

Java檔案被編譯後會轉換為位元組碼,位元組碼可以在任何平臺上通過java虛擬機器來執行,即通過虛擬機器的解釋程式執行

java之所以跨平臺是因為不同平臺的jvm的解釋程式可以將其解釋成對應平臺上的目的碼,因此java得以跨平臺

如果一個語言能夠實現跨平臺,那麼如果想讓各個不同的平臺上開發同一款客戶端,不如用這種跨平臺的語言去開發,這樣只需一份原始碼就可以實現在各個平臺上執行的客戶端了,加快開發的速度。

然而現實生活中並不是這樣的,拿開發手機客戶端來講,比如說開發微博,在android系統上的微博使用java語言實現,在ios系統上的微博使用object c實現,那麼為什麼不能只用java語言開發微博,讓他同時執行在android平臺和ios平臺呢?希望有人可以指點一下!!

本博文歷時創作4小時,到本博文發表前我想到了其中的原因,因為android平臺使用的dalvik虛擬機器類似於java的虛擬機器,因此java用來開發android客戶端,而ios平臺使用的虛擬機器不同於java虛擬機器,因此無法使用java開發的客戶端執行在ios上

五對java底層的瞭解?

java的執行環境jre【java核心類庫(核心包+擴充套件包+系統包)+jvm虛擬機器】java的類庫使用java實現的,java的jvm使用c++實現的(java.exe)

java的開發工具jdk【java開發工具bin,包含java程式的編譯器】java開發工具也使用c/c++實現的(javac.exe),

我們說作為一個java程式⚪,你會發現掌握java的核心開發類庫,會讓你如魚得水,這也是面試的時候考察一些類的原始碼的原因

六瀏覽器對java的支援?

 最開始java的應用就是網頁上的applet,隨後flash出現逐漸蠶食java的applet,因此現在我們在學習java的時候都不學習他在網頁上的應用了,因為已經被淘汰了這種applet技術

我最近發現瀏覽器真的是一個強大的東西,因為你會發現瀏覽器中自帶了對很多語言的執行支援,也就是說瀏覽器裡安裝了很多語言的執行環境,拿java來講,ie瀏覽器就自帶jre,使得java程式能夠執行在瀏覽器上(java的解釋程式)【這裡說個梗,挺有意思的,據說當年微軟抄襲Java,被oracle控告,從此微軟在windows xp系統的ie瀏覽器中就不再提供java執行環境的支援,】,拿javascript來講,很多瀏覽器都自帶javascript的執行環境(js的解釋程式),使得javascript程式能夠執行在瀏覽器上

七java的舞臺在哪裡?

2007年推出基於linux平臺的android系統,android平臺使用的dalvik虛擬機器類似於java的虛擬機器,因此android使用java來開發客戶端,因此java的一個舞臺----》開發android客戶端

java的另一個舞臺-------》開發服務端應用程式,而我就是從屬於這個舞臺的一名coder