Introdução
Hoje, trocando idéia com Mateus discutiamos sobre o poder da plataforma Java, e em um grupo de WhatsApp que participamos para ajudar estudantes com dúvidas de Java, ele levantou um questionamento se a galera sabia quantas linguagens a JVM - Java Virtual Machine rodava. Quando falamos a palavra Java, temos que ter consciência que temos dois significados. Uma é referente a linguagem de programação Java, a outra é referente a plataforma Java. A base da plataforma Java, é a JVM. Ela que é responsável por ler o código-fonte, compilar para byte-code e esse é interpretado para código de máquina, no sistema operacional onde a JVM está hospedada.
E a JVM?
Mas você sabia que sobre a JVM, é possível executar código de outras linguagens além da linguagem Java? Pois é, conversando com a galera, eles ficaram surpresos, por não saber a diferença entre um e outro, e esse foi o motivo que me incentivou a escrever esse post.
Fiz um levantamento (referências na seção de fontes) e encontrei diversas listas de linguagens da JVM. As mais citadas foram:
- Clojure, a functional Lisp dialect
- Groovy, a dynamic programming and scripting language
- Scala, a statically-typed object-oriented and functional programming language[1]
- Kotlin, a statically-typed language from JetBrains, the developers of IntelliJ IDEA
- JRuby, an implementation of Ruby
- Jython, an implementation of Python
- FANTOM
- CEYLON
- XTEND
Me parece, que Scala, Groovy e Clojure são as mais usadas depois do Java. Kotlin tem feito ruído. Sei que em Groovy, o projeto mais famoso que eu conheço é o Grails Framework. Nas outras linguagens, confesso que não conheço muitos projetos.
Até JavaScript, a linguagem da moda, tem suporte na JVM. No passado existia o projeto Rhino da fundação Mozilla, cuja evolução, virou o projeto Nashorn a partir do Java 8. Lembrando que esse suporte a linguagens de scripts foi adicionado na release 6 do Java, através da JSR 223 (esse link mostra a evolução do Java desde a versão 1.4).
Como na pesquisa que fiz achei um tema curioso, sobre como criar sua própria linguagem, resolvi compartilhar com vocês, alguns materiais sobre o tema:
- https://www.toptal.com/software/creating-jvm-languages-an-overview
- https://www.infoq.com/news/2011/04/new-jvm-lang
- http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.xtext.doc%2Fcontents%2F035-domainmodel-java.html
Como estamos falando de linguagens, compartilho com vocês uns sites que exibe os rankings de linguagens mais usadas. O Tiobe é o mais conhecido, na minha opnião (a depender da demanda, posso tentar escrever um post sobre isso). Java é unanime nas primeiras posições de todos rankings o que a torna uma linguagem bastante interessante para aprender.
- http://www.tiobe.com/tiobe-index/
- http://pypl.github.io/PYPL.html
- http://redmonk.com/sogrady/2016/07/20/language-rankings-6-16/
- http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html
E você? Programa em outra linguagem na JVM? Compartilhe conosco o que acha sobre o tema. Gostou do post? Dá um feedback nos comentários.
[Atualização em 24/02 09:22] Nosso amigo Ivan Queiroz fez um post introdutório sobre Kotlin) em seu blog. Confiram depois e vejam como é o uso de outra linguagem dentro da JVM. Acompanhem também, o blog de Ivan, que tem diversos conteúdos bem interessantes. Como a série sobre padrões de projeto usando os novos recursos do Java 8.
Outras Fontes:
- http://www.oracle.com/technetwork/articles/java/architect-languages-2266279.html
- http://www.infoworld.com/article/2627426/application-development/top-five-scripting-languages-on-the-jvm.html
- https://github.com/statusque/jvmstats/blob/master/JVM-language-activity.md
- http://www.stackoverkill.com/ranking/jvm-langs
- https://www.infoq.com/research/next-jvm-language
- https://blog.newrelic.com/2016/08/18/popular-programming-languages-2016-go/
- https://zeroturnaround.com/rebellabs/the-adventurous-developers-guide-to-jvm-languages-java-scala-groovy-fantom-clojure-ceylon-kotlin-xtend/