java_3

呵呵,說到java,就自然要聯想到java的一大堆宣傳的優點了,集中在一下三點:跨平臺,網絡移動,安全性。第一個想到的是跨平臺,可惜,這個優點我覺得顯得很俗氣,真的沒什麼驕傲的。從辨證角度看,它也就是做了一個抽象嘛,從軟件設計角度看,它也就是多做了一個層。哦,不是,它還沒有抽象這麼偉大,就是多做了一層。安全性呢,還可以吧,就是那個類裝載器比較有意思外,其他就沒什麼了,和網絡移動一結合起來,安全性的漏病就來了,要用數字簽名,可是數字簽名本身就不是發展的很好。說起來,網絡移動性這個優點算是最好的了,雖然這方面發展的比較慢,但是這個優點算是最有前途的了。
丫丫,都是個人見解,個人見解,不負責正確性。

唉,沒有心思畫圖了,否則會形象些。下面模擬的介紹一下一個簡單的java程序是怎麼run起來的。在介紹這個之前,得說說了你一開始學習java就必須遇到的個實際問題了。就是所謂的JDK和JVM、java文件和class文件和jar文件、等等等等,,,

你先把class文件當機器語言看吧,具體的class文件和機器語言之間的區別在後面的java如何實現跨平臺和網絡移動性再說吧。現在是在說run一個java程序,也就是,你寫好java文件,然後編譯成class文件,然後放到JVM上去run就ok了,而你需要做的就是寫java文件。如果只在這個層面上的話,那就傷了心了,難道不想知道完完全全的過程麼?寫代碼要有一個信念,就是你所寫的都是機器語言。就是你寫了一行很簡單的代碼,它可以run出一個結果,但是你的理解層面要深到機器語言的層面,就是你寫的那一行代碼是如何經過編譯連接後最後成爲機器語言,最後如何把指令放到寄存器上去一條一條計算。

JDK,java語言開發的工具包,所謂的工具包,至少要有兩個功能,一個是提供一些基礎的類庫給你用,一個是提供編譯功能。一般的工具包都是提供這兩個方面的功能,當然後面的編譯功能是有很多擴展的,這個你可以到bin目錄下去看。這是單純的JDK,如果你要裝一些集成的開發工具的時候,你會發現它會要你爲這個工具設置一個JVM,但不需要設置JDK,這是當然的,工具本身都會配帶JDK。

JVM,java虛擬機,就這個了,這個算是核心了。也就是上面說過的模擬機器,它模擬了一臺物理機器,有它自己的內存等。所以你幾乎可以不關注實際的物理機器了。從上面看,這樣JVM至少需要一個硬盤一個內存和一堆的寄存器,這樣就ok了,硬盤當然是不能模擬的,是物理機器的硬盤,內存模擬是一個什麼概念呢?其實沒什麼神祕的,實際內存當然是借物理機器的,然後提供自身的一個管理模式對這些內存進行管理,這樣就是一個模擬內存了(自己想象的),其中的核心是JVM提供的內存管理。寄存器呢?JVM也不用了,用了一個java棧來完成這個工作。這個也告訴了我們,很多的硬件功能是可以用軟件來設計完成的。然後JVM完成什麼工作呢?和物理機器聯繫一下,它不就是把class文件當成它的機器語言來run麼?具體的細節後面會談。

發佈了36 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章