• <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)用
    欧美bdsm另类| 超碰97精品在线观看| 国产综合精华液| 一级毛片电影观看| 啦啦啦中文免费视频观看日本| 欧美精品国产亚洲| 热99在线观看视频| 久久精品久久久久久噜噜老黄| 亚洲精品,欧美精品| 成人毛片a级毛片在线播放| 欧美日韩综合久久久久久| 熟女电影av网| 欧美激情久久久久久爽电影| 狠狠精品人妻久久久久久综合| 丰满少妇做爰视频| 97热精品久久久久久| 成人无遮挡网站| 国产在视频线精品| 男插女下体视频免费在线播放| 久久久久九九精品影院| 国产亚洲av嫩草精品影院| 精品一区二区三区视频在线| 18禁动态无遮挡网站| 成人综合一区亚洲| 精品久久久久久成人av| 久99久视频精品免费| 男人和女人高潮做爰伦理| 一级毛片我不卡| 禁无遮挡网站| 好男人视频免费观看在线| 高清欧美精品videossex| 日韩亚洲欧美综合| 欧美成人一区二区免费高清观看| 两个人视频免费观看高清| 日本欧美国产在线视频| 亚洲国产精品成人久久小说| 一区二区三区免费毛片| or卡值多少钱| 国产精品精品国产色婷婷| 免费av毛片视频| 久久这里只有精品中国| av又黄又爽大尺度在线免费看| 免费不卡的大黄色大毛片视频在线观看 | 最近2019中文字幕mv第一页| 大香蕉97超碰在线| 久久久久九九精品影院| 亚洲va在线va天堂va国产| 色播亚洲综合网| 91久久精品国产一区二区成人| 少妇裸体淫交视频免费看高清| 超碰av人人做人人爽久久| 在线观看美女被高潮喷水网站| 毛片女人毛片| 乱系列少妇在线播放| 亚洲人与动物交配视频| 亚洲精品第二区| 欧美成人精品欧美一级黄| 韩国高清视频一区二区三区| 亚洲精品成人av观看孕妇| 国产一级毛片在线| 18禁动态无遮挡网站| 女人被狂操c到高潮| 18禁动态无遮挡网站| 国产色婷婷99| 熟妇人妻久久中文字幕3abv| 免费av不卡在线播放| 人妻夜夜爽99麻豆av| 亚洲av中文av极速乱| 99热网站在线观看| 日本午夜av视频| 国产精品福利在线免费观看| 日韩欧美 国产精品| 国产一区二区在线观看日韩| 美女黄网站色视频| 一区二区三区四区激情视频| 国产老妇伦熟女老妇高清| 一级黄片播放器| 亚洲美女搞黄在线观看| 婷婷色av中文字幕| 亚洲国产精品国产精品| 特级一级黄色大片| 男女啪啪激烈高潮av片| 国产精品国产三级国产av玫瑰| 日韩成人av中文字幕在线观看| 亚洲欧美清纯卡通| 午夜激情福利司机影院| av线在线观看网站| 欧美高清成人免费视频www| 免费av不卡在线播放| 身体一侧抽搐| 免费看a级黄色片| 26uuu在线亚洲综合色| 天堂√8在线中文| 亚洲av一区综合| 在线免费十八禁| 欧美日韩亚洲高清精品| 亚洲三级黄色毛片| 亚洲av二区三区四区| 91久久精品电影网| 亚洲欧美日韩无卡精品| 亚洲国产精品专区欧美| 亚洲av免费在线观看| 国精品久久久久久国模美| 亚洲最大成人手机在线| 国产单亲对白刺激| 国产精品麻豆人妻色哟哟久久 | 久久99热这里只有精品18| 亚洲av一区综合| 青春草国产在线视频| 午夜久久久久精精品| 国产精品99久久久久久久久| 国产老妇女一区| 男人舔女人下体高潮全视频| 精品久久久久久久久av| 美女内射精品一级片tv| 美女xxoo啪啪120秒动态图| 久久99热这里只频精品6学生| 成人无遮挡网站| 久久精品夜色国产| 亚洲人成网站高清观看| av福利片在线观看| 2022亚洲国产成人精品| 我的女老师完整版在线观看| 亚洲最大成人av| 啦啦啦中文免费视频观看日本| 最近手机中文字幕大全| 人妻系列 视频| 狠狠精品人妻久久久久久综合| 国产欧美日韩精品一区二区| 大香蕉久久网| 亚洲欧美一区二区三区黑人 | 超碰97精品在线观看| 九九爱精品视频在线观看| 精品少妇黑人巨大在线播放| 亚洲第一区二区三区不卡| 91aial.com中文字幕在线观看| 久久99热这里只有精品18| 久久久精品94久久精品| 国产综合精华液| 久久久色成人| 丝瓜视频免费看黄片| 尾随美女入室| 国产精品一区二区性色av| 国产真实伦视频高清在线观看| 亚洲内射少妇av| 男女视频在线观看网站免费| 在线免费十八禁| 别揉我奶头 嗯啊视频| 国产在视频线在精品| 成人一区二区视频在线观看| 国产精品一区二区三区四区免费观看| 高清午夜精品一区二区三区| 日韩人妻高清精品专区| 久久精品久久久久久噜噜老黄| 午夜激情久久久久久久| 国精品久久久久久国模美| 狂野欧美白嫩少妇大欣赏| 丝瓜视频免费看黄片| 熟妇人妻久久中文字幕3abv| 日韩,欧美,国产一区二区三区| 夜夜看夜夜爽夜夜摸| 最新中文字幕久久久久| 激情五月婷婷亚洲| 少妇猛男粗大的猛烈进出视频 | 亚洲aⅴ乱码一区二区在线播放| 老司机影院成人| 丝瓜视频免费看黄片| 欧美激情久久久久久爽电影| 2021天堂中文幕一二区在线观| 国产精品日韩av在线免费观看| 97热精品久久久久久| 特大巨黑吊av在线直播| 久久久久久久久中文| 国产精品一区二区在线观看99 | 国产av国产精品国产| 少妇人妻精品综合一区二区| 国产在视频线在精品| 欧美日韩综合久久久久久| 九九久久精品国产亚洲av麻豆| 亚洲国产精品成人综合色| 熟妇人妻不卡中文字幕| av天堂中文字幕网| 五月伊人婷婷丁香| 两个人视频免费观看高清| 亚洲国产精品国产精品| 免费观看在线日韩| 日韩欧美三级三区| 春色校园在线视频观看| 亚洲天堂国产精品一区在线| 免费av不卡在线播放| 深夜a级毛片| 亚洲av一区综合| 人妻系列 视频| 人人妻人人看人人澡| 国产一级毛片七仙女欲春2| 草草在线视频免费看| 亚洲精品久久午夜乱码| 男人狂女人下面高潮的视频| 亚洲精华国产精华液的使用体验| 在线天堂最新版资源| 精品人妻视频免费看| 色哟哟·www| 午夜老司机福利剧场| 国产91av在线免费观看| 人妻一区二区av| 两个人的视频大全免费| 亚洲欧美日韩无卡精品| 激情 狠狠 欧美| 国产麻豆成人av免费视频| 最近最新中文字幕大全电影3| 黄色一级大片看看| 人妻夜夜爽99麻豆av| 国产精品国产三级国产av玫瑰| 色播亚洲综合网| 男人狂女人下面高潮的视频| a级一级毛片免费在线观看| 国产一级毛片七仙女欲春2| 一级毛片 在线播放| 国产高清有码在线观看视频| 久热久热在线精品观看| 在线播放无遮挡| 22中文网久久字幕| 国产黄a三级三级三级人| 日本av手机在线免费观看| 人妻系列 视频| 国产伦精品一区二区三区四那| 精品国产露脸久久av麻豆 | 蜜桃久久精品国产亚洲av| 伊人久久国产一区二区| 女人久久www免费人成看片| 99热网站在线观看| 简卡轻食公司| 久久亚洲国产成人精品v| 国产乱人视频| 乱人视频在线观看| 久热久热在线精品观看| 成年版毛片免费区| 国产成人91sexporn| 精品久久久久久久末码| 99热这里只有是精品50| 两个人的视频大全免费| 高清av免费在线| 欧美成人a在线观看| 日本黄色片子视频| 麻豆成人av视频| 亚洲av中文av极速乱| 一级片'在线观看视频| 欧美性猛交╳xxx乱大交人| 一级黄片播放器| 亚洲精品一区蜜桃| 久久精品国产亚洲av涩爱| 国产午夜精品久久久久久一区二区三区| 青青草视频在线视频观看| 人妻系列 视频| 国产伦一二天堂av在线观看| 蜜臀久久99精品久久宅男| 精品一区在线观看国产| 色视频www国产| 国产一区二区三区综合在线观看 | 丰满人妻一区二区三区视频av| 女人十人毛片免费观看3o分钟| a级毛色黄片| 18+在线观看网站| 国产av在哪里看| 一级二级三级毛片免费看| 麻豆乱淫一区二区| 91精品一卡2卡3卡4卡| 国产精品无大码| 青青草视频在线视频观看| 日韩 亚洲 欧美在线| 美女被艹到高潮喷水动态| 2021天堂中文幕一二区在线观| 青青草视频在线视频观看| 久久久久久久大尺度免费视频| 美女被艹到高潮喷水动态| 国产成人精品久久久久久| 久久精品综合一区二区三区| 嘟嘟电影网在线观看| 久久久久免费精品人妻一区二区| 26uuu在线亚洲综合色| videossex国产| 亚洲在线自拍视频| 久久精品人妻少妇| 亚洲精品影视一区二区三区av| 亚洲av在线观看美女高潮| 成人亚洲欧美一区二区av| 精品久久国产蜜桃| 乱系列少妇在线播放| 亚洲在久久综合| 日韩欧美精品v在线| 在线观看免费高清a一片| 国产精品美女特级片免费视频播放器| 黄色欧美视频在线观看| 美女脱内裤让男人舔精品视频| 亚洲乱码一区二区免费版| 免费电影在线观看免费观看| 能在线免费看毛片的网站| 嫩草影院入口| 久久久久久久久久久丰满| 欧美区成人在线视频| 2018国产大陆天天弄谢| 一区二区三区乱码不卡18| 国产精品伦人一区二区| 国产激情偷乱视频一区二区| 欧美日韩一区二区视频在线观看视频在线 | 男女边吃奶边做爰视频| 性色avwww在线观看| 午夜久久久久精精品| av福利片在线观看| 黑人高潮一二区| 国产黄色视频一区二区在线观看| 久久久久免费精品人妻一区二区| 免费不卡的大黄色大毛片视频在线观看 | 亚洲人成网站高清观看| 国产午夜精品久久久久久一区二区三区| 一级毛片我不卡| 日韩欧美一区视频在线观看 | 美女黄网站色视频| 熟女人妻精品中文字幕| 久久久久久久亚洲中文字幕| 白带黄色成豆腐渣| 亚洲伊人久久精品综合| 国产老妇伦熟女老妇高清| 人人妻人人看人人澡| 中文欧美无线码| 欧美激情在线99| av线在线观看网站| 亚洲精品aⅴ在线观看| 淫秽高清视频在线观看| 亚洲av电影不卡..在线观看| 亚洲av二区三区四区| 麻豆国产97在线/欧美| 亚洲成人一二三区av| 久久久久久久久久人人人人人人| 国产精品日韩av在线免费观看| 成年av动漫网址| 国产伦在线观看视频一区| 亚洲精品乱久久久久久| 韩国av在线不卡| 91狼人影院| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 欧美日韩在线观看h| 欧美性猛交╳xxx乱大交人| 国产精品久久久久久精品电影小说 | 国产三级在线视频| 啦啦啦中文免费视频观看日本| 真实男女啪啪啪动态图| 亚洲av中文av极速乱| 欧美3d第一页| 十八禁国产超污无遮挡网站| 日韩人妻高清精品专区| 男女视频在线观看网站免费| 赤兔流量卡办理| 搡女人真爽免费视频火全软件| 国产人妻一区二区三区在| 少妇熟女aⅴ在线视频| 成人国产麻豆网| 国产精品嫩草影院av在线观看| 伦精品一区二区三区| 深夜a级毛片| 亚洲高清免费不卡视频| 精品一区二区三卡| 亚洲精品亚洲一区二区| 国产精品精品国产色婷婷| 嘟嘟电影网在线观看| 亚洲成色77777| 亚洲国产欧美在线一区| 亚洲欧美中文字幕日韩二区| 日韩在线高清观看一区二区三区| 深夜a级毛片| 亚洲最大成人av| 国产在视频线精品| 十八禁国产超污无遮挡网站| 久久久久免费精品人妻一区二区| 街头女战士在线观看网站| 成人午夜高清在线视频| 亚洲久久久久久中文字幕| 全区人妻精品视频| 色哟哟·www| 成人鲁丝片一二三区免费| 黄色一级大片看看| 久久久久久伊人网av| 亚洲精品日本国产第一区| 国产伦精品一区二区三区四那| 中文欧美无线码| 91精品伊人久久大香线蕉| 免费黄频网站在线观看国产| 精品一区二区三区人妻视频| 国产视频首页在线观看| 青春草国产在线视频| 免费看光身美女| www.色视频.com| 丰满少妇做爰视频| 日韩欧美一区视频在线观看 | 免费观看a级毛片全部| 久久6这里有精品| 十八禁国产超污无遮挡网站| 22中文网久久字幕| 欧美一区二区亚洲| 色尼玛亚洲综合影院| 身体一侧抽搐| 国产高清国产精品国产三级 | 久久这里只有精品中国| 亚洲人与动物交配视频| 三级男女做爰猛烈吃奶摸视频| 一级二级三级毛片免费看| 一级爰片在线观看| 久久99蜜桃精品久久| 亚洲最大成人手机在线| 亚洲国产日韩欧美精品在线观看| 亚洲av男天堂| 亚洲av电影不卡..在线观看| 22中文网久久字幕| 国产在视频线精品| 亚洲欧美日韩东京热| 亚洲av.av天堂| 非洲黑人性xxxx精品又粗又长| 精品酒店卫生间| 亚洲18禁久久av| 麻豆精品久久久久久蜜桃| 女人久久www免费人成看片| 久久人人爽人人爽人人片va| 美女高潮的动态| 网址你懂的国产日韩在线| 国产av不卡久久| 国产单亲对白刺激| 一级毛片黄色毛片免费观看视频| 噜噜噜噜噜久久久久久91| 熟妇人妻不卡中文字幕| 我的老师免费观看完整版| 国产高清国产精品国产三级 | 亚洲av成人av| 久热久热在线精品观看| 国产一级毛片七仙女欲春2| 超碰av人人做人人爽久久| av在线老鸭窝| 国产真实伦视频高清在线观看| av国产久精品久网站免费入址| kizo精华| 亚洲精品色激情综合| 亚洲精品成人av观看孕妇| 人体艺术视频欧美日本| 久久韩国三级中文字幕| 日韩成人伦理影院| 亚洲国产欧美在线一区| 亚洲图色成人| 久久精品久久久久久噜噜老黄| 嘟嘟电影网在线观看| 亚洲成人中文字幕在线播放| 免费看av在线观看网站| 3wmmmm亚洲av在线观看| 一个人免费在线观看电影| 成人午夜精彩视频在线观看| 中文精品一卡2卡3卡4更新| 久久精品国产亚洲av天美| 亚洲国产精品sss在线观看| 男人爽女人下面视频在线观看| 三级男女做爰猛烈吃奶摸视频| 久久99热这里只频精品6学生| 精品久久久久久久人妻蜜臀av| 丰满人妻一区二区三区视频av| 亚洲精品国产av蜜桃| 国产精品国产三级专区第一集| 亚洲国产最新在线播放| 伦理电影大哥的女人| 久久综合国产亚洲精品| 国产欧美日韩精品一区二区| av又黄又爽大尺度在线免费看| 别揉我奶头 嗯啊视频| 91av网一区二区| 亚洲精品第二区| 永久免费av网站大全| 国产精品嫩草影院av在线观看| 九九在线视频观看精品| 午夜福利在线观看吧| 日韩,欧美,国产一区二区三区| 国产高清国产精品国产三级 | 黑人高潮一二区| 色尼玛亚洲综合影院| 亚洲美女视频黄频| 中文字幕制服av| 少妇人妻一区二区三区视频| 美女高潮的动态| 久久久成人免费电影| 免费看日本二区| 91aial.com中文字幕在线观看| 久久精品国产亚洲网站| 久久热精品热| 国产精品美女特级片免费视频播放器| 精品一区二区三区人妻视频| 美女cb高潮喷水在线观看| 国产精品久久久久久久电影| 国产成人a∨麻豆精品| 亚洲欧美日韩东京热| 校园人妻丝袜中文字幕| 中文资源天堂在线| 男女国产视频网站| 亚洲三级黄色毛片| 97超视频在线观看视频| 丝袜喷水一区| 久久久成人免费电影| 成人亚洲精品av一区二区| 3wmmmm亚洲av在线观看| 亚洲精品国产av蜜桃| 国产一区二区在线观看日韩| 亚洲久久久久久中文字幕| 草草在线视频免费看| 亚洲精品乱码久久久v下载方式| 久久精品久久久久久噜噜老黄| 亚洲精品456在线播放app| 国产爱豆传媒在线观看| 2021少妇久久久久久久久久久| 成人毛片60女人毛片免费| 久久久久网色| 国产女主播在线喷水免费视频网站 | 嘟嘟电影网在线观看| 少妇被粗大猛烈的视频| 欧美成人午夜免费资源| 少妇丰满av| 女的被弄到高潮叫床怎么办| 黄片无遮挡物在线观看| 欧美成人精品欧美一级黄| 日韩av在线免费看完整版不卡| 亚洲精品日本国产第一区| 纵有疾风起免费观看全集完整版 | 成人欧美大片| 五月玫瑰六月丁香| 国产免费又黄又爽又色| 精品久久国产蜜桃| 18+在线观看网站| 在线观看美女被高潮喷水网站| 国产伦一二天堂av在线观看| 亚洲av一区综合| 亚洲人成网站在线观看播放| or卡值多少钱| 小蜜桃在线观看免费完整版高清| 久久精品综合一区二区三区| 中国美白少妇内射xxxbb| a级毛片免费高清观看在线播放| 18+在线观看网站| 成人特级av手机在线观看| 中文字幕av在线有码专区| 日本猛色少妇xxxxx猛交久久| 国产午夜精品一二区理论片| 日韩av免费高清视频| 国产成人精品一,二区| 精品久久久久久久久av| 日韩电影二区| 丰满乱子伦码专区| 啦啦啦韩国在线观看视频| av免费在线看不卡| av在线老鸭窝| 亚洲av成人av| 欧美高清成人免费视频www| 中国国产av一级| 伊人久久精品亚洲午夜| 亚洲国产精品成人综合色| 99视频精品全部免费 在线| 天天躁日日操中文字幕| 高清午夜精品一区二区三区| 久久久色成人| 成人毛片a级毛片在线播放| 最近的中文字幕免费完整| 婷婷色麻豆天堂久久| 日本黄色片子视频| 久久精品国产自在天天线| 久久久久久久久久久丰满| 在线免费观看的www视频| 中文字幕久久专区| 日韩强制内射视频| 中国美白少妇内射xxxbb| 91在线精品国自产拍蜜月| 看十八女毛片水多多多| 性插视频无遮挡在线免费观看| 插逼视频在线观看| 久久国内精品自在自线图片| 一区二区三区高清视频在线| 久久久久网色| 神马国产精品三级电影在线观看| 建设人人有责人人尽责人人享有的 | 久久精品人妻少妇| 久久99热6这里只有精品| 亚洲精品日韩av片在线观看| 国产单亲对白刺激| 搡女人真爽免费视频火全软件| videos熟女内射| 精品久久国产蜜桃| 亚洲性久久影院| 18禁在线播放成人免费| 看免费成人av毛片| 国产精品久久视频播放| 成年女人看的毛片在线观看| 国产精品一区www在线观看| 汤姆久久久久久久影院中文字幕 | kizo精华| 一区二区三区四区激情视频| 黄色配什么色好看| 天天躁日日操中文字幕| 熟女电影av网| 成人av在线播放网站| 日产精品乱码卡一卡2卡三| 亚洲人与动物交配视频| 国产精品福利在线免费观看| 狠狠精品人妻久久久久久综合| 九九久久精品国产亚洲av麻豆| 久久久a久久爽久久v久久| 丰满乱子伦码专区| 亚洲欧美日韩东京热| 精品久久久久久久末码| 我的老师免费观看完整版| 韩国av在线不卡| 精品久久久久久久久亚洲| 久久精品国产鲁丝片午夜精品| 精品午夜福利在线看| 久久久欧美国产精品|