使用Java編寫Palm OS程式的解決方案

來源:互聯網
上載者:User

使用Java語言為 Palm OS編寫程式的領域還沒有完全統一,並且也有許多程度上的差異,目前,市面上有好幾種不同的可用的應用程式介面,每種應用程式介面都給出了一個到當前的Palm OS應用程式不同程度的存取權限。也許這其中大家最熟悉的是Sun微系統出品的產品;但是能夠為Palm OS寫程式的絕不只有這一種產品。

一、Sun的解決方案: KVM、 Configuration和 Profile

KVM是 Kilobyte Virtual Machine (KB虛擬機器),那麼命名是因為它的記憶體大小是以KB來量度,而不是像 Java虛擬機器那樣需要MB。 因為有這麼苛刻的記憶體要求, KVM的功能只是完整 JVM的的子集。 你可以從 Javasoft網站上找到全部的資訊,但是值得注意的是它遺漏了映射(reflection)、 JNI和自訂類裝載器以及一個可變的安全機制。

Sun已經制訂一個計劃,提供了 configuration和 profile來滿足裝置程式設計的需要。 configuration是一個應用程式介面,是設計來提供一個基礎,用於一類廣泛的一般的裝置,所有的這些裝置都有相似的特性,比如說有限的記憶體,偶然性強的網路連接性,低電力消耗,可運行在電池上,所以,J2Me被設計得既一般又抽象。 現在 Java 2 Micro Edition(J2ME)可用的 configuration有 CLDC(Connected,Limited Device Configuration)和 CDC(Connected Device Configuration)兩種,後者用於比 Palm功能更強大的裝置,這就超出了我們討論的範圍;而前者,代表有限串連裝置配置,是像PDA,雙通道呼叫器以及行動電話。 CLDC包括一個J2SE中的類的子集,但是有一些重要的差別,例如,因為小型裝置中的虛擬機器使用的無用單元收集機制,CLDC的 java.lang.Object不包含 finalize方法,你應當記住,這個應用程式介面中的某個特定的類可能出現但是它的某個方法卻沒有出現。請參考應用程式介面文檔,這樣的話你就會知道什麼時候該用什麼configuration了。

對於許多剛開始使用 CLDC開發程式的朋友,感到奇怪的是 CLDC不支援浮點數。 這是 KVM預設的實現, KVM是使用 C編寫的,它可以被移植到許多平台上,它不支援浮點運算,這是因為我們所面對的硬體一般是小型裝置,有的還是使用8位的處理器,這些處理器有可能不支援浮點運算。

profile是特殊的具體的,它的目標是一個比configuration更具體的裝置的類,包括使用者介面和事件處理元素,這在 configuration中是沒有出現。 現在, Palm OS或 PDA沒有公開可用的 profile。

Java Community Process有一個已經開發了一段時間的 PDA Profile, 開發人員們仍然在等待一個新的 PDA profile版本。與此同時,想要遵循 KVM/Sun解決方案開發人員的應當做什麼呢? CLDC版本包括一個可以用作 Palm OS的 最原始的profile的類的最小的集合, 據悉, Sun不贊同使用這些類開發任何商業程式,他們也不計劃對這個應用程式介面做任何更新。 但是如果沒有 PDA profile,開發人員也可以使用這些類庫。 通常我們所知的是Kjava,它包含了許多 GUI類: CheckBox、 RadioButton、 List等等。除了這些,還有 Spotlet類,它被用於處理事件以及 Palm OS捕獲手寫筆的輸入和鍵盤按下的事件等等。

下面是一個使用 kjava來顯示簡單的文本字串和按鈕的類:

import com.sun.kjava.*;
public class HelloKjava extends Spotlet
{
  private static Button OKButton;
  public static Graphics g = Graphics.getGraphics();
  file://取得Graphics對象
  public static void main(String args[])
  {
HelloKjava hk = new HelloKjava();
  }
  public HelloKjava() file://HelloKjava類的構造方法
  { OKButton = new Button("OK", 84, 140);
register(NO_EVENT_OPTIONS);
drawScreen();
  }
  public void penDown(int x, int y) {
if (OKButton.pressed(x,y)) {
  System.exit(1);
}
  }
  public void drawScreen()
  {
g.clearScreen(); file://清除螢幕
g.drawString("Hello KJava",20, 10); file://把字串畫在螢幕上
OKButton.paint();
  }
}

還有一個類 com.sun.kjava.Database,它在一種到達 Palm資料庫應用程式介面的方法。 這就是說,它是非常原始的並且不提供訪問存在Palm資料庫中的任何內容完全的許可權。它只允許設定和獲得位元組數組; 它不允許鍵入訪問,除了通過記錄標識號 (是一個整數 )。 因為資料庫只能理解位元組數組,給你的資料意味著你需要把這些位元組數組解析成有含義的欄位。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.