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

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

J2EE概述

2019-11-18 12:31:47
字體:
供稿:網(wǎng)友

  一、前言
  java的技術(shù),因為 computing resource的不同,而區(qū)分為不同性質(zhì)的Java平臺,如 EnterPRise Java、 Embedded Java與 Java Card等。若是以Embedded Java來說,因為功能上的要求有限,并且受限於硬體資源大小(如呼叫器),所以在硬體與Java執(zhí)行環(huán)境上必須有所妥協(xié)。Java Card也是基於硬體與應(yīng)用的 求所開發(fā)的技術(shù),目的是使得 Java的技術(shù)能夠在如同smart card晶片般大小的有限資源下執(zhí)行。所以,目前Java Card可以說是最小的Java平臺。
  二、簡介
  Java Card是Java 平臺中最小的 subset,其設(shè)定的執(zhí)行環(huán)境為smart card上的晶片或是有嚴格硬體限制的環(huán)境。Java Card的問世,一方面是為了推展Java的應(yīng)用層次,一方面也是為了將Java平臺的特性以及Java Card 的好處帶到smart card上,這些好處主要有:
  Platform-Indep endent:使得 Java Card applets (在Java Card上執(zhí)行的程式)能夠在不同卡片的JCAE( Java Card application Environment)上執(zhí)行,即透過Java VM 的機制來達到跨平臺的能力。
  Multi-Applicat ion Capable:在同一個Java Card 中能夠存放多個 Java Card applets ,并且也能夠透過 download的方式來下載必要的applets 而達到一卡多用途的好處,使得卡的使用能夠更有彈性。
  Compatible with Existing Smart Card Standards: Java Card能與國№ 標準ISO 7816( Smart Card標準)以及工業(yè)界標準如 Europay/Master Card/Visa (EMV)相容。
  所以,在未來Java Card不但能夠取代今日Smart Card的功能,更能夠發(fā)展出多樣化的應(yīng)用,如身份識別、醫(yī)療資訊記錄、電子錢包、門禁管控等,甚至能將許多不同的應(yīng)用程式集合於一張卡上,使得這些隨身的軟體能夠更小更實用。
  JavaCard現(xiàn)行的版本有2.0與2.1版,其中2.0版是在1997 年底所釋出,而2.1 版則是在今年剛釋出。
  三、運作邏輯
  如圖1所示Java Card實№運作的模式,主要分為二個部分。
   J2EE概述(圖一)
  圖1、 JavaCard運作模式圖 
  第一個部分就是 Java Card這一端,配合CAD(Card Acceptance Device ),也就是圖1中的Card Reader來傳輸、讀取Card中的資料,并且供給 Card所 的電源。而JavaCard本身則可以執(zhí)行applet程式,使得一些敏感的資料與行為能夠安全執(zhí)行而不受外部程式影響。第二部分則是圖1右方的 Terminal端,負責提供服務(wù)程式及操作介面,并透過CAD 與JavaCard溝通。
  另外,在圖1中所表示的 APDU(Application Protocol Data Units)即雙箭頭的部分,則是 terminal與Java Card溝通的格式與協(xié)定。由terminal 端傳送給Java Card 的APDU稱為Command APDU,主要適用來下達指令以及傳輸資料給Java Card。圖2即Command APDU的格式。
   J2EE概述(圖二)
  圖2、 Command APDU格式 
  其欄位所表示的意義分別為:
  CLA - Class Byte,用於識別applet
  INS - InstrUCtion Byte ,下達給applet之指令
  P1 - 第一個指令參數(shù)
  P2 - 第二個指令參數(shù)
  Lc - Data Field之長度
  Data Field - 資料欄位
  Le - 回傳資料之長度
  例如,terminal要下達兩個byte相加的加法指令(INS= 0x01)給applet( CLA=0x80)時, Command APDU的寫法可能為:
   J2EE概述(圖三)
  而當Java Card applet接收到此一指令時則會先判定 CLA byte是否為 0x80,接著再根據(jù) terminal端所下達的指令來執(zhí)行,并將Data Field依指令性質(zhì)取出兩個獨立的byte來相加。
  而由Java Card端回傳給terminal端的 APDU則稱為 Response APDU,圖3則為此APDU之格式。
  J2EE概述(圖四)
  圖4 
  其欄位所表示的意義分別為:
  Data Field - return之資料欄位
  SW1 - 執(zhí)行狀態(tài)參數(shù)1
  SW2 - 執(zhí)行狀態(tài)參數(shù)2
  所以,利用上述的加法為例,Java Card applet執(zhí)行後所return的值若為 short value(16-bit integer),則 Response APDU的表示法可能為:
  J2EE概述(圖五)
  其中Data Field為一short integer(以兩個bytes表示),而SW1與SW2所表示的意義(0x9000 )即"success"或是 "no error"的意思。
  根據(jù)圖1的運作模式,若以電子錢包為例,我們一開始會在Java Card上 install一個applet ,負責提款、付帳與維護帳目,當我們 要提款時,必須Java Card放入提款機(Terminal)的Card Reader中,透過提款機的服務(wù)程式與介面來提出我們 要的款項,并且通知Java Card 上的applet將這筆款項存入Java Card 的帳目中。如此我們所持有的Java Card就成為一個行動的卡片錢包。若我們 要消費的話(如搭公車、網(wǎng)路購物等),就可以透過相同的邏輯來扣除款項。所以,在諸如此類的消費行為里,我們就可以透過這種簡單的讀卡動作來達到消費的目的。不同於一般信用卡的是,我們不但能做小額的消費,也省去了付帳的繁雜手續(xù)與攜帶零錢的麻煩。
  四、Java Card硬體需求
  Java Card有如一部具體而微的電腦,其硬體的規(guī)格主要是在於維護Java Card runtime environment的 求,其最小的規(guī)格要求為:
  512 bytes RAM:主要用於存放程式執(zhí)行時的 stack、暫存資料以及做為I/O的緩沖區(qū)。
  24 KB ROM :主要用於存放系統(tǒng)的程式以及 Runtime Environment,如 JVM、applets、 native functions 等。
  8 KB EEPROM:用於儲存我們所下載至 Java Card的 applets,并且做為 object heap存放之處。
  8-bit processor: Java Card必須至少支援8位元的處理器。
  五、Java Card軟體架構(gòu)
  在上述的硬體架構(gòu)中,基本上我們可以將Java Card想像為一部PC的縮影,而Java Card的軟體架構(gòu)則具有OS、 native functions 、JCRE(Java Card Runtime Environment)以及架構(gòu)在此JCRE上的應(yīng)用程式(Java Card applets),事實上Java Card的軟體架構(gòu)也是與今日的軟體架構(gòu)相仿,圖5即為Java Card之軟體架構(gòu)。
   J2EE概述(圖六)
  圖5 Java Card之軟體架構(gòu)圖 
  在此軟體架構(gòu)中,最底層的OS and Native Functions 是負責低階的處理工作,如同今日的作業(yè)系統(tǒng)。而在上面兩層Java Card Interpreter與Java Card APIs and Framework就是我們所謂的JCRE,主要負責執(zhí)行Java Card applets以及提供 applet執(zhí)行所 要的環(huán)境。而 Industry Add-on Classes則是 service provider 所提供的classes,使得企業(yè)與公司能夠提供屬於自己的服務(wù)程式。
  Java Card的最上層就是所謂的Java Card applets,就如圖5-1所示,一個 Java Card可以執(zhí)行多個Java Card applets,但是要非凡注重,Java Card 的執(zhí)行環(huán)境并無支援Multi-thread,所以一次只能執(zhí)行一個applet,并且 applet與applet之間也有firewall的阻隔。盡管如此,在Java Card的設(shè)計之中亦有讓不同的 applets相互溝通的機制,我們只 要讓applet implement javacard.framewor k.Shareable interface就能夠分享applet 的 resource。
  因為受限於體積與 resource,所以 Java Card在執(zhí)行環(huán)境上的支援是相當有限的,表即 Java Card執(zhí)行環(huán)境的支援現(xiàn)況,其他具體內(nèi)容請參考 references。
  J2EE概述(圖七)
  六、Java Ring
  Java Ring又名 Java-Powered iButton,是Dallas Semiconductor公司的產(chǎn)品,事實上 Java Ring只是Java Card的另外一種型態(tài),Dallas公司將它制作成為鈕扣的外形,進而鑲嵌在戒指之上,成為一個Java Ring。
  因為Java Ring是沿襲Java Card的規(guī)格,所以在軟體的架構(gòu)上是相同的。而 Java Ring在Java Card的原有的硬體架構(gòu)下加強了其原有的結(jié)構(gòu),并且發(fā)展出與Java Card不同的應(yīng)用層面。
  七、Java Card API
  Java Card的2.1版總共分為四個 packages,而其內(nèi)容與重要的物件分述如下:
  javacard.lang package:提供 Java language重要的classes,如 Object物件,因為所有的Java物件皆繼續(xù)其下。
  Object class - root of class hierarchy
  Throwable class - 為所有 error及exception 的superclass,這亦表示Java Card支援exception
  javacard.frame work package :是Java Card API 主要的core package,提供了實做Java Card applet基本的物件與工具。
  IOS7816 abstract interface - 提供了ISO7816所使用的常數(shù)值
  PIN abstract interface - 使其 subclass能透過此一介面能夠做check PIN number及驗證 PIN是否為validate 等功能
  Shareable abstract interface - 使得不同的applets能夠透過implement此介面來達到互相溝通的功能
  AID class - AID(Application Identifier)是用來唯一表示Java Card applet的number,使得JCRE能夠透過一個AID table來識別或選擇我們所要執(zhí)行的applet
  APDU class - 是屬於 JCRE的物件,是藉由maintain一個 byte array buffer 來接收與傳送 terminal端的指令與回傳applet執(zhí)行的結(jié)果與狀態(tài)的標準格式
  Applet class - 每一個 Java Card applet 都必須繼續(xù)在此 class之下。其中在 implement時要非凡注重幾個methods,如select、 deselect是當 terminal端跟據(jù) applet的AID下達 select或deselect 此applet的指令時,由JCRE來啟動的 methods。而 install與register 則是applet下載至 Java Card安裝并向 JCRE注冊之methods 。等到applet安裝注冊完成,并且被 terminal所select 時,所有下達的 APDU command接會交由applet的 process method來處理并負責回傳結(jié)果
  JCSystem class - 負責治理 applet與Java Card 的系統(tǒng)資源,如AID

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 弥渡县| 宝应县| 大新县| 利川市| 德州市| 鄂尔多斯市| 两当县| 吐鲁番市| 徐闻县| 张掖市| 浮山县| 苏尼特右旗| 蚌埠市| 长治市| 台东市| 静宁县| 安达市| 舒兰市| 阜平县| 揭阳市| 鄂伦春自治旗| 五莲县| 康乐县| 陇西县| 昆山市| 石棉县| 当雄县| 霍林郭勒市| 洪湖市| 独山县| 贵定县| 皮山县| 泸水县| 凌源市| 阿拉善盟| 廊坊市| 兴宁市| 扎鲁特旗| 拉萨市| 广宁县| 肥西县|