Java bytecode: Difference between revisions

Content deleted Content added
m improve link: Interpreter (computing)
m Filled in 7 bare reference(s) with reFill 2 <!---♦♦♦ Please keep the list in alphabetical order ♦♦♦--->
Line 117:
 
Some projects provide Java assemblers to enable writing Java bytecode by hand. Assembly code may be also generated by machine, for example by a compiler targeting a [[Java virtual machine]]. Notable Java assemblers include:
*[[Jasmin (Java assembler)|Jasmin]], takes text descriptions for Java classes, written in a simple assembly-like syntax using Java virtual machine instruction set and generates a Java class file<ref>[http{{Cite web|url=https://jasmin.sourceforge.net /|title=Jasmin homeHome page<!-- BotPage|website=jasmin.sourceforge.net|accessdate=2 generated titleJune -->]2024}}</ref>
*Jamaica, a [[Macro (computer science)|macro]] [[assembly language]] for the [[Java virtual machine]]. Java syntax is used for class or interface definition. Method bodies are specified using bytecode instructions.<ref>[{{Cite web|url=https://www.javaworld.com/article/2072355/core-java/learn-to-speak-jamaican.html |title=Jamaica: The Java virtual machine (JVM) macro assembler<!-- Bot generated title -->]|accessdate=2 June 2024}}</ref>
*Krakatau Bytecode Tools, currently contains three tools: a decompiler and disassembler for Java classfiles and an assembler to create classfiles.<ref>[{{Cite web|url=https://github.com/Storyyeller/Krakatau |title=Storyyeller/Krakatau|date=1 June 2024|accessdate=2 homeJune page]2024|via=GitHub}}</ref>
*Lilac, an assembler and disassembler for the [[Java virtual machine]].<ref>[http{{Cite web|url=https://lilac.sourceforge.net /|title=Lilac home- a Java assembler|website=lilac.sourceforge.net|accessdate=2 June page]2024}}</ref>
 
Others have developed compilers, for different programming languages, to target the Java virtual machine, such as:
Line 134:
*[[JavaFX Script]] code is compiled to Java bytecode
*[[Kotlin (programming language)|Kotlin]], a statically-typed general-purpose programming language with type inference
*[[Object Pascal]] source code is compiled to Java bytecode using the [[Free Pascal]] 3.0+ compiler.<ref>[http{{Cite web|url=https://wiki.freepascal.org/FPC_New_Features_3.0#Support_for_the_Java_Virtual_Machine_and_Dalvik_targets|title=FPC FreeNew PascalFeatures 3.0.0 - Free Pascal wiki|website=wiki.freepascal.org|accessdate=2 releaseJune notes]2024}}</ref><ref>[http{{Cite web|url=https://wiki.freepascal.org/FPC_JVM|title=FPC JVM - Free Pascal JVMwiki|website=wiki.freepascal.org|accessdate=2 June Target]2024}}</ref>
 
== Execution ==
Line 151:
| access-date=2008-01-25}}</ref>
 
[[Java Community Process|JSR]] 292 (''Supporting Dynamically Typed Languages on the Java Platform'')<ref>[http{{Cite web|url=https://www.jcp.org/en/jsr/detail?id=292|title=The seeJava Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 292]|website=www.jcp.org|accessdate=2 June 2024}}</ref> added a new <code>invokedynamic</code> instruction at the JVM level, to allow method invocation relying on dynamic [[Type system#Type checking|type checking]] (instead of the extant statically type-checked <code>invokevirtual</code> instruction). The [[Da Vinci Machine]] is a prototype virtual machine implementation that hosts JVM extensions aimed at supporting dynamic languages. All JVMs supporting [[Java Platform, Standard Edition|JSE]] 7 also include the <code>invokedynamic</code> opcode.
 
== See also ==
{{Portal|Computer programming}}
<!---♦♦♦ Please keep the list in alphabetical order ♦♦♦--->
* [[List of Java bytecode instructions]]
* [[JavaByte classCode fileEngineering Library]]
* [[Common Intermediate Language]] (CIL), Microsoft's rival to Java bytecode
* [[List of JVM languages]]
* [[Java backporting tools]]
* [[Java class file]]
* [[Java virtual machine]]
* [[JStik]]
* [[Common Intermediate Language]] (CIL), Microsoft's rival to Java bytecode
* [[ObjectWeb ASM]]
 
* [[Byte Code Engineering Library]]
* [[List of Java bytecode instructions]]
* [[List of JVM languages]]
 
== References ==