== Generation ==
{{Main|List of JVM languages}}
The most common language targeting [[Java Virtual Machine]] by producing Java bytecode is Java. Originally only one compiler existed, the [[javac]] compiler from Sun Microsystems, which compiles [[Java source code]] to Java bytecode; but because all the specifications for Java bytecode are now available, other parties have supplied compilers that produce Java bytecode. Examples of other compilers include:
* Espresso[[Jikes]], compiles from Java to Java bytecode ( Javadeveloped by [[IBM]], implemented 1.0in only[[C++]]) ▼
* [[Jikes]]Espresso, compiles from Java to Java bytecode (developed by [[IBM]], implementedJava in1.0 [[C++]]only)
* [[GNU Compiler for Java|GCJ]], the GNU Compiler for Java, compiles from Java to Java bytecode; it is also able to compile to native machine code and is available as part of the [[GNU Compiler Collection]] (GCC). ▼
▲* Espresso, compiles from Java to Java bytecode (Java 1.0 only)
▲* [[GNU Compiler for Java|GCJ]], the GNU Compiler for Java, compiles from Java to Java bytecode; it is also able to compile to native machine code and is available as part of the [[GNU Compiler Collection]] (GCC).
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 textual 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://jasmin.sourceforge.net Jasmin Home Page<!-- Bot generated title -->]</ref>
* [[JasminJamaica (Java assembler)|JasminJamaica]], takesa textual[[Macro descriptions(computer forscience)|macro]] Java[[assembly classes,language]] writtenfor inthe a[[Java simplevirtual assembly-likemachine]]. Java syntax usingis Javaused Virtualfor Machineclass instructionor setinterface anddefinition. generatesMethod abodies Javaare classspecified fileusing bytecode instructions.<ref>[http://jasminwww.sourceforgejudoscript.netorg/jamaica.html JasminJamaica: The Java Virtual Machine (JVM) HomeMacro PageAssembler<!-- Bot generated title -->]</ref>
* [[Jamaica (Java assembler)|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>[http://www.judoscript.org/jamaica.html Jamaica: The Java Virtual Machine (JVM) Macro Assembler<!-- Bot generated title -->]</ref>
Others have developed compilers, for different programming languages, in order to target the Java virtual machine, such as:
*[[JRuby]] and [[Jython]], two [[scripting language]]s based on [[Ruby (programming language)|Ruby]] and [[Python (programming language)|Python]]
* [[JRuby]]Groovy and(programming [[Jythonlanguage)|Groovy]], twoa [[scripting language]]s based on [[Ruby (programming language)|Ruby]] and [[Python (programming language)|Python]]Java
* [[GroovyScala (programming language)|GroovyScala]], a [[scriptingtype-safe general-purpose programming language]] basedsupporting onobject-oriented Javaand functional programming
* [[ScalaJGNAT]] (programmingand language)[[AdaMagic|ScalaAppletMagic]], acompile type-safefrom general-purposethe [[Ada programming language]] supportingto object-orientedJava and functional programmingbytecode
* [[Java Virtual Machine#C to bytecode compilers|C to Java byte-code compiler]]s ▼
* [[JGNAT]] and [[AdaMagic|AppletMagic]], compile from the [[Ada programming language]] to Java bytecode
* [[Clojure]], a functional, immutable, general-purpose programming language in the LISP family with a strong emphasis on concurrency ▼
▲* [[Java Virtual Machine#C to bytecode compilers|C to Java byte-code compiler]]s
▲* [[Clojure]], a functional, immutable, general-purpose programming language in the LISP family with a strong emphasis on concurrency
* [[JavaFX Script]] code is also compiled to Java bytecode. ▼
▲* [[JavaFX Script]] code is also compiled to Java bytecode.
== Execution ==
|