JavaRush /Blogue Java /Random-PT /Pausa para café #157. Usando Java para aplicativos web fr...

Pausa para café #157. Usando Java para aplicativos web front-end em 2022

Publicado no grupo Random-PT
Fonte: Nocodefunctions Chamamos sua atenção para um artigo sobre a experiência de desenvolvimento de uma aplicação web independente usando Java. Pausa para café #157.  Usando Java para aplicativos web front-end em 2022 - 1

Java para frontend – é realmente possível?

Muitas pessoas acreditam que usar Java para desenvolvimento front-end é simplesmente impossível: afinal, Java foi projetado para back-end. Sim, há muito tempo, os miniaplicativos Java e o Java Webstart permitiam que você executasse aplicativos Java a partir do navegador. Mas esta é uma história antiga, tão antiga quanto os plug-ins do Flash. Mas mesmo sem miniaplicativos, existe uma maneira de usar Java para o front-end - são JSP (Java Server Pages), que muitos alunos estudaram nas aulas de ciência da computação. No entanto, embora JSP ainda seja discutido em alguns livros sobre Java, a tecnologia está obsoleta desde a década de 2010. É realmente outro beco sem saída? Existem também frameworks que permitem aos desenvolvedores Java “transpilar” (transformar de maneiras complexas) seu código em JavaScript usando o Google Web Toolkit (GWT, também não é super novo ) ou via J2Cl (também do Google). É importante ressaltar que GWT e J2Cl não são adequados para iniciantes, são mais ferramentas empresariais desenvolvidas pelo Google para uso em grandes projetos.

O herói desconhecido do Java para o frontend: Jakarta Faces (JSF)

Java Server Faces (JSF), agora conhecido como “Jakarta Faces”, existe pelo menos desde o início de 2010. Sempre fico surpreso que ele seja pouco conhecido e raramente mencionado porque esse framework facilita o desenvolvimento de aplicações web de forma rápida, segura e confiável. JSF é fácil de aprender e aproveita ao máximo o ecossistema Java. Veja como, por exemplo, você cria uma página web com conteúdo dinâmico:
  • Crie uma página HTML (com extensão .xhtml).
  • Altere as tags html <head> e <body> para tags <h:head> e <h:body>.
  • Agora, para exibir conteúdo dinâmico chamando alguma propriedade no backend, basta colocar este código após a hashtag e entre as barras de controle:

    #{backendscript.myText}
Em seguida, crie um arquivo Backendscript.java em seu backend, adicione uma variável chamada String myText = "hi! bem-vindo à minha página!" . Ele será exibido na página da web. JSF é realmente muito simples. Está bem documentado graças a muitas perguntas sobre Stackoverflow , documentação oficial , vários livros ( este link , e também gosto dos livros de David Heffelfinger ) e, claro, vídeos do Youtube .

O JSF é complicado? Quais são suas vantagens?

JSF não é nada complicado. Além disso:
  1. Está bem integrado com IDEs Java clássicos (NetBeans, IntelliJ IDEA e Eclipse). Cada IDE fornece:
    • Projetos de modelo que preenchem o modelo de configuração do Maven (que, aliás, é muito simples).
    • Ferramentas de depuração (com recarregamento a quente, pelo menos para NetBeans).
    • Ferramentas poderosas de preenchimento automático, refatoração, navegação e destaque de erros para o ecossistema Java. O IDE pode fornecer informações úteis sobre qualquer classe mencionada na página HTML (como #{backendscript.myText} mencionado acima). As páginas HTML irão realmente se integrar ao resto da sua base de código!
  2. Ele lida com variações complexas de código em páginas HTML com muita facilidade.
    • Você precisa atualizar parte de uma página com um simples clique de botão? Adicione uma propriedade de atualização ao seu botão, seguida pelo ID do componente que você deseja atualizar.
    • Em relação à atualização e conteúdo dinâmico: gosto muito da simplicidade do JSF: o frontend atualiza o backend, se atualiza, ou o backend atualiza o frontend. Todos esses são os requisitos básicos de uma aplicação web e estão presentes aqui.
    • Se você deseja que o usuário possa baixar um arquivo ou vários arquivos com condições de tipos e tamanhos de arquivos, basta adicionar uma linha ao código com parâmetros claros .
    • Precisa fazer um site em vários idiomas? Adicione a tag <f:view> ao seu html e obtenha o idioma do usuário com apenas uma linha no backend.
  3. Você pode adicionar e misturar tags HTML, scripts JS e CSS, e tudo é otimizado para SEO.
Você tem controle total sobre o html gerado pelo JSF e sempre pode adicionar código html e js. Isso facilita a colaboração com designers e desenvolvedores front-end que não conhecem ou não se importam com JSF. Quando trabalhei com CSS, contei com a ajuda de um designer que conseguiu trabalhar com as páginas HTML que criei utilizando JSF, fazendo as alterações necessárias sem nenhuma dificuldade. JSF gera código HTML que você pode visualizar e ler em seu navegador. Isso é muito útil para depurar com ferramentas de desenvolvimento regulares e verificar se suas ações de SEO estão implementadas corretamente.

Primefaces: enorme lista de componentes e temas JSF gratuitos

JSF vem com uma longa lista de componentes prontos para uso que criam as partes clássicas de uma página HTML, para que você não precise fazer isso sozinho. Por exemplo, use a tag <h:dataTable> para criar uma tabela que exiba dados específicos carregados do seu back-end, sem precisar recriá-los do zero. E há uma opção melhor: a Prime Tek desenvolveu um conjunto de componentes de código aberto chamado Primefaces . Eles vêm com recursos adicionais e têm várias vantagens. Por exemplo, em vez de <h:dataTable>, basta usar a tag <p:dataTable> do Primefaces. Isso cria uma tabela de dados básica à qual você pode facilmente adicionar opções de coluna , colunas dinâmicas ou editar funções na tabela.

Mas Java é lento e pesado?

1. Java é lento?

Não. O engraçado é que frameworks JS como React, Angular e Vue foram criados com a promessa de serem mais rápidos e inteligentes que o JSF em Java, pois enviavam imediatamente toda a lógica da aplicação para o navegador do visitante do site. O JSF funciona de maneira diferente: quando um usuário chama uma página (por exemplo, https://nocodefunctions.com), a aplicação no backend gera o html apenas para aquela página e o envia de volta. Isso é chamado de “renderização do lado do servidor” (SSR). Na prática, aplicativos de página única podem exigir muito tempo para que o usuário recupere e carregue os arquivos javascript que compõem todo o aplicativo. Isso pode levar a uma experiência ruim do usuário (ter que esperar o carregamento da primeira página) e a problemas de SEO. Como resultado, a renderização do lado do servidor no estilo Java recuperou popularidade, pois é considerada superior à renderização do lado do cliente em termos de velocidade e desempenho. Estão surgindo novas estruturas de SSR que exigem que os desenvolvedores acostumados com a renderização do lado do cliente manipulem e misturem essas duas lógicas diferentes.

2. Java é difícil?

Não. O que você precisa para implantar um aplicativo JSF:
  • O próprio aplicativo. Um aplicativo JSF simples “hello world” provavelmente tem 10 KB ou menos.
  • Opcionais são Primefaces (discutidos acima) se você precisar de componentes de maior qualidade. São 4,5 MB adicionais .
Agora execute tudo no servidor. Para fazer isso você precisa:
  1. Tenha um servidor na nuvem ou em outro lugar. Para a versão de teste do Nocodefunctions (https://test.nocodefunctions.com) utilizo o Hetzner, onde alugo um servidor bare metal com 2 GB de RAM por 4,15 euros mensais. Eu poderia usar menos RAM, mas meu aplicativo fornece alguns serviços com uso intensivo de dados e precisa caber na memória. A versão real (sem teste) do nocodefunctions é executada em um servidor maior (também com Hetzner) para suportar tarefas com uso intensivo de dados de mais usuários em paralelo - por menos de 50 euros por mês.

  2. Você deve ter o Java instalado. Este é um download de arquivo único com menos de 200 MB para Mac, Win ou Linux, totalmente gratuito, mesmo para uso comercial.

  3. Você precisa ter um servidor web Java para executá-lo. Muitos deles. Pessoalmente, eu uso o Payara Micro (Community Edition), que é gratuito e pode ser baixado com um único arquivo de 77 MB.

  4. Inicie seu aplicativo.

Conclusão: Pense em Java!

Sinto que alguns programadores pensam que Python, Ruby, PHP, NodeJS + React... são a única opção ao iniciar uma pequena aplicação web. Mas agora espero que eles também considerem Java + JSF em seu próximo projeto.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION