No final de agosto foi lançado o Escalante, uma nova plataforma para aplicações Scala baseada no JBoss AS 7. Convidamos o criador do projeto, Galder Zamarreño, para contar-nos mais sobre esta iniciativa em entrevista exclusiva ao InfoQ Brasil.
Zamarreño trabalha na divisão de middleware da Red Hat desde 2006. Começou no suporte ao JBoss e em 2009 mudou para a equipe do Infinispan. É de Bilbao, Espanha, onde estudou ciência da computação. No grupo do Infinispan, começou a trabalhar com Scala no desenvolvimento de servidores de cache remoto, e nos últimos 9 meses vem trabalhando com o Escalante.
JF: O que é o Escalante e qual valor ele agrega?
GZ: O Escalante é essencialmente um servidor de aplicações para sistemas em Scala, construído com base no JBoss Application Server 7. Como Scala é uma linguagem compilada para a JVM, qualquer um poderia executar uma aplicação Scala no JBoss AS7. Mas o que o Escalante busca oferecer é tornar mais fácil, mais eficiente e menos sofrido executar aplicações Scala no servidor de aplicações. Para isso, o grupo do projeto está analisando os frameworks mais populares para Scala, para investigar como se pode melhorar a experiência de implantar aplicações feitas usando esses frameworks em um servidor de aplicações.
Na primeira versão, focamos em aplicações web com o framework Lift. O Escalante oferece inicialmente a capacidade de implantar aplicações sem incluir as bibliotecas do Lift e as do próprio Scala. Isso reduz o tamanho dos pacotes e torna a execução mais enxuta; consome menos memória e torna mais rápidos o upload e a implantação.
JF: Qual é o diferença do Escalante, se comparado com a escrita de aplicações Java EE comuns em Scala?
GZ: No momento não há diferença. O Escalante não muda a maneira de escrever aplicações em Scala, independentemente de serem SE ou EE. Mas um dos objetivos fundamentais do Escalante é expor o Java EE para aplicações Scala, de maneira mais natural para desenvolvedores da linguagem. Ainda veremos como chegaremos neste ponto, mas deve envolver a criação de linguagens de domínio específico em torno dos serviços do Java EE.
JF: Quais as principais funcionalidades planejadas?
GZ: Além de tornar o servidor ideal para aplicações Lift e melhorar a integração de serviços do Lift com serviços existentes nos servidores de aplicações, o Escalante também pretende se tornar o ambiente padrão para a implantação de aplicações baseadas em outros frameworks importantes do Scala, como o Play 2.0.
Outra funcionalidade importante será a integração com o OpenShift e o JBoss Developer Studio. Para o OpenShift, já começamos a investigar a criação de cartuchos (cartridges) específicos para a execução de aplicações Scala. Combinando-se essa funcionalidade com a facilidade de uso do OpenShift, pode-se chegar a uma maneira simples e divertida de começar a desenvolver aplicações em Scala. Para o JBoss Developer Studio, já estamos garantindo que qualquer exemplo produzido seja totalmente compatível com a ferramenta, e que funcione sem modificações na versão
E como mencionado, um objetivo crucial é disponibilizar tanto os serviços do servidor de aplicações quanto os do Java EE para aplicações Scala, de maneira idiomática. O Java EE tem histórico comprovado no mundo corporativo, e não há porquê reinventar a roda neste segmento. A ideia é tornar simples e direto o uso do Java EE para os fãs de Scala.
JF: Vocês estão procurando voluntários ou contribuições?
GZ: O Escalante é um projeto de software livre, então estamos sempre procurando contribuições! Começamos desenvolvendo um conjunto de exemplos com Lift que deve simplificar a introdução ao Escalante; são atualmente montados com o Maven. Sei que o Maven não é tão popular com desenvolvedores Scala quanto outras ferramentas de build como o SBT, mas o suporte ao Maven pelas ferramentas existentes, como o JBoss Developer Studio, não pode ser ignorado.
De qualquer forma, aqui no Escalante temos a mente aberta e acreditamos que há espaço para múltiplas ferramentas de montagem/build, então estamos procurando voluntários para ajudar a criar também arquivos do SBT para esses exemplos. E estamos procurando mais exemplos de Lift: se você tem uma aplicação Lift interessante que demonstre um aspecto particular do framework e deseja implantá-la no Escalante, por que não contribuir com o projeto?
Se você tem experiência com outros frameworks Scala e acredita que esses frameworks deveriam ser integrados ao Escalante, ou se tem experiência com o design de linguagens de domínio específico, também gostaríamos de ouvir sua opnião. Você pode encontrar a equipe no canal #escalante do IRC ou na lista de emails de desenvolvedores do Escalante. Também começamos a escrever um guia para contribuições, que deverá conter as principais informações necessárias para começar a participar do projeto.
JF: Alguma dica final para os desenvolvedores que experimentam o Escalante?
GZ: Se tiver dúvidas, perguntas ou problemas, entre em contato; queremos ouvir você. Após avaliar diversas opções, escolhemos o StackOverflow para responder aos usuários do Escalante. Basta marcar sua pergunta com a tag "escalante" que responderemos o quanto antes. Também construímos um conjunto de exemplos para facilitar o trabalho inicial; vale a pena experimentar com eles para se familiarizar com o projeto.
O servidor de aplicações Scala Escalante está atualmente na versão 0.1. O site do projeto dá acesso à documentação e downloads, além do issue tracker e exemplos de uso.