Categorias
Java Play

Qual o futuro do Play Framework em Java ?

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

thefuture

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.