發新話題

Java 教程《語法說明》JVM 的啟動

Java 教程《語法說明》JVM 的啟動

使用記號說明
1. [ ] 表示可省略。
2. parameterList 指參數列。
 expression 指運算式,進行運算以產生質的式子,為運算元與運算子的組合,計算的結果稱為該運算式的值。
4. 紅色斜體字表示必須替換。


■ JVM 的啟動
Java 對於 classes 的搜尋

JVM 啟動後會搜尋並載入classes的順序:
* Bootstrap classes
 1. Java platform 所包含的 classes,包括 rt.jar 檔案中的 classes 和其它一些重要的 jar 檔(位於jre/lib目錄),這些類別檔
  會在 system property 中的 sun.boot.class.path 的 bootstrap class path 中指明其所在位置。
 2. 要重新定義 bootstrap 的 class path,可使用 -Xbootclasspath 選項來使用不同的 core classes。
 3. 實作 Java 2 SDK tools 的 classes 並未包含在 bootstrap classes 內而被另外壓製成 SDK's / lib / tools.jar 檔。(SDK's指java的安裝目錄)
 4. Java 的開發工具會在叫用 launcher(負責啟動JVM) 時把該壓製檔(Bootstrap classes 相關的 jar 檔) 加到 user class path 內。
  但是當你使用 javac 和 javadoc 在作編譯和處理原始檔案時,會根據 class path 設定下搜尋到的程式去做處理。

* Extension classes
 1. 使用 Java Extension mechanism 的 classes。這些會被包裝(bundle)成 .jar 檔案並放置在 extensions 目錄(jre/lib/ext)下。
 2. 如果將 class 檔案放置在該目錄下,則必須壓製成 .jar 檔(或 .zip 檔),否則 JVM 會忽略這些 .class 檔。
 3. Java並未提供改變 extension directory 位置的選項參數(option)。
 4. 如果不同 .jar 檔中包含相同名稱的 .class 檔,則在載入時會出現錯誤的 undefined 狀況。
  例如下列會出現錯誤:
   MySmartExtensionA.jar 中包含 class 檔 tw.extension.Home
   MySmartExtensionB.jar 中包含 class 檔 tw.extension.Home

* User classes
 1. 由 developers 和 third parties 所定義但並未利用 extension mechanism 的 classes。
 2. 必須在 command line 利用 -classpath 選項或利用 CLASSPATH 環境變數的設定以指明這些 classes 所在位置。

  
‧請注意JAVA對這些classes處理的特性  
1. 通常你必須指明 user classes 所在位置。而 Bootstrap classes 和 extension classes 會"自動搜尋"。
2. tools classes 被另外包製成另一個檔案(tools.jar),你必須另外指定 class path 時才能使用它。


◇ The Extension Mechanism    - Java 1.2 之後加入的新功能
 extension mechanism 的功用
 1. 提供標準、可攜性(scalable) 的方式使用自行撰寫的 APIs 來運作 Java 平台。
 2. 該機制使得在 runtime 環境下能自動尋找和載入 extension classes,而不需另行設定 class path。

‧建立和使用 Extensions Mechanism
 [步驟] 
 1. 將檔案壓製成 JAR 檔
 2. 使用該 JAR 檔有兩種方式
  A) 把該 JAR 檔案放在 Java Runtime Environment(JRE) 下特定的目錄夾 " lib/ext " 內,這種方式稱做『installed extension』。
  B) 或是在另一個 JAR 檔案中的 manifest 中的 Class-Path 指明該 JAR 檔,此種方式稱為『download extension』。
   例如在開發 applet 程式下時使用。
   [範例]
   MyA.class → 壓製成 MyA.jar
   MyB.class → 壓製成 MyB.jar
        → MyB.jar 檔案中 manifest 檔案內容
         Manifest-Version: 1.0
         Class-Path: MyA.jar

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。