Java 入門指南 - 認識 Java API

API 的全名為 Application Programming Interface ,中文可稱之為應用程式介面,簡單來說 API 就是一個程式庫 (library) ,以 Java 而言就是個類別庫,具有各方面應用的類別 (class)




Java API 為隨編譯器下載的官方類別庫,裡頭常見的應用包括
  • 圖形介面
  • 網頁
  • 輸入及輸出
  • 資料結構
  • 時間處理
  • 資料庫
  • 數學計算
  • 網路
  • 伺服器


有些是在 java.lang 的套件 (package) 中,因此使用不需要引入類別名稱,例如數學計算的 Math 類別或是在命令列印出訊息的 System.out 物件 (object) ,其他就需要引入類別名稱,或是使用全名。例如猜數字遊戲
public class GuessGame { 
    public static void main(String[] args) throws Exception { 
        int answer = (int) (Math.random() * 10);
        java.io.InputStreamReader reader = new java.io.InputStreamReader(System.in);
        java.io.BufferedReader input = new java.io.BufferedReader(reader);
        int guess = -1;
        int i = 0;
        String s;
        
        while (answer != guess) {
            System.out.println();
            System.out.println("請輸入 0 - 9 的數字: ");
            s = input.readLine();
            char[] c = s.toCharArray(); 
            guess = (int) (c[0] - 48);
            i++;
        }
        System.out.printf("\n一共回答了 %d 次....\n\n", i); 
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:GuessGame.java
    功能:示範 Java 程式 
    作者:張凱慶
    時間:西元 2011 年 4 月 */


我們拿掉原本放在第 1 行的
import java.io.*;


java.io 就是專門用來處理輸入及輸出工作的,現在第 4 行及第 5 行都需要使用類別名稱的全名
java.io.InputStreamReader reader = new java.io.InputStreamReader(System.in);
java.io.BufferedReader input = new java.io.BufferedReader(reader);


這樣就顯得有點又臭又長,不是嗎?所以還是先 import java.io.* ,這樣在此程式中就能少打四個 java.io. 。如果我們用到 API 的東西越多,先 import 就可以減少越多需要鍵入的東東。


完整、詳細的 API 文件,可見 http://download.oracle.com/javase/6/docs/api/


API 的中文版本,可到郭朝益先生的網站「大智若魚::人生處處是道場」 http://oss-tw.blogspot.com/2008/02/java-se-6-api.html 下載。


下面我們介紹幾個常用的 API 套件與類別:


java.lang 提供許多寫程式經常使用的類別,包括物件之母 Object 類別,基本資料型態的包裹類別 (wrapper class) ,如 Boolean 、 Byte 、 Character 、 Double 、 Float 、 Integer 、 Long 、 Short 類別,具有許多常用數學計算方法的 Math 類別,系統相關功能的 System 類別,同步功能的 Thread 類別,例外處理的 Exception 類別,以及程式經常需要大量處理的字串 String 類別等。


java.awt 提供使用者介面 (user interface) 與點陣圖(包括圖檔)的類別,包括所有常見的 GUI 元件、事件處理、版面規劃等。 javax.swing 則是另一個專門用來設計 GUI 的套件,提供比 java.awt 更精巧的 GUI 功能。


這裡要留意 javax.swing 並非以 java 開頭,而是以 javax 開頭,這是因為 swing 原本是第三方 (third party) 開發出的類別庫,後於 Java 1.2 版以後才收進官方提供的類別庫之中,所以 API 中以 javax 開頭的,原本都屬於第三方開發的類別庫。


java.applet 提供 Applet 類別,使 Java 程式可在有安裝 Java Plug-in 的瀏覽器 (browser) 中執行。


java.util 提供資料結構,如 ArrayList 、 Dictionary 類別,或 List 、 Set 、 Map 等介面 (interface) ,時間處理,如 Calendar 、 Date 、 Timer 等類別。


這裡提到的介面跟使用者介面用的是同一個「介面」,然此介面為程式與程式間的介面,而非使用者與程式間的介面。


程式與程式間的介面類似類別,但介面只需要宣告要有哪些屬性 (field) 與方法 (method) ,屬性為常數值,無須實作方法的詳細內容。這意思是說,介面屬於類別共通的規格,例如汽車都可以加油,加滿油,也就是油槽的儲存量會是一個常數,可能每一款車子都不同,每款汽車同樣需要方向盤,實際方向盤的設計彼此之間可能會有極大的差異。油槽的儲存量就像是介面的屬性,方向盤像是介面的方法。


有些程式語言允許多重繼承,多重繼承使類別可以繼承不同父類別的特性,可是 Java 是不允許多重繼承的程式語言,繼承在 Java 中是單方向的, Java 允許繼承單一父類別,卻可實作多個不同介面,讓類別可以得到不同來源的特性。


java.sql 提供資料庫處理的類別與介面, java.net 提供網路方面, java.servlet 則提供架設伺服器應用方面.....


接下來,我們重拾開發的步伐,進入 EncryptorGUIDemo 類別的設計囉!讓我們先來看看 GUI 的基本概念吧!


中英文術語對照
應用程式介面Application Programming Interface, API
程式庫library
套件package
類別class
物件object
包裹類別wrapper class
使用者介面user interface
第三方third party
瀏覽器browser
介面interface
屬性field
方法method


您可以繼續參考
軟體開發


相關目錄
回 Java 入門指南
回 Java 教材目錄
回首頁


參考資料
The JavaTM Tutorials: Getting Started
The JavaTM Tutorials: Learning the Java Language
The JavaTM Tutorials: Essential Classes
The Java Language Specification, Third Edition


本文於 2013 年 1 月訂正

沒有留言: