Neste tutorial você aprenderá como configurar um projeto no maven para que você possa criar seu primeiro programa em linguagem Scala e como podemos chamar uma classe java em um código escrito em Scala.
Antes de iniciarmos com a configuração do projeto, vamos entender alguns conceitos da linguagem java, JVM e Byte Code. O que faz a linguagem java ser bem aceita no mercado até hoje, além de um projeto muito bem especificado e aberto, é o fato da mesma se apoiar em um tripé (Liguagem, JVM e Bytecode), que garante a evolução e a portabilidade para quase todo tipo de equipamento, até mesmo os mais limitados em termos de recursos.
Dos três, para muitos a linguagem java é o menos importante no que diz respeito a plataforma java, o que torna a plataforma um conceito de multi linguagens são a JVM e o Byte code. A maquina virtual é um engine de execução de byte codes, como funciona uma arquitetura real de computador, onde temos um processador com um set de intruções (opcodes), que os programas compilados para uma plataforma específica, são executados com base nessas instruções. Os Byte Codes de java são as instruções de baixo nível da máquina virtual. O que faz o java ser portável para dispositivos com poucos recursos é devido ao fatos das instruções da máquina virtual serem de um byte apenas, por isso o nome do código gerado ser chamado de Byte code.
Na figura acima vemos essa trinca, onde na base estão a JVM e o Byte Code.
1 - Preparando o projeto maven para programarmos com Scala
Uma vez que queiramos no nosso projeto compilar código escrito na linguagem Scala, precisamos configurar o plugin para o maven, dessa forma, segue abaixo o exemplo dessa configuração:
<plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <configuration> <launchers> <launcher> <id>hello</id> <mainClass>HelloWorld</mainClass> <!--args> <arg>arg1</arg> </args--> <jvmArgs> <jvmArg>-Xmx128m</jvmArg> </jvmArgs> </launcher> </launchers> </configuration> <executions> <execution> <id>scala-compile-first</id> <phase>process-resources</phase> <goals> <goal>add-source</goal> <goal>compile</goal> </goals> </execution> <execution> <id>scala-test-compile</id> <phase>process-test-resources</phase> <goals> <goal>testCompile</goal> </goals> </execution> </executions> </plugin>
O bloco execution configurado no plugin garante que quando chamamos o comando mvn install o plugin seja executado e na fase de compilação, o código scala seja compilado também.
2 - Codificando
Configurado o projeto maven com o plugin para Scala, vamos agora criar o primeiro programa para vermos como é o funcionamento do plugin. Abaixo o código exemplo:
object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } }
Os códigos escritos em Scala devem ficar na pasta:
scala-prj source main scala
Salvar o código do exemplo acima na pasta scala com o nome de HelloWorld.scala, feito isso, vamos compilar e executar o programa.
3 - Compilando
Para compilarmos o código scala pelo maven plugin, vamos executar o comando:
mvn scala:compile
4 - Executando
Como configuramos um Launcher para o projeto, basta digitar o comando:
mvn scala:run
para que o programa seja executado.
Para executar o programa sem utilizar o launcher (Caso não esteja configurado), digitar o comando:
mvn scala:run -DmainClass=HelloWorld
5 - Misturando código java com scala
No final da página temos um link para download desse exemplo, assim que você fizer o download, e tiver compilado e executado o exemplo acima, vamos ver agora como fazemos a chamada de um código java dentro de um código Scala, para isso, siga o exemplo abaixo, não é nada muito complexo, fazemos o import da classe, e passo a passo, instanciamos, setamos uma mensagem e chamamos o método print da classe, para imprimir na tela a mensagem.
import br.com.javadev.scala.message.Message object HelloWorld { def main(args: Array[String]) { println("Hello, world!") // instanciando classe em java val msg = new Message // setando uma mensagem msg setMessage "Hello, Java!" // chamando o metodo print da classe java msg print } }
Para você exercitar o exemplo, voltar aos passo de compilação e execução, se tudo estiver correto, você vai ver a saida:
[INFO] [INFO] --- maven-compiler-plugin:2.0.2:testCompile (default-testCompile) @ scala-jar --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] <<< maven-scala-plugin:2.9.1:run (default-cli) @ scala-jar <<< [INFO] [INFO] --- maven-scala-plugin:2.9.1:run (default-cli) @ scala-jar --- [INFO] launcher 'hello' selected => HelloWorld [INFO] Hello, world! [INFO] Msg: Hello, Java! [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.076s [INFO] Finished at: Wed May 29 16:03:07 BRT 2013 [INFO] Final Memory: 3M/15M [INFO] ------------------------------------------------------------------------
Considerações
Caso você tenha alguma dúvida referente ao exemplo, na utilização do plugin, por favor entrar em contato através do e-mail, ou deixe uma mensagem na nossa página do facebook ou G+. Esse tutorial é somente para ensinar como funciona o plugin para scala com o maven e um primeiro passo para conhecer a linguagem, abaixo está o link do site de referência da linguaguem.
Referências
http://scala-tools.org/mvnsites/maven-scala-plugin/
Download
http://www.javadev.com.br/downloads/java/scala.rar