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 [6] Micro Focus Visual COBOL [7] |
ColdFusion Markup Language (CFML) | Adobe ColdFusion Railo Lucee Open BlueDragon |
Common Lisp | Armed Bear Common Lisp [9] |
Cypher | Neo4j [10] |
Haskell | Eta (programming language) |
JavaScript | Rhino Nashorn |
LLVM Bitcode | Sulong [12] |
Mercury | Mercury (Java grade) |
OCaml | OCaml-Java |
Component Pascal | Gardens Point Component Pascal |
Pascal | MIDletPascal Oxygene |
Raku | Rakudo |
PHP | Quercus [13] [14] JPHP |
Prolog | JIProlog TuProlog |
Python | Jython ZipPy [15] Graal.Python [11] |
R | Renjin FastR [16] |
Rexx | NetRexx |
Ruby | JRuby TruffleRuby [17] |
Scheme | Bigloo Kawa SISC JScheme |
Simula | Open Source Simula |
Smalltalk | Redline [18] |
Standard ML | MLj |
Tcl | Jacl |
Visual Basic | Jabaco [note 1] |
Language | First release | Stable release | Last release |
---|---|---|---|
Ballerina | 2018 | 2019 | 2024 |
BeanShell | 1999 | 2013 | 2022 |
Eclipse Ceylon | 2011 | 2017 | 2017 |
CFML | 1995 | 2018 | 2018 |
E | 1997 | 2016 | |
Fantom | 2011 | 2017 | 2024 |
Fortress | 2006 | 2011 | 2011 |
Frege | 2012 | 2018 | |
Manifold | 2019 | 2019 | 2023 |
Mirah | 2016 | 2016 | |
Xtend | 2011 | 2021 | 2024 |
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.
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.
In computer science, a preprocessor is a program that processes its input data to produce output that is used as input in another program. The output is said to be a preprocessed form of the input data, which is often used by some subsequent programs like compilers. The amount and kind of processing done depends on the nature of the preprocessor; some preprocessors are only capable of performing relatively simple textual substitutions and macro expansions, while others have the power of full-fledged programming languages.
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 an 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 programming language Lisp 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), the language to which Java and other JVM-compatible source code is compiled. Each instruction is represented by a single byte, hence the name bytecode, making it a compact form of data.
Gradual typing is a type system that lies inbetween static typing and in dynamic typing. 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.
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.