A evolução dos aplicativos da web Java

A história do desenvolvimento da construção de aplicativos da Web na linguagem de programação Java, com exemplos de seu uso no período desde o aparecimento da especificação do servlet até os dias atuais.



O artigo não afirma ser acadêmico em sua totalidade e precisão. A interpretação de todos os fatos expostos e os exemplos apresentados refletem apenas o conhecimento, o ponto de vista e os erros do autor do artigo. O objetivo da redação é tentar obter uma imagem completa da situação atual dos aplicativos da web Java . Além disso, as informações apresentadas podem ser usadas pelo leitor como ponto de partida para futuras pesquisas independentes.

O código de amostra está nos repositórios do GitHub : uma demonstração de cada biblioteca e estrutura e o aplicativo da parte final do artigo . No momento da redação deste artigo, existem 37 exemplos no primeiro repositório ; com o tempo, sua lista será atualizada.

Linha do tempo do surgimento de tecnologias, bibliotecas, estruturas e sua popularidade


Para uma percepção mais fácil, os dados são tabulados e são mais ilustrados por diagramas. Os elementos da tabela são agrupados condicionalmente, se possível. Bibliotecas e estruturas são classificadas por popularidade em ordem decrescente.

Informações sobre popularidade são obtidas de duas fontes. A primeira fonte é o Índice de Popularidade do ZeroTurnaround RebelLabs Web Framework . Sua última atualização foi no final de 2017 e foi acompanhada por duas postagens antes: a primeira e a segunda . O autor do segundo post do blog, Simon Maple , juntou-se a Snyk , continuando a coletar e analisar essas estatísticas úteis. Uma segunda fonte é seu estudo , publicado na Java Magazine, novembro / dezembro de 2018 (pergunta 17).

Um conjunto de especificações foi adicionado à parte superior da tabela, estruturas que não foram incluídas no índice de popularidade, mas que eu ainda queria mencionar, foram adicionadas ao final da tabela.
Não.Tecnologia, biblioteca, estruturaData da primeira versãoData da última versão estávelPopularidade,%
TipoSubtipoRebelLabs, 2017Revista Java, 2018
1EspecificaçãoServlet12/199610/09/2019
2Jsp27/09/199910/09/2019
3J2EE ,
Java EE ,
Jakarta ee
12/12/199910/09/2019
4Jax-ws28/10/200310/09/2019
5Jsf03/11/200410/09/2019
6Jax-rs09/08/200810/09/2019
7PrimaveraSpring mvc12.200502/02/201928,8236.
8Bota de mola04.201402/02/201913,3540.
9Spring webflux09.201702/02/2019
10JavaServer FacesEclipse mojarra03.03.200430/11/201815,219
11Apache MyFaces11.200523/05/2019
12Kit de ferramentas da web do Google16/05/200619/10/20177,746
13Grails10.200511/07/20196,353
14Struts05.200009/09/20195,49
15Dropwizard21/12/201107/07/20194.93
16Reproduzir05/05/200819/06/20193,263
17Jipster21/10/201320/09/20192,493
18Jax-rsApache cxf04.04.200813/08/20192,44
19RESTEasy09.09.200830/08/2019
20Jersey05.201010/09/2019
21Restlet01.201301.2018
22Vaadin200616/09/20192,155
23Costura200725/07/20131,94
24Wicket2005/0609/09/20191,912
25Tapeçaria200006/06/20191.9
26Spark java201122/05/20190,77
27Vert.x201122/08/20190,76
28.Rapidoid08.201427/05/20180,25
29Lagom03.201609/04/20190,24
30Ratpack201318/08/20190,13
31Javalin24/05/201711/08/2019
32.Micronaut23/10/201813/09/2019
33MicroprofileTomee27/04/201221/06/2019
34Cama de rede27/02/201403/05/2018
35Espinho01.201617/07/2019
36.Kumuluzee04/04/201629/06/2019
37.Payara micro07/07/201728/08/2019
38.Liberdade aberta19/09/201706/06/2019
39.Helidon19/09/201813/09/2019

Na primeira linha do tempo, os dados da tabela são mostrados na mesma ordem que na tabela. Os grupos existentes são classificados por popularidade. Nos grupos (especificação, Spring , JSF , JAX-RS , MicroProfile ), os elementos são ordenados em ordem cronológica de aparência. Você pode clicar em qualquer uma das imagens para ampliá-la.



Na segunda linha do tempo, as mesmas informações são ordenadas na data em que a primeira versão de todos os elementos apareceu. É fácil ver que, em 2001, por exemplo, para escrever um aplicativo da Web, você pode escolher apenas duas estruturas principais existentes - Tapeçaria e Struts . No início de 2014, era impossível usar o Spring Boot (sua primeira versão oficial foi lançada mais tarde) e não fazia sentido usar o Seam (deixou de existir).



O gráfico de pizza mostra o índice de popularidade da estrutura de acordo com o RebelLabs no final de 2017 . Cada uma das estruturas do índice participa uma vez, ou seja, a quantidade total de interesse é 100. O segundo diagrama mostra o resultado de um estudo da Java Magazine, 2018 . O estudo perguntou quais frameworks da web são usados, foi permitido escolher mais de um na resposta. Por esse motivo, cada porcentagem é independente da outra e não pode ser resumida.



Especificações


A pedra angular da existência de todas as bibliotecas são os padrões e especificações nas quais elas se baseiam. As especificações existem na forma de JSRs ( Java Specification Requests ), desenvolvidas através de um procedimento formal chamado Java Community Process ( JCP ).

Uma lista de JSRs relacionadas ao Java Enterprise Edition está aqui . A tabela abaixo mostra apenas as duas especificações mais significativas selecionadas a partir delas - Servlet e Java EE (a última é um conjunto de outras especificações). As primeiras versões das especificações não foram aceitas como parte do JCP , portanto, elas não têm números JSR .

Desde 12 de setembro de 2017, o Java EE foi transferido para o gerenciamento da Eclipse Foundation e agora é chamado de Jakarta EE . O JCP foi substituído pelo Processo de Especificação de Jakarta EE como um processo para desenvolver e adotar especificações.

Usando Servlets HTTP


A seguir, são apresentados alguns exemplos de criação de um aplicativo Web sem bibliotecas ou estruturas. Os links para a localização do código com um breve comentário serão fornecidos sequencialmente. Existem métodos mais semelhantes, os mais óbvios deles são demonstrados.

O primeiro exemplo (módulo helloworld-web-servlet-xml ) no descritor de implantação web.xml especifica a classe herdada da classe abstrata HttpServlet com sua própria implementação do método doGet () . Pela primeira vez, o arquivo web.xml descritor de implementação foi mencionado na especificação Servlet 2.2 (1999).

No segundo exemplo (módulo helloworld-web-servlet-annotation ), o web.xml descritor de implementação web.xml ausente. Acima da mesma classe herdada da classe abstrata HttpServlet, há uma anotação de WebServlet que apareceu no Servlet 3.0 (2011).

O terceiro exemplo (os módulos helloworld-web-servlet-interface-jar e helloworld-web-servlet-interface-war ) é um pouco mais complicado. Ele mostra como usar a implementação da interface ServletContainerInitializer , que também apareceu no Servlet 3.0 . No primeiro módulo helloworld-web-servlet-interface-jar ainda não existe um web.xml descritor de implementação web.xml , existe uma classe derivada da classe abstrata HttpServlet . O Servlet 3.0 permite a implementação da interface ServletContainerInitializer para adicionar componentes de servlet programaticamente, incluindo executando o registro do servlet. A classe de implementação da interface ServletContainerInitializer usando o conceito Service Provider Interface ( SPI ) é configurada especificando seu nome no arquivo META-INF/services/javax.servlet.ServletContainerInitializer . O primeiro módulo cria um arquivo JAR. O arquivo WAR cria o segundo módulo helloworld-web-servlet-interface-war , o primeiro módulo é especificado na lista de dependências. Uma abordagem semelhante para implementar a interface ServletContainerInitializer é usada pelas estruturas JSF e Spring em suas classes FacesInitializer e SpringServletContainerInitializer , respectivamente.

O Servlet 3.0 também introduziu servlets assíncronos, no Servlet 3.1 (2013) - E / S sem bloqueio, no Servlet 4.0 (2017) - suporte HTTP / 2 .

A Era Antes da Primavera


tapeçaria O Apache Tapestry é uma verdadeira estrutura de aplicativo da web de longa duração. Sua primeira versão foi lançada em 2000. Novas versões continuam sendo lançadas agora. Ao projetar o Tapeçaria , as idéias do WebObjects , uma estrutura da Web que apareceu vários anos antes, foram emprestadas. Os aplicativos que usam o Tapeçaria (por exemplo, o módulo helloworld-web-tapeçaria ) usam a arquitetura modular e a ligação dos componentes da interface do usuário das páginas da web com suas classes Java correspondentes.

suportes O Apache Struts apareceu quase simultaneamente com a estrutura anterior, em maio de 2000, e também continua a se desenvolver até hoje. No exemplo baseado nele (o módulo helloworld-web-struts ), é possível ver no arquivo do descritor de implementação web.xml uma indicação da classe StrutsPrepareAndExecuteFilter como um filtro. Essa classe serve como um gerenciador de solicitações, escolhendo uma ação correspondente à solicitação. O Apache Struts , como o Tapeçaria , é baseado no padrão de design do MVC .

jsf Em março de 2004, a especificação JavaServer Faces foi lançada e duas implementações sucessivas: agora chamada Eclipse Mojarra (anteriormente Implementação de Referência Sun JSF , JSF RI , Mojarra , Oracle Mojarra ) e Apache MyFaces . A principal abordagem suportada pela especificação é o uso de componentes. Os dois exemplos ( módulos helloworld-web-jsf-mojarra e helloworld-web-jsf-myfaces ) são absolutamente idênticos entre si, com exceção das bibliotecas de dependência. Os aplicativos definem e exibem nas páginas da web a versão da implementação da especificação JSF , o nome da implementação ( Mojarra ou MyFaces ) e a versão da implementação.

wicket Junho de 2005 e o lançamento da primeira versão do framework Wicket , ideologicamente semelhante ao Tapestry e JavaServer Faces . Uma abordagem orientada a componentes e vinculação de modelos HTML para páginas da web com classes Java . Desde junho de 2007, a estrutura pertence à Apache Software Foundation , alterando seu nome para Apache Wicket . O pico de popularidade da estrutura ocorreu em 2008-2009, seguido por um declínio gradual no interesse por ela. Novas versões continuam a ser lançadas; um exemplo de aplicativo pode ser visto no módulo helloworld-web-wicket .

grails Em outubro de 2005 , foi lançada a primeira versão do Grails , uma estrutura para a criação de aplicativos da Web escritos na linguagem Groovy JVM . Como o nome do produto indica, o Ruby on Rails , uma estrutura escrita em Ruby, teve uma forte influência em sua criação. Também baseado no padrão MVC . Um recurso distintivo é o uso da exibição GSP ( Groovy Server Pages ) como arquivos. Um exemplo (módulo helloworld-web-grails ) é criado, construído e pode ser executado usando o plug-in Grails Maven , um plugin para o Maven .

Spring MVC, Spring Boot e Spring WebFlux


primavera A primeira versão do Spring Framework , incluindo o Spring MVC , apareceu em dezembro de 2005. A classe do servlet HTTP nele é DispatcherServlet . A seguir, são apresentados alguns exemplos em ordem cronológica da aparência dos recursos (novas versões da especificação Servlet , lançadas pela primeira vez no Spring Boot em abril de 2014 e, em seguida, no Spring WebFlux em setembro de 2017), usadas neles.

No primeiro exemplo (o módulo helloworld-web-spring-mvc-xml ), o web.xml descritor de implementação web.xml é especificado como o servlet DispatcherServlet . No controlador com o único método que processa a solicitação GET, há anotações correspondentes ( Controller e RequestMapping ). A visualização é um arquivo JSP .

No segundo exemplo (o módulo helloworld-web-spring-mvc-java ), o web.xml descritor de implementação web.xml ausente e o recurso introduzido no Servlet 3.0 é usado para executar a configuração do software. A classe herdada de AbstractAnnotationConfigDispatcherServletInitializer (implementando finalmente a implementação da interface ServletContainerInitializer com SPI ) e JavaConfig (a configuração usando o código do programa com a anotação Configuration é usada em conjunto ).

O terceiro exemplo (módulo helloworld-web-spring-boot-mvc ) demonstra uma simplificação significativa do projeto, mantendo a mesma funcionalidade graças ao advento do Spring Boot . Além da classe de controlador, há apenas uma classe herdada de SpringBootServletInitializer e anotada por SpringBootApplication .

O quarto exemplo (o módulo helloworld-web-spring-boot-webflux ) mostra, junto com o Spring Boot, o uso do Spring WebFlux , que foi adicionado ao Spring Framework relativamente recentemente. O Spring WebFlux usa princípios reativos e o Project Reactor . Das duas abordagens principais ( estilo funcional e baseada em anotação ), a primeira está envolvida no exemplo.

Após o advento da primavera, os anos 2000


vaadin O desenvolvimento do Vaadin começou em 2002 como um complemento para outro framework, o Millstone 3 . Durante 2006, o que foi criado foi enquadrado como um produto comercial acabado. Até maio de 2009, tinha o nome IT Mill Toolkit , somente após esse momento se tornando Vaadin . No final de 2007, sua parte do cliente anteriormente implementada de forma independente foi substituída pelo Google Web Toolkit ( GWT ). No exemplo (módulo helloworld-web-vaadin ), pode-se ver que há apenas um arquivo de classe Java no qual todos os componentes da interface com o usuário são criados programaticamente, enquanto ocultam detalhes técnicos de baixo nível.

gwt Um produto muito interessante, o Google Web Toolkit ( GWT ), apareceu em maio de 2006, a versão mais recente foi lançada há dois anos. Para gravar as partes do servidor e do cliente, você tem a oportunidade de usar a mesma linguagem Java . Um compilador especial converte o código do cliente em Java em JavaScript . O exemplo consiste em três módulos - helloworld-web-gwt-client (parte do cliente), helloworld-web-gwt-server (parte do servidor) e helloworld-web-gwt-shared (código comum para partes do cliente e do servidor). Durante o desenvolvimento, você pode usar o conveniente plug-in Maven para iniciar a parte do cliente no Modo Super Dev , no qual o chamado Code Server facilita a recompilação do código Java alterado.

costura Seam começou sua vida em maio de 2007 e deixou de existir em 2012. Foi baseado no Enterprise JavaBeans ( EJB3 ) e JavaServer Faces ( JSF ). Desenvolvido pelo JBoss , então parte do Red Hat . Ele propôs vários conceitos interessantes (por exemplo, bijeção , para os quais havia anotações correspondentes ). O site da estrutura ainda existe, mas em algumas de suas seções alguns links não são mais relevantes. Um aplicativo de exemplo está no módulo helloworld-web-seam .

jax-rs A primeira versão da especificação da API Java para RESTful Web Services ( JAX-RS ) foi lançada em 2008 ( JSR 311 ); posteriormente, a especificação foi atualizada ( JSR 339 , JSR 370 ). As implementações mais populares do JAX-RS são as estruturas Apache CXF (a primeira versão é abril de 2008), RESTEasy (setembro de 2008), Jersey (maio de 2010) e Restlet (janeiro de 2013). Exemplos de seu uso são encontrados nos módulos helloworld-web-jaxrs-apache-cxf , helloworld-web-jaxrs-resteasy , helloworld-web-jaxrs-jersey e helloworld-web-jaxrs-restlet, respectivamente .

brincar O Play Framework apareceu em maio de 2008. Escrito na linguagem de programação Scala JVM . Permite criar aplicativos da Web baseados no Scala e no Java . Uma característica peculiar dos desenvolvedores do Play é o compromisso com a ferramenta de construção sbt . Por esse motivo, para escrever um exemplo (módulo helloworld-web-play ), tive que fazer alguns esforços para criar no Maven , usando o plug-in apropriado para isso.

2010, a última hora


sparkjava Em 2011, foi lançada a primeira versão do maravilhoso micro-trabalho Spark , lançado sob a influência de Sinatra , escrito em Ruby . Laconicismo, leveza e minimalismo de sintaxe são inerentes a ele. Um exemplo ( módulo helloworld-web-sparkjava ) demonstra como você pode escrever um aplicativo completo em apenas algumas linhas. Os recursos da estrutura podem ser suficientes se você não precisar de algo muito complicado em seu aplicativo.

vertx Em 2011, o Vert.x , uma estrutura orientada a eventos em execução na JVM, apareceu . Escrito sob a influência significativa do Node.js , originalmente chamado Node.x. Possui uma natureza multilíngue, permitindo que você use Java , JavaScript , Groovy , Ruby , Ceilão , Scala ou Kotlin ao usar a estrutura. Baseado na biblioteca Netty , possui muitos recursos e vantagens distintas. Um exemplo está no módulo helloworld-web-vertx .

dropwizard Dezembro de 2011 foi o momento inicial da existência do Dropwizard , cujos autores posicionam seu produto como algo entre a biblioteca e a estrutura. As três partes principais das quais ele consiste são as bibliotecas Jetty ( HTTP ), Jersey ( JAX-RS ) e Jackson ( JSON ). Ele continua a se desenvolver atualmente, tendo até alguma popularidade. O exemplo ( módulo helloworld-web-dropwizard ) mostra uma estrutura típica de um aplicativo da web baseado no Dropwizard .

ratpack O Ratpack é outro framework (além do Spark ), inspirado na biblioteca Sinatra e escrito amplamente na linguagem Groovy JVM . A conexão de Frank Sinatra com o chamado pacote de ratos ("pacote de ratos"). A primeira versão do framework foi lançada em 2013, novas versões continuam sendo lançadas. Baseado na biblioteca Netty , rápido, minimalista, fácil de usar, altamente escalável. Um exemplo pode ser visto no módulo helloworld-web-ratpack .

jhipster Outubro de 2013, o advento do curioso projeto JHipster , um gerador de framework de aplicativos da web. Para criar a parte do cliente, a estrutura JavaScript Angular , React e Vue é suportada (a última ainda é suportada no modo experimental ). O back-end é baseado no Spring Boot . Para criar o projeto, Maven ou Gradle podem ser selecionados. Um exemplo de aplicativo gerado pelo JHipster está no módulo helloworld-web-jhipster .

rapidoide Em agosto de 2014, foi lançada a primeira versão do framework Rapidoid , simples, rápida e modular. O módulo recomendado com o qual é recomendado começar a usar a estrutura inclui a interação através de HTTP , as bibliotecas Hibernate , Hibernate Validator , MySQL Connector e Logback . Com necessidades crescentes, o conjunto de módulos usado pode ser expandido. Um exemplo ( módulo helloworld-web-rapidoid ) permite avaliar o minimalismo do código necessário para obter um aplicativo da web simples.

lagom Março de 2016, lançamento do framework Lagom . Os autores deste produto de software posicionam seu aplicativo para dividir aplicativos monolíticos antigos em microsserviços reativos que escalam bem durante sua operação. A estrutura é baseada no Akka and Play Framework . As linguagens de programação Java ou Scala podem ser usadas para desenvolver seus aplicativos. Um exemplo baseado em Lagom é encontrado nos módulos helloworld-web-lagom-api e helloworld-web-lagom-impl .

javalin Mais recentemente, em maio de 2017, foi lançada a biblioteca Javalin leve e simples. Seus próprios criadores indicam em agradecimento aos autores dos frameworks Sinatra e Spark já mencionados. A biblioteca está focada nas linguagens Java e Kotlin . Garante a ausência de anotações e a necessidade de herdar qualquer classe de biblioteca, o mais conciso possível, suporte para WebSocket , HTTP / 2 e solicitações assíncronas. Um exemplo baseado nisso pode ser visto no módulo helloworld-web-javalin .

micronauta A estrela em ascensão entre os frameworks da web, cuja primeira versão apareceu apenas um ano atrás, em outubro de 2018, é o Micronaut . Suporta linguagens de programação Java , Groovy e Kotlin JVM . Sua vantagem significativa é o início rápido de aplicativos baseados nele e baixo consumo de memória. Isso é garantido pela implementação de dependências no estágio de compilação e não no tempo de execução. Outro dos recursos é o excelente suporte para programação reativa, é possível o uso das bibliotecas RxJava , Reactor e Akka . Um exemplo ( módulo helloworld-web-micronaut ) demonstra a construção de um aplicativo simples baseado em Micronaut .

Microprofile


microprofile Devido ao peso atual do Java EE , várias empresas precisam de microsserviços para desenvolver um conjunto leve de especificações, o que foi feito - em setembro de 2016, o MicroProfile 1.0 foi lançado. Inicialmente, o conjunto incluía apenas três especificações ( CDI , JAX-RS e JSON-P ). Os requisitos aumentaram gradualmente; na versão 3.0, a lista de especificações aumentou significativamente.

Não.EspecificaçãoVersão MicroProfile
1.01.11.21.31.42.02.12.23.0
1Cdi1.21.21.21.21.22.02.02.02.0
2Config1.01.11.21.31.31.31.31.3
3Tolerância a falhas1.01.01.11.11.12.02.0
4Saude1.01.01.01.01.01.02.0
5Jax-rs2.02.02.02.02.02.12.12.12.1
6Json-b1.01.01.01.0
7Json-p1.01.01.01.01.01.11.11.11.1
8Autenticação JWT1.01.01.11.11.11.11.1
9Métricas1.01.11.11.11.11.12.0
10API aberta1.01.01.01.01.11.1
11Rastreio aberto1.01.11.11.21.31.3
12Tipo Cliente de Descanso Seguro1.01.11.11.11.21.3

Atualmente, existem estruturas da web que satisfazem o MicroProfile em vários graus. Sete deles foram escolhidos para demonstração. A seguir, a correspondência das versões do framework com as versões do MicroProfile . Informações completas sobre todas as estruturas existentes que implementam o MicroProfile estão aqui .
Não.EnquadramentoVersão MicroProfile
1.01.11.21.31.42.02.12.23.0
1Tomee7.1.08.0.0-M18.0.0-M28.0.0-M3
2Cama de rede2.0
3Espinho2.1.0
Final
2.3.0
Final
2.4.0
Final
2.5.0
Final
4Kumuluzee2.1.02.5.23.0.03.2.03.2.03.2.03.2.03.5.0
5Payara micro174181182183183191192
6Liberdade aberta17,0
0,3
18.0
0,1
18.0
0,3
18.0
0,3
18.0
0,4
19.0
0,3
19.0
0,7
7Helidon0.9.41.01.2.01.2.01.2.01.2.01.2.0

microprofile1 O primeiro grupo de estruturas inclui as que já existiam no momento do lançamento do MicroProfile 1.0: TomEE (a primeira versão foi lançada em abril de 2012), Hammock (fevereiro de 2014), Thorntail (anteriormente chamado WildFly Swarm , janeiro de 2016) e KumuluzEE (abril de 2016). Na maioria das vezes, a conformidade com um novo conjunto de especificações foi alcançada removendo do produto existente tudo o que era supérfluo. Exemplos de uso estão nos módulos helloworld-web-microprofile-tomee , helloworld-web-microprofile-hammock , helloworld-web-microprofile-thorntail e helloworld-web-microprofile-kumuluzee .

microprofile2 O segundo grupo de estruturas inclui as que apareceram depois da primeira versão do MicroProfile : Payara Micro (julho de 2017), Open Liberty (setembro de 2017) e Helidon (setembro de 2018). Para essas estruturas, o oposto se tornou possível - desde o início da implementação, por exemplo, o Helidon foi desenvolvido especificamente para conformidade com o MicroProfile , portanto, não possui nada supérfluo em sua composição. Exemplos de aplicações de construção podem ser vistos nos módulos helloworld-web-microprofile-payara , helloworld-web-microprofile-openliberty e helloworld-web-microprofile-helidon .

Contêineres de Servlet e Servidores de Aplicativos


Os aplicativos da Web são executados em software especializado que implementa as especificações relevantes (por exemplo, a API do Servlet ). Abaixo estão os contêineres de servlets e servidores de aplicativos mais populares no momento. A porcentagem de popularidade também é obtida nos resultados do estudo (pergunta 20).
Não.Contêiner de servlet, servidores de aplicativosData da primeira versãoData da última versão estávelPopularidade,%
FamíliaNome
1TomcatTomcat11/199817/08/201941.
2Tomee04.201221/06/2019
3JbossJboss eap199922/01/201915
4Wildfly199903/03/2019
5Jetty200014/08/20199
6Servidor Weblogic11/199730/08/20176
7WebsphereWebSphere Application Server199802/02/20195
8Liberdade aberta09.201714/08/2019
9GlassfishServidor Glassfish06/06/200528/01/20195
10Servidor Payara31/10/201429/08/2019

A linha do tempo mostra a vida útil de cada um dos produtos de software na tabela. Você pode ver a sequência de sua aparência e o tempo de lançamento das versões mais recentes.



Cada vez mais contêineres estão sendo usados ​​ao implantar e publicar aplicativos, portanto, o uso de servidores de aplicativos está se tornando cada vez menos relevante.

Uso de idiomas diferentes de Java em aplicativos


Recentemente, houve uma tendência para criar aplicativos híbridos, como um dos componentes dos quais existe código Java . De acordo com a tendência da Java Magazine , cujo tema principal era a linguagem de programação Java , na coluna do editor-chefe da edição de janeiro / fevereiro de 2017 , “The Polyglot Future” foi declarado e incluído na zona de interesse da linguagem JavaScript .

No estudo já mencionado acima , na pergunta 16, eles estavam interessados ​​em quais idiomas não JVM são usados ​​nos aplicativos JVM . O líder (57%) era JavaScript , usado no frontend. Dado o fato de que alguns aplicativos da Web não possuem uma GUI (serviços, microsserviços, serviços), podemos afirmar com confiança que o uso de estruturas JavaScript para a interface gráfica em aplicativos Java é generalizado.



Exemplo de um aplicativo Java típico hoje


Para demonstrar um aplicativo da Web Java típico com uma interface gráfica, foi criado um programa com emulação da funcionalidade básica do Twitter : autenticação, gerenciamento de contas (criar, editar, excluir, pesquisar por substring), a página principal (propriedades da conta, feed de mensagens), criação Tweets, inscreva-se / cancele a inscrição.

O back-end é escrito usando o Spring Boot , o front-end é escrito usando a popular estrutura JavaScript Angular . Na parte Java do aplicativo, os componentes da família Spring são representados no máximo: Spring MVC , Spring Boot , Spring Security , Spring Test , Spring Test , Spring Boot Admin . A API REST de back-end é renderizada usando o Swagger .

JUnit , Spring Test , Mockito , TestContainers (unit- Java -) Jasmine Protractor (unit- end-to-end- JavaScript Angular ).

( Spring Boot Angular ) , TechTrain 2019 .

Conclusões


Java , -, . , , , , .

, , GitHub : , .

JUG Ru Group
Spring :
  • «Spring the Ripper», ( JPoint 2014 : , )
  • «Spring Data? , !», ( Joker 2014 : , )
  • «Spring Puzzlers: Spring», ( Joker 2014 : )
  • «Spring Puzzlers — », ( JPoint 2015 : , )
  • «The Bootiful Application», Josh Long ( Joker 2015 : , )
  • « Spring Boot Starter», ( JPoint 2016 : , )
  • «Spring – », ( JPoint 2017 : , )
  • « Spring Test», ( JPoint 2017 : , )
  • «Boot yourself, Spring is coming», ( Joker 2017 : )
  • « Spring 5/Reactor», ( Joker 2017 : )
  • «Spring Framework 5.0 on JDK 8 & 9», Juergen Hoeller ( JPoint 2018 : , )
  • «Spring Framework 5: feature highlights and hidden gems», Juergen Hoeller ( JPoint 2018 : , )
  • «Camel microservices with Spring Boot and Kubernetes», Claus Ibsen ( JPoint 2018 : , )
  • «Spring Boot Xtend: c », ( JPoint 2018 : , )
  • «Boot yourself, Spring is coming», ( JPoint 2018 : 1 2 , )
  • «Spring Boot 2: release notes», ( Joker 2018 : , )
  • «The Proxy fairy and the magic of Spring», Victor Rentea ( JPoint 2019 : , )
  • « Spring Boot, : AOT- Spring-», ( JPoint 2019 : , )
  • «Reactive reactive, », ( JPoint 2019 : , )
  • « Spring Boot- Java 8 11: ?», ( JPoint 2019 : , )

Play :
  • «50 Play!», ( Joker 2015 : )

Vaadin :
  • « — web UI Java desktop-», ( JPoint 2018 : , )
  • « Vaadin Flow», ( JPoint 2019 : , )

Vert.x :
  • «Vert.x: », ( Joker 2015 : )
  • «Vert.x: », ( Joker 2016 : , )
  • « Vert.x », ( JPoint 2018 : , )

Micronaut :
  • «Micronaut vs Spring Boot, ?», ( Joker 2018 : , )

MicroProfile :
  • «Microprofile.io: », ( Joker 2018 : , )

Java JavaScript :
  • «JavaScript in the nterprise», Markus Eisele ( Joker 2014 : , )
  • «Java(Script) on JVM», ( Joker 2015 : )


UPD : Quarkus ( helloworld-web-quarkus ) ActFramework ( helloworld-web-actframework ), .. 39.

25-26 2019 - Java- Joker 2019 , 1 .

8-9 2019 JavaScript- HolyJS 2019 Moscow , 1 .

Source: https://habr.com/ru/post/pt453468/


All Articles