Java 呼叫 API

「呼叫 API」是 Java™ 原生介面 (JNI) 的一部分,容許非 Java 程式碼建立 Java 虛擬機器,並載入及使用 Java 類別。 此函數可讓多執行緒程式使用在單一 Java 虛擬機器 (多執行緒) 中執行的 Java 類別。

IBM® Developer Kit for Java 支援下列類型的呼叫程式的 Java 呼叫 API:

  • 啟用以使用兆空間儲存體的 ILE 程式或服務程式。 儲存體模型可以是單一層次儲存體或兆空間儲存體。 如需 JNI 和兆空間儲存體的相關資訊,請參閱 Java 的兆空間儲存體模型原生方法
  • 針對 32 位元或 64 位元 AIX®建立的 PASE for i 執行檔。
    附註: 執行 PASE for i 執行檔時,可能需要適當地設定 LIBPATHLDR_CNTRL 環境變數。

應用程式會控制 Java 虛擬機器。 應用程式可以建立 Java 虛擬機器、呼叫 Java 方法 (類似於應用程式呼叫子常式的方式) ,以及毀損 Java 虛擬機器。 建立 Java 虛擬機器之後,它會保持在處理程序內執行,直到應用程式明確銷毀它為止。 在毀損時, Java 虛擬機器會執行清除,例如執行終止程式、結束 Java 虛擬機器執行緒,以及釋放 Java 虛擬機器資源。

使用已備妥可執行的 Java 虛擬機器,以 ILE 語言撰寫的應用程式 (例如 C 及 RPG) 可以呼叫 Java 虛擬機器以執行任何功能。 它也可以從 Java 虛擬機器回到 C 應用程式,重新呼叫 Java 虛擬機器,依此類推。 Java 虛擬機器會建立一次,且不需要在呼叫 Java 虛擬機器之前重建,即可執行少量或大量 Java 程式碼。

使用「呼叫 API」來執行 Java 程式時, STDOUT 和 STDERR 的目的地是透過使用稱為 QIBM_USE_DESCRIPTOR_STDIO的環境變數來控制。 如果此環境變數設為 Y 或 I (例如 QIBM_USE_DESCRIPTOR_STDIO=Y) ,則 Java 虛擬機器會使用 STDIN (fd 0)、STDOUT (fd 1) 及 STDERR (fd 2) 的檔案描述子。 在此情況下,程式必須將這些檔案描述子設為有效值,方法是開啟它們作為此工作中的前三個檔案或管道。 在工作中開啟的第一個檔案會給定 fd 為 0 ,第二個 fd 為 1 ,第三個為 fd 為 2。 對於使用大量產生 API 所起始的工作,可以使用檔案描述子對映來預先指派這些描述子 (請參閱「大量產生 API」上的文件)。 如果環境變數 QIBM_USE_DESCRIPTOR_STDIO 未設定或設為任何其他值,則檔案描述子不會用於 STDIN、STDOUT 或 STDERR。 相反地, STDOUT 及 STDERR 會遞送至現行工作所擁有的排存檔,且使用 STDIN 會導致 IO 異常狀況。
附註: 訊息CPFB9C8 (File descriptors 0, 1, and 2 must be open to run the PASE for i program.)如果判定未設定 STDIN、STDOUT 及 STDERR 的檔案描述子,但需要設定,則會發出此指令。