List of JVM languages

Last updated

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.

Contents

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.

JVM languages

High-profile languages

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.

JVM implementations of existing languages

LanguageJVM implementations
Go jgo
Arden syntax Arden2ByteCode
COBOL NTT Data Enterprise COBOL [6]

Micro Focus Visual COBOL [7]
Heirloom Elastic COBOL
Veryant isCOBOL Evolve [8]

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

Graal.js [11]

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]

New languages with JVM implementations

Comparison of these languages

LanguageFirst releaseStable releaseLast release
Ballerina 201820192024
BeanShell 199920132022
Eclipse Ceylon 201120172017
CFML 199520182018
E 19972016
Fantom 201120172024
Fortress 200620112011
Frege 20122018
Manifold201920192023
Mirah 20162016
Xtend 201120212024

See also

Notes

  1. [19] [20] [21] is a freeware IDE in beta-testing since 2009, with a partly open source [22] Jabaco framework runtime. Jabaco compiles VB 6 syntax source to Java bytecode.

Related Research Articles

<span class="mw-page-title-main">Java (programming language)</span> Object-oriented programming language

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.

<span class="mw-page-title-main">Java virtual machine</span> Virtual machine that runs Java programs

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.

<span class="mw-page-title-main">Apache Groovy</span> Programming language

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.

<span class="mw-page-title-main">History of programming languages</span>

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.

<span class="mw-page-title-main">Scala (programming language)</span> General-purpose programming language

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.

<span class="mw-page-title-main">Java (software platform)</span> Set of computer software and specifications

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.

<span class="mw-page-title-main">Clojure</span> Dialect of the Lisp programming language on the Java platform

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.

<span class="mw-page-title-main">Hy (programming language)</span> Dialect of the Lisp programming language designed to interact with Python

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.

References

  1. "TIOBE Index". TIOBE. Retrieved 4 November 2024.
  2. "PYPL PopularitY of Programming Language index". pypl.github.io. Retrieved 4 November 2024.
  3. 1 2 3 4 5 6 Urma, Raoul-Gabriel (1 July 2014). "Alternative Languages for the JVM. A look at eight features from eight JVM languages". Oracle. Retrieved 13 March 2019.
  4. Wampler, Dean (15 January 2009). "Adopting New JVM Languages in the Enterprise (Updated)". objectmentor.com. Archived from the original on 22 May 2009. Retrieved 18 June 2009.
  5. "Groovy Springs Back Up TIOBE's Programming Languages List" . Retrieved 10 March 2021.
  6. "NTT Data Enterprise COBOL Brochure" (PDF).
  7. "Visual COBOL Brochure" (PDF). Retrieved 5 April 2017.
  8. "isCOBOL Evolve Datasheet" (PDF). Retrieved 17 May 2019.
  9. Armed Bear Common Lisp
  10. "New on Neo4j: The Neo4j 2.3.0 Milestone 2 Release Is Here". 12 June 2015. Retrieved 20 February 2017.
  11. 1 2 "Oracle Labs GraalVM: Programming Languages and Runtimes Overview". www.oracle.com. Retrieved 12 April 2018.
  12. "graalvm/sulong". GitHub. Retrieved 12 April 2018.
  13. "Introducing Quercus, a Java based PHP". IBM . Retrieved 2 July 2015.
  14. "Running PHP With Quercus in Sun Java System Web Server" . Retrieved 2 July 2015.
  15. "ssllab / ZipPy — Bitbucket". bitbucket.org. Retrieved 12 April 2018.
  16. "oracle/fastr". GitHub. Retrieved 12 April 2018.
  17. "oracle/truffleruby". GitHub. Retrieved 12 April 2018.
  18. "Redline Smalltalk". Archived from the original on 24 March 2021. Retrieved 2 September 2018.
  19. "Jabaco entry at Mindteq.com Basics section" . Retrieved 2 July 2015.]
  20. "Article about Jabaco at German Pro-Linux publication" . Retrieved 2 July 2015.]
  21. "Basic meet Java" . Retrieved 26 February 2015.
  22. "Framework" . Retrieved 26 February 2015.
  23. "Ateji PX: Java Parallel Programming Made Simple". Ateji. Archived from the original on 24 February 2014. Retrieved 1 March 2014.
  24. "Flexible, Powerful, Beautiful Integrations as Code with Ballerina". Ballerina. Retrieved 28 September 2024.
  25. CFML, a scripting language compiled to Java, used on the ColdFusion or Railo application servers
  26. "The Eta Programming Language" . Retrieved 10 May 2017.
  27. "Fantom Programming Language". Fantom. Retrieved 1 March 2014.
  28. "Frege" . Retrieved 1 March 2014.
  29. "Oracle.com - Golo – A Lightweight Dynamic Language for the JVM". Archived from the original on 3 July 2015. Retrieved 2 July 2015.]
  30. "Golo nominated for JAX Awards 2014" . Retrieved 2 July 2015.]
  31. "Golo entry at JAX Awards 2014" . Retrieved 2 July 2015.]
  32. "The Mirah Programming Language". GitHub. Retrieved 1 March 2014.
  33. "Mirah" . Retrieved 1 March 2014.
  34. "The Prompto Platform" . Retrieved 14 September 2019.
  35. "Yeti programming language" . Retrieved 5 May 2020.
  36. "Yirgacheffe" . Retrieved 9 January 2020.