CN1641587A - 用于改进爪哇虚拟机性能的方法和系统 - Google Patents
用于改进爪哇虚拟机性能的方法和系统 Download PDFInfo
- Publication number
- CN1641587A CN1641587A CNA2005100020773A CN200510002077A CN1641587A CN 1641587 A CN1641587 A CN 1641587A CN A2005100020773 A CNA2005100020773 A CN A2005100020773A CN 200510002077 A CN200510002077 A CN 200510002077A CN 1641587 A CN1641587 A CN 1641587A
- Authority
- CN
- China
- Prior art keywords
- code
- virtual machine
- bytecode
- java virtual
- byte
- 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.)
- Granted
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47J—KITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
- A47J45/00—Devices for fastening or gripping kitchen utensils or crockery
- A47J45/06—Handles for hollow-ware articles
- A47J45/07—Handles for hollow-ware articles of detachable type
- A47J45/072—Bowl handles
-
- 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
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47J—KITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
- A47J36/00—Parts, details or accessories of cooking-vessels
- A47J36/34—Supports for cooking-vessels
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Food Science & Technology (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种用于改进Java虚拟机性能的方法和系统,包括:抽取组成Java类的方法的字节码;合并所抽取的字节码以产成具有预定字节大小的第二代码,并且将第二代码分配给预定类型的数据结构;和由在Java虚拟机中被使用的执行引擎来执行第二代码。
Description
技术领域
本发明涉及一种用于改进Java(Sun微系统公司的注册商标)虚拟机性能的方法和系统,更具体地讲,涉及一种用于通过将传统的基于以一字节为单位的Java字节码转换成具有扩展为传统Java字节码四倍的四字节大小的数据类型的代码而提高Java程序的执行速度的方法。
背景技术
Java(爪哇)编程语言自二十世纪九十年代中期出版以来已经快速地激增,但是存在着它们的代码与如C或C++的其它编程语言组成的代码相比具有慢的运算速度的缺点。为了克服这个缺点,两种应用到传统的基于解释器的Java虚拟机的技术以前已经被建议:一种是动态代码产生技术如实时(Just-In-Time)编译器,另一种是静态代码产生技术如预先(Ahead-Of-Time)编译器。
Java平台基本包括Java虚拟机和Java类。类文件由与类的数据结构相关的信息组成,包括字段信息(field information)、方法信息等等。方法的执行代码由与硬件或操作系统无关的字节码形成。
通过根据执行引擎来分类传统的Java虚拟机,它能被区分为基于解释器的Java虚拟机、基于实时(JIT)编译器的虚拟机、使用基于解释器和基于JIT编译器的Java虚拟机的Java虚拟机、基于预先(AOT)编译器的Java虚拟机等等。
基于解释器的Java虚拟机解释旨在逐一地执行的方法的字节码,由此执行应用。JIT编译器通过编译字节码来获得依赖于当前Java平台的机器语言代码,然后执行机器语言代码以实施应用。
图1示出一种传统的Java虚拟机的结构。Java虚拟机100包括:解释器110、JIT或AOT编译器120、用于装载类的类装载器130、用于结合并操作组件110、120和130的运行时系统(run time system)140、将被执行的应用类150和以前已经定义的系统类160。
图2示出一种传统的Java类文件的一般配置。
类文件包括类或接口定义,并且由定义在类中的各种属性、字段信息、方法信息等组成。方法信息定义被称为字节码并规定在解释器中执行的字节流。字节码从编译包含Java源语言语句的文件(如具有“java”扩展的文件)而获得。
字节码类似于用于执行的程序模块,因为在计算机内部其被一次一个字节地执行。但是字节码的指令是被发送到逻辑和抽象的Java虚拟机的实际的指令。字节码能够由JIT编译器再次编译以和特定系统平台兼容,包括它需要仅一次被一个字节解释,因此加速了Java程序的执行速度。作为增加解释器中的Java程序的执行速度的一种方法,有在字节码内的操作码的位置上写解释器内的操作码处理程序地址的“线程解释器”技术。
图3示出在传统Java虚拟机中被执行的字节码。
字节码的指令由操作数和操作码组成,两者都有一字节的大小以区别所执行的操作。一个操作码可包括几个操作数。操作码和每个操作数都以一字节为单位被存储,从而它们被表示成连续字节以表示具有一个或多个字节大小的操作数。例如,16位值由两个连续字节组成和32位值由四个连续字节组成。
在图3中,第一行表示实际的字节码的十六进制值,第二行表示被分成操作码和操作数的字节码。
图4示出在传统Java虚拟机中装载和执行类的过程。
应用类由Java虚拟机的类装载器载入(S400),并经历链接过程(S410)和初始化过程(S420),然后相关信息被存储在运行时系统内的数据结构中,并由如解释器或JIT编译器的执行引擎来执行方法(S430)。
图5是显示在传统Java解释器中执行每一操作码的示例性的操作的流程图。
在典型的解释器中,字节码以图5所示的方式被执行。当在解释器中调用方法时(S500),指示该方法的字节码的程序计数器递增(S510),然后确定该方法的字节码是否是最后的字节码(S520)。如果该方法的字节码不是最后的字节码,那么取出一字节的操作码(S530)。随后,控制使用程序中的切换语句来转向对应于所取的一字节操作码的处理程序,从而,执行处理程序(S540和S550)。这个过程随着字节码的大小被多次重复,然后用于该方法的解释过程终止(S560)。
图5所示的过程能够用下面的伪代码来表示:
Loop{
Op=*pc++;
switch(Op){
case op_1:
//op_1的执行
break;
case op_2:
//op_2的执行
break;
case op_3:
//op_3’的执行
break;
…
}
}
在对各个操作码的处理程序中,如果操作码所需的操作数的数据大小大于1字节,那么操作数的值就以连续字节被储存。因此,按每一位通过“或”运算符和移位运算符,连续字节被重构成一有效值。例如,在使用“小头(LittleEndian)”格式的CPU中,如果某一操作码A所需的操作数是在连续的字节字节1、字节2、字节3和字节4中,那么,字节4表示被逻辑地指示的32位值的第一位到第八位,字节3表示被逻辑地指示的32位值的第九位到第十六位,字节2表示被逻辑地指示的32位值的第十七位到第二十四位,字节1表示被逻辑地指示的32位值的第二十五位到第三十二位。
因此,操作码A实际所需的32位值能够通过像“[(byte1<<24)|(byte1<<16)|(byte1<<8)|byte4]”的操作而获得。在现有的Java虚拟机中,结合这样的操作数的过程在方法被执行的任何时候发生。
因为现在许多CPU具有32位体系结构并使用内置的32位寄存器,所以取出32位数据显示出比取出8位数据更好的性能。
此外,在传统的Java字节码中,因为操作码和操作数以一字节为单位被存储,所以操作码的位大小被限制到8位,这能表示最大仅256个不同的位配置。因此,一旦预定的操作码被排斥,那么剩余的能够专用于新的可定义的操作码的位配置的数量受到相当大地限制。因为这个原因,在其中需要许多可再定义的操作码的动态代码产生技术上存在许多限制。
对于操作数来讲,当操作数的数据大小大于1字节时,那么操作数将以连续字节被排列,并且,连续字节按每一位通过“或”运算符和移位运算符在执行方法的任何时候将被重构。当Java程序被执行时,这个过程运行可能以大量的系统开销来运行。因此,需要通过克服这些限制来改进Java虚拟机的性能。
发明内容
因此,本发明的目的直接在于通过提供一种方法来解决上述在现有技术所发生的问题,该方法通过将传统的以一字节为单位的Java字节码转换成具有被扩展为传统的Java字节码四倍的4字节大小的数据类型的代码(以下称作为“中间代码”的代码),而提高Java虚拟机的执行速度。然而,本发明的实施例没有被要求解决这里所描述的任何问题。
为了实现上述目的,本发明提供一种用于改进Java虚拟机的性能的方法。该方法包括:第一步骤,抽取组成Java类的方法的字节码;第二步骤,合并抽取的字节码、产生具有预定字节大小的第二代码,并且将第二代码分配给预定类型的数据结构;和第三步骤,由组成Java虚拟机的执行引擎执行第二代码。在这种情况下,最好但并非必要的是字节大小取决于配备有Java虚拟机的中央处理单元的数据处理能力。
最好但并非必要的是数据结构是整数类型之一。
最好但并非必要的是如果所抽取的字节码的至少两个字节被合并以表示逻辑值,那么第二步骤是这样一个步骤,其用于合并该至少两个字节、产生具有预定字节大小的第二代码,并且将第二代码分配给预定类型的数据结构。
最好但并非必要的是当所抽取的字节码是使用宽的操作数的操作码时,第二步骤是这样一个步骤,其用于将操作码转换成不使用宽的操作数的操作码、产生具有已转换的操作码的预定字节大小的第二代码,并且将第二代码分配给数据结构。
为了实现上述目的,本发明提供一种配备着有Java虚拟机的系统,其中,Java虚拟机抽取组成Java类的方法的字节码,合并所抽取的字节码,产生具有预定字节大小的第二代码,将第二代码分配给预定类型的数据结构,并且允许由组成Java虚拟机的执行引擎来执行第二代码。这种情况下,数据结构是整数类型之一。
最好但并非必要的是字节大小取决于配备有Java虚拟机的中央处理单元的数据处理能力。
最好但并非必要的是当所抽取字节码的至少两个字节被合并以表示逻辑值时,系统合并该至少两个字节并产生具有预定字节大小的第二代码。
最好但并非必要的是当所抽取的字节码是使用宽的操作数的操作码时,系统将使用宽的操作数的操作码转换成不使用宽的操作数的操作码,并产生具有已转换的操作码的预定字节大小的第二代码。
附图说明
通过结合附图,从下面详细的描述中,本发明的上述和其他示例性目的、特点和优点将会变得更加清楚,其中:
图1示出传统的Java虚拟机的结构;
图2示出传统的Java类文件的一般结构;
图3示出在传统的Java虚拟机中被执行的字节码;
图4示出在传统的Java虚拟机中类装载和执行的过程;
图5是显示在传统的Java解释器中执行每个操作码的示例性操作的流程图;
图6是显示根据本发明示例性的实施例的包括转换器的Java虚拟机的结构的方框图;
图7示出在根据本发明示例性的实施例的Java虚拟机中装载和执行类的过程;
图8是显示根据本发明示例性的实施例的转换字节码的过程的一个示例的流程图;和
图9示出在根据本发明示例性的实施例的Java虚拟机中被执行的字节码。
具体实施方式
以下,将参照附图根据本发明的各种示例性、非限制性的实施例来进一步详细描述关于一种用于改进Java虚拟机性能的方法和系统。
图6是显示根据本发明示例性的实施例的包括转换器的Java虚拟机的结构的方框图;
图6示出根据本发明示例性的实施例的包括在传统的Java虚拟机没有被发现的转换器630的Java虚拟机的结构,其中转换器630通过排列字节码的四个字节将1字节的字节码转换成4字节的字节码。换句话说,Java虚拟机600除了传统的Java虚拟机被提供的解释器610、JIT编译器620、类装载器640、运行时650、应用类660和系统类670外,还被提供转换器630。转换器630能够以线程类型来被实现。
图7示出在根据本发明示例性的实施例的Java虚拟机中装载和执行类的过程。
在Java虚拟机600中由类装载器640装载一新的类(S700),然后调用转换器630。随后,关于在被装载的类中声明的每一方法,转换器630通过排列四个1字节的字节码将字节码转换成中间代码(int-code)(S710)。
在步骤S710之后,并且类似于在图4的传统方法中所示的步骤,执行链接过程(S720)和初始化过程(S730),然后由执行引擎执行每一方法(S740)。
用程序代码表示步骤S710的过程如下:
Int[]byte-To-int(char*byte-code,int size_of_byte-code)
{
int*int-code;
int-code=(int*)malloc(4*size_of_byte-code)//分配4倍于当前字节码大小的存储器
Loop{
char*pc;
int int-codePC=0;
pc=byte-code;
Op=*pc++;
switch(OP){
case opcode_1:
//用于opcode_1的中间代码转换方案
pc++
int-codePC++;
break;
case opcode_2;
//用于opcode_2的中间代码转换方案
pc++;
int-codePC++;
break;
}
}
}
以下,将解释程序代码。
当在Java虚拟机上装载新类时,对在类中声明的每一方法,调用转换器630。在这种情况下,转换器630接收方法字节码和该方法字节码的大小作为输入参数。
在转换器630中,至少为该方法大小的四倍的存储器被分配,并且分配的存储器使用是32位整数指针的中间代码指示。中间代码随后是大的循环,其继续循环直到没有字节从字节码中取出。该循环具有一个在其中用于转换每一操作码的例行程序被定义的切换语句。
图8是显示根据本发明示例性的实施例的转换字节码的示例性过程的流程图。
当类装载器装载新类时,转换字节码的过程开始(S800)。首先,检查由当前的程序计数器指示的操作码是否具有宽的索引作为操作数(S810)。在操作码不需要宽的操作数的情况下,操作码被存储在中间代码中(S830)。
在操作码需要宽的操作数的情况下,操作码在Java虚拟机版本2上起着相同的作用,但是另一不需要宽的操作数的操作码被发现,然后被发现的操作码作为代替被存储在该中间代码中(S810和S820)。
例如,“jsr_w”是被定义在Java虚拟机版本2中的指令之一,并且和“jsr”指令起着相同的作用。此时,在“jsr_w”指令中,32位宽的索引被分配给操作数(作为四个连续字节),而在“jsr”指令中,16位索引被分配给操作数(作为两个连续字节)。
换句话说,“jsr”指令而不是“jsr_w”指令被存储在中间代码阵列中。因此,带有宽的操作数的操作码被去除,从而,当产生动态代码时,这些操作码能够被重新定义以使可用的。以这种方式,当操作码被提供32位码元(element)时,在32位码元中除了操作码的大小(即8位)外24位保持为空。此时,24位的空白空间能够被用作存储字段,对于该存储字段JIT技术被应用于操作码和随后的几个字节码,并且所得的代码块地址等和定义指示JIT技术被应用到其的新操作码的一字节的剩余部分一起被插入到空白空间。
在完成步骤S830后,指示新字节码的程序计数器和指示中间代码的中间代码PC都递增。当操作码带有操作数时,操作数必须被插入到中间代码中。在这种情况下,必须检查操作数是否大于一字节(S840和S850)。换句话说,在操作数由连续字节组成的情况下,在将操作数插入到中间代码中之前,操作数依照当前由按位操作的“或”运算符和移位运算符使用的CPU的头格式(Endian format)被合并之后被存储在一个中间代码中(S860和S870)。当与一个或多个字节合并的操作数的大小不大于四字节时,有可能将操作数存储在中间代码的一个码元中。因为执行该操作的操作过程在执行方法前仅仅实施一次上述的操作数合并,所以它能够获得比传统的解释器更好的性能。如果连续字节的数目是n,那么合并的结果被提供一个中间代码,然后另外n-1个中间代码被设置空白空间。
图9示出在根据本发明示例性的实施例的Java虚拟机中被执行的字节码。
例如,原有的字节码“goto”通过中间代码转换算法被转换成“int-code[0]”值。插入“nop”(即非运算指令)的原因是提高当解释器在中间代码方案中被转换时的方便,并且插入值可以根据实施方案而不同。
根据本发明的实施例,通过扩展字节码和在解释器或JIT编译器应用于其的Java虚拟机中将它转换成中间代码或32位阵列,本发明具有改进配备32位CPU的硬件的执行速度的效果,和具有使用阵列的空白空间容易地存储和监视与各个操作码相联系的附加信息的效果。此外,因为本发明不再使用用于处理宽的操作数的宽的操作码,所以本发明具有这些不用的操作码能够被再定义为新的被用户定义的操作码的优点。
从前述能够看出,本领域的技术人员应该理解,因为在不脱离其中的精神和范围的情况下可以对本发明做各种改变、变化和修改,所以本发明不限于上述的具体实施例或附图。
Claims (10)
1、一种用于改进Java虚拟机性能的方法,该方法包括:
抽取Java类的方法的字节码;
合并所抽取的字节码,产生具有预定字节大小的第二代码,并且将第二代码分配给预定类型的数据结构;和
由Java虚拟机的执行引擎执行第二代码。
2、根据权利要求1所述的方法,其中,字节大小取决于配备有Java虚拟机的中央处理单元(CPU)的数据处理能力。
3、根据权利要求1所述的方法,其中,数据结构是整数类型的数据结构。
4、根据权利要求1所述的方法,其中,当所抽取的字节码的至少两个字节被合并以表示逻辑值时,合并、产生和分配的步骤分别包括:合并该至少两个字节,产生具有预定字节大小的第二代码,和将第二代码分配给数据结构。
5、根据权利要求1所述的方法,其中,当所抽取的字节码是使用宽的操作数的操作码时,合并、产生和分配的步骤分别包括:将使用宽的操作数的操作码转换成不使用宽的操作数的操作码,产生包括已转换的操作码的具有预定字节大小的第二代码,和将第二代码分配给数据结构。
6、一种包括Java虚拟机的系统,其中,Java虚拟机抽取Java类的方法的字节码,合并所抽取的字节码,产生具有预定字节大小的第二代码,将第二代码分配给预定类型的数据结构,并且允许由Java虚拟机的执行引擎来执行第二代码。
7、根据权利要求6所述的系统,其中,数据结构是整数类型之一。
8、根据权利要求6所述的系统,其中,字节大小取决于配备有Java虚拟机的中央处理单元(CPU)的数据处理能力。
9、根据权利要求6所述的系统,其中,当所抽取的字节码的至少两个字节被合并以表示逻辑值时,该系统合并该至少两个字节以产生具有预定字节大小的第二代码。
10、根据权利要求6所述的系统,其中,当所抽取的字节码是使用宽的操作数的操作码时,该系统将使用宽的操作数的操作码转换成不使用宽的操作数的操作码,并且产生包括已转换的操作码的具有预定字节大小的第二代码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR03590/04 | 2004-01-17 | ||
KR1020040003590A KR100643268B1 (ko) | 2004-01-17 | 2004-01-17 | 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템 |
KR03590/2004 | 2004-01-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1641587A true CN1641587A (zh) | 2005-07-20 |
CN1311343C CN1311343C (zh) | 2007-04-18 |
Family
ID=34632167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100020773A Expired - Fee Related CN1311343C (zh) | 2004-01-17 | 2005-01-14 | 用于改进爪哇虚拟机性能的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20050160415A1 (zh) |
EP (1) | EP1557760A2 (zh) |
JP (1) | JP2005202936A (zh) |
KR (1) | KR100643268B1 (zh) |
CN (1) | CN1311343C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045793A (zh) * | 2020-03-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 一种在虚拟机中执行功能模块的方法和装置 |
CN112506569A (zh) * | 2020-12-14 | 2021-03-16 | 杭州趣链科技有限公司 | 一种字节码执行方法、字节码执行装置及终端设备 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100597413B1 (ko) * | 2004-09-24 | 2006-07-05 | 삼성전자주식회사 | 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터 |
US7707547B2 (en) * | 2005-03-11 | 2010-04-27 | Aptana, Inc. | System and method for creating target byte code |
US7844958B2 (en) * | 2005-03-11 | 2010-11-30 | Aptana, Inc. | System and method for creating target byte code |
KR100763177B1 (ko) * | 2005-04-21 | 2007-10-04 | 삼성전자주식회사 | 자바 가상 머신의 명령어 수행 방법 및 그 장치 |
KR100678912B1 (ko) * | 2005-10-18 | 2007-02-05 | 삼성전자주식회사 | 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템 |
TR200606833A2 (tr) * | 2006-12-01 | 2007-10-22 | B�Lmed B�Lg�Sayar Ve Yazilim A.�. | Web tarayıcı tabanlı uygulamalarda performans arttırma yöntemi |
US8307337B2 (en) | 2006-12-01 | 2012-11-06 | Murex S.A.S. | Parallelization and instrumentation in a producer graph oriented programming framework |
US8191052B2 (en) | 2006-12-01 | 2012-05-29 | Murex S.A.S. | Producer graph oriented programming and execution |
KR100936401B1 (ko) * | 2007-10-17 | 2010-01-12 | 주식회사 에이디칩스 | 자바 바이트코드 변환방법 |
US8914774B1 (en) | 2007-11-15 | 2014-12-16 | Appcelerator, Inc. | System and method for tagging code to determine where the code runs |
US8954989B1 (en) | 2007-11-19 | 2015-02-10 | Appcelerator, Inc. | Flexible, event-driven JavaScript server architecture |
US8260845B1 (en) | 2007-11-21 | 2012-09-04 | Appcelerator, Inc. | System and method for auto-generating JavaScript proxies and meta-proxies |
US8566807B1 (en) | 2007-11-23 | 2013-10-22 | Appcelerator, Inc. | System and method for accessibility of document object model and JavaScript by other platforms |
US8719451B1 (en) | 2007-11-23 | 2014-05-06 | Appcelerator, Inc. | System and method for on-the-fly, post-processing document object model manipulation |
US8819539B1 (en) | 2007-12-03 | 2014-08-26 | Appcelerator, Inc. | On-the-fly rewriting of uniform resource locators in a web-page |
US8756579B1 (en) | 2007-12-03 | 2014-06-17 | Appcelerator, Inc. | Client-side and server-side unified validation |
US8806431B1 (en) | 2007-12-03 | 2014-08-12 | Appecelerator, Inc. | Aspect oriented programming |
US8938491B1 (en) | 2007-12-04 | 2015-01-20 | Appcelerator, Inc. | System and method for secure binding of client calls and server functions |
US8527860B1 (en) | 2007-12-04 | 2013-09-03 | Appcelerator, Inc. | System and method for exposing the dynamic web server-side |
US8639743B1 (en) | 2007-12-05 | 2014-01-28 | Appcelerator, Inc. | System and method for on-the-fly rewriting of JavaScript |
US8335982B1 (en) | 2007-12-05 | 2012-12-18 | Appcelerator, Inc. | System and method for binding a document object model through JavaScript callbacks |
US8285813B1 (en) | 2007-12-05 | 2012-10-09 | Appcelerator, Inc. | System and method for emulating different user agents on a server |
US8291079B1 (en) | 2008-06-04 | 2012-10-16 | Appcelerator, Inc. | System and method for developing, deploying, managing and monitoring a web application in a single environment |
US8880678B1 (en) | 2008-06-05 | 2014-11-04 | Appcelerator, Inc. | System and method for managing and monitoring a web application using multiple cloud providers |
US7596620B1 (en) | 2008-11-04 | 2009-09-29 | Aptana, Inc. | System and method for developing, deploying, managing and monitoring a web application in a single environment |
US10838750B2 (en) | 2019-01-10 | 2020-11-17 | Red Hat, Inc. | Combining ahead-of-time compilation and just-in-time compilation to improve application deployment |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6092094A (en) * | 1996-04-17 | 2000-07-18 | Advanced Micro Devices, Inc. | Execute unit configured to selectably interpret an operand as multiple operands or as a single operand |
JP3330378B2 (ja) * | 1996-11-13 | 2002-09-30 | ラツ,ヤイール | リアルタイムプログラム言語アクセラレータ |
US6233733B1 (en) * | 1997-09-30 | 2001-05-15 | Sun Microsystems, Inc. | Method for generating a Java bytecode data flow graph |
US6170083B1 (en) * | 1997-11-12 | 2001-01-02 | Intel Corporation | Method for performing dynamic optimization of computer code |
US6349344B1 (en) * | 1997-12-16 | 2002-02-19 | Microsoft Corporation | Combining multiple java class files into a run-time image |
US6110226A (en) * | 1998-02-19 | 2000-08-29 | Cygnus Solutions | Java development environment using optimizing ahead-of-time compiler |
EP0943990A3 (en) * | 1998-02-27 | 2004-12-22 | Texas Instruments Incorporated | Method and system of providing dynamic optimization information in a code interpretive runtime environment |
HUP0101368A3 (en) * | 1998-03-23 | 2004-04-28 | Ibm | Java runtime system with modified constant pool |
SE514762C2 (sv) * | 1998-05-28 | 2001-04-23 | Ericsson Telefon Ab L M | Förfarande, anordning och portabel terminal för programvarunedladdning i ett trådlöst näverk samt sådant telekommunikationsnät |
US6385764B1 (en) * | 1999-01-29 | 2002-05-07 | International Business Machines Corporation | Method and apparatus for improving invocation speed of Java methods |
US6691307B2 (en) * | 1999-08-03 | 2004-02-10 | Sun Microsystems, Inc. | Interpreter optimization for native endianness |
KR100319755B1 (ko) * | 1999-12-02 | 2002-01-05 | 오길록 | 내장형 자바가상머신을 위한 바이트코드 압축 방법 |
KR20020032889A (ko) * | 2000-10-27 | 2002-05-04 | 오길록 | 자바 클래스 파일 분석을 이용한 클래스 호출관계 표시 방법 |
US6996813B1 (en) * | 2000-10-31 | 2006-02-07 | Sun Microsystems, Inc. | Frameworks for loading and execution of object-based programs |
US7228533B2 (en) * | 2001-08-24 | 2007-06-05 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for performing programming loops |
JP4163927B2 (ja) * | 2001-10-31 | 2008-10-08 | 松下電器産業株式会社 | Javaコンパイラ、及び、当該Javaコンパイラが使用するコンパイル情報の生成装置 |
KR100697635B1 (ko) * | 2003-12-19 | 2007-03-20 | 한국전자통신연구원 | 자바가상머신에서 배열 접근을 위한 통합 바이트 코드를 기록한 기록매체, 통합 바이트 코드 수행방법 및 매핑 방법 |
-
2004
- 2004-01-17 KR KR1020040003590A patent/KR100643268B1/ko not_active IP Right Cessation
- 2004-11-03 US US10/979,324 patent/US20050160415A1/en not_active Abandoned
- 2004-12-07 JP JP2004354555A patent/JP2005202936A/ja active Pending
-
2005
- 2005-01-06 EP EP05250030A patent/EP1557760A2/en not_active Withdrawn
- 2005-01-14 CN CNB2005100020773A patent/CN1311343C/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045793A (zh) * | 2020-03-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 一种在虚拟机中执行功能模块的方法和装置 |
CN112506569A (zh) * | 2020-12-14 | 2021-03-16 | 杭州趣链科技有限公司 | 一种字节码执行方法、字节码执行装置及终端设备 |
WO2022126710A1 (zh) * | 2020-12-14 | 2022-06-23 | 杭州趣链科技有限公司 | 一种字节码执行方法、字节码执行装置及终端设备 |
CN112506569B (zh) * | 2020-12-14 | 2023-06-20 | 杭州趣链科技有限公司 | 一种字节码执行方法、字节码执行装置及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
KR20050075647A (ko) | 2005-07-21 |
US20050160415A1 (en) | 2005-07-21 |
KR100643268B1 (ko) | 2006-11-10 |
JP2005202936A (ja) | 2005-07-28 |
CN1311343C (zh) | 2007-04-18 |
EP1557760A2 (en) | 2005-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1641587A (zh) | 用于改进爪哇虚拟机性能的方法和系统 | |
CN108139896B (zh) | 扩展虚拟机指令集体系架构 | |
CN1855053A (zh) | 用于执行java虚拟机的指令的方法和设备 | |
CN108733988B (zh) | 安卓平台上可执行程序的保护方法 | |
CN108932406B (zh) | 虚拟化软件保护方法和装置 | |
CN1153141C (zh) | 调试优化代码的方法和设备 | |
CN1149478C (zh) | 从本地码有效调用Java方法的方法和设备 | |
CN1949186A (zh) | 一种程序调测系统及用于程序调测系统的映射方法 | |
JP4699580B2 (ja) | データ処理システムの配列の静的初期化方法、データ処理方法、並びにデータ処理システム及びその制御手順をコンピュータに実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体 | |
CN1573688A (zh) | 动态运行时间环境中使用标签化类型的系统和方法 | |
US7877741B2 (en) | Method and corresponding apparatus for compiling high-level languages into specific processor architectures | |
CN1504881A (zh) | 爪哇执行设备和爪哇执行方法 | |
CN1823323A (zh) | 用于执行本机绑定的方法和装置 | |
JP2001034483A (ja) | メタデータをコード化するためのオペコードの番号付け | |
CN1173262C (zh) | 虚拟机指令的优化字节码解释器 | |
CN103718159B (zh) | 图像处理软件开发方法、图像处理软件开发装置 | |
CN106033370B (zh) | 64位Java虚拟机的实现方法及装置 | |
KR101407629B1 (ko) | 자바 변환 가속 장치 및 방법 | |
US20060168567A1 (en) | Preserving platform independence with native accelerators for performance critical program objects | |
JP2005521933A (ja) | ハードウェア・トランスレータベースのカスタム・メソッド呼出しのシステムおよび方法 | |
KR100597413B1 (ko) | 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터 | |
CN1129846C (zh) | 程序执行方法 | |
Brandner et al. | Embedded JIT compilation with CACAO on YARI | |
JP2011501286A (ja) | ジャババイトコード変換方法 | |
Ko et al. | A double-issue Java processor design for embedded applications |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070418 Termination date: 20100222 |