CN102388363B - 电子器件及执行虚拟机中指令的方法 - Google Patents
电子器件及执行虚拟机中指令的方法 Download PDFInfo
- Publication number
- CN102388363B CN102388363B CN201080013818.7A CN201080013818A CN102388363B CN 102388363 B CN102388363 B CN 102388363B CN 201080013818 A CN201080013818 A CN 201080013818A CN 102388363 B CN102388363 B CN 102388363B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- platform
- application files
- code
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000012545 processing Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 4
- 238000013461 design Methods 0.000 claims description 3
- 230000027455 binding Effects 0.000 abstract description 2
- 238000009739 binding Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 8
- 238000003860 storage Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44552—Conflict resolution, i.e. enabling coexistence of conflicting executables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Abstract
用以下方式可大幅简化在虚拟机环境中的原生方法的部署:加入对应原生代码段于应用档案,例如,JAVA类别档案,以及使用嵌入原生代码段于对应类别档案的库绑定操作。
Description
技术领域
本揭示内容大体有关用以基于平台无关软件来操作至少包含中央处理单元之电子器件的技术,其中该平台系通过仿真标准硬件环境的虚拟机提供。
背景技术
导体制造领域的持续进步导致可制造快速强大的集成电路,它可包含数百万个个别晶体管组件。结果,可开发出高度复杂的数字电路用于设计及生产精密的中央处理单元(CPU),其中提高堆栈密度(packing density)及减少耗电量与高内部存储容量已促进整合精密CPU于各式各样之电子器件的多种开发。结果,不只计算机系统的操作速度及耗电量有优异的效能,形式为手持计算机、行动电话及其类似者的其它各种电子器件(例如,行动器件)也可提供卓越的计算资源。结果,在计算机系统及其它电子器件大幅增长下,对于精密应用系统已建立及持续存在对应的需求。
通常,CPU的操作可基于专属字节代码或机器代码,这可能造成硬件组件(例如,缓存器、I/O(输入/输出)端子及其类似者)的状态随着机器代码指令的顺序而对应地改变。因此,在使用者应用系统与包含CPU之硬件系统间的最深层通信处,字节代码指令的对应顺序必须通过CPU执行,从而以缓存器内容及其类似者的形式提供所欲结果。
不过,开发对应顺序多少有点复杂的机器代码指令可能非常耗时以及可能也需要以下特殊技能:将要用给定应用系统来解决的对应问题或目标“翻译”成一序列的机器代码指令。此外,可满足给定应用系统之要求的开发机器代码程序强烈取决于所用硬件系统的组态,亦即特定的CPU与其它组件,例如外部工作存储器、总线组态及其类似者,使得提供给特定硬件组态的机器代码程序可能无法正常地使用于不同的硬件系统。基于这些原因,已开发出数种编程语言以利程序开 发人员与对应应用系统必须在其中执行的硬件系统通信。例如,引进汇编语言为重大的进步,相较于基本机器字节代码,藉此可提供及设置较高阶的抽象。在提高抽象阶层的其它企图中,已开发出较高阶的编程语言以便提供适当的平台用以产生对应至特定应用系统的源代码而可翻译成计算机系统之微处理器可了解及执行的对应机器字节代码。在该等高阶编程语言中,某些关键词必须根据特定语言的“文法”来使用,从而允许定义一序列的程序步骤以便得到要求的结果。
根据所谓面向对象程序设计的一高阶编程语言开发方法已变成常用的技术,它是企图更方便地把日常生活情况映像成计算机程序。亦即,根据面向对象法,可定义特定的对象或类别以便有可以预定义方式响应某些事件的基本特征。以此方式,可制成极其复杂的应用系统,其中各别的对象可用极便利的方式重复使用于不同的应用系统,从而避免重复开发相同的软件。
尽管高阶编程语言可提供便利的平台供开发多种应用系统,市售各种硬件平台,亦即不同的微处理器类型,计算机系统架构及其类似者,应用系统还是需要具体适配目标架构。由于有此情形,已开发考虑到提供开发平台无关应用系统之可能性的语言,其中软件开发人员可聚焦于应用系统本身而不必考虑对应计算机系统的特定硬件特性。事实上,现今各种市售基于计算机的电子器件(其系提供允许部署多种应用系统的计算资源)可进一步驱动平台无关应用系统的需求。由于诸如行动电话、手持计算机之类的电子器件彼此的硬件组态可能明显不同,因此,平台无关应用系统允许开发最终可用于任何一种电子器件的应用系统,而与特定的硬件架构无关。
此外,数量稳定地增长的计算机系统基于无线及基于电缆的网络信道可连接至任何适当网络,例如互联网,藉此经由网络可将应用系统传送至使用者,其中事前可能不知道特定目标系统的硬件组态。
提供平台无关应用系统的概念实际上系基于引进可操作通过平台无关应用系统提供之特定虚拟字节代码的“虚拟”计算机系统或虚拟机。因此,虚拟机实际仿真硬件组态从而用作平台无关应用系统与特定硬件组态的接口。因此,多种虚拟机可用来提供以标准形式执行的“平台无关”应用系统同时与结合相关操作系统的专属硬件组态建立 接口。结果,当安装适当的虚拟机于计算机系统或或任何其它电子器件时,可开发应用系统以及通过与硬件组态无关的虚拟机执行。例如,升阳计算机的编程语言JAVA为面向对象语言,其中可有效地编程应用系统而不需要适配特定计算机平台的不同操作系统。如果使用者启动JAVA程序,JAVA虚拟机会自动启动以及载入对应的类别档案然后予以解译以产生虚拟机的“机器代码”。如果受考虑应用系统需要其它的类别,在运行时期可按照要求载入该等类别以及也可根据需要加以解译。例如,许多类别可用于虚拟机以及可实作成对应的库。因此,在虚拟机的操作期间,实际CPU执行响应虚拟机的机器代码从而需要内存用以存储处理器的状态,例如以IRQ(中断请求)地址及其类似者的形式。因而,处理器、机器代码及状态内存可定义虚拟机。另一方面,虚拟机执行对应至编译程序的应用系统,从而也需要可存入虚拟机之任何特定信息的专属状态内存。例如,可存储同时出现在虚拟机中由类别之每个版本组成的表格。从而,虚拟机、载入于其中的程序以及各个虚拟特定状态内存可实现实际的应用系统。例如,JAVA虚拟机的规格指定任何输入(亦即,类别档案)的格式,以及它也可指定如何解译该等类别档案。不过,如先前所述,它没有明确规定如何实作解译。结果,可提供一种独立操作平台系统,使得它与JAVA应用系统相关,而与执行它的LINUX系统、Windows系统、或任何其它类型的操作系统无关,只要该等平台中之任一装有专属虚拟机。
JAVA应用系统中的想要平台无关功能用以下方式实现。JAVA虚拟机或类别档案的输入可包含与所欲应用系统有关的任何信息。该等类别档案的特定结构系通过含有必要信息(例如,常量池入口(constant pool entry)、方法及栏描述、代码及除错信息及其类似者)的多个区段来实现。结果,在载入及解译对应类别档案后,内含于该等标准区段的信息可用来验证及预备类别档案供虚拟机执行。
基本上,可理解类别为有属性及方法之多个相似对象的呈现。属性可视为有特定类型的常数或变量。可理解方法为“函数”,因而可表示以字节代码表呈现的一序列制程步骤,亦即必须执行它们以便定义指定程序顺序的虚拟机机器指令。虚拟机的字节代码可与组合指令有类似的抽象水平,如先前所解释的。因此,每个方法可能需要存储 结合与最大必要内存空间等等有关之附加信息的对应本地变量。此外,由于语言的面向对象本质,类别可继承其它类别的方法及属性,这也必须存储于受考虑类别的标准区段。此外,标准区段内必须提供安全信息与异常处理及除错的信息。此外,虚拟机包含类别载入器(class loader),其系负责把存储于外部类别档案的类别信息“转换”成信道运行时结构(channel run time structure)。为此目的,类别载入器可验证受考虑类别的一致性,例如基于验证档案中经由程序及其类似者可存取的每个部份。当验证完成而没有任何错误时,类别载入器载入信息于虚拟机以及启动虚拟机的字节代码执行器。该虚拟机执行器系负责执行基于字节代码的方法,如上述。如果遭遇用于产生各个类别之版本的指令,字节代码执行单元检测此类别是否已载入。结果,在运行时期请求即可载入对应类别档案于虚拟机,在此用任何适当来源,例如,受考虑本地存储器件平台、远程计算机及其类似者,可提供对应类别档案。
尽管虚拟机中与任何特定操作系统及硬件组态无关的特征对于多个应用系统是高度有利的,然而有利的是,可加入特定平台“方法”以便利用平台的特定特性,从而增强各个应用系统的效能,减少特定应用系统的开发时间及其类似者。就此情形而言,该类别档案可包含“原生方法(native method)”的参考,它应被理解为适合基于平台内部资源以高效率执行某一序列程序步骤的特定平台指令集。对应原生方法通常可以适当的库形式提供,例如用于操作系统windows的动态连结库(DLL)或所谓的共享库,例如用于操作系统LINUX者。在参考原生方法的对应请求后,服务该请求所需的对应库可能已由使用者适当地“予以包装”使得在应用系统的运行时间时需要的库都在应用库路径中以便避免在被请求库得不到时产生对应的运行时错误(run time error)。此外,常常冲突发生在不同版本的类别需要不同版本的原生代码(其系表示须由不同原生代码库提供的对应原生方法)时。就此情形而言,常常各个版本的类别可经由相同的库路径来解决它对于原生方法的请求,因而这也可能导致对应的运行时错误。结果,需要加入原生方法之JAVA应用系统的部署可能冗长又容易出错,从而使得此方法(亦即,利用平台内部资源)缺乏吸引力。
鉴于上述情形,本揭示内容系有关于数种系统及方法,在平台无关应用系统中,其系可有效地使用原生方法,同时避免或至少减少上述问题中之一或更多的影响。
发明内容
本揭示内容大体有关于数种技术及系统,其中原生代码可有效地用于须通过虚拟机执行的应用档案。为此目的,可应用可将原生代码嵌入应用档案(例如,JAVA类别档案)的机构,当应用档案中可找到原生方法的请求时,该应用档案可用作库。为此目的,在揭示于本文的一些示范具体实施例中,嵌入原生代码可适当地“隐藏”在类别档案内以便在执行应用档案的虚拟机特定字节代码时被虚拟机忽略。另一方面,在预备通过虚拟机执行的应用档案时,“隐藏”嵌入原生代码(可能结合用于管理嵌入原生代码及其类似者的附加信息)可用作用以显露对于在实际特定虚拟机指令中找到之原生方法之任何请求的基础。例如,嵌入原生代码拷贝至虚拟机可利用的存储器件以及可用于任何其它库找寻操作(library finding operation)或受考虑应用档案。结果,要各自戮力增加原生方法对于虚拟机档案路径(例如,JAVA虚拟机的类别路径)的相依性,以及增补应用系统的库路径以确保地址原生代码库也可用于虚拟机。另外,可避免其它办法,例如拷贝受考虑原生代码库至被视为当下已知为路径的某个目录,藉此也可避免沿着库路径在此有限命名空间中发生库冲突的风险。结果,可提供使用者友善机构,其中通过在类别档案内加入原生代码段或库(可能结合附加信息)以及考虑到识别原生方法之参考以及用嵌入原生代码来解析对应请求的可能性可重新建立平台独立的程度,在一定程度上这可能受限于必须特别顾及原生代码库的可获得性。
在揭示于本文的一示范电子器件包含含有中央处理单元(CPU)、存储器件以及连接该中央处理单元及该存储器件之总线系统的硬件系统。此外,提供实作于该硬件系统的虚拟机指令集,其系经组态成可提供虚拟机用以把特定应用指令解译成虚拟机特定字节代码以及执行该虚拟机特定字节代码。此外,该电子器件包含含有可解译成虚拟机特定字节代码之应用特定指令集的应用档案,其中该应用特定指令集 包含原生方法的请求。此外,该应用档案更包含嵌入原生代码段用来在该虚拟机中执行该应用档案时服务该请求。
揭示于本文的一示范方法系有关于:在一虚拟机中执行指令,该虚拟机系实作于包含至少一中央处理单元的一硬件系统。该方法包含提供包含平台无关指令的一应用档案,该等平台无关指令可解译成可通过该虚拟机执行的虚拟机特定字节代码,其中该应用档案更包含经组态成原生方法在该硬件系统中可执行的嵌入原生代码。此外,该方法包含在该等平台无关指令中寻找一原生方法的请求以及在该嵌入原生代码包含用于该硬件系统之原生方法的实作时显露基于该嵌入原生代码的请求。
揭示于本文的一示范存储媒体包含基于计算机可读取信息的一应用档案。该应用档案包含可解译成字节代码的一平台无关指令集,该字节代码可通过安装于包含一CPU之一硬件系统上的一虚拟机执行,其中该平台无关指令集包含将会基于特定硬件系统指令集来执行之一原生方法的一请求。此外,该该存储媒体之该应用档案包含含有至该原生方法之少一实作的一原生代码库。
揭示于本文的另一示范存储媒体包含基于计算机可读取信息的数据文件。该数据文件包含可解译成字节代码的平台无关指令集,该字节代码可通过安装于包含CPU之硬件系统上的虚拟机执行,其中该平台无关指令集造成该虚拟机可完成以下动作:找到该虚拟机所请求的一应用档案,载入该应用档案于该虚拟机,以及寻找一原生方法的一请求,该原生方法系内含于加在该应用档案中的一平台无关指令集,以及在找到该原生方法之该请求时,在该应用档案中寻找一嵌入原生代码库。
附图说明
本揭示内容的其它具体实施例均定义于随附申请专利范围以及阅读以下参考附图的详细说明可更加明白该等具体实施例。
第1a图根据示范具体实施例示意图示可为装有虚拟机之电子器件、计算机系统及其类似者的硬件组态,其系包含机构用以根据嵌入应用档案的原生代码来处理原生方法之请求;
第1b图根据示范具体实施例示意图示含有嵌入原生代码段的档案结构实施例;
第1c图示意图示虚拟机中之一部份经组态成可处理嵌入原生代码段,例如在JAVA环境中形式为修改类别载入器;以及
第1d图根据其它示范具体实施例示意图示经实作成在虚拟机中用以例如基于第1c图之修改类别载入器来处理原生方法之请求的机构。
具体实施方式
尽管用如以下详细说明及附图所图解说明的具体实施例来描述本揭示内容,然而应了解,以下详细说明及附图并非旨限制本揭示内容为所揭示的特定示范具体实施例,而是所描述的具体实施例只是用来举例说明揭示于本文之专利标的的各种方面,其范畴系由随附的申请专利范围定义。
一般而言,本揭示内容针对的问题是对于要在平台无关虚拟机中执行的原生方法,通过嵌入原生代码或库于应用档案内来处理其请求,虚拟机在运行时期可能无法“看到”该原生代码或库,亦即在解译该应用档案后,在预备应用档案供虚拟机执行期间可使用。为此目的,例如在验证应用档案之一致性及其它特征时,对于原生方法的任何参考,可寻找应用档案的平台无关指令,以及如果找到对应参考,则在受考虑应用档案的实际运行时间之前,寻找虚拟机可读取的嵌入原生代码。该嵌入原生代码可与适当的附加“内务处理”信息关连以便使原生方法的请求能有适当的回应。例如,对于被请求原生方法的适当实作,可寻找嵌入代码及/或附加信息,以及如果找到适当实作,可拷贝至适当的存储地点以便虚拟机在应用档案的运行时期可存取。因而,可使用原生代码段的对应副本于任何其它的库绑定操作(library bind operation),从而避免使用者启动特定平台操作以确保在应用档案的运行时期可利用原生代码库。以此方式,特定平台特征可加入平台无关应用系统从而扩充平台无关应用系统的资源及效能而不需要受考虑硬件系统的特定知识。因此,通过简化原生方法的并入,可扩充平台无关的特征至某一程度。应了解,描述于本文的系统及机构与JAVA虚拟机结合是高度有利的,因为在此可利用有效的工具来实作机构,例 如,因为JAVA虚拟机的类别档案结构允许加入附加区段,基于安全、一致性及其类似者,虚拟机在运行时间可忽略它,只要标准的类别区段符合要求。另外,JAVA可轻易修改虚拟机中负责“预备”类别档案或通过虚拟机执行的一部份以便能够存取设于类别档案中的附加信息,然后在受考虑类别档案的运行时期,可适当地用来提供原生代码或库。不过,通过适当地组态各个应用档案以便包括必要的原生代码段以及处理该等原生代码段以便确保受考虑类别档案的运行时期可存取,描述于本文的机构也可应用于其它的虚拟机实作。结果,本揭示内容应不被视为受限于虚拟机的任何特定实作,除非随附申请专利范围及/或本专利说明书所述之具体实施例另有明示此类限制。
此时参考第1a图至第1d图,更详细地描述其它的示范具体实施例。
第1a图示意图标电子器件150,它可为任何类型的计算机系统,例如形式为手持PDA(个人数字助理)、膝上及其类似者的行动计算机,静止计算机系统及其类似者。在其它的情形下,电子器件150可为任何器件,例如行动电话、包含传感器组件及其类似者的电子电路,它可包含用以建立虚拟机的适当计算资源。电子器件150可包含平台100,它应被理解为可提供实作虚拟机所需资源的硬件组态,其中该硬件组态的操作可结合通常可用于计算机系统的专属操作系统。因此,平台106可包含至少中央处理单元101,例如任何类型的微处理器、微处理器及其类似者,其中电子电路可提供必要的硬件组件,例如CPU核心、缓冲内存、内部讯号总线、供给电压源及其类似者。应了解,CPU 101不一定为单一芯片组件,而可包含多个个别半导体芯片以便得到想要的功能,这取决于平台100的整体复杂度。同样,可提供有任何适当组态的存储器件102,例如存储器件102可包含非挥发性存储器,例如硬盘、闪速存储器及其类似者及/或形式为RAM(随机存取内存)器件及其类似者的挥发性存储器件。此外,CPU 101与存储器件102可用总线系统103连接使得CPU 101与存储器件102能够交换数据。应了解,根据平台100的组态,可提供任何其它组件,例如电压源、I/O组件及其类似者,该等组件未图标于其中。此外,在图示具体实施例中,平台100可包含操作系统(OS)104,可理解它为在器件150操作 期间执行于CPU 101的适当指令集,从而提供特定平台应用系统与CPU101的接口。亦即,操作系统104可协调一或更多特定平台应用系统的处理以及也可提供多个有定义的应用系统,它们可称为库104a以及可用于对应特定平台应用系统以便增强整体效能。应了解,直接提供给操作系统104的应用系统在此可被称作特定平台应用系统,因为此类应用系统的开发必须至少考虑到操作系统104的特定特征,同时在许多情形下,也必须考虑到CPU 101、存储器件102及/或总线系统103的特定硬件特征。
此外,电子器件150可包含虚拟机,可理解它为平台100的平台相依应用系统,亦即虚拟机110可为多个特定平台指令,在通过平台100执行时,可模拟对于通过虚拟机110执行的应用系统有明确标准特性的平台。因此,如先前所述,对于平台100,虚拟机110可为特定平台应用系统,接着特定平台应用系统为专属于虚拟机110之任何应用系统的标准作业环境。以此意义而言,不论平台100的组态为何,用于虚拟机110的应用系统可被称作平台无关应用系统。在图示具体实施例中,该虚拟机可包含字节代码执行单元111与载入单元112,在虚拟机为JAVA虚拟机(JVM)时,它以类别载入器表示。此外,在图示于第1a图的状态下,电子器件150可包含应用档案的一或更多来源,例如数据库113,它们可与代表虚拟机110的应用系统、通过远程计算机系统或任何其它档案供应者例如任何适当网络(以114表示,例如,互联网)来提供的应用系统、可本地存储于平台100的特定应用档案115及其类似者关连。档案来源113、114及115中之至少一可包含应用档案120,它可保持原生代码的请求以便利用特定平台库,例如库104a。因而,在习知虚拟机中,对应应用档案可促进某一程度的平台相依,因为各个方法需要保证对应原生代码资源在应用档案的运行时期在虚拟机110可利用。根据本文所揭示的原理,在虚拟机为JAVA环境时,应用档案120(也可被称为类别档案)可包含原生代码125,除了可通过字节代码执行单元111处理的平台无关指令以外。原生代码或库125可为适合执行原生方法的指令集,基于适当的接口系统(未图标),它们可通过平台100直接处理,从而提供增强效能的应用系统或其中对应至档案120的一部份。为此目的,可嵌入原生代码125使得单元111 的操作不被原生代码125的存在影响,藉此可处理对应平台无关指令121而无干扰。另一方面,在用单元112“预备”应用档案120时可有效使用原生代码125以便在应用档案120的实际运行时期能够存取原生代码或其副本。
在电子器件150的操作期间,可请求执行含有应用档案120的应用系统来启动激活目前未运作的虚拟机110。单元112,例如JAVA类别载入器,基本上可服务通过单元111发出应用档案(例如,类别档案)的请求。服务应用档案的对应请求可包含下列步骤:寻找对应应用档案,例如可寻找不同的来源113、114及115,以及可包含验证类别档案的特定特征,例如符合特定语言格式要求、安全方面及其类似者。此外,可解析该应用档案,亦即可完全预备该档案供执行。此外,单元112的活动可包含操作,例如将包含于数据121的平台无关指令集转换成单元111所使用的运行时间格式。另外,单元112在平台无关指令中可找到原生方法的请求,以及在找到时,在原生代码段125内寻找原生方法的适当实作。如果在段125中认出适当实作,通过保证可存取该适当实作,例如通过把至少一部份的段125拷贝至专属内存空间以及利用用于应用档案120可能需要的其它库连结操作的对应内存空间,可继续应用档案120的预备。
第1b图根据一示范具体实施例示意图示应用档案120的示意图。如图示,应用档案120可为用于JAVA环境的类别档案,其中可能必须提供特定格式由JAVA语言规格决定的“标准”JAVA信息内容121,这在本技艺为众所周知。例如,可能必须使用多个区段,在此以简化方式表示为幻数、版本、常数池、存取、类别、接口、栏位、方法及属性,以便与JAVA语言一致。因此,在载入应用档案120时,可验证内容121中之区段的一致性,同时在此阶段期间,对于对应语言规格的一致性,可忽略以“库1”、“库2”、“库信息”表示的任何附加区段。也可以区段125a、…、125n表示的附加区段在验证部份121之区段的一致性期间“可看见”,例如,通过提供不会干扰将区段125a、…、125n表示成非标准区段的语言规格的适当区段标头(section header)。应了解,区段125n中之一个可包含可适当地使用原生代码段的任何附加信息,同时在其它的情形下,区段125a、…、125n中之 每一可包含例如用于识别各个原生方法的对应“内务处理”信息,因此可提供实作及相关的对应实作。因此,通过加入用于不同类型之平台的多个特定平台特征可提供有某一程度之平台独立性的对应应用档案,从而可大幅增强对应应用系统的效能及使用者友善性。在其它的情形下,通过加入特定平台特性可增强某一基本应用系统的效能,其中基本上通过加入不同的特定平台信息,相同的应用系统可专属于不同的平台。
第1c图示意图标单元112的结构,它本身可实作成可通过虚拟机110执行之应用系统的形式。例如,如先前所述,JAVA为基本或父类别之某些性质可由子类别继承的面向对象语言,其中可覆盖该等性质中之一些,亦即,方法,以便扩充父类别的各种能力。例如,JAVA环境的标准类别载入器可为父类别,以及修改类别载入器的定义可通过实作应用档案120之原生代码段125(参考第1b图)的处理能力以便适当地服务原生方法的请求。在图示于第1c图的具体实施例中,载入器单元112可包含多个方法,它们由父类别载入器继承以及可能不被改变,因为该等方法可以“最终的”表示,如组件符号114所示。另一方面,可扩充父类别载入器的载入类别方法以便包括原生代码段的处理,从而得到对应的方法113。
第1d图示意图示的机构系用于实作处理原生代码段的必要功能同时也考虑到验证标准信息内容一致性的可能性,例如部份121(参考第2e图)。如图示,载入类别方法113可包含第一步骤113a以便在类别档案120的对应平台无关指令121中识别原生方法的请求,如第2b图所示。如果在步骤113a没有找到原生方法的对应请求,可用默认的行为继续载入类别方法,如步骤113b所示。就此情形而言,可通常的方式进行一致性及其类似者的验证。如果在步骤113a找到原生方法的对应请求,该机构可继续到步骤113c,其系在应用档案中寻找任何嵌入原生代码。为此目的,可适当地将载入类别方法组态成可识别设于附加区段125a、…、125n(参考第1b图)的各个附加区段或任何其它信息以便可检测嵌入原生代码的存在以及也可评估与原生方法之请求有关的其它信息。例如,基于在第2b图之区段125a、…、125n中可得到的附加信息,可评估是否可取得被请求原生方法的适当实作。如果没 有找到对应嵌入原生代码或在嵌入原生代码内没有可用的适当实作,该机构可前进至步骤113b以及应用默认的行为。在其它情形下,如果认出与当前平台架构匹配的适当实作,相关原生代码段或其中之一部份,例如特定DLL或共享库,可拷贝至专属内存空间以及可用于受考虑类别档案的其它库查找操作(library find operation)。之后,可用类别载入器112执行其它的必要方法,其中然后可预备受考虑类别档案供单元111(参考第1a图)执行,例如通过应用第1c图的方法114。因此,在类别载入器112的其余处理期间,嵌入原生代码段125(参考第1c图)可保持看不见因而不会干扰指令在部份121之中的执行(参考第1d图)。
结果,本揭示内容可提供数种电子器件,其操作可基于虚拟机与有嵌入原生代码段的应用档案用以提供可有效利用特定平台特征的可能性而不需使用者互动。该等特定应用档案可通过任何来源提供,例如经由任何适当网络的远程计算机系统,或目标平台可存取的任何其它适当存储媒体。此外,在虚拟机中可实作适当的机构用以找到原生方法的请求,在这种情形下,可寻找各个应用档案的嵌入原生代码段,然后可用于应用档案所需的任何库合并(library incorporation)。例如,例如基于任何计算机可读取存储媒体,可提供修改类别载入器,以及可并入虚拟机机构以便提供扩充的功能。结果,可大幅简化JAVA应用系统的部署,这可能需要原生方法。此外,可用高度有效率的方式包装用于特定平台之原生方法的增强版本,它可能结合更通用的实作,然后可被虚拟机(例如,类别载入器)有效地“解析”,例如通过任何适当的技术,例如模式匹配机构及其类似者,以便选择在运行时期最佳的实作。此外,一或更多类别的多个版本可同时载入纵向机器(vertical machine),即使用各种版本可请求不同的原生方法,因为用上述机构可有效避免库的冲突。
熟谙此艺者基于本说明可明白本揭示内容的其它修改及变体。因此,本说明应被视为仅供图解说明而且目的是用来教导熟谙此艺者实施本文所揭示之原理的一般方式。应了解,应将图示及描述于本文的形式应视为目前为较佳的具体实施例。
Claims (12)
1.一种电子器件,其包含一硬件系统,该电子器件包括:
实作于该硬件系统中的一虚拟机,其中,该虚拟机经组态成用以解译一应用档案,该应用档案包含无关该硬件系统的一平台无关部分以及功能上依赖于硬件系统的一原生部分,
其中,该虚拟机经组态成用以寻找该应用档案的该原生部分,以响应检测到该平台无关部分中一原生方法的一请求,以及拷贝该原生部分到该虚拟机可存取的存储器件,用于后续该请求的服务,若该原生部分对应该请求的原生方法,该原生部分在运行时对该虚拟机是不可见的。
2.如权利要求1所述的电子器件,其中该平台无关部分包含多个平台无关数据及指令区段,以及其中,该应用档案包括包含该原生部分的至少一专属区段。
3.如权利要求2所述的电子器件,其中该虚拟机被进一步组态成在不被该多个平台无关数据及指令区段中之一或更多参考时忽略该至少一专属区段。
4.如权利要求3所述的电子器件,其中该虚拟机包含一类别载入器,该类别载入器经组态成提供对应至该应用档案的特定应用指令的一虚拟机特定字节代码。
5.如权利要求4所述的电子器件,其中该类别载入器被进一步组态成在该多个平台无关数据及指令区段中可识别该原生方法的一参考以及寻找包括为了服务在该应用档案的该至少一专属区段中的该原生方法所需要的一库的该原生部分。
6.如权利要求1所述的电子器件,其中该虚拟机为Java虚拟机。
7.一种执行虚拟机中的指令的方法,该虚拟机实作于至少包含一中央处理单元的一硬件系统中,该方法包含下列步骤:
提供一应用档案,其包含可解译成通过该虚拟机可执行的虚拟机特定字节代码的平台无关指令,该应用档案更包含经组态成使得该硬件系统中可执行原生方法的嵌入原生代码,该嵌入原生代码在运行时对该虚拟机是不可见的;
在该平台无关指令中寻找对于一原生方法的一请求;
响应检测该请求,拷贝该嵌入原生代码到该虚拟机可存取的该硬件系统的存储器件,用于后续该请求的服务;以及
在该嵌入原生代码包括该原生方法对于该硬件系统的实作时,基于该嵌入原生代码来服务该请求。
8.如权利要求7所述的方法,其中服务该请求的步骤包含下列步骤:至少存储该嵌入原生代码中对应至该原生方法的一部份于该硬件系统的一存储器件中,以及使用该嵌入原生代码中经存储的该部份作为一外部原生代码库供执行该应用档案的任何其它库查找操作用。
9.如权利要求7所述的方法,其中提供该应用档案的步骤包含下列步骤:加入该平台无关指令于多个标准档案区段,加入该嵌入原生代码于至少一附加档案区段,以及标示该至少一附加档案区段以在解译该平台无关指令时忽略该至少一附加档案区段。
10.如权利要求9所述的方法,其更包含下列步骤:载入该应用档案于该虚拟机中,验证该应用档案以及预备该应用档案以便通过该虚拟机执行,其中在该验证期间忽略该至少一附加档案区段。
11.如权利要求7所述的方法,其中该应用档案为一类别档案的第一版本,以及其中该方法更包含下列步骤:载入该类别档案的第二版本,其中该第二版本包含对于与该原生方法不同的第二原生方法的第二请求。
12.如权利要求7所述的方法,其中该应用档案为Java类别档案。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102009006882A DE102009006882A1 (de) | 2009-01-30 | 2009-01-30 | Anwendung plattformabhängiger Routinen in virtuellen Maschinen durch Einbetten einer nativen Codierung in Klassendateien |
DE102009006882.1 | 2009-01-30 | ||
US12/693,810 US8510725B2 (en) | 2009-01-30 | 2010-01-26 | Application of platform dependent routines in virtual machines by embedding native code in class files |
US12/693,810 | 2010-01-26 | ||
PCT/EP2010/000493 WO2010086155A1 (en) | 2009-01-30 | 2010-01-27 | Application of platform dependent routines in virtual machines by embedding native code in class files |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102388363A CN102388363A (zh) | 2012-03-21 |
CN102388363B true CN102388363B (zh) | 2015-09-09 |
Family
ID=42308883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080013818.7A Active CN102388363B (zh) | 2009-01-30 | 2010-01-27 | 电子器件及执行虚拟机中指令的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8510725B2 (zh) |
JP (1) | JP5401561B2 (zh) |
KR (1) | KR101615295B1 (zh) |
CN (1) | CN102388363B (zh) |
DE (1) | DE102009006882A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160162371A1 (en) * | 2011-01-05 | 2016-06-09 | Netapp, Inc. | Supporting multi-tenancy through service catalog |
US9720708B2 (en) | 2011-08-19 | 2017-08-01 | Advanced Micro Devices, Inc. | Data layout transformation for workload distribution |
US9195443B2 (en) * | 2012-01-18 | 2015-11-24 | International Business Machines Corporation | Providing performance tuned versions of compiled code to a CPU in a system of heterogeneous cores |
US9448782B1 (en) | 2012-08-27 | 2016-09-20 | Amazon Technologies, Inc. | Reducing a size of an application package |
US9785350B2 (en) * | 2013-02-21 | 2017-10-10 | Seagate Technology Llc | Data storage device having a virtual machine |
US9558096B2 (en) * | 2014-03-21 | 2017-01-31 | Marvell World Trade Ltd. | Method and apparatus for supporting performance analysis |
US9778945B2 (en) | 2015-02-10 | 2017-10-03 | Red Hat Israel, Ltd. | Providing mode-dependent virtual machine function code |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112025A (en) * | 1996-03-25 | 2000-08-29 | Sun Microsystems, Inc. | System and method for dynamic program linking |
US6412107B1 (en) * | 1998-02-27 | 2002-06-25 | Texas Instruments Incorporated | Method and system of providing dynamic optimization information in a code interpretive runtime environment |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654954B1 (en) * | 1998-02-17 | 2003-11-25 | International Business Machines Corporation | Computer system, program product and method utilizing executable file with alternate program code attached as a file attribute |
US6295638B1 (en) * | 1998-07-30 | 2001-09-25 | International Business Machines Corporation | Method and apparatus for loading native object code in data processing system |
KR20010072477A (ko) * | 1998-08-13 | 2001-07-31 | 썬 마이크로시스템즈, 인코포레이티드 | 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치 |
US6930695B1 (en) * | 1998-11-30 | 2005-08-16 | Sun Microsystems, Inc. | Method and apparatus for detecting device support in a graphical user interface |
US6571388B1 (en) * | 1999-03-09 | 2003-05-27 | Hewlett-Packard Development Company, L.P. | Building a custom software environment including pre-loaded classes |
US6557023B1 (en) * | 1999-05-28 | 2003-04-29 | Sun Microsystems, Inc. | Method and apparatus for avoiding array class creation in virtual machines |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
GB9925510D0 (en) * | 1999-10-29 | 1999-12-29 | Ibm | Incorporating native code in java archive files |
US6862683B1 (en) * | 2000-03-24 | 2005-03-01 | Novell, Inc. | Method and system for protecting native libraries |
JP2003316584A (ja) | 2002-04-24 | 2003-11-07 | Matsushita Electric Ind Co Ltd | プレロードクラスの生成/更新装置、及び方法 |
US20040172620A1 (en) * | 2003-02-28 | 2004-09-02 | Motorola, Inc. | Method and apparatus for securely enabling native code execution on a JAVA enabled subscriber device |
US7320129B2 (en) * | 2003-05-14 | 2008-01-15 | Hewlett-Packard Development Company, L.P. | Native language verification system and method |
US20060080655A1 (en) | 2004-10-09 | 2006-04-13 | Axalto Inc. | System and method for post-issuance code update employing embedded native code |
-
2009
- 2009-01-30 DE DE102009006882A patent/DE102009006882A1/de not_active Ceased
-
2010
- 2010-01-26 US US12/693,810 patent/US8510725B2/en active Active
- 2010-01-27 JP JP2011546708A patent/JP5401561B2/ja active Active
- 2010-01-27 CN CN201080013818.7A patent/CN102388363B/zh active Active
- 2010-01-27 KR KR1020117020212A patent/KR101615295B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112025A (en) * | 1996-03-25 | 2000-08-29 | Sun Microsystems, Inc. | System and method for dynamic program linking |
US6412107B1 (en) * | 1998-02-27 | 2002-06-25 | Texas Instruments Incorporated | Method and system of providing dynamic optimization information in a code interpretive runtime environment |
Also Published As
Publication number | Publication date |
---|---|
JP5401561B2 (ja) | 2014-01-29 |
US20100199268A1 (en) | 2010-08-05 |
JP2012516483A (ja) | 2012-07-19 |
DE102009006882A1 (de) | 2010-08-05 |
CN102388363A (zh) | 2012-03-21 |
KR101615295B1 (ko) | 2016-04-25 |
US8510725B2 (en) | 2013-08-13 |
KR20110113196A (ko) | 2011-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102388363B (zh) | 电子器件及执行虚拟机中指令的方法 | |
US10367822B2 (en) | Restrictive access control for modular reflection | |
AU771699B2 (en) | Token-based linking | |
US6983460B1 (en) | Method for loading applications into a multiapplication embedded system equipped with data processing resources, corresponding embedded system and execution method | |
CN107924326B (zh) | 对经更新的类型的迁移方法进行覆盖 | |
WO2001065359A2 (en) | Method and apparatus for building a memory image | |
KR20050039534A (ko) | 응용 프로그래밍 인터페이스의 설계 | |
CN103902265A (zh) | 一种应用实现方法及相关装置 | |
WO2022033229A1 (zh) | 一种软件代码编译方法及系统 | |
WO2024045382A1 (zh) | 区块链中实现反射机制 | |
CN113918195A (zh) | 应用界面更新方法、装置、电子设备及可读存储介质 | |
JP2005063449A (ja) | オブジェクトからオブジェクトへのJavaネイティブインタフェースマッピングの方法及び装置 | |
CN102193818B (zh) | 虚拟应用程序包重构 | |
WO2011042228A1 (en) | Method and system to handle java class versioning | |
CN112631613A (zh) | 基于区块链平台的智能合约部署和调用方法及相关设备 | |
US6922735B2 (en) | Management of co-processor information by integrating non-program information with program information | |
KR20060120638A (ko) | 가상머신에서 연속전달을 위한 방법 및 장치 | |
KR20080027293A (ko) | 데이터 언어에서 다수 언어들의 관리 | |
Schanne et al. | Adding Autonomic Functionality to Object-Oriented Applications. | |
WO2010086155A1 (en) | Application of platform dependent routines in virtual machines by embedding native code in class files | |
CN113590166B (zh) | 应用程序的更新方法、装置以及计算机可读存储介质 | |
CN115328544B (zh) | 一种环境定制方法、计算设备及存储介质 | |
CN116931947A (zh) | 一种优化wasm字节码的方法及执行方法、计算机设备及存储介质 | |
CN114860382A (zh) | 数据处理方法及装置 | |
CN114020287A (zh) | 应用程序安装方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |