This list of JVM Languages comprises notable computer programming languages that are used to produce computer software that runs on the Java virtual machine (JVM). Some of these languages are interpreted by a Java program, and some are compiled to Java bytecode and just-in-time (JIT) compiled during execution as regular Java programs to improve performance.
The JVM was initially designed to support only the language Java. However, over time, ever more languages were adapted or designed to run on the Java platform.
As of 2024, according to the TIOBE index [1] of the top 100 programming languages, and PyPL, [2] the top JVM languages are:
Python is TIOBE's top language; Jython, its JVM implementation, doesn't make the list (of 100 languages) under that name (is syntax compatible with Python 2.7, now an outdated Python version). JavaScript (6th), PHP, R and others, also make top 20 and have JVM implementations; Ruby is ranked 18th, while JRuby, its JVM implementation is not listed separately.
Language | JVM implementations |
---|---|
Go | jgo |
Arden Syntax | Arden2ByteCode |
COBOL | NTT Data Enterprise COBOL [5] Micro Focus Visual COBOL [6] |
ColdFusion Markup Language (CFML) | Adobe ColdFusion Railo Lucee Open BlueDragon |
Common Lisp | Armed Bear Common Lisp [8] |
Cypher | Neo4j [9] |
Haskell | Eta (programming language) |
JavaScript | Rhino Nashorn |
LLVM Bitcode | Sulong [11] |
Mercury | Mercury (Java grade) |
OCaml | OCaml-Java |
Component Pascal | Gardens Point Component Pascal |
Pascal | MIDletPascal Oxygene |
Raku | Rakudo |
PHP | Quercus [12] [13] JPHP |
Prolog | JIProlog TuProlog |
Python | Jython ZipPy [14] Graal.Python [10] |
R | Renjin FastR [15] |
Rexx | NetRexx |
Ruby | JRuby TruffleRuby [16] |
Scheme | Bigloo Kawa SISC JScheme |
Simula | Open Source Simula |
Smalltalk | Redline [17] |
Standard ML | MLj |
Tcl | Jacl |
Visual Basic | Jabaco [note 1] |
Language | First release | Stable release | Last release |
---|---|---|---|
Ballerina | 2018 | 2019 | 2020 |
BeanShell | 1999 | 2013 | 2016 |
Eclipse Ceylon | 2011 | 2017 | 2017 |
CFML | 1995 | 2018 | 2018 |
Quark Framework | 2011 | 2018 | |
E | 1997 | ||
Fantom | 2011 | 2017 | |
Fortress | 2006 | 2011 | 2017 |
Frege | |||
Mirah | 2016 | ||
Xtend | 2011 | 2021 |
Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need to recompile. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages.
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.
Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation.
OCaml is a general-purpose, high-level, multi-paradigm programming language which extends the Caml dialect of ML with object-oriented features. OCaml was created in 1996 by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascánder Suárez, and others.
Programming languages can be grouped by the number and types of paradigms supported.
Apache Groovy is a Java-syntax-compatible object-oriented programming language for the Java platform. It is both a static and dynamic language with features similar to those of Python, Ruby, and Smalltalk. It can be used as both a programming language and a scripting language for the Java Platform, is compiled to Java virtual machine (JVM) bytecode, and interoperates seamlessly with other Java code and libraries. Groovy uses a curly-bracket syntax similar to Java's. Groovy supports closures, multiline strings, and expressions embedded in strings. Much of Groovy's power lies in its AST transformations, triggered through annotations.
The history of programming languages spans from documentation of early mechanical computers to modern tools for software development. Early programming languages were highly specialized, relying on mathematical notation and similarly obscure syntax. Throughout the 20th century, research in compiler theory led to the creation of high-level programming languages, which use a more accessible syntax to communicate instructions.
Scala is a strong statically typed high-level general-purpose programming language that supports both object-oriented programming and functional programming. Designed to be concise, many of Scala's design decisions are intended to address criticisms of Java.
Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.
Haxe is a high-level cross-platform programming language and compiler that can produce applications and source code for many different computing platforms from one code-base. It is free and open-source software, released under the MIT License. The compiler, written in OCaml, is released under the GNU General Public License (GPL) version 2.
Clojure is a dynamic and functional dialect of the Lisp programming language on the Java platform.
Fantom is a general-purpose object-oriented programming language, created by Brian Frank and Andy Frank. It runs on the Java Runtime Environment (JRE), JavaScript, and the .NET Common Language Runtime (CLR). Its stated goal is to provide a standard library API. Fantom uses a curly brace syntax, supports functional programming through closures and concurrency through the Actor model, and blends aspects of both static and dynamic typing.
Mirah has been a programming language based on Ruby language syntax, local type inference, hybrid static–dynamic type system, and a pluggable compiler toolchain. Mirah was created by Charles Oliver Nutter to be "a 'Ruby-like' language, probably a subset of Ruby syntax, that [could] compile to solid, fast, idiomatic JVM bytecode." The word mirah refers to the gemstone ruby in the Javanese language, a play on the concept of Ruby in Java.
Java bytecode is the instruction set of the Java virtual machine (JVM), crucial for executing programs written in the Java language and other JVM-compatible languages. Each bytecode operation in the JVM is represented by a single byte, hence the name "bytecode", making it a compact form of instruction. This intermediate form enables Java programs to be platform-independent, as they are compiled not to native machine code but to a universally executable format across different JVM implementations.
Gradual typing is a type system in which some variables and expressions may be given types and the correctness of the typing is checked at compile time and some expressions may be left untyped and eventual type errors are reported at runtime. Gradual typing allows software developers to choose either type paradigm as appropriate, from within a single language. In many cases gradual typing is added to an existing dynamic language, creating a derived language allowing but not requiring static typing to be used. In some cases a language uses gradual typing from the start.
Hy is a dialect of the Lisp programming language designed to interact with Python by translating s-expressions into Python's abstract syntax tree (AST). Hy was introduced at Python Conference (PyCon) 2013 by Paul Tagliamonte. Lisp allows operating on code as data (metaprogramming), thus Hy can be used to write domain-specific languages.
Golo is computer software, a programming language for the Java virtual machine (JVM). It is simple, with dynamic, weak typing. It was created in 2012 as part of the research activities of the DynaMid group of the Centre of Innovation in Telecommunications and Integration of service (CITI) Laboratory at Institut national des sciences appliquées de Lyon (INSA). It is distributed as free and open-source software under the Eclipse Public License 2.0.