Já se foi o tempo em que a Java Virtual Machine - JVM – era
dedicada exclusivamente ao Java. Como a especificação da máquina virtual é
pública, muitos desenvolvedores criaram linguagens de programação compiladas em
bytecode, o formato próprio da JVM, permitindo que seus programas sejam
executados em uma JVM.
Essa estratégia:
- permite que tais linguagens sejam tão portáteis quanto o Java, pois os programas construídos com estas linguagens podem ser executados em qualquer plataforma onde exista uma
- possibilita que estas linguagens tenham características que o próprio Java não possui, servindo como um ambiente de pesquisa; e
- constitui uma alternativa para que linguagens existentes sejam portadas para a JVM, aumentando as possibilidades de sua utilização.
Assim, surgiram nestes últimos anos várias linguagens de
programação novas voltadas para a JVM, como as conhecidas Scala e Groovy, mas
existem outras como Xtend, Ceylon, Kotlin, X10 e Fantom.
Da mesma maneira, linguagens consagradas como o Python e
Lisp estrearam na JVM respectivamente com Jython e Closure. O JRuby é um outro
exemplo de linguagem portada para a JVM.
Neste post falaremos um pouco sobre o Scala e o Groovy.
Scala
Desenvolvida por Martin Odersky, a partir de 2001, como
evolução de seus projetos de linguagens de programação envolvendo os paradigmas
da orientação a objetos e funcional. Scala é considerada um linguagem
multiparadigma de propósito geral. Seu nome é uma abreviação de scalable
language.
É similar ao Java, com sintaxe básica bastante semelhante,
compartilhando sua API. Mas possui diversas características próprias, que fazem
seu código bastante distinto tem relação ao Java. Seus programas podem ser
executados na JVM e podem ser integrados a outras aplicações Java. Um exemplo
do tradicional programa Hello World com Scala:
object HelloWorld {
def
main(args: Array[String]): Unit = {
println("Hello,
world!")
}
}
Aqui object define um singleton (um objeto único) denominado
HelloWorld, no qual def declara um método denominado main que recebe um array
de tipo String como argumento e tem Unit como valor de retorno. O código do
método apenas efetua a impressão de uma string.
Neste exemplo coexistem elementos quase idênticos ao Java,
junto de outros bastante diferentes.
Do ponto de vista de programação Scala é puramente orientada
a objetos, não possuindo tipos primitivos. Também é funcional, tanto que todos
os seus operadores são funções implícitas.
Scala possui um design muito interessante, pois a combinação
de seu sistema de tipos, o fato de seus métodos poderem ser usados como
operadores e parâmetros, além da construção de closures permite ampliar sua
sintaxe substancialmente.
A linguagem de programação Scala é utilizada por grande
companhias, como Twitter, Linkedin, Netflix, FourSquare, Tumblr, AirBnB e
outras.
Para saber mais sobre o Scala, veja os links no final deste
post.
Groovy
Desenvolvida por Guillaume Laforge, a partir de 2003, como
uma alternativa ao Java. É um linguagem de programação dinâmica, orientada a
objetos e funcional, que combina características do Smalltalk, Python, Ruby,
entre outras. Atualmente é mantida como um projeto da Apache Software
Foundation, considerada um linguagem multiparadigma de propósito geral. Seu
nome é uma abreviação de scalable language.
Possui sintaxe similar ao Java, com a qual compartilha a API
e pode se integrar facilmente. Mas possui várias características inexistentes
no Java, como tipagem estática e dinâmica; sintaxe nativa para arranjos,
listas, arrays associativos e expressões regulares, além de closures e
sobrecarga de operadores. Programas Groovy são compilados dinamicamente para
bytecodes Java, podendo então ser executados na JVM e, com isto, integrados a
outras aplicações Java. Um exemplo do tradicional programa Hello World com Groovy:
class HelloWorld {
static void main(String[]
args) {
println "Hello, World"
}
}
Aqui class define uma classe denominada HelloWorld, na qual existe
a declaração de um método estático denominado main que recebe um array de tipo
String como argumento e não tem valor de retorno (void). O código deste método usa
println para efetuar a impressão de uma string.
Neste exemplo todos os elementos são idênticos ao Java. Mas
o Groovy oferece muitas outras possibilidades.
Do ponto de vista de programação Groovy é uma linguagem
opcionalmente (fracamente) tipada, dotada de orientada a objetos e programação
funcional. Permite a compilação estática, metaprogramação em tempo de
compilação e execução, inferência de tipos e capacidade de scripting.
Devido a proximidade sintática com Java, é de fácil
aprendizado, mas suas capacidades diferenciadas a tornam muito flexível,
customizável e escalável. Sua integração transparente com Java e a quantidade
de bibliotecas, ferramentas e frameworks de seu ecossistema a tornam muito
interessante.
A linguagem de programação Groovy é utilizada pelas equipes
de desenvolvimento de grande companhias, como IBM, Cisco, Sony, Target, MTv,
Nestle, Oracle, SAS e outras.
Para saber mais sobre o Groovy, veja os links no final deste
post.
Para Saber Mais
- Scala
- The Scala Programming Language.
https://www.scala-lang.org/ - Scala (linguagem de programação)
https://pt.wikipedia.org/wiki/Scala_(linguagem_de_programa%C3%A7%C3%A3o) - Scala
https://www.cleverism.com/skills-and-tools/scala/ - Groovy
- Groovy
http://www.groovy-lang.org/ - Learn X in Y minutes Where X=Groovy
https://learnxinyminutes.com/docs/groovy/ - Groovy Tutorial for Java Developers – Part 1: The Basics
https://www.timroes.de/2015/06/27/groovy-tutorial-for-java-developers/