標籤:
這些日子,在看一些java的東西,由於剛入手,對java不是很瞭解,結果對java的一些名詞沒有一個清晰的脈絡,現在稍微整理一下
令我糾結的是jdk,sdk,jre,jvm,ide,adt,跨平台性,j2ee,j2se,這些名詞弄的我雲裡霧裡的。
首先,什麼是SDK呢?
Software Develop Kit的簡稱,顧名思義就是軟體開發包。軟體開發商實現底層模組,並對其進行類庫封裝,配置成進階別的開發環境,為程式員上層的程式開發提供支援。譬如Google APP SDK。SDK用於協助開發人員的提高工作效率。各種不同類型的軟體開發,都可以有自己的SDK。Windows有Windows SDK,DirectX 有 DirectX 9 SDK,.NET開發也有Microsoft .NET Framework SDK。JAVA開發也不含糊,也有自己的Java SDK。
下面這段是摘自百度知道的,或許能協助大家瞭解點。
微軟為了讓更多使用者使用他的window系統,他就讓一些進階軟體工程師開發一些方便程式員在window下開發的“方法、原始碼、執行個體”,這些“方法、原始碼、執行個體”被封裝好,起個名字叫:SDK。如果不這樣的話,讓程式員去很難快速、高效的開發window下的軟體,沒有window下的軟體,當然就沒有使用者使用window了,ms就OVER了。
那麼什麼又是JDK呢?
JDK,Java SDK最早叫Java Software Develop Kit,後來改名為JDK,即Java Develop Kit。JDK作為Java開發套件,主要用於構建在Java平台上啟動並執行應用程式、Applet 和組件等。
什麼是JVM呢?
JVM,就是java virtual machine,它是整個java實現跨平台的最核心的部分,所有的java程式會首先被編譯為.class的類檔案,這種類檔案可以在虛擬機器上執行,也就是說class並不直接與機器的作業系統相對應,而是經過虛擬機器間接與作業系統互動,由虛擬機器將程式解釋給本地系統執行。
JVM 是 Java 平台的基礎,和實際的機器一樣,它也有自己的指令集,並且在運行 時操作不同的記憶體地區。 JVM 通過抽象作業系統和 CPU 結構,提供了一種與平台無關的代碼執行方法,即與特殊的實現方 法、主機硬體、主機作業系統無關。但是在一些小的方面, JVM 的實現也是互不相同的,比如記憶體回收 演算法,線程調度演算法(可能不同 OS 有不同的實現)。
JVM 的主要工作是解釋自己的指令集(即位元組碼)到 CPU 的指令集或 OS 的系統調用,保護使用者免被惡意程式騷擾。 JVM 對上層的 Java 源檔案是不關心的,它關注的只是由源檔案產生的類檔案( class file )。類檔案的 組成包括 JVM 指令集,符號表以及一些補助資訊。
什麼是JRE呢?(這裡是摘自不同地方的一些內容,希望可以協助大家理解)
JRE是指java運行環境。光有JVM還不能成class的 執行,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib。在JDK的安裝目錄裡你可以找到jre目錄,裡面有兩個檔案夾bin和lib,在 這裡可以認為bin裡的就是jvm,lib中則是jvm工 作所需要的類庫,而jvm和 lib和起來就稱為jre。所以,在你寫完java程式編譯成.class之後,你可以把這個.class檔案 和jre一起打包發給朋友,這樣你的朋友就 可以運行你寫程式了。(jre裡有運行.class的java.exe)
JRE 是 Sun 公司發布的一個更大的系統,它裡面就有一個 JVM 。JRE 就與具體的 CPU 結構和作業系統有關,我們從 Sun 下載 JRE 的時候就看到了不同的各種版本。同 JVM 一起組成 JRE 的還有一些 API (如 awt ,swing 等)。 JRE 是運行 Java 程式必不可少的。
JRE ( Java Runtime Environment ),是運行 Java 程式必不可少的(除非用其他一些編譯環境編譯成.exe可執行檔……),JRE的 地位就象一台PC機一樣,我們寫好的Win32應用程式需要作業系統幫 我們運行,同樣的,我們編寫的Java程式也必須要JRE才能運行。
JRE裡面有一個JVM ,JRE 與具體的 CPU 結構和作業系統有關,我們從 Sun 下載 JRE 的時候就看到了不同的各種版本,同 JVM 一起組成 JRE 的還有 一些 API (如 awt , swing 等), JRE 是 運行 Java 程式必不可少的。
現在,我們弄清楚了一個關係,JDK裡面有JRE,JRE裡面有JVM。
那麼,java的跨平台性如何理解呢?
首先,自我感覺java的跨平台性主要針對的是web應用。如果有不對,歡迎指教。
傳統的應用程式開發中,為windows開發的就是為windows開發的,不能在linux下運行。開發程式時直接產生在windows下能啟動並執行機器碼,而不同作業系統的機器碼之間是不同的,那麼就在linux下面使用不成了。也就是說不能跨平台。那麼java的跨平台是什麼意思呢?
Java 喊出的帶有標誌性的口號“ Write Once , Run Anywhere (一次編寫,到處運行)”,正是建立在 JRE 的基礎之上。何以實現?就是在 Java 應用程式和作業系統之間增加了一虛擬層—— JRE 。程式原始碼不是直 接編譯、連結成機器代碼,而是先轉化到位元組碼( bytecode ) 這種特殊的中間形式,位元組碼再轉換成機器碼或系統調用。前者是傳統的編譯方法,產生的機器代碼就不可避免地跟特殊的作業系統和特殊的機器結構相關。
Java 程式的位元組碼檔案可以放到任意裝有 JRE 的電腦運行,再由不同 JRE 的將它們轉化成相應的機器代碼,這就實現了 Java 程式的可移植性。這樣程式員也不用去 關心程式啟動並執行具體環境,而可以專心編寫軟體。這種分層抽象、隱藏細節的思想在電腦科學中處處可見,比如機器組織圖的設計、網路通訊協定的實現等。 Pascal 語言的發明者 Niklaus Wirth ,就富有預見性地指出應該有這樣一種可移植的語言,其產生的中間代碼可以在一台假想的機器( a hypothetical machine )上運行。而 JAVA 虛擬機器( Java virtual machine 或 JVM )就是這樣的一台機器,它類比實際處理器的結構,解釋位元組碼。 怎麼一會說是 JRE ,一會兒又成了 JVM ,兩者是否同物不同名? 回答是否定的。
JRE的地位就象一台PC機一樣,我們寫好的Win32應用程式需要作業系統幫我們運行,同樣的,我們編寫的Java程式也必須要JRE才能運行。
如果要開發java應用/web應用,就得在開發段裝JRE+JDK。如果一般使用者運行JAVA WEB程式,瀏覽器就得內嵌有JVM,如果沒有,就得安裝,即在用戶端建立JRE環境。
什麼是j2ee,j2se,j2me呢?
J2EE——全稱Java 2 Enterprise Edition,是Java的一種企業版,用於企業級應用開發。
J2SE——全稱Java 2 Standard Edition,是Java的標準版,用於標準應用程式開發,也是Java基礎版本。
J2ME——全稱Java 2 Micro Edition,是Java的微型版,用於手機、PDA等嵌入式開發,針對手機開發,還有專門的J2ME Wireless Toolkit免費套件提供。
總而言之,J2EE,J2SE,J2ME是java針對不同使用範疇提供不同的服務,也就是提供不同類型的類庫。針對公司專屬應用程式的J2EE(Java 2 Enterprise Edition)、針對普通PC應用的J2SE(Java 2 Standard Edition)和針對嵌入式裝置及消費類電器的J2ME(Java 2 Micro Edition)三個版本。
什麼是IDE呢?
整合式開發環境(簡稱IDE)軟體是用於程式開發環境的應用程式,一般包括代碼編輯器、編譯器、調試器和圖形化使用者介面工具。就是整合了代碼編寫功能、分析功能、編譯功能、debug功能等一體化的開發軟體套。所有具備這一特性的軟體或者軟體套(組)都可以叫做IDE。如微軟的Visual Studio系列,Borland的C++ Builder,Delphi系列等。
Java的IDE有Jbuider,netbeans,eclipse,jcreator等。
Java入門時的一些基本概念的理解(j2ee,j2se,j2me,jdk,sdk,jre,jvm,跨平台)