Surgiu uma questão muito interessante no grupo de discussão oficial do Play Framework , que resolvi fazer um post aqui no blog.
A pergunta inicial feita por Alon Goldshuv:
Desculpem-me se aqui não é o local correto para postar essas questões genéricas.
Por favor me avisem se esse for o caso.Eu não sou um usuário de Play, mas estou pensando em me tornar um e depois de uma extensa pesquisa de comparação entre vários frameworks web Java, esse veio na frente como a melhor opção.
Ele é realmente impressionante.
O que atualmente me deixa em dúvida é o meu desejo de usar Java e não usar Scala, e eu li em vários lugares que o Play é criado com Scala e para o Scala (+Akka), enquanto o Java é suportado mas não é de onde todo o poder do Play se originou.
Alguns dizem: “quer Scala ? use Play. Quer Java ? use outra coisa “.
Minha pergunta é: existe alguma verdade nisso ? e mas especificamente: quanto de esforço e comprometimento existe no roadmap do Java no futuro do Play ?
Eu sei que é uma questão de natureza peculiar, mas eu espero que essa questão encontre os contribuidores ativos que estão envolvidos no roadmap geral e nos planos.
Muito obrigado,
Alon
Essa dúvida faz muito sentido, pois o Play 1 era todo em Java com suporte parcial em Scala, depois os principais commiters foram contratados pela empresa que criou o Scala (a Typesafe), e lançaram o Play 2, refeito do zero totalmente em Scala com suporte ao Java.
Portanto o sentimento comum desde o lançamento do Play 2 é : “aprenda Scala ou morra!” (no livro que escrevi de Play Framework tem o foco apenas em Java)
Felizmente o responsável pelo Play Framework respondeu à pergunta com uma resposta bem completa e positiva:
Olá Alon,
Eu sou o líder técnico do Play.
Nós estamos comprometidos a suportar o Java como “passageiro de primera classe” no Play – não entrará em modo de manutenção em um futuro próximo.
Da perspectiva da Typesafe (a empresa que financia o Play) , suportar o Java como “passageiro de primeira classe” é uma importante decisão estratégica para as nossas ofertas comerciais, portanto nós vamos continuar a investir muito no Play com suporte a Java.
Existem algumas áreas em que ele não é tão poderoso como o Scala, mas nós temos planos para resolver isso.
Aqui vão algumas coisas do nosso roadmap para melhorar o suporte a Java no Play:
* Mover para reactive streams no Play 3.0 (um suporte experimental já foi implementado no Play 2.4). A maior motivação para isso é para o Java – atualmente, a API de IO assíncrono do Play, os iteratees, são praticamente inúteis para o Java. Usar reactive streams para o Java é bem simples e isso permitira os usuários de Java fazerem um IO no Play de primeira classe.
* Fazer os objetos do RequestHeader/Result do Java serem de primeira classe. Atualmente existem apenas wrappers em volta dos objetos do Scala, oferecendo funcionalidade limitada. No Play 3.0 nós esperamos fazer a API do Java ser de primeira classe, permitindo conversões de e para objetos Scala. Tudo isso, combinado com os reactive streams, permitirá a construção de filtros escritos em Java, e chegará a quase nenhuma diferença entre o suporte HTTP do Java e do Scala no Play.
* Adotar o JDK8 no Play 3.0. Nós vamos adotar o java.util.concurrent.CompletionStage para substituir o nosso próprio play.libs.F.Promise. Nós vamos também trocar o nosso java.util.Optional pelo null.
* Performance – nós sempre continuaremos a trabalhar para reduzir a distância entre a performance do Scala e do Java.
Em relação ao tamanho da comunidade de Play Java contra a de Play Scala – é difícil de medir, mas nossas métricas mostram que está em torno de 50/50, desde que o Play 2 foi lançado.
Você pode confiar que continuará a existir um forte ecossistema de usuários Java para o Play por muito tempo.
Saudações,
James
Excelente resposta, a comunidade Play Java agradece!
Toda a discussão pode ser lida lá na página do grupo.
Fernando Boaglio, para a comunidade.