List of JVM languages explained
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.
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:
- Java (#4, at one point at #1; #2 at PyPL), a statically-typed object-oriented language
- Kotlin (#18; #13 at PyPL), a statically-typed language from JetBrains, the developers of IntelliJ IDEA and Google's preferred language for Android
- Scala (#36, at one point at #20; #21 at PyPL), a statically-typed object-oriented and functional programming language[3]
- Groovy (no longer in top 50, is one of 51–100, at one point at #15; #25 at PyPL), a dynamic programming language (also with static typing) and scripting language[4]
- Clojure (no longer in top 50, is one of 51–100, at one point at #47), a dynamic, and functional dialect of the Lisp programming language[5] (ClojureScript doesn't make TIOBE's index separately, its stats are included under Clojure, and it's an implementation targeting the web with JavaScript, not the JVM.)
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
New languages with JVM implementations
- Ateji PX, an extension of Java for easy parallel programming on multicore, GPU, Grid and Cloud[19]
- Ballerina, a language for cloud applications with structural typing; network client objects, services, resource functions, and listeners; parallel concurrency with workers; image building; configuration management; and taint checking.[20]
- BeanShell, a scripting language whose syntax is close to Java
- EPL (Event Processing Language), a domain-specific, data manipulation language for analyzing and detecting patterns in timed event streams, which extends SQL 92 with event-oriented features. It is implemented by Esper: up to version 6 EPL was mostly a language interpreted by a Java library; since version 7 it is compiled to JVM bytecode.
- Concurnas, an open source JVM language designed for building reliable, scalable, high performance concurrent, distributed and parallel systems.
- Ceylon, a Java competitor from Red Hat[5]
- CFML, ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine.[21]
- Quark Framework (CAL), a Haskell-inspired functional language
- E-on-Java, object-oriented language for secure distributed computing
- Eta, pure, lazy, strongly typed functional language in the spirit of Haskell[22]
- Fantom, a language built from the base to be portable across the JVM, .NET Common Language Runtime (CLR), and JavaScript[23] [5]
- Flix, a functional, imperative, and logic language with first-class Datalog constraints and a polymorphic effect system.
- Flow Java
- Fortress, a language designed by Sun as a successor to Fortran, mainly for parallel scientific computing. Product development was taken over by Oracle when Sun was purchased. Oracle then stopped development in 2012 according to Dr. Dobb's.
- Frege, a non-strict, pure functional language in the spirit of Haskell[24]
- Golo, a simple, dynamic, weakly-typed language for the JVM developed at Institut national des sciences appliquées de Lyon, France, now an incubating project at the Eclipse Software Foundation.[25] [26] [27]
- Gosu, an extensible type-system language compiled to Java bytecode
- Haxe, a cross-platform statically typed language that targets Java and the JVM.
- Ioke, a prototype-based language somewhat reminiscent of Io, with similarities to Ruby, Lisp, and Smalltalk
- Jelly
- Join Java, a language that extends Java with join-calculus semantics
- Joy
- Manifold is a Java compiler "plugin." (I.e., instead of being a stand-alone language and compiler, it hijacks and extends javac.) Its features include Metaprogramming, Properties, Extension Methods, Operator Overloading, Templates, a Preprocessor, and more.
- Mirah, a customizable language featuring type inference and a highly Ruby-inspired syntax[28] [29]
- NetLogo, a multi-agent language
- Noop, a language built with testability as a major focus
- Pizza, a superset of Java with function pointers and algebraic data types
- Pnuts
- Processing, a visualization and animation language and framework based on Java with a Java-like syntax
- Prompto, a language "designed to create business applications in the cloud". It is part of the namesake platform to design business applications directly in the cloud. The Prompto language includes three "dialects": Engly, Monty, and Objy. Engly "mimics English as much as possible", Monty "tries to follow as much as possible the syntax of the Python 3 language", and Objy "tries to follow as much as possible the syntax of OOP languages such as C++, Java or C#". All three dialects seamlessly translate to one another.[30]
- RascalMPL, a source and target language independent (parameterized) meta language
- Whiley
- X10, a language designed by IBM, featuring constrained types and a focus on concurrency and distribution[5]
- Xtend, an object-oriented, functional, and imperative programming language built by the Eclipse foundation, featuring tight Java interoperability, with a focus on extension methods and lambdas, and rich tooling
- Yeti, an ML style functional language[31]
- Yirgacheffe, a language that aims to simplify and extend the object oriented paradigm.[32]
- Yoix, general purpose, non-object-oriented, interpreted dynamic language
Comparison of these languages
See also
Notes and References
- Web site: TIOBE Index . 2023-03-16 . TIOBE . en-US.
- Web site: PYPL PopularitY of Programming Language index . 2024-03-19 . pypl.github.io . en.
- Web site: Adopting New JVM Languages in the Enterprise (Updated) . Wampler . Dean . objectmentor.com . 15 January 2009 . 18 June 2009 . dead . https://web.archive.org/web/20090522071822/http://blog.objectmentor.com/articles/2009/01/15/adopting-new-jvm-languages-in-the-enterprise . 22 May 2009.
- Web site: Groovy Springs Back Up TIOBE's Programming Languages List. 10 Mar 2021.
- Web site: Alternative Languages for the JVM. A look at eight features from eight JVM languages . Urma . Raoul-Gabriel . 2019-03-13 . 2014-07-01 . Oracle.
- Web site: NTT Data Enterprise COBOL Brochure.
- Web site: Visual COBOL Brochure. 5 April 2017.
- Web site: isCOBOL Evolve Datasheet. 17 May 2019.
- http://abcl.org/ Armed Bear Common Lisp
- Web site: New on Neo4j: The Neo4j 2.3.0 Milestone 2 Release Is Here. 12 June 2015. 20 February 2017.
- Web site: Oracle Labs GraalVM: Programming Languages and Runtimes Overview. www.oracle.com. 2018-04-12.
- Web site: graalvm/sulong. GitHub. en. 2018-04-12.
- Web site: Introducing Quercus, a Java based PHP. . 2 July 2015.
- Web site: Running PHP With Quercus in Sun Java System Web Server. 2 July 2015.
- Web site: ssllab / ZipPy — Bitbucket. bitbucket.org. en. 2018-04-12.
- Web site: oracle/fastr. GitHub. en. 2018-04-12.
- Web site: oracle/truffleruby. GitHub. en. 2018-04-12.
- Web site: Redline Smalltalk. en. 2018-09-02. 24 March 2021. https://web.archive.org/web/20210324032311/http://www.redline.st/. dead.
- Web site: Ateji PX: Java Parallel Programming Made Simple. Ateji. 1 March 2014. dead. https://web.archive.org/web/20140224011700/http://www.ateji.com/px/index.html. 24 February 2014. dmy-all.
- Web site: Announcing Ballerina 1.0 . Ballerina . 8 February 2020.
- [CFML]
- Web site: The Eta Programming Language. 10 May 2017.
- Web site: Fantom Programming Language. Fantom. 1 March 2014.
- Web site: Frege. 1 March 2014.
- Web site: Oracle.com - Golo – A Lightweight Dynamic Language for the JVM. 2 July 2015. dead. https://web.archive.org/web/20150703100856/https://blogs.oracle.com/java/entry/golo_a_lightweight_dynamic_language. 3 July 2015. dmy-all.
- Web site: Golo nominated for JAX Awards 2014. 2 July 2015.
- Web site: Golo entry at JAX Awards 2014. 2 July 2015.
- Web site: The Mirah Programming Language. GitHub. 1 March 2014.
- Web site: Mirah. 1 March 2014.
- Web site: The Prompto Platform. 14 September 2019.
- Web site: Yeti programming language. 5 May 2020.
- Web site: Yirgacheffe. 9 January 2020.