Programação, Scala

Criando scripts em Scala

Em nossa Introdução a Scala falamos da escalabilidade da linguagem: é uma plataforma que permite criar desde scripts rápidos até grandes sistemas multitarefas e distribuídos. A meta dos criadores de Scala é tornar possível a construção de grandes sistemas usando apenas uma linguagem, ao invés da tradicional combinação de scripts Python ou Perl para tarefas de manutenção e instalação, Java ou Scala para a lógica de negócios e triggers/rotinas no banco de dados. Com Scala, é possível centralizar todo o desenvolvimento na mesma linguagem.

Até o presente momento discutimos apenas trechos de código, sem implementar um programa ou script completo.

Vejamos, no exemplo a seguir, como podemos criar um script em linguagem Scala.

O código acima pode ser testado em qualquer sistema estilo UNIX. Lembre-se apenas de substituir /opt/scala/bin/scala pelo caminho correto de seu interpretador.

Observe que na linha seguinte à do tradicional “shebang”(#!) temos um “bang-hash” !#. O interpretador Scala entende este símbolo como sendo o delimitador do “cabeçalho” do script, abaixo do qual passamos a ter código Scala para ser interpretado. Sem este símbolo teriamos um erro de sintaxe, visto que #! não é um delimitador de comentário válido na linguagem(diferente de Perl, Python, Ruby, bash, zsh, ksh, e outras).

Logo após o !#, passamos a digitar código Scala diretamente, sem necessitar de especificar um object ou método main.

Todas as package‘s que podem ser importadas por programas compilados podem ser também usados nos scripts. Devemos apenas observar o classpath em caso de usar funcionalidades obtidas em módulos externos. Quando não usamos a opção -classpath do interpretador scala, o sistema adiciona . à lista de diretórios onde serão procurados módulos. Para adicionar jar’s específicas será preciso usar a opção -classpath.

No exemplo acima, obtemos a lista de processos do sistema, através do ProcessBuilder encontrado na package scala.sys.process. Usamos o método split de java.lang.String para separar a saída em linhas.

Em seguida compilamos uma expressão regular, do tipo scala.util.matching.Regex, a qual contém apenas a palavra java. Com esta regex, executamos o idioma filter de coleções, para obter apenas as linhas que contenham a expressão regular que compilamos anteriormente. No caso, nosso script nos retorna todos os processos que contenham a palavra-chave java.

Conclusão
Scala permite a criação de scripts de sistema com a mesma facilidade de outras linguagens dinâmicas. Todas as bibliotecas de terceiros podem ser importadas em scripts, de modo que a administração de um sistema de grande porte pode ser realizada por scripts que fazem reuso de código existente.

Standard