孟德是什么意思| 高什么亮什么成语| 血糖低吃什么补的最快| 喉软骨发育不良有什么症状| 什么口红好| 什么是阴虚| ac是什么基团| 一切有为法是什么意思| 但闻人语响的但是什么意思| 平均红细胞体积偏高是什么原因| 送百合花代表什么意思| 不以为然的意思是什么| 嫌恶是什么意思| 抬头是什么| 芒果有什么好处和坏处| 5月份是什么星座| 为什么手会不自觉的抖| 手脚麻木挂什么科| 局灶肠化是什么意思| 什么的山谷| 中性粒细胞百分比偏低是什么意思| 什么而起| 鼻子不通气吃什么药| 跟腱炎什么症状| 健康的舌苔是什么样的| pac是什么| 51岁属什么| lsp是什么| 脚趾骨折是什么感觉| 刀郎和那英是什么关系| 同化什么意思| 梦见买猪肉是什么预兆| 每天半夜两三点醒是什么原因| 喝什么可以降血压| 个人简历籍贯填什么| sz是什么意思| 血压低吃什么中成药| 话说多了声音嘶哑是什么原因| 水晶眼镜对眼睛有什么好处| 浔是什么意思| 牙齿为什么会变黄| 提心吊胆是什么意思| 生化了是什么意思| 聋哑人为什么不会说话| 发痧吃什么药可以断根| 曹真和曹操什么关系| 石斛与什么搭配最好| 双什么意思| 青鱼是什么鱼| 赵云的武器叫什么| 什么的舞姿| lime是什么颜色| 明目张胆是什么生肖| 许三多最后是什么军衔| 天贵星是什么意思| 保胎吃什么药| snr是什么意思| 什么是土象星座| 做体检挂什么科| 什么的鼓励| 胸口闷痛什么原因引起的| lalpina是什么牌子| bhp是什么单位| 知了为什么一直叫| 昂字五行属什么| 槟子是什么水果| 口腔溃疡喝什么| 89属什么| 副作用是什么意思| 什么叫湿疹| a股是什么| 一动就出汗吃什么药| 过敏是什么症状| 考试前不能吃什么| 什么是代孕| 荔枝有什么好处| 身体缺镁会有什么症状| 猫咪结膜炎用什么药好| 非你莫属是什么意思| 三月十三是什么星座| 哺乳期可以喝什么饮料| 羊驼吃什么| 茹字五行属什么| 特长写什么| 生意是什么意思| 81年属什么生肖| 抗坏血酸是什么| 王朔为什么不娶徐静蕾| candies什么意思| 什么叫黑户| 肝实质回声密集是什么意思| 1995年属猪的是什么命| 干贝和瑶柱有什么区别| 无痛人流后需要注意什么| 什么病会引起牙疼| 万马奔腾是什么意思| 是什么拼音| 吃了榴莲不能吃什么| porridge什么意思| 身上长疮是什么原因引起的| 病毒性感冒吃什么药效果好| 鞭尸什么意思| 堂妹是什么关系| 肩胛骨疼是什么原因| 卵巢囊肿是什么原因引起的| 三个子字念什么| 衣服38码相当于什么码| 起什么转什么成语| 好吃懒做的动物是什么生肖| 则字五行属什么| 天津立冬吃什么| 房水由什么产生| 有口臭是什么原因| 危日是什么意思| 什么情况下做试管婴儿| 柠檬吃多了有什么坏处| 医共体是什么意思| 春天的雨像什么| 小腹一直疼是什么原因| 冰箱底部漏水是什么原因| 胆管结石用什么药能把它除掉| 遇难是什么意思| 银装素裹什么意思| 一龙一什么填十二生肖| 什么生日的人有佛缘| 检查头部挂什么科室| 91视频是什么| 血常规五项能检查出什么病| 皮蛋吃多了有什么危害| 消化道出血有什么症状| 北方的木瓜叫什么| 装什么病能容易开病假| apl是什么意思| 怀孕不可以吃什么东西| 什么叫手淫| 待客是什么意思| 下肢浮肿是什么原因| 鸡柳是什么肉| 表哥的女儿叫什么| 独生子女证办理需要什么材料| 小鱼际发红预示着什么| 移植后需要注意什么| 炸薯条用什么粉| 男人什么脸型最有福气| marlboro是什么烟| 辩解是什么意思| 心口下面疼是什么原因| 香港警司是什么级别| 什么牌子的钙片好| 什么手机电池最耐用| delsey是什么牌子| 樊字五行属什么| 竖中指什么意思| 什么星座黑化最吓人| 喜人是什么意思| 吃杏子有什么好处| 梦见别人怀孕了是什么意思| 大水牛是什么意思| 十一月二十八是什么星座| 电商属于什么行业| 清关是什么意思| 唐筛主要检查什么| 贵妇是什么意思| 爱而不得是什么感觉| 叶芽是什么| 倒走对身体有什么好处| 尿路感染不能吃什么东西| 吃得什么填词语| 西瓜禁忌和什么一起吃| 元朝是什么民族| 金玉满堂是什么菜| 家里进鸟了是什么预兆| 关节外科主要看什么| jj是什么意思| 舌苔开裂是什么原因呢| gm是什么牌子| beast什么意思| 抗原是什么| 三板斧是什么意思| 甘油三酯高用什么药好| 萎缩性阴道炎用什么药| 什么的天| 胰腺挂什么科| 白细胞降低是什么原因| 自食恶果是什么意思| 吃什么维生素对眼睛好| 痔疮吃什么食物| 肾阳虚是什么原因引起的| fr是什么| 饮什么止渴| pet是什么意思| 脊灰疫苗是预防什么的| 博五行属性是什么| 农历11月11日是什么星座| 嘴巴里长血泡是什么原因| eb病毒igg抗体阳性是什么意思| 做亲子鉴定需要什么| 久坐睾丸疼是什么原因| 亲亲抱抱举高高什么意思| 女生左手中指戴戒指什么意思| 什么是职业年金| 1985年牛五行属什么| 山葵是什么| 把子肉是什么肉| 甲沟炎是什么| hpv长什么样| 猫对什么颜色感兴趣| 甲状腺属于什么系统| 胃不好的人吃什么养胃| 六月十三日是什么日子| 关节痛去医院挂什么科| 腹泻什么意思| 头皮疼是什么原因| 8月21日是什么星座| 白帆是什么| 飞秒是什么| 洗手指征是什么| 头晕做什么检查最准确| 车牌号选什么数字吉利| 青霉素是什么药| 驾驶证和行驶证有什么区别| 睡醒后嘴巴苦什么原因| 月亮为什么是红色的| 痔疮看什么科| 雌堕什么意思| 看情况是什么意思| 平板支撑有什么好处| 急性咽喉炎吃什么药| 什么季节最短| 惗是什么意思| 乳酸菌素片什么时候吃| 34是什么意思| 一枚什么| 经常吐是什么原因| 肩宽适合穿什么样的衣服| 心悸是什么意思啊| 白细胞数目偏高是什么意思| 5.29什么星座| 猪大肠炒什么好吃| 什么袍加身| 中元节是什么节日| 现象是什么意思| 动则气喘是什么原因| 嘴巴经常长溃疡是什么原因| 鹰的天敌是什么动物| 围绝经期是什么意思| 胃疼吃什么药好的快| 珙桐属于什么植物| 大脑供血不足吃什么药| 麦露迪女鞋什么档次| 左室高电压是什么意思| 什么的奇观| 五行缺水是什么意思| 为什么不能天天做有氧运动| 梦见自己坐火车是什么意思| 鱼吃什么| 心脏杂音是什么意思| 七月上旬是什么时候| 孕妇缺铁吃什么| 什么是穴位| 漏斗胸是什么原因造成的| 和什么细什么的成语| 吃豌豆有什么好处| 韬的意思是什么| 百度Jump to content

榆次南苑小区新房出售 3层 3室2厅1卫 地下室17平

From Wikipedia, the free encyclopedia
Java virtual machine
DesignerSun Microsystems
Bits32-bit
Introduced1994
VersionJava SE 24[1][2] Edit this on Wikidata
TypeStack and register–register
EncodingVariable
BranchingCompare and branch
EndiannessBig
OpenYes
Registers
General-purposePer-method operand stack (up to 65535 operands) plus per-method local variables (up to 65535)
Overview of a Java virtual machine (JVM) architecture based on The Java Virtual Machine Specification Java SE 7 Edition
百度 24日下午,带着准考证,徐孟南到县城新区的蒙城第一中学踩点。

A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes what is required in a JVM implementation. Having a specification ensures interoperability of Java programs across different implementations so that program authors using the Java Development Kit (JDK) need not worry about idiosyncrasies of the underlying hardware platform.

The JVM reference implementation is developed by the OpenJDK project as open source code and includes a JIT compiler called HotSpot. The commercially supported Java releases available from Oracle are based on the OpenJDK runtime. Eclipse OpenJ9 is another open source JVM for OpenJDK.

JVM specification

[edit]

The Java virtual machine is an abstract (virtual) computer defined by a specification. It is a part of the Java runtime environment. The garbage collection algorithm used and any internal optimization of the Java virtual machine instructions (their translation into machine code) are not specified. The main reason for this omission is to not unnecessarily constrain implementers. Any Java application can be run only inside some concrete implementation of the abstract specification of the Java virtual machine.[3]

Starting with Java Platform, Standard Edition (J2SE) 5.0, changes to the JVM specification have been developed under the Java Community Process as JSR 924.[4] As of 2006, changes to the specification to support changes proposed to the class file format (JSR 202)[5] are being done as a maintenance release of JSR 924. The specification for the JVM was published as the blue book,[6] whose preface states:

We intend that this specification should sufficiently document the Java Virtual Machine to make possible compatible clean-room implementations. Oracle provides tests that verify the proper operation of implementations of the Java Virtual Machine.

The most commonly used Java virtual machine is Oracle's HotSpot.

Oracle owns the Java trademark and may allow its use to certify implementation suites as fully compatible with Oracle's specification.

Garbage collectors

[edit]
Java versions and their Garbage Collectors
Version Default GC Available GCs
6u14 Serial /
Parallel (MP)
Serial, Parallel, CMS, G1 (E)
7u4 - 8 Serial, Parallel, CMS, G1
9 - 10 G1
11 Serial, Parallel, CMS, G1, Epsilon (E), ZGC (E)
12 - 13 Serial, Parallel, CMS, G1, Epsilon (E), ZGC (E), Shenandoah (E)
14 Serial, Parallel, G1, Epsilon (E), ZGC (E), Shenandoah (E)
15 - 20 Serial, Parallel, G1, Epsilon (E), ZGC, Shenandoah
21 - 22 Serial, Parallel, G1, Epsilon (E), ZGC, Shenandoah, GenZGC (E)
23 Serial, Parallel, G1, Epsilon (E), ZGC, Shenandoah, GenZGC (default ZGC)
24 Serial, Parallel, G1, Epsilon (E), Shenandoah, GenZGC, GenShen (E)
25 Serial, Parallel, G1, Epsilon (E), Shenandoah, GenZGC, GenShen
(E) = experimental

Class loader

[edit]

One of the organizational units of JVM byte code is a class. A class loader implementation must be able to recognize and load anything that conforms to the Java class file format. Any implementation is free to recognize other binary forms besides class files, but it must recognize class files.

The class loader performs three basic activities in this strict order:

  1. Loading: finds and imports the binary data for a type
  2. Linking: performs verification, preparation, and (optionally) resolution
    • Verification: ensures the correctness of the imported type
    • Preparation: allocates memory for class variables and initializing the memory to default values
    • Resolution: transforms symbolic references from the type into direct references.
  3. Initialization: invokes Java code that initializes class variables to their proper starting values.

In general, there are three types of class loader: bootstrap class loader, extension class loader and System / Application class loader.

Every Java virtual machine implementation must have a bootstrap class loader that is capable of loading trusted classes, as well as an extension class loader or application class loader. The Java virtual machine specification does not specify how a class loader should locate classes.

Virtual machine architecture

[edit]

The JVM operates on specific types of data as specified in Java Virtual Machine specifications. The data types can be divided[7] into primitive types (integers, Floating-point, long etc.) and Reference types. The earlier JVM were only 32-bit machines. long and double types, which are 64-bits, are supported natively, but consume two units of storage in a frame's local variables or operand stack, since each unit is 32 bits. boolean, byte, short, and char types are all sign-extended (except char which is zero-extended) and operated on as 32-bit integers, the same as int types. The smaller types only have a few type-specific instructions for loading, storing, and type conversion. boolean is operated on as 8-bit byte values, with 0 representing false and 1 representing true. (Although boolean has been treated as a type since The Java Virtual Machine Specification, Second Edition clarified this issue, in compiled and executed code there is little difference between a boolean and a byte except for name mangling in method signatures and the type of boolean arrays. booleans in method signatures are mangled as Z while bytes are mangled as B. Boolean arrays carry the type boolean[] but use 8 bits per element, and the JVM has no built-in capability to pack booleans into a bit array, so except for the type they perform and behave the same as byte arrays. In all other uses, the boolean type is effectively unknown to the JVM as all instructions to operate on booleans are also used to operate on bytes.) However, newer JVM releases, such as the OpenJDK HotSpot JVM, support 64-bit architecture. Consequently, you can install a 32-bit or 64-bit JVM on a 64-bit operating system. The primary advantage of running Java in a 64-bit environment is the larger address space. This allows for a much larger Java heap size and an increased maximum number of Java Threads, which is needed for certain kinds of large applications; however there is a performance hit in using 64-bit JVM compared to 32-bit JVM.

The JVM has a garbage-collected heap for storing objects and arrays. Code, constants, and other class data are stored in the "method area". The method area is logically part of the heap, but implementations may treat the method area separately from the heap, and for example might not garbage collect it. Each JVM thread also has its own call stack (called a "Java Virtual Machine stack" for clarity), which stores frames. A new frame is created each time a method is called, and the frame is destroyed when that method exits.

Each frame provides an "operand stack" and an array of "local variables". The operand stack is used for operands to run computations and for receiving the return value of a called method, while local variables serve the same purpose as registers and are also used to pass method arguments. Thus, the JVM is both a stack machine and a register machine. In practice, HotSpot eliminates every stack besides the native thread/call stack even when running in Interpreted mode, as its Templating Interpreter technically functions as a compiler.

Bytecode instructions

[edit]

The JVM has instructions for the following groups of tasks:

The aim is binary compatibility. Each particular host operating system needs its own implementation of the JVM and runtime. These JVMs interpret the bytecode semantically the same way, but the actual implementation may be different. More complex than just emulating bytecode is compatibly and efficiently implementing the Java core API that must be mapped to each host operating system.

These instructions operate on a set of common abstracted data types rather the native data types of any specific instruction set architecture.

JVM languages

[edit]

A JVM language is any language with functionality that can be expressed in terms of a valid class file which can be hosted by the Java Virtual Machine. A class file contains Java Virtual Machine instructions (Java byte code) and a symbol table, as well as other ancillary information. The class file format is the hardware- and operating system-independent binary format used to represent compiled classes and interfaces.[8]

There are several JVM languages, both old languages ported to JVM and completely new languages. JRuby and Jython are perhaps the most well-known ports of existing languages, i.e. Ruby and Python respectively. Of the new languages that have been created from scratch to compile to Java bytecode, Clojure, Groovy, Scala and Kotlin may be the most popular ones. A notable feature with the JVM languages is that they are compatible with each other, so that, for example, Scala libraries can be used with Java programs and vice versa.[9]

Java 7 JVM implements JSR 292: Supporting Dynamically Typed Languages[10] on the Java Platform, a new feature which supports dynamically typed languages in the JVM. This feature is developed within the Da Vinci Machine project whose mission is to extend the JVM so that it supports languages other than Java.[11][12]

Bytecode verifier

[edit]

A basic philosophy of Java is that it is inherently safe from the standpoint that no user program can crash the host machine or otherwise interfere inappropriately with other operations on the host machine, and that it is possible to protect certain methods and data structures belonging to trusted code from access or corruption by untrusted code executing within the same JVM. Furthermore, common programmer errors that often led to data corruption or unpredictable behavior such as accessing off the end of an array or using an uninitialized pointer are not allowed to occur. Several features of Java combine to provide this safety, including the class model, the garbage-collected heap, and the verifier.

The JVM verifies all bytecode before it is executed. This verification consists primarily of three types of checks:

  • Branches are always to valid locations
  • Data is always initialized and references are always type-safe
  • Access to private or package private data and methods is rigidly controlled

The first two of these checks take place primarily during the verification step that occurs when a class is loaded and made eligible for use. The third is primarily performed dynamically, when data items or methods of a class are first accessed by another class.

The verifier permits only some bytecode sequences in valid programs, e.g. a jump (branch) instruction can only target an instruction within the same method. Furthermore, the verifier ensures that any given instruction operates on a fixed stack location,[13] allowing the JIT compiler to transform stack accesses into fixed register accesses. Because of this, that the JVM is a stack architecture does not imply a speed penalty for emulation on register-based architectures when using a JIT compiler. In the face of the code-verified JVM architecture, it makes no difference to a JIT compiler whether it gets named imaginary registers or imaginary stack positions that must be allocated to the target architecture's registers. In fact, code verification makes the JVM different from a classic stack architecture, of which efficient emulation with a JIT compiler is more complicated and typically carried out by a slower interpreter. Additionally, the Interpreter used by the default JVM is a special type known as a Template Interpreter, which translates bytecode directly to native, register based machine language rather than emulate a stack like a typical interpreter.[14] In many aspects the HotSpot Interpreter can be considered a JIT compiler rather than a true interpreter, meaning the stack architecture that the bytecode targets is not actually used in the implementation, but merely a specification for the intermediate representation that can well be implemented in a register based architecture. Another instance of a stack architecture being merely a specification and implemented in a register based virtual machine is the Common Language Runtime.[15]

The original specification for the bytecode verifier used natural language that was incomplete or incorrect in some respects. A number of attempts have been made to specify the JVM as a formal system. By doing this, the security of current JVM implementations can more thoroughly be analyzed, and potential security exploits prevented. It will also be possible to optimize the JVM by skipping unnecessary safety checks, if the application being run is proven to be safe.[16]

Secure execution of remote code

[edit]

A virtual machine architecture allows very fine-grained control over the actions that code within the machine is permitted to take. It assumes the code is "semantically" correct, that is, it successfully passed the (formal) bytecode verifier process, materialized by a tool, possibly off-board the virtual machine. This is designed to allow safe execution of untrusted code from remote sources, a model used by Java applets, and other secure code downloads. Once bytecode-verified, the downloaded code runs in a restricted "sandbox", which is designed to protect the user from misbehaving or malicious code. As an addition to the bytecode verification process, publishers can purchase a certificate with which to digitally sign applets as safe, giving them permission to ask the user to break out of the sandbox and access the local file system, clipboard, execute external pieces of software, or network.

Formal proof of bytecode verifiers have been done by the Javacard industry (Formal Development of an Embedded Verifier for Java Card Byte Code[17])

Bytecode interpreter and just-in-time compiler

[edit]

For each hardware architecture a different Java bytecode interpreter is needed. When a computer has a Java bytecode interpreter, it can run any Java bytecode program, and the same program can be run on any computer that has such an interpreter.

When Java bytecode is executed by an interpreter, the execution will always be slower than the execution of the same program compiled into native machine language. This problem is mitigated by just-in-time (JIT) compilers for executing Java bytecode. A JIT compiler may translate Java bytecode into native machine language while executing the program. The translated parts of the program can then be executed much more quickly than they could be interpreted. This technique gets applied to those parts of a program frequently executed. This way a JIT compiler can significantly speed up the overall execution time.

There is no necessary connection between the Java programming language and Java bytecode. A program written in Java can be compiled directly into the machine language of a real computer and programs written in other languages than Java can be compiled into Java bytecode.

Java bytecode is intended to be platform-independent and secure.[18] Some JVM implementations do not include an interpreter, but consist only of a just-in-time compiler.[19]

JVM in the web browser

[edit]

At the start of the Java platform's lifetime, the JVM was marketed as a web technology for creating Rich Web Applications. As of 2018, most web browsers and operating systems bundling web browsers do not ship with a Java plug-in, nor do they permit side-loading any non-Flash plug-in. The Java browser plugin was deprecated in JDK 9.[20]

The NPAPI Java browser plug-in was designed to allow the JVM to execute so-called Java applets embedded into HTML pages. For browsers with the plug-in installed, the applet is allowed to draw into a rectangular region on the page assigned to it. Because the plug-in includes a JVM, Java applets are not restricted to the Java programming language; any language targeting the JVM may run in the plug-in. A restricted set of APIs allow applets access to the user's microphone or 3D acceleration, although applets are not able to modify the page outside its rectangular region. Adobe Flash Player, the main competing technology, works in the same way in this respect.

As of June 2015 according to W3Techs, Java applet and Silverlight use had fallen to 0.1% each for all web sites, while Flash had fallen to 10.8%.[21]

JavaScript JVMs and interpreters

[edit]

Since May 2016, JavaPoly allows users to import unmodified Java libraries, and invoke them directly from JavaScript. JavaPoly allows websites to use unmodified Java libraries, even if the user does not have Java installed on their computer.[22]

Transpilation to JavaScript

[edit]

With the continuing improvements in JavaScript execution speed, combined with the increased use of mobile devices whose web browsers do not implement support for plugins, there are efforts to target those users through transpilation to JavaScript. It is possible to either transpile the source code or JVM bytecode to JavaScript.

Compiling the JVM bytecode, which is universal across JVM languages, allows building upon the language's existing compiler to bytecode. The main JVM bytecode to JavaScript transpilers are TeaVM,[23] the compiler contained in Dragome Web SDK,[24] Bck2Brwsr,[25] and j2js-compiler.[26]

Leading transpilers from JVM languages to JavaScript include the Java-to-JavaScript transpiler contained in Google Web Toolkit, Clojurescript (Clojure), GrooScript (Apache Groovy), Scala.js (Scala) and others.[27]

See also

[edit]

References

[edit]
  1. ^ "Oracle Releases Java 24".
  2. ^ "JDK 24".
  3. ^ Bill Venners, Inside the Java Virtual Machine Archived 2025-08-06 at the Wayback Machine Chapter 5
  4. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 924". Jcp.org. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  5. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 202". Jcp.org. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  6. ^ The Java Virtual Machine Specification Archived 2025-08-06 at the Wayback Machine (the first Archived 2025-08-06 at the Wayback Machine and second Archived 2025-08-06 at the Wayback Machine editions are also available online).
  7. ^ "Chapter 2. The Structure of the Java Virtual Machine". Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  8. ^ "The Java Virtual Machine Specification : Java SE 7 Edition" (PDF). Docs.oracle.com. Archived (PDF) from the original on 2025-08-06. Retrieved 2025-08-06.
  9. ^ "Frequently Asked Questions - Java Interoperability". scala-lang.org. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  10. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 292". Jcp.org. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  11. ^ "Da Vinci Machine project". Openjdk.java.net. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  12. ^ "New JDK 7 Feature: Support for Dynamically Typed Languages in the Java Virtual Machine". Oracle.com. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  13. ^ "The Verification process". The Java Virtual Machine Specification. Sun Microsystems. 1999. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  14. ^ "HotSpot Runtime Overview - Interpreter". OpenJDK. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  15. ^ "Why not make CLR register-based? · Issue #4775 · dotnet/runtime". GitHub. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  16. ^ Freund, Stephen N.; Mitchell, John C. (1999). "A formal framework for the Java bytecode language and verifier". Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications - OOPSLA '99. pp. 147–166. CiteSeerX 10.1.1.2.4663. doi:10.1145/320384.320397. ISBN 978-1581132380. S2CID 14302964.
  17. ^ Casset, Ludovic; Burdy, Lilian; Requet, Antoine (10 April 2002). "Formal Development of an Embedded Verifier for Java Card Byte Code" (PDF). Inria - National Institute for Research in Digital Science and Technology at C?te d'Azur University. Archived (PDF) from the original on 3 October 2022.
  18. ^ David J. Eck, Introduction to Programming Using Java Archived 2025-08-06 at the Wayback Machine, Seventh Edition, Version 7.0, August 2014 at Section 1.3 "The Java Virtual Machine"
  19. ^ Oracle JRockit Introduction Archived 2025-08-06 at the Wayback Machine Release R28 at 2. "Understanding Just-In-Time Compilation and Optimization"
  20. ^ "Oracle deprecates the Java browser plugin, prepares for its demise". Ars Technica. 28 January 2016. Archived from the original on 8 April 2016. Retrieved 15 April 2016.
  21. ^ "Historical yearly trends in the usage of client-side programming languages, June 2015". W3techs.com. Retrieved 2025-08-06.
  22. ^ Krill, Paul (13 May 2016). "JavaPoly.js imports existing Java code and invokes it directly from JavaScript". InfoWorld. Archived from the original on 25 July 2016. Retrieved 18 July 2016.
  23. ^ "TeaVM project home page". Teavm.org. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  24. ^ "Dragome Web SDK". Dragome.com. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  25. ^ "Bck2Brwsr - APIDesign". Wiki.apidesign.org. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  26. ^ Wolfgang Kuehn (decatur). j2js-compiler Archived 2025-08-06 at the Wayback Machine GitHub
  27. ^ "List of languages that compile to JS · jashkenas/coffeescript Wiki · GitHub". Github.com. 2025-08-06. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
化疗是什么 一片冰心在玉壶的冰心是什么意思 化妆品有什么 光子嫩肤是什么 高度鳞状上皮内病变是什么意思
阴部瘙痒用什么药 色戒讲的什么 痔疮出血用什么药 菠菜是什么季节的菜 皮下脂肪瘤挂什么科
蚊子有什么用 缺铁性贫血的人吃什么补血最快 鹿晗是什么星座 乌龟最喜欢吃什么 88年的属什么生肖
三月29号是什么星座 白血病有什么症状 口干舌燥是什么病 利而不害为而不争是什么意思 谷子是什么意思
蓝莓有什么作用hcv8jop2ns2r.cn wrong什么意思hcv8jop2ns0r.cn 什么是冬虫夏草hcv8jop7ns2r.cn 溃疡用什么药hcv8jop1ns4r.cn 血糖高吃什么中药好tiangongnft.com
晚上肚子疼是什么原因hcv8jop0ns7r.cn 小时的单位是什么hcv8jop5ns0r.cn 办港澳通行证需要带什么hcv7jop9ns8r.cn 节操是什么意思mmeoe.com 抽动症是什么原因造成的hcv9jop5ns3r.cn
加拿大的国宝是什么动物jiuxinfghf.com 左小腿麻木是什么原因hcv9jop8ns1r.cn 梦到前女友征兆是什么hcv9jop5ns3r.cn 女性膀胱炎吃什么药hcv8jop6ns2r.cn 又什么又什么的草地hcv8jop2ns4r.cn
以什么为准hcv8jop2ns3r.cn 半月板变性是什么意思hcv8jop1ns1r.cn 欺人太甚什么意思hcv9jop7ns3r.cn 维生素e有什么作用baiqunet.com 血压偏高喝什么茶zhongyiyatai.com
百度