• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    淺析Java卡應(yīng)用執(zhí)行機(jī)制及虛擬機(jī)能效優(yōu)化

    2015-05-30 12:02:58崔巖盧麗敏
    中國(guó)新通信 2015年17期
    關(guān)鍵詞:虛擬機(jī)優(yōu)化

    崔巖 盧麗敏

    【摘要】 面對(duì)日益增多的Java卡應(yīng)用,不同智能卡廠家開(kāi)發(fā)的Java卡在使用過(guò)程中表現(xiàn)出參差不齊的執(zhí)行效率。通過(guò)對(duì)Java卡系統(tǒng)體系和實(shí)現(xiàn)方法研究發(fā)現(xiàn),Java卡的執(zhí)行能效受整體硬件(CPU、RAM、FLASH等)、軟件(Java卡虛擬機(jī)和Java應(yīng)用)條件所影響,但基于實(shí)際的市場(chǎng)環(huán)境,一味提升卡片硬件性能和約束開(kāi)發(fā)方的應(yīng)用編寫(xiě)習(xí)慣,都不是一個(gè)可行、有效的提高運(yùn)行效率的方法。因此本文將通過(guò)解析一個(gè)簡(jiǎn)單Java卡應(yīng)用實(shí)例是如何被Java卡虛擬機(jī)解析及執(zhí)行的過(guò)程,來(lái)探討優(yōu)化Java卡虛擬機(jī)執(zhí)行效率的簡(jiǎn)單思

    【關(guān)鍵詞】 JAVA卡 虛擬機(jī) 執(zhí) 行能效 優(yōu)化

    一、引言

    自2010年國(guó)內(nèi)運(yùn)營(yíng)商開(kāi)始逐漸使用搭載Java虛擬機(jī)的智能卡產(chǎn)品至今已超過(guò)5年之久,累計(jì)產(chǎn)品發(fā)行量過(guò)億張。同時(shí),伴隨近年來(lái)移動(dòng)支付的蓬勃發(fā)展,越來(lái)越多的Java卡應(yīng)用如雨后春筍般出現(xiàn)并應(yīng)用在Java智能卡中,使重多用戶享受到Java智能卡及應(yīng)用的便利,那么這些Java應(yīng)用是如何在Java智能卡上運(yùn)行的?以及如何提升Java卡核心——Java卡虛擬機(jī)的執(zhí)行能效,將是本文向大家闡述的重點(diǎn)內(nèi)容。

    二、Java卡及Java卡應(yīng)用

    2.1為什么要使用Java卡?

    ORACLE公司的Java編程語(yǔ)言已逐漸成為除Microsoft公司的c語(yǔ)言體系之外,另一種主流的商業(yè)軟件開(kāi)發(fā)語(yǔ)言。其崛起與發(fā)展如此迅猛,既有Java作為開(kāi)發(fā)語(yǔ)言本身所具備的諸多優(yōu)勢(shì),也與Java體系開(kāi)發(fā)成本低、易于部署等諸多特點(diǎn)息息相關(guān)。Java語(yǔ)言訴求實(shí)現(xiàn)“應(yīng)用與平臺(tái)無(wú)關(guān)系性”——將上層應(yīng)用與底層平臺(tái)(操作系統(tǒng)及硬件)剝離開(kāi),以實(shí)現(xiàn)“一次編寫(xiě),任意運(yùn)行(write once, run anywhere)”的愿景,為了達(dá)到這一目標(biāo),ORACLE公司提出了Java虛擬機(jī)的概念,并將其應(yīng)用于多個(gè)系統(tǒng)平臺(tái),取得了巨大成功。

    Java語(yǔ)言這種應(yīng)用只需經(jīng)過(guò)一次編譯,就可在任意軟硬件平臺(tái)中運(yùn)行的特質(zhì),十分符合現(xiàn)今電信智能卡應(yīng)用的開(kāi)發(fā)需求。眾所周知,傳統(tǒng)的電信智能卡應(yīng)用多為電信增值業(yè)務(wù),數(shù)量少,功能簡(jiǎn)單,由智能卡制造商根據(jù)自身產(chǎn)品的硬件及卡片操作系統(tǒng)(COS)以Native的形式開(kāi)發(fā)實(shí)現(xiàn)。而由于各廠家的應(yīng)用互不兼容,無(wú)法交互使用,因此一個(gè)應(yīng)用需要所有卡片制造商都進(jìn)行開(kāi)發(fā),消耗巨大的開(kāi)發(fā)、調(diào)試及維護(hù)成本。而隨著移動(dòng)支付領(lǐng)域的迅猛發(fā)展,電信智能卡上需承載越來(lái)越多的第三方應(yīng)用,這些應(yīng)用需求多樣,功能復(fù)雜,且多是由第三方(如銀行等金融機(jī)構(gòu))開(kāi)發(fā),無(wú)法繼續(xù)沿用傳統(tǒng)電信智能卡應(yīng)用的native開(kāi)發(fā)模式,于是Java卡的出現(xiàn)完美的解決了這個(gè)問(wèn)題。

    2.2 Java Applet是如何在Java虛擬機(jī)上運(yùn)行的?

    基于Java卡環(huán)境下的應(yīng)用開(kāi)發(fā)模式與其他高級(jí)語(yǔ)言平臺(tái)開(kāi)發(fā)模式基本類(lèi)似——應(yīng)用的開(kāi)發(fā)方只需考慮如何使應(yīng)用更好的實(shí)現(xiàn)功能,帶給用戶更佳的使用體驗(yàn),而不必關(guān)心應(yīng)用將裝載在哪個(gè)平臺(tái),該如何兼顧平臺(tái)的特性。這些問(wèn)題統(tǒng)統(tǒng)交由Java卡虛擬機(jī)來(lái)解決。因此在這種模式下,應(yīng)用開(kāi)發(fā)商只需要開(kāi)發(fā)一版Java卡應(yīng)用(以下稱(chēng)為Java Applet),就可以裝載并運(yùn)行在任意一張搭載了Java卡虛擬機(jī)的智能卡中。

    每一個(gè)Java Applet從編寫(xiě)到最終在卡片中運(yùn)行,需要經(jīng)過(guò)以下幾個(gè)步驟:

    1.開(kāi)發(fā)者通過(guò)特有的開(kāi)發(fā)環(huán)境,使用Java語(yǔ)言編寫(xiě)源代碼(.Java文件),

    2.將Java源碼編譯成字節(jié)碼(.class文件)。字節(jié)碼是是一種Java體系特有的代碼形式,它具有一定的可讀性,并可被Java虛擬機(jī)解析并執(zhí)行。

    3.編譯好的字節(jié)碼需要與對(duì)應(yīng)的exp文件配合,通過(guò)轉(zhuǎn)換器轉(zhuǎn)換為cap文件,

    4.通過(guò)讀卡器或者空中通道,下載到Java卡上,安裝、實(shí)例化后才可正常使用。

    5.當(dāng)這個(gè)應(yīng)用被選擇執(zhí)行時(shí),卡片的Java運(yùn)行時(shí)找到該應(yīng)用的虛擬機(jī)機(jī)器碼對(duì)應(yīng)的存儲(chǔ)位置,并將其載入Java虛擬機(jī)進(jìn)行解析、執(zhí)行。

    在這整套復(fù)雜的過(guò)程中,有以下兩個(gè)最重要的環(huán)境:

    A.class文件被轉(zhuǎn)換成.cap文件的過(guò)程

    該過(guò)程主要是將class文件的字節(jié)碼轉(zhuǎn)換成可被Java卡虛擬機(jī)識(shí)別并執(zhí)行的虛擬機(jī)代碼。由于ORACLE公司在JCVM規(guī)范中明確規(guī)定了Java虛擬機(jī)所支持的所有指令集,因此這是一個(gè)標(biāo)準(zhǔn)的轉(zhuǎn)換過(guò)程。

    B.cap文件下載到卡片中的過(guò)程

    該過(guò)程主要是卡商自身實(shí)現(xiàn)的Java運(yùn)行時(shí)對(duì)cap的解析和轉(zhuǎn)譯過(guò)程,由于ORACLE公司僅在相關(guān)規(guī)范中只規(guī)定cap文件的內(nèi)容,但未規(guī)定其在卡片內(nèi)部的存儲(chǔ)結(jié)構(gòu)和格式,因此這是一個(gè)非標(biāo)的處理過(guò)程,各智能卡制造商根據(jù)自身的Java卡設(shè)計(jì)情況將cap文件進(jìn)行解析,并按各自Java卡實(shí)現(xiàn)所設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),拆解、組合成私有格式,存儲(chǔ)在卡上。

    三、Java卡運(yùn)算能效因素及優(yōu)化方向

    3.1影響Java卡運(yùn)算能效的因素

    Java卡是相對(duì)比較復(fù)雜的電信智能卡產(chǎn)品,其具備較強(qiáng)大的擴(kuò)展性和靈活的移植性。它在傳統(tǒng)的電信智能卡軟、硬件環(huán)境基礎(chǔ)上,增加一層Java卡虛擬機(jī)和Java運(yùn)行環(huán)境,所有的Java應(yīng)用需要加載到這套Java卡運(yùn)行環(huán)境中才能正常運(yùn)行。因此其運(yùn)算性能受制于整套智能卡軟、硬件條件。具體影響Java卡的運(yùn)算能效的因素包括以下幾點(diǎn):

    硬件層面:

    CPU位數(shù)及主頻

    RAM容量

    Flash讀寫(xiě)速度

    安全算法協(xié)處理器支持情況

    軟件層面:

    Java虛擬機(jī)性能

    Applet源碼性能

    3.2探尋Java卡性能優(yōu)化的方向

    一張Java卡產(chǎn)品的運(yùn)算能效受其軟、硬件環(huán)境的共同影響,理論上,更換更強(qiáng)大的卡片硬件環(huán)境,如更快cpu,更大的RAM空間或讀寫(xiě)更快的Flash存儲(chǔ)器等,都可從根本上提升該Java卡的運(yùn)算能效。同時(shí),對(duì)Java apple源代碼的編寫(xiě)方式進(jìn)行優(yōu)化,使用更科學(xué)的算法設(shè)計(jì)方法,優(yōu)化代碼執(zhí)行流程,更有規(guī)律性、計(jì)劃性的執(zhí)行高耗時(shí)操作等,也可直接提升該應(yīng)用的執(zhí)行效率。

    但從市場(chǎng)化的角度考慮,智能卡制造商對(duì)產(chǎn)品的硬件選型需要考慮成本和利潤(rùn),在一定時(shí)期內(nèi),其使用在Java卡產(chǎn)品平臺(tái)上的電信智能卡芯片硬件性能是固定的。而另一方面,Java卡相較傳統(tǒng)native電信智能卡,其設(shè)計(jì)初衷就是提高產(chǎn)品的開(kāi)放性和開(kāi)發(fā)效率,將卡片實(shí)體生產(chǎn)者和卡片應(yīng)用開(kāi)發(fā)者分離,因此在Java卡環(huán)境下Applet的開(kāi)發(fā)必然是離散形式,開(kāi)發(fā)方并不可控,因此從Applet的編寫(xiě)角度提出優(yōu)化要求并不可行。因此,Java卡產(chǎn)品性能可行、有效且可控的優(yōu)化方向,應(yīng)該是從電信智能卡制造商的Java虛擬機(jī)執(zhí)行效能優(yōu)化提升方向入手。

    四、Java卡虛擬機(jī)的優(yōu)化分析

    4.1 Java虛擬機(jī)執(zhí)行Applet原理解析

    研究如何優(yōu)化Java卡虛擬機(jī)的執(zhí)行效率,就需要弄清Java卡虛擬機(jī)是如何解析執(zhí)行Java Applet的。我們以下面這個(gè)簡(jiǎn)單的“HelloWorld”應(yīng)用作為示例,解析Java虛擬機(jī)如何執(zhí)行這個(gè)Applet的,以下是“HelloWorld”應(yīng)用的源代碼:

    package com.HelloWorld;

    import Javacard.fRAMework.*;

    public class HelloWorld extends Applet

    {

    public static byte[] echoBytes;

    private static final short LENGTH_ECHO_BYTES = 256;

    public static final byte[] HelloWorld = {

    //hello world

    (byte)0x80, (byte)0x48, (byte)0x65, (byte)0x6c,(byte)0x6c, (byte)0x6f, (byte)0x57, (byte)0x6f, (byte)0x72,(byte)0x6c, (byte)0x64, (byte)0x53, (byte)0x05

    };

    protected HelloWorld()

    {

    echoBytes = new byte[LENGTH_ECHO_BYTES];

    register();

    }

    public static void install(byte[] bArray, short bOffset, byte bLength)

    {

    new HelloWorld();

    }

    public void process(APDU apdu)

    {

    byte buffer[] = apdu.getBuffer();

    Util.arrayCopyNonAtomic(buffer, ISO7816.OFFSET_CDATA, HelloWorld, (short)0, (short)HelloWorld.length);

    apdu.setOutgoingAndSend( (short) ISO7816.OFFSET_ CDATA, (short)HelloWorld.length );

    }

    }

    這是一個(gè)最簡(jiǎn)單的Java應(yīng)用,主要實(shí)現(xiàn)的作用是:當(dāng)該應(yīng)用被選擇執(zhí)行后,應(yīng)用向卡外設(shè)備返回“HelloWorld”字符串。

    這個(gè)Applet的源碼被編譯并轉(zhuǎn)換后生成了該應(yīng)用的cap文件,cap文件是一種壓縮格式文件,對(duì)其解壓縮后,可以看到它是由以下12個(gè)組件(component)組成:

    每個(gè)組件都是一個(gè)表單格式的數(shù)據(jù)結(jié)構(gòu),各自描述了這個(gè)Java應(yīng)用的某方面信息,我們可以通過(guò)讀卡器或空中下載通道,將這個(gè)cap下載到卡片中,并安裝執(zhí)行。

    下載到Java卡后,當(dāng)該Applet被執(zhí)行時(shí),Java虛擬機(jī)會(huì)執(zhí)行以下操作:

    A.讀取cap文件中的Method.cap,下面為cap文件的內(nèi)容:

    01 bit[4] flags bit[4] max_stack

    10 bit[4] nargs bit[4] max_locals

    18 8C 00 00 11 01 00 90 0B 7F 00 01 18 8B 00 02 7A 02 30 8F 00 03 3D 8C 00 04 3B 7A 05 21 19 8B 00 05 2D 1A 08 7B 00 06 03 7B 00 06 92 8D 00 07 3B 19 08 7B 00 06 92 8B 00 08 7A bytecodes

    B.載入其中的process函數(shù)的字節(jié)碼并執(zhí)行。

    如下為Method comm Component中process函數(shù)的字節(jié)碼:

    05 21 19 8B 00 05 2D 1A 08 7B 00 06 03 7B 00 06 92 8D 00 07 3B 19 08 7B 00 06 92 8B 00 08 7A

    這些字節(jié)碼實(shí)際是一條一條Java虛擬機(jī)指令,具體的字節(jié)碼分析如下:

    05 flags: maxStack=5

    21 nargs=2 maxLocals=1

    19 aload_1

    8B 00 05 invokevirtual

    2D astore_2

    1A aload_2

    08 sconst_5

    7B 00 06 getstatic_a

    03 sconst_0

    7B 00 06 getstatic_a

    92 arraylength

    8D 00 07 invokestatic

    3B pop

    19 aload_1

    08 sconst_5

    7B 00 06 getstatic_a

    92 arraylength

    8B 00 08 invokevirtual

    7A return

    對(duì)這些字節(jié)碼進(jìn)行解析可以發(fā)現(xiàn),在執(zhí)行這個(gè)process函數(shù)時(shí),大致的過(guò)程主要是通過(guò)getstatic_a獲取數(shù)據(jù),并通過(guò)astore_2、aload_2、sconst_5等堆棧操作函數(shù)將數(shù)據(jù)放入堆棧,在通過(guò)invokestatic函數(shù)的調(diào)用相應(yīng)的方法對(duì)堆棧中的數(shù)據(jù)進(jìn)行運(yùn)算,最后通過(guò)pop將結(jié)果彈棧輸出結(jié)果,

    對(duì)于堆棧的操作,由于緩存數(shù)據(jù)在芯片的RAM中操作,RAM的讀寫(xiě)速度遠(yuǎn)遠(yuǎn)大于Flash存儲(chǔ)域,因此上述操作中涉及堆棧操作的執(zhí)行速度會(huì)很快,對(duì)Java卡虛擬機(jī)執(zhí)行效率的影響也微乎其微。

    而對(duì)于獲取數(shù)據(jù)和調(diào)用方法的操作,則需要根據(jù)其指令后面的參數(shù)進(jìn)一步執(zhí)行相關(guān)操縱,例如getstatic_a類(lèi)和invokestatic類(lèi)指令:

    7B (getstatic_a函數(shù)) 00 06(參數(shù))

    8D (invokestatic函數(shù))00 07(參數(shù))

    這兩個(gè)指令的參數(shù)實(shí)際標(biāo)示了該信息在Constant Pool(以下簡(jiǎn)稱(chēng)CP) Component中的位置。CP中主要存儲(chǔ)了整個(gè)Applet中所有類(lèi)、方法和域的入口信息。對(duì)”Hello World”應(yīng)用的CP內(nèi)容進(jìn)行解析如下:

    05 tag

    00 26 size

    00 09 count

    06 80 03 00 cp_info1

    05 00 00 02 cp_info2

    03 80 03 01 cp_info3

    01 00 02 00 cp_info4

    06 00 00 01 cp_info5

    03 80 0A 01 cp_info6

    05 00 00 00 cp_info7

    06 80 10 02 cp_info8

    03 80 0A 08 cp_info9

    其中每條cp_info是一個(gè)常量成員的內(nèi)容信息,其結(jié)構(gòu)如下:

    cp_info{

    u1 tag

    u1 info(3)}

    由于Get類(lèi)和invoke類(lèi)指令的參數(shù)的結(jié)構(gòu)不同,因此這兩種函數(shù)在CP中獲取進(jìn)一步常量信息的流程也不相同,下面從”Hello World”應(yīng)用的process函數(shù)中分別挑選一個(gè)Get類(lèi)和一個(gè)invoke類(lèi)函數(shù),闡述一下各自的執(zhí)行流程:

    4.1.1 getstatic_a指令

    7B 00 06 getstatic_a

    00 06表現(xiàn)需要獲取的靜態(tài)數(shù)據(jù)在cp中的位置為“0006”,由于cp中成員index從0000開(kāi)始,因此此處表示需要獲取cp_info7的內(nèi)容“05 00 00 00”。其中“05”表示這是一個(gè)“CONSTANT_StaticFieldref”,即后續(xù)的內(nèi)容在Static Field Component中,其后面第一個(gè)”00 ”表示這是一個(gè)內(nèi)部地址,后二個(gè)“00”表示其在Static Field Component中的index。對(duì)”Hello World”應(yīng)用的Static Field Component內(nèi)容進(jìn)行解析如下:

    08 tag

    00 1A size

    00 04 image_size

    00 02 reference_count

    00 01 array_init_count

    03 type

    00 0D count

    80 48 65 6C 6C 6F 57 6F 72 6C 64 53 05 要讀取的數(shù)據(jù)

    00 00 default_value_count

    00 00 non_default_value_count

    這里根據(jù)cp中的入口地址找到,需要調(diào)用的常量?jī)?nèi)容“80 48 65 6C 6C 6F 57 6F 72 6C 64 53 05”,即”Hello World”這段字符Unicode碼的數(shù)值。

    至此可以看到,根據(jù)method component中解析出需執(zhí)行的虛擬機(jī)指令getstatic_a及其參數(shù)(7B 00 06),最終找到了需要獲取的常量數(shù)據(jù)。

    4.1.2 invokestatic指令

    8D 00 07(invokestatic)

    00 07表示需要獲取的靜態(tài)數(shù)據(jù)在cp中的位置為“0007”,即cp_info8的內(nèi)容“06 80 10 02 ”,其中“06”表示這是一個(gè)“CONSTANT_StaticMethodref”,“80”表示這個(gè)是一個(gè)外部的方法,且包的id是“00”,“10”表示這個(gè)方法是引用的class_token,而最后的“02”是這個(gè)方法的token。連貫起來(lái)理解,就這此處需要調(diào)用的方法是token為00的package下token為10的class中的“02”方法。

    由于這條invoke指令調(diào)用的是一個(gè)外部的方法,所以需要到Import Component找到該方法歸屬的package aid,以下是”Hello World”應(yīng)用的Import Component內(nèi)容:

    04 tag

    00 0B size

    01 count

    04 minor_version

    01 major_version

    07 AID_length

    A0 00 00 00 62 01 01 AID

    由此可以獲知該方法歸屬的包的aid為“A0 00 00 00 62 01 01”,即Javacard.fRAMework包,此時(shí)需要以此aid為檢索條件尋找到該包的export文件,并在其中找到對(duì)應(yīng)的方法、完成調(diào)用。

    而如果調(diào)用的是一個(gè)靜態(tài)方法,如invoke的參數(shù)在cp中的內(nèi)容為06 00 00 01,則其中“06”為CONSTANT_ StaticMethodref的tag,第二個(gè)字節(jié)“00”表示這是引用一個(gè)內(nèi)部的靜態(tài)方法,需要到method component中引用該方法,最后兩個(gè)字節(jié)“00 01”代表引用的方法在method component中的偏移地址。此時(shí)Java卡虛擬機(jī)需要再次載入method component表單,并根據(jù)偏移位置載入相應(yīng)的虛擬機(jī)機(jī)器碼,完成方法調(diào)用。

    4.2 Java卡虛擬機(jī)優(yōu)化方法

    從上面的分析來(lái)看,不管Java卡虛擬機(jī)在實(shí)現(xiàn)getstatic_ a指令或者invokestatic指令時(shí),都需要載入、解析和檢索cap文件中的多個(gè)數(shù)據(jù)表單。而Java虛擬機(jī)操作對(duì)象的類(lèi)型不同,還支持其他的getxxx和invokexxx指令,他們的執(zhí)行流程與getstatic_a指令和invokestatic指令相同。我們可以將這些指令抽象成GET類(lèi)指令和invoke類(lèi)指令,并統(tǒng)一進(jìn)行優(yōu)化。

    回顧上述這兩類(lèi)指令執(zhí)行過(guò)程的分析:

    Get類(lèi)指令的實(shí)現(xiàn)過(guò)程需要分別解析Method Component 、Constant Pool Component和Static Field Component三張數(shù)據(jù)表單。

    而invoke指令的執(zhí)行過(guò)程更加復(fù)雜,如果是調(diào)用的是內(nèi)部方法,則需要解析Method Component (2次)和Constant Pool Component,而如果要調(diào)用的是外部方法,還需要多解析一次Import Component以及調(diào)用的包內(nèi)的Method Component 和Constant Pool Component。

    上述所有的component的內(nèi)容都存儲(chǔ)在Flash存儲(chǔ)單元中,讀取和解析工作需要多次的Flash讀取和擦寫(xiě)操作,雖然單純從一條虛擬機(jī)指令的執(zhí)行過(guò)程中來(lái)看,耗時(shí)還可接受,但在整個(gè)Applet的執(zhí)行過(guò)程中,會(huì)出現(xiàn)上述成千上萬(wàn)次的虛擬機(jī)指令的執(zhí)行,以及與之對(duì)應(yīng)的、且成倍增加的Flash讀寫(xiě)過(guò)程,如此積沙成塔,必然會(huì)拖累Applet整體的執(zhí)行速度。因此我們認(rèn)為針對(duì)此類(lèi)API優(yōu)化方法的基本思路是:

    減少API執(zhí)行階段對(duì)多個(gè)component的讀取和解析操作,以實(shí)現(xiàn)降低執(zhí)行過(guò)程中Flash存儲(chǔ)器讀寫(xiě)操作頻率的目的。

    為了實(shí)現(xiàn)這樣的目標(biāo),我們建議:

    將原本在Applet執(zhí)行階段的component解析操作,提前到Applet的其他生命周期,并將解析的結(jié)果——被引用成員變量或方法的絕對(duì)地址作為參數(shù)放置method component的Get和invoke指令后面。

    這樣在Applet執(zhí)行的過(guò)程中,每次執(zhí)行此類(lèi)函數(shù)的速度將大大提高。

    下面的問(wèn)題是:什么時(shí)間點(diǎn)才是執(zhí)行絕對(duì)地址解析的最佳觸發(fā)點(diǎn)?這個(gè)觸發(fā)點(diǎn)應(yīng)該符合以下2個(gè)條件:

    1.在整個(gè)Applet的生命周期中執(zhí)行頻率相對(duì)最低;

    2.在這個(gè)時(shí)間點(diǎn)執(zhí)行絕對(duì)地址解析對(duì)用戶的感知影響最小。

    綜合考慮上述兩個(gè)條件,我們建議在Applet下載到卡片后,進(jìn)行實(shí)例化的過(guò)程中進(jìn)行絕對(duì)地址的解析操作。由于實(shí)例化操作在Applet的整體生命周期中僅會(huì)執(zhí)行一次,同時(shí),該執(zhí)行過(guò)程一般是由應(yīng)用的安裝方發(fā)起,對(duì)最終用的使用感知基本沒(méi)有影響。

    通過(guò)上述方法對(duì)Java虛擬機(jī)字節(jié)碼的執(zhí)行方法進(jìn)行優(yōu)化,以實(shí)現(xiàn)Java虛擬機(jī)對(duì)Java API執(zhí)行效率的提升。

    五、結(jié)論

    通過(guò)前文的論述,我們不難發(fā)現(xiàn),由于受制于現(xiàn)有Java卡硬件水平的限制,不可能將所有的數(shù)據(jù)放置在RAM中操作,所以大部分?jǐn)?shù)據(jù)仍只能儲(chǔ)存在Flash存儲(chǔ)器中,而Flash存儲(chǔ)器的操作速度要遠(yuǎn)遠(yuǎn)低于RAM存儲(chǔ)器,因此在一定硬件條件基礎(chǔ)下,影響Java API的執(zhí)行效率的關(guān)鍵因素就是——Flash存儲(chǔ)器讀寫(xiě)速度慢這一Java卡的硬件瓶頸,而這也是我們對(duì)Java卡虛擬機(jī)能效優(yōu)化的主要著力點(diǎn)。由此我們可以總結(jié)出優(yōu)化Java卡虛擬機(jī)運(yùn)行能效,提高Java應(yīng)用執(zhí)行速度的根本方法——減少API執(zhí)行階段對(duì)多個(gè)component的讀取和解析操作,將解析操作提前到Applet實(shí)例化階段,并以被引用成員變量或方法的絕對(duì)地址作為參數(shù)放置method component的Get和invoke指令后面進(jìn)行解析執(zhí)行。

    參 考 文 獻(xiàn)

    [1]《Virtual Machine Specification Version 3.0.1 Classic Edition》

    [2]《Runtime Environment Specification Version 3.0.1 Classic Edition》

    [3]《Inside the Java Virtual Machine, Second Edition》

    [4]《深入理解Java虛擬機(jī)——JVM高級(jí)特性與最佳實(shí)踐》

    猜你喜歡
    虛擬機(jī)優(yōu)化
    超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
    民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
    關(guān)于優(yōu)化消防安全告知承諾的一些思考
    一道優(yōu)化題的幾何解法
    由“形”啟“數(shù)”優(yōu)化運(yùn)算——以2021年解析幾何高考題為例
    虛擬機(jī)技術(shù)在計(jì)算機(jī)組裝課堂中的應(yīng)用
    虛擬機(jī)服務(wù)器在教學(xué)實(shí)踐中的探索研究
    淺談?dòng)?jì)算機(jī)系統(tǒng)虛擬化網(wǎng)絡(luò)設(shè)置方案
    基于虛擬機(jī)的軟件保護(hù)系統(tǒng)研究與設(shè)計(jì)
    任務(wù)驅(qū)動(dòng)教學(xué)法在《網(wǎng)絡(luò)應(yīng)用服務(wù)管理》教學(xué)中的應(yīng)用
    丰满的人妻完整版| 99国产精品一区二区三区| 亚洲精品美女久久久久99蜜臀| 十分钟在线观看高清视频www| 久久国产亚洲av麻豆专区| 精品亚洲成国产av| 女警被强在线播放| 国产乱人伦免费视频| 国产精品av久久久久免费| 亚洲中文日韩欧美视频| 国产欧美亚洲国产| 欧美大码av| 亚洲精品久久成人aⅴ小说| 国产成人免费观看mmmm| 亚洲欧美日韩另类电影网站| 国产成人精品久久二区二区91| 无限看片的www在线观看| 老司机影院毛片| 日日夜夜操网爽| 欧美日本中文国产一区发布| 黄色a级毛片大全视频| 美女高潮喷水抽搐中文字幕| 国产成人精品在线电影| 国产亚洲欧美在线一区二区| 国精品久久久久久国模美| xxx96com| 国产精品亚洲av一区麻豆| 丝袜人妻中文字幕| 狠狠狠狠99中文字幕| 80岁老熟妇乱子伦牲交| 国产亚洲欧美在线一区二区| 免费观看人在逋| 国产成人精品在线电影| 黄片小视频在线播放| 国产又色又爽无遮挡免费看| 国产精品自产拍在线观看55亚洲 | 亚洲aⅴ乱码一区二区在线播放 | 久久久久国产一级毛片高清牌| 国产成人av教育| 三级毛片av免费| 捣出白浆h1v1| 我的亚洲天堂| 亚洲综合色网址| 大型黄色视频在线免费观看| 美女高潮喷水抽搐中文字幕| 中文字幕制服av| 久久午夜亚洲精品久久| 啦啦啦免费观看视频1| 中文字幕高清在线视频| 99热只有精品国产| 日韩一卡2卡3卡4卡2021年| 国产在视频线精品| 成人18禁高潮啪啪吃奶动态图| 国产成人免费观看mmmm| 无遮挡黄片免费观看| 欧美日韩瑟瑟在线播放| 亚洲性夜色夜夜综合| 国产男女内射视频| 俄罗斯特黄特色一大片| 一区二区三区激情视频| 亚洲精品美女久久久久99蜜臀| 在线天堂中文资源库| 精品第一国产精品| 最近最新中文字幕大全免费视频| 涩涩av久久男人的天堂| 身体一侧抽搐| 飞空精品影院首页| 日韩免费av在线播放| 亚洲伊人色综图| 亚洲精品一卡2卡三卡4卡5卡| netflix在线观看网站| 久99久视频精品免费| 国产不卡av网站在线观看| 美女国产高潮福利片在线看| 一夜夜www| 乱人伦中国视频| 又黄又粗又硬又大视频| 亚洲第一欧美日韩一区二区三区| 婷婷成人精品国产| 中文字幕高清在线视频| 国产精品永久免费网站| 国产主播在线观看一区二区| 丰满人妻熟妇乱又伦精品不卡| 精品熟女少妇八av免费久了| 成年人黄色毛片网站| 色精品久久人妻99蜜桃| 国产蜜桃级精品一区二区三区 | 亚洲av成人一区二区三| 中文字幕人妻丝袜一区二区| 69精品国产乱码久久久| 18禁国产床啪视频网站| 女人被躁到高潮嗷嗷叫费观| 97人妻天天添夜夜摸| 色老头精品视频在线观看| 国产精品国产高清国产av | 80岁老熟妇乱子伦牲交| 老汉色∧v一级毛片| svipshipincom国产片| 欧美激情 高清一区二区三区| 午夜福利视频在线观看免费| 国产xxxxx性猛交| 国产一区在线观看成人免费| 日韩欧美国产一区二区入口| 免费在线观看视频国产中文字幕亚洲| 高清黄色对白视频在线免费看| 动漫黄色视频在线观看| 天堂俺去俺来也www色官网| 999久久久精品免费观看国产| 国产在线一区二区三区精| 精品国产一区二区三区四区第35| 国产av一区二区精品久久| 精品人妻在线不人妻| 国产又色又爽无遮挡免费看| 久久亚洲精品不卡| 两个人看的免费小视频| 黑人欧美特级aaaaaa片| 国产国语露脸激情在线看| 黄片大片在线免费观看| 中国美女看黄片| 亚洲人成电影观看| 久热爱精品视频在线9| 亚洲男人天堂网一区| av视频免费观看在线观看| 亚洲久久久国产精品| 亚洲av电影在线进入| 男女下面插进去视频免费观看| 电影成人av| 欧美国产精品va在线观看不卡| 老司机亚洲免费影院| 超碰成人久久| 国产男女超爽视频在线观看| 欧美在线黄色| 大香蕉久久网| 久久九九热精品免费| 国产成人欧美在线观看 | 91成人精品电影| 巨乳人妻的诱惑在线观看| 国产欧美日韩一区二区三| 国产欧美日韩一区二区三| 亚洲av美国av| 最近最新中文字幕大全电影3 | 国产精品av久久久久免费| 91国产中文字幕| 国产片内射在线| 王馨瑶露胸无遮挡在线观看| 黑人操中国人逼视频| 国产精品一区二区精品视频观看| 亚洲精品乱久久久久久| 另类亚洲欧美激情| 亚洲精品一二三| 国产一区二区激情短视频| 电影成人av| 中文字幕色久视频| 久久久精品国产亚洲av高清涩受| 99热网站在线观看| 婷婷丁香在线五月| 欧美丝袜亚洲另类 | 精品电影一区二区在线| 日韩欧美国产一区二区入口| 成年动漫av网址| 国产免费av片在线观看野外av| 国产亚洲欧美在线一区二区| 亚洲av第一区精品v没综合| 欧美精品人与动牲交sv欧美| a在线观看视频网站| 极品少妇高潮喷水抽搐| 国产精品免费视频内射| 超碰97精品在线观看| 老司机在亚洲福利影院| 国产又爽黄色视频| 日韩三级视频一区二区三区| 亚洲aⅴ乱码一区二区在线播放 | 一区二区三区精品91| 日韩有码中文字幕| 国产成人啪精品午夜网站| 久久国产精品人妻蜜桃| 9色porny在线观看| 国产精品免费大片| 久久久久久久久免费视频了| 国产单亲对白刺激| 成年动漫av网址| 色综合欧美亚洲国产小说| 久久人人爽av亚洲精品天堂| 看免费av毛片| av不卡在线播放| 村上凉子中文字幕在线| 五月开心婷婷网| 狠狠狠狠99中文字幕| 婷婷丁香在线五月| 777久久人妻少妇嫩草av网站| 三上悠亚av全集在线观看| 91字幕亚洲| 国产精品1区2区在线观看. | 一区在线观看完整版| 老司机深夜福利视频在线观看| 久久午夜综合久久蜜桃| 韩国av一区二区三区四区| 久久久久国内视频| 视频在线观看一区二区三区| 99香蕉大伊视频| x7x7x7水蜜桃| 91大片在线观看| 老司机午夜福利在线观看视频| 久久人人爽av亚洲精品天堂| 亚洲自偷自拍图片 自拍| 精品福利观看| 国产高清国产精品国产三级| 久久久精品免费免费高清| 国产淫语在线视频| 久久久国产精品麻豆| 亚洲精品国产精品久久久不卡| 在线观看免费日韩欧美大片| 久久ye,这里只有精品| 99久久99久久久精品蜜桃| 老汉色∧v一级毛片| 国产免费av片在线观看野外av| 久久久久精品人妻al黑| 精品国产一区二区三区久久久樱花| 国产熟女午夜一区二区三区| 国产av又大| xxx96com| 黄色怎么调成土黄色| 91字幕亚洲| 亚洲中文av在线| 免费在线观看黄色视频的| 国内久久婷婷六月综合欲色啪| 在线观看免费视频日本深夜| 午夜福利乱码中文字幕| 久久久久精品人妻al黑| 99riav亚洲国产免费| 久久亚洲真实| 国产精品99久久99久久久不卡| 精品高清国产在线一区| 啦啦啦在线免费观看视频4| 9热在线视频观看99| 欧美日韩国产mv在线观看视频| 淫妇啪啪啪对白视频| 免费在线观看完整版高清| 国产免费现黄频在线看| 久久九九热精品免费| 三级毛片av免费| 国产精品成人在线| 91麻豆av在线| 精品一区二区三区av网在线观看| 国产男女内射视频| 亚洲中文av在线| 亚洲一区中文字幕在线| 欧美亚洲日本最大视频资源| 十八禁高潮呻吟视频| 国产真人三级小视频在线观看| 欧美老熟妇乱子伦牲交| 国产免费现黄频在线看| 久久天躁狠狠躁夜夜2o2o| 国产伦人伦偷精品视频| 国产91精品成人一区二区三区| 亚洲精品美女久久久久99蜜臀| 国产精品久久久人人做人人爽| 中文字幕制服av| 精品欧美一区二区三区在线| 国产精品久久电影中文字幕 | 成人亚洲精品一区在线观看| 一区二区日韩欧美中文字幕| 中文字幕人妻丝袜一区二区| 亚洲熟妇中文字幕五十中出 | 黄色怎么调成土黄色| 在线国产一区二区在线| 国产精品一区二区精品视频观看| 国产国语露脸激情在线看| 亚洲一区高清亚洲精品| 欧美成人免费av一区二区三区 | 窝窝影院91人妻| 免费女性裸体啪啪无遮挡网站| 自线自在国产av| 在线观看免费高清a一片| 老司机在亚洲福利影院| 麻豆乱淫一区二区| 亚洲av片天天在线观看| 天堂俺去俺来也www色官网| 手机成人av网站| 窝窝影院91人妻| 一级黄色大片毛片| 亚洲av第一区精品v没综合| 亚洲全国av大片| 国产亚洲精品久久久久久毛片 | 下体分泌物呈黄色| xxxhd国产人妻xxx| 无遮挡黄片免费观看| xxx96com| 精品一区二区三区av网在线观看| 亚洲欧美一区二区三区久久| 国产亚洲精品一区二区www | 50天的宝宝边吃奶边哭怎么回事| 女人精品久久久久毛片| 大片电影免费在线观看免费| 高清在线国产一区| 身体一侧抽搐| 日韩免费高清中文字幕av| 欧美精品av麻豆av| 看片在线看免费视频| 久久影院123| 精品一品国产午夜福利视频| 另类亚洲欧美激情| 99精国产麻豆久久婷婷| 亚洲人成电影观看| 正在播放国产对白刺激| 黑人操中国人逼视频| 欧美国产精品va在线观看不卡| 在线国产一区二区在线| av网站在线播放免费| 亚洲精品国产色婷婷电影| 精品国产亚洲在线| 亚洲av成人av| 成人三级做爰电影| 热re99久久国产66热| 妹子高潮喷水视频| 免费少妇av软件| 天天影视国产精品| 亚洲精品美女久久av网站| 啦啦啦 在线观看视频| 国产精品.久久久| 黄色女人牲交| 女人久久www免费人成看片| 亚洲性夜色夜夜综合| 欧美日韩乱码在线| 桃红色精品国产亚洲av| 大码成人一级视频| 亚洲午夜精品一区,二区,三区| av线在线观看网站| 国产欧美日韩一区二区三区在线| 一本综合久久免费| cao死你这个sao货| 久久亚洲真实| 日韩欧美免费精品| 久久人妻熟女aⅴ| 香蕉丝袜av| 欧美激情 高清一区二区三区| 日本黄色日本黄色录像| 日韩欧美国产一区二区入口| 熟女少妇亚洲综合色aaa.| 美女扒开内裤让男人捅视频| 正在播放国产对白刺激| 久久精品国产综合久久久| 色尼玛亚洲综合影院| 9色porny在线观看| 动漫黄色视频在线观看| 黄色毛片三级朝国网站| 色综合婷婷激情| 欧美日韩av久久| av欧美777| 久久亚洲真实| √禁漫天堂资源中文www| a级毛片黄视频| 午夜福利一区二区在线看| 亚洲精品粉嫩美女一区| 亚洲九九香蕉| 制服诱惑二区| 少妇裸体淫交视频免费看高清 | 精品福利观看| 亚洲成人免费电影在线观看| 国产高清国产精品国产三级| 精品国产一区二区三区久久久樱花| 久久精品成人免费网站| 中亚洲国语对白在线视频| a级毛片在线看网站| 一级,二级,三级黄色视频| 久久国产精品影院| 一a级毛片在线观看| 亚洲av电影在线进入| 在线观看免费日韩欧美大片| 国产区一区二久久| 韩国av一区二区三区四区| 欧美日韩黄片免| 国内毛片毛片毛片毛片毛片| 美女高潮到喷水免费观看| 久久精品国产亚洲av高清一级| 久久九九热精品免费| 欧美精品av麻豆av| 国产精品国产高清国产av | 午夜老司机福利片| 51午夜福利影视在线观看| 精品人妻1区二区| 欧美黑人欧美精品刺激| 亚洲av熟女| 日韩有码中文字幕| 两性夫妻黄色片| 久久热在线av| 老司机深夜福利视频在线观看| 婷婷精品国产亚洲av在线 | 大香蕉久久成人网| 久久久久久久精品吃奶| 老司机福利观看| 97人妻天天添夜夜摸| 久久久久久久国产电影| 欧美日韩中文字幕国产精品一区二区三区 | 国产真人三级小视频在线观看| 啦啦啦在线免费观看视频4| 老司机在亚洲福利影院| 精品一区二区三卡| 久久99一区二区三区| 久久久国产成人免费| 看片在线看免费视频| 动漫黄色视频在线观看| 日韩欧美一区二区三区在线观看 | 1024香蕉在线观看| 高清毛片免费观看视频网站 | 亚洲全国av大片| 丝袜美足系列| 每晚都被弄得嗷嗷叫到高潮| 午夜福利,免费看| 黄色视频,在线免费观看| 亚洲中文字幕日韩| av线在线观看网站| 在线观看免费视频网站a站| 亚洲 国产 在线| 中文亚洲av片在线观看爽 | 午夜成年电影在线免费观看| 成年女人毛片免费观看观看9 | 大型黄色视频在线免费观看| 成人免费观看视频高清| 亚洲九九香蕉| 久久热在线av| 韩国精品一区二区三区| 欧美日韩亚洲综合一区二区三区_| 欧美亚洲 丝袜 人妻 在线| 色尼玛亚洲综合影院| 久久热在线av| 国产欧美日韩一区二区精品| 亚洲欧洲精品一区二区精品久久久| 热re99久久国产66热| 乱人伦中国视频| 麻豆av在线久日| 一级片'在线观看视频| 亚洲欧美精品综合一区二区三区| 欧美不卡视频在线免费观看 | 国产不卡av网站在线观看| 久久久久久久午夜电影 | 悠悠久久av| 久久天堂一区二区三区四区| 国产亚洲精品久久久久5区| 国产单亲对白刺激| 欧美 亚洲 国产 日韩一| 成人免费观看视频高清| 国产极品粉嫩免费观看在线| 色播在线永久视频| 欧美日韩黄片免| 国产精品av久久久久免费| 日韩三级视频一区二区三区| 美女午夜性视频免费| 国产成人精品无人区| 亚洲情色 制服丝袜| 99国产极品粉嫩在线观看| 国产真人三级小视频在线观看| 国产免费av片在线观看野外av| 久久久久久免费高清国产稀缺| 一区在线观看完整版| 国产高清国产精品国产三级| 超碰97精品在线观看| 国产欧美亚洲国产| 中文字幕人妻熟女乱码| 久久久久精品国产欧美久久久| 天堂俺去俺来也www色官网| 亚洲成人国产一区在线观看| 男女床上黄色一级片免费看| 久久精品熟女亚洲av麻豆精品| 悠悠久久av| 亚洲片人在线观看| 狠狠狠狠99中文字幕| 亚洲人成伊人成综合网2020| 无限看片的www在线观看| 在线天堂中文资源库| 久久久国产成人免费| 免费在线观看日本一区| 久久婷婷成人综合色麻豆| 中文字幕人妻丝袜一区二区| tube8黄色片| 国产成人欧美| 久久天堂一区二区三区四区| 高清毛片免费观看视频网站 | 天天躁夜夜躁狠狠躁躁| 欧美精品av麻豆av| 老司机福利观看| 看免费av毛片| 精品国产亚洲在线| 黑丝袜美女国产一区| 校园春色视频在线观看| 老司机在亚洲福利影院| 国产精品二区激情视频| 日本a在线网址| 欧美日韩成人在线一区二区| 亚洲午夜理论影院| 丝袜在线中文字幕| 丝袜美足系列| 亚洲av日韩在线播放| 亚洲色图 男人天堂 中文字幕| www.精华液| 亚洲午夜理论影院| 在线观看www视频免费| 国产精品久久久av美女十八| 最近最新免费中文字幕在线| 国产精品一区二区在线不卡| 国产成+人综合+亚洲专区| 国产精品香港三级国产av潘金莲| 男女之事视频高清在线观看| 欧美精品人与动牲交sv欧美| 天堂√8在线中文| 丰满的人妻完整版| 99国产精品一区二区蜜桃av | 精品乱码久久久久久99久播| 中文字幕人妻熟女乱码| 国产一区二区激情短视频| 国产成人精品无人区| 国产激情久久老熟女| 亚洲av熟女| 亚洲精品国产一区二区精华液| 婷婷精品国产亚洲av在线 | 叶爱在线成人免费视频播放| 亚洲成a人片在线一区二区| 欧美日韩乱码在线| 国产99白浆流出| 高清视频免费观看一区二区| 国产成人免费观看mmmm| 两性午夜刺激爽爽歪歪视频在线观看 | 成年人免费黄色播放视频| а√天堂www在线а√下载 | 国产成人免费观看mmmm| 免费在线观看视频国产中文字幕亚洲| 国产在线观看jvid| 亚洲成人国产一区在线观看| 成人精品一区二区免费| 在线观看www视频免费| 午夜免费观看网址| 精品乱码久久久久久99久播| www.熟女人妻精品国产| 看片在线看免费视频| 国产精品久久久久久精品古装| 欧美激情 高清一区二区三区| 欧美亚洲 丝袜 人妻 在线| 国产伦人伦偷精品视频| 亚洲九九香蕉| 国产区一区二久久| 视频区图区小说| 国产激情欧美一区二区| 嫩草影视91久久| 视频区欧美日本亚洲| 成人av一区二区三区在线看| 少妇粗大呻吟视频| 一级a爱视频在线免费观看| 久久国产精品影院| 亚洲精品美女久久av网站| x7x7x7水蜜桃| 在线观看免费视频日本深夜| 久久香蕉国产精品| 午夜精品久久久久久毛片777| 国产色视频综合| 极品教师在线免费播放| 麻豆av在线久日| 国产成人精品久久二区二区免费| 巨乳人妻的诱惑在线观看| 亚洲av日韩精品久久久久久密| 欧美乱妇无乱码| 男男h啪啪无遮挡| 国产精品国产av在线观看| 青草久久国产| 老熟妇乱子伦视频在线观看| 女性生殖器流出的白浆| 欧美成人免费av一区二区三区 | av一本久久久久| 伊人久久大香线蕉亚洲五| a级毛片在线看网站| av一本久久久久| 亚洲色图av天堂| 19禁男女啪啪无遮挡网站| 欧美中文综合在线视频| 亚洲专区中文字幕在线| 免费看十八禁软件| 不卡av一区二区三区| 精品久久久久久久毛片微露脸| 精品一区二区三区av网在线观看| 日本欧美视频一区| 热99re8久久精品国产| 少妇 在线观看| 丝袜美腿诱惑在线| 我的亚洲天堂| 在线永久观看黄色视频| 人人妻人人澡人人看| 久久香蕉精品热| 一夜夜www| 91九色精品人成在线观看| 亚洲男人天堂网一区| 男女高潮啪啪啪动态图| 国产真人三级小视频在线观看| 在线观看免费午夜福利视频| 久久久精品区二区三区| 99精国产麻豆久久婷婷| 亚洲精品av麻豆狂野| 国产精品国产av在线观看| 成人三级做爰电影| 18禁观看日本| 麻豆av在线久日| 亚洲午夜精品一区,二区,三区| 露出奶头的视频| 亚洲欧美日韩高清在线视频| 搡老岳熟女国产| 夜夜夜夜夜久久久久| 久久国产精品影院| 免费高清在线观看日韩| 国产精品 欧美亚洲| 午夜影院日韩av| 麻豆av在线久日| 国产av又大| 国产精品99久久99久久久不卡| 欧美日本中文国产一区发布| 精品免费久久久久久久清纯 | av欧美777| 亚洲人成电影免费在线|