国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2ME簡介

2019-11-18 16:03:00
字體:
來源:轉載
供稿:網友
J2ME (java 2 Micro Edition) 簡介
■前言
如果您曾經到http://www.javasoft.com 網站上查詢有關Java 2 Micro Edition 的資料,十之八九會被一大堆的技術名詞搞的一頭霧水。什么 KVM ,什么CLDC 、CDC 、MIDP ,後面還冒出了Personal Java 、Embedded Java以及JES 等名詞。雖然名為Java 的微小版本,可是它的世界可真是不小,讓我們滿肚子「見山不是山,見水不是水」的疑惑。的確,在我剛開始接觸 Java 2 Micro Edition 的時候,就感覺到這個玩意兒實在越看越讓人摸不著頭緒。因此在本章中,我舍棄了技術上的細節,希望帶大家從巨觀的角度來看待 Java 2 Micro Edition 的世界。希望讀過本章之後,可以使大家體驗「見山是山,見水是水」,一切豁然開朗的感覺。首
先,我們必須先對Java 2 Micro Edition 在整個Java 技術之中的定位做個了解。

■各種不同版本之Java 程序的開發

如前面所說,各種不同的Java 版本,在其支援的核心類別函式庫之完整性以及所支援的 Java 基本型別這兩件事情上都有所差異,也就是說,不管您開發的是企業所使用的Java 程序、嵌入式裝置上執行的Java 程序、瀏覽器上執行的Applet ,或是在PC 上執行的應用程序。您都必須在您的電腦上先安裝 J2SE ,然後再安裝各種版本的核心類別函式庫以及額外的擴充類別函式庫,如此才能成功地開發各種不同目的的Java 程序。J2SE所提供的Java 編譯器(javac.exe)可以幫助我們編譯各種不同平臺上的Java 程序,而J2SE 所提供的Java 虛擬機器(java.exe)則可以幫助我們在P
C 上先行測試這些程序執行結果的正確與否。另外,Java 編譯器并不會幫您檢查您的程序是否符合各種平臺上所支援的核心類別函式庫與 Java基本型別。舉例來說,雖然我們在前面說過,Smart Card 版本并不支援boolean 、byte 以外的Java 基本型別,而且該平臺也只支援java.lang.*核心類別,可是當我們在撰寫 Smart Card 平臺上的程序時,就算在程序碼里頭用了boolean 或byte 以外的Java 基本型別,或者使用了java.lang.*之外的其他核心類別,編譯器仍然可以照常幫您編譯出類別檔。這個時候大家一定開始產生疑惑 --那么這些程序如果放到Smart Card 上頭執行的時候,出了問題怎么辦 ? 難道不會造成Smart Card 上的虛擬機器執行時發生錯誤嗎 ? 針對這個可能發生的潛在問題,Sun Microsystems 在各種不同版本的開發套件中,有些會內附檢查器 (checker)或者預先審核器 (PReverifier),這兩個工具可以幫助您在將程序放到目標平臺之前先做好檢查和預先審核的工作。檢查器會幫您找出類別檔之中不合目標平臺規格的部分,并提醒你這些地方可能無法在目標平臺上執行。因此只要有檢查器的協助,您大致上可以確定您的程序可以符合目標平臺的規定并順利執行。 Java Card 的開發套件中就附有檢查器。

而某些平臺的開發套件則附有預先審核器,預先審核器除了做檢查器做的工作之外,還有一項額外的工作,就是減輕目標平臺上虛擬機器的負擔,要解釋預先審核器這個額外的工作,在傳統的 Java 程序之中,為了安全上的考量,任何進入執行環境的類別檔 (不管該類別檔是來自本機或是遠端機器 ),都必須先經過Byte Code 審核器(Byte code verifier)的驗證,以防止程序在傳送途中遭到惡意的修改,而使得 Java 程序在執行時對系統有不良影響。經過審核之後,該類別檔才能開始被J 虛擬機器所執行。如果這個審核的動作在一般的 PC 上執行,速度倒是還能夠接受,可
是一旦放到如 Palm 或是手機這些CPU 較慢、記憶體也比較少的機器上面就顯得十分吃力了。為了節省寶貴的 CPU 運算時間(既能省電又能夠加速程序執行 ),因此,在程序設計師產生能夠讓某些特定平臺執行的類別檔之前,程序設計師必須先在 PC 上使用預先審核器做一些前置的審核工作,預先審核器會在類別檔之中加入一些特殊標記或符號。如此一來,當這些程序放到目標平臺上執行時,就可以大幅減少在目標平臺上做審核時的時間,藉而加速程序的的啟動及執行速度。因此在J2ME 之下的程序(Spotlet 、MIDlet),其執行步驟變成因為預先審核的關系,執行時Byte Code 審核器的工作就變少了,也因此從程序載入到開始執行之間的時間因而縮短。 CLDC標準實作和MIDP 參考實作之中就附有預先審核器。

■Java 版本的演進

相信熟悉Java 演進歷史的人或多或少都聽說過,Java 技術一開始并非就叫做 Java ,而是叫做OAK ,而且最早的時候就是為了嵌入式系統而設計的一項產品。後來因為網際網路的發達,而OAK 的諸多特性剛好又適合用在網路上(例如可移植性、編譯後程序碼很小),因為商標已被注冊的關系,因此 OAK 被改名成Java ,從此因緣際會地成了網路上的閃亮巨星,并隨著時間越來越成熟,也慢慢地產生了許多非原本預期中的相關運用。雖然 Java 已經被用到許多企業級軟體上,可是其實骨子里面還是非常適合用在嵌入式系統之中。

雖然從Java 1.0 發表之後,Java 就被廣泛地使用在桌上型應用程序以及Applet 的開發上,但是,從Java 1.1 開始,Java又回到了它一開始的老路--也就是嵌入式系統方面的應用,在當時Sun Microsystems 發表了Embedded Java 與Personal Java(也有人簡稱為PJava)這兩項規格。其中Embedded Java 是為了資源十分有限,而且沒有顯示設備的嵌入式裝置而設計; Personal Java 則是為了在能夠與網際網路連線、并擁有顯示系統(例如彩色LCD)的消費性電子裝置而設計。接著Java 的版本演進到Java 2 ,這時為了再明顯區分各種Java 的應用,所以分割出了J2EE 、J2SE
、以及 J2ME 三種版本。這三種版本的各種特性我們已經在前面已經詳細地描述,在此不再贅述。不過請大家記住,由於 Java 2將Java 的應用區分成三大塊,使得 Java 程序語言的發展不會再像Java 1.1時如樹枝狀般擴散出去,這么一來有助於大家對 Java 各種應用的??清,而不會造成今後越發展下去越不可收拾的混亂局面。額外向大家一提的是,後來Personal Java 發展到1.2 版的時候,也采用了一些Java 2 平臺上與安全性有關的設計。


■Java 2 Micro Edition 概觀

J2ME 在設計其規格的時候,遵循著「對於各種不同的裝置而造出一個單一的開發系統是沒有意義的事」這個基本原則。於是 J2ME 先將所有的嵌入式裝置大體上區分為兩種 :一種是運算功能有限、電力供應也有限的嵌入式裝置(比方說PDA 、手機);另外一種則是運算能力相對較佳、并請在電力供應上相對比較充足的嵌入式裝置 (比方說冷氣機、電冰箱、電視機上盒 (set-top box))。因為這兩種型態的嵌入式裝置,所以Java 引入了一個叫做Configuration 的概念,然後把上述運算功能有限、電力有限的嵌入式裝置定義在Connected Limited Device Configuration(CLDC)規格
之中;而另外一種裝置則規范為 Connected Device Configuration(CDC)規格。也就是說, J2ME 先把所有的嵌入式裝置利用Configuration 的概念區隔成兩種抽象的型態。

其實在這里大家可以把Configuration 當作是J2ME 對於兩種類型嵌入式裝置的規格,而這些規格之中定義了這些裝置至少要符合的運算能力、供電能力、記憶體大小等規范,同時也定了一組在這些裝置上執行的 Java程序所能使用的類別函式庫、這些規范之中所定義的類別函式庫為 Java標準核心類別函式庫的子集合以及與該型態裝置特性相符的擴充類別函式庫。比方就CLDC 的規范來說,可以支援的核心類別函式庫為java.lang.*、java.io.*、java.util.*,而支援的擴充類別函式庫為java.microedition.io.*。區分出兩種主要的Configuration 之後,J2ME 接著在定義出Profile的概念。Profile 是架構在Configuration 之上的規格。之所以有
Profile的概念,是為了要更明確地區分出各種嵌入式裝置上Java 程序該如何開發以及它們應該具有哪些功能。因此Profile 之中定義了與特定嵌入式裝置非常相關的擴充類別函式庫,而 Java 程序在各種嵌入式裝置上的使用者介面該如何呈現就是定義在Profile 里頭。Profile 之中所定義的擴充類別函式庫是根據底層Configuration 內所定義的核心類別函式庫所建立。

■Java 在嵌入式系統上的應用

由於Java 本身最初的設計理念即是針對嵌入式系統,因此將他用在嵌入式系統上真可謂如魚得水。在這個linux 開始興起的時空交會點,網路上出現了一篇關於嵌入式 Linux 與Java 互相配合以造就雙贏局面的相關報導,這是由 LinuxDevices.com 的專欄作家 Randy Rorden 所發表的一篇白皮書,名為「 Java 與嵌入式 Linux 合作」。 在這篇文章里頭,作者對嵌入式Linux與Java 個別的優點提出他的看法,同時也提出了Java-Linux 平臺的構想。有興趣的讀者可以到到下列幾個網站參考相關新聞與資料。

1. Java 與嵌入式 Linux 合作白皮書
http://www.ctech.com.tw/d-news/news/linux/89090208.asp
2. Java 及嵌入式Linux 合作
http://www.linuxdevices.com/news/NS5973673868.Html
3. 即將來臨的Java-Linux 結合
http://www.linuxdevices.com/articles/AT7102892618.html

■為何要用Java 撰寫PDA 上的應用程序?

由於預期到今後行動通訊時代的來臨,所以通訊相關行業變的前景可期,而除了達成行動通訊的主要工具 -- 手機月來越精巧之外,有更多的廠商相繼投入PDA 的生產與開發。本來PDA 主要的平臺有PalmOS 、Windows CE 以及EPOC ,也不知道曾幾何時,開始一大堆公司投入embedded linux 的研發,其中包括國內資策會自己開發的 @ViS 作業系統,互慧科技也有自己的嵌入式作業系統,當然更不用說大陸廠商與韓國廠商了。 喔喔!這些作業平臺的數量比起 PC 來說真不知道要復雜上幾倍。對一般使用者來說當然影響比較小,可是對於程序開發者來說,看到這么多不同的程序發展平臺,真是讓人望之卻步。如果每個平臺都有自己的程序寫法以及函式庫,那么光是看上面這些平臺至少就要學習五種以上程序的寫法。當然,只專精一種平臺當然是很好的事情??墒浅绦蛟O計師不禁要說 :”如果我們寫出來的軟體可以在不經過修改原始碼的情況下就能夠在這些平臺上執行,那不是更完美嗎?” 對程序開發者來說,這樣的投資報酬率當然是最大的。

要在那么多平臺上開發程序,對程序設計師來說的確是一個很大的挑戰,如果要把所有的時間和精力放在軟體的可用性上,那么相對地很多時候我們根本沒有那么多時間撰寫各種平臺的程序。要解決這個問題,一般來說程序設計師會選用一個可以跨平臺的Framework 來達成至少source code level 的跨平臺(例入Qt 就能做到)。不過在本篇文章中我們要介紹的則是更終極的解決方案 ?Java ,利用Java 的”write once, run anywhere”特性,我們可以真正達到程序只要寫一次,拿到任何平臺上都可以執行(當然前提是必須要PDA 的廠商也要實作出該平臺的Java Virtual Machine 才行)。利用Java 來做PDA 上的程序當然有其缺點,最廣為人知的可能就是執行效率的問題, Java 在執行速度這個議題上一直讓人詬病。不過筆者認為,隨著技術的發達,將會有更快更省電的PDA 專用CPU 出現,因此效率上的問題其實是可以忽略的。更何況,當 Sun 在設計J2ME 的時候,也用了很多方式企圖加快Java 在PDA 上的執行速度(例如預先審核 )。

■總結

看完了本章之後,您對整個Java 2 Micro Edition 有個大致上的了解了嗎? 再進入下一章之前,請務必弄清楚本章所提到的專有名詞。如果各位想對各種技術規格做更詳細的了解,請自行參考下表所列出的網頁。

Consumer & Embedded Technologies

http://java.sun.com/prodUCts/consumer-embedded/

Consumer & Embedded Technology Center
http://developer.java.sun.com/developer/products/j2me/

Java 2 Micro Edition
http://www.javasoft.com/j2me/

JDC J2ME Tech Tips
http://developer.java.sun.com/developer/J2METechTips/

CLDC & KVM
http://www.javasoft.com/products/cldc/


C & E Center Wireless Technologies
http://developer.java.sun.com/developer/products/j2me/wireless.
html

MIDP
http://www.javasoft.com/products/midp/

Embedded Java
http://www.javasoft.com/products/embeddedjava/

Personal Java
http://java.sun.com/products/personaljava/

JavaPhone
http://java.sun.com/products/javaphone/

Java Embedded Server
http://www.sun.com/software/embeddedserver/index.html

C & E Center Java Embedded ServerTechnology
http://developer.java.sun.com/developer/products/j2me/embedserv
.html

JavaTV
http://www.javasoft.com/products/javatv/

C & E Center Digital Interactive Television
http://developer.java.sun.com/developer/products/j2me/tv.html

Java Card
http://java.sun.com/products/javacard/

C & E Center JavaCardTechnology

http://developer.java.sun.com/developer/products/j2me/smartcard
.html

Motorola 官方Java 網站
http://www.motorola.com/java/

JINI
http://www.sun.com/jini/

C & E Center Downloads & Specifications
http://developer.java.sun.com/developer/products/j2me/downloads
.html

Spotless System Page
http://www.sun.com/research/spotless/<br>

(出處:http://m.survivalescaperooms.com)



上一篇:J2ME內存優

下一篇:J2EE技術

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盘锦市| 宁津县| 和政县| 邹平县| 清镇市| 黑龙江省| 马公市| 张家口市| 都匀市| 克东县| 固镇县| 无极县| 公主岭市| 石家庄市| 东阳市| 上饶市| 阜阳市| 县级市| 阿克苏市| 太仆寺旗| 禄劝| 郴州市| 西平县| 法库县| 白银市| 舞阳县| 南雄市| 乌兰浩特市| 长乐市| 南开区| 靖远县| 怀来县| 金坛市| 浙江省| 肇源县| 苗栗县| 涟源市| 乌兰县| 怀集县| 邯郸市| 太谷县|