L'évolution des applications Web Java

L'histoire du développement de la création d'applications Web dans le langage de programmation Java avec des exemples de leur utilisation au cours de la période allant de l'apparition de la spécification de servlet à nos jours.



L'article ne prétend pas être académique dans son intégralité et sa précision. L'interprétation de tous les faits énoncés et les exemples donnés reflètent uniquement la connaissance, le point de vue et les erreurs de l'auteur de l'article. Le but de l'écriture est d'essayer d'obtenir une image complète de la situation actuelle des applications Web Java . De plus, les informations présentées peuvent être utilisées par le lecteur comme point de départ pour d'autres recherches indépendantes.

L'exemple de code est dans les référentiels sur GitHub : une démonstration de chaque bibliothèque et framework et l' application de la dernière partie de l'article . Au moment de la rédaction, il y a 37 exemples dans le premier référentiel , avec le temps, leur liste sera mise à jour.

Chronologie de l'émergence des technologies, bibliothèques, frameworks et leur popularité


Pour une perception plus facile, les données sont tabulées et sont illustrées par des diagrammes. Les éléments du tableau sont groupés conditionnellement, si possible. Les bibliothèques et les frameworks sont triés par popularité en ordre décroissant.

Les informations sur la popularité proviennent de deux sources. La première source est l' indice de popularité ZeroTurnaround RebelLabs Web Framework . Sa dernière mise à jour était fin 2017 et était accompagnée de deux articles de blog avant cela: le premier et le second . L'auteur du deuxième article de blog, Simon Maple , a rejoint Snyk , continuant à collecter et à analyser de telles statistiques utiles. Une deuxième source est son étude , publiée dans Java Magazine, novembre / décembre 2018 (question 17).

Un ensemble de spécifications a été ajouté en haut du tableau, des cadres qui n'étaient pas inclus dans l'indice de popularité, mais que je voulais encore mentionner, ont été ajoutés à la fin du tableau.
Non.Technologie, bibliothèque, cadreDate de la première versionDate de la dernière version stablePopularité,%
TapezSous-typeRebelLabs, 2017Magazine Java, 2018
1SpécificationServlet12/199609/10/2019
2Jsp27/09/199909/10/2019
3J2EE ,
Java EE ,
Jakarta ee
12/12/199909/10/2019
4Jax-ws28/10/200309/10/2019
5Jsf03/11/200409/10/2019
6Jax-rs09/08/200809/10/2019
7PrintempsSpring mvc12.200508/02/201928,8236
8Botte de printemps04.201408/02/201913,3540
9Webflux de printemps09.201708/02/2019
10Visages JavaServerEclipse mojarra03.03.200430/11/201815,219
11Apache MyFaces11.200523/05/2019
12Boîte à outils Web Google16/05/200619/10/20177.746
13Grails10.200507/11/20196.353
14Struts05.200001/09/20195,49
15Dropwizard21/12/201108/07/20194.93
16Jouez05/05/200819/06/20193.263
17Jipster21/10/201320/09/20192,493
18Jax-rsApache cxf04.04.200813/08/20192,44
19RESTEasy09.09.200830/08/2019
20Maillot05.201009/10/2019
21Restlet01.201301.2018
22Vaadin200616/09/20192.155
23Couture200725/07/20131,94
24Guichet2005/0609/09/20191,912
25Tapisserie200009/06/20191,9
26Spark java201122/05/20190,77
27Vert.x201122/08/20190,76
28Rapidoid08.201427/05/20180,25
29Lagom03.201609/04/20190,24
30Ratpack201318/08/20190,13
31Javalin24/05/201708/11/2019
32Micronaut23/10/201813/09/2019
33MicroprofileTomee27/04/201221/06/2019
34Hamac27/02/201403/05/2018
35Thorntail01.201617/07/2019
36Kumuluzee04/04/201629/06/2019
37Payara micro07/07/201728/08/2019
38Liberté ouverte19/09/201709/06/2019
39Hélidon19/09/201813/09/2019

Sur la première chronologie, les données du tableau sont affichées dans le même ordre que dans le tableau. Les groupes existants sont classés par popularité. En groupes (spécification, Spring , JSF , JAX-RS , MicroProfile ), les éléments sont classés dans l'ordre chronologique de leur apparence. Vous pouvez cliquer sur l'une des photos pour l'agrandir.



Sur la deuxième chronologie, les mêmes informations sont classées par date d'apparition de la première version de tous les éléments. Il est facile de voir qu'en 2001, par exemple, pour écrire une application Web, vous ne pouviez choisir que parmi deux cadres principaux existants - Tapestry et Struts . Début 2014, il était impossible d'utiliser Spring Boot (sa première version officielle a été publiée plus tard) et cela n'avait aucun sens d'utiliser Seam (il a cessé d'exister).



Le graphique à secteurs montre l'indice de popularité du cadre selon RebelLabs à la fin de 2017 . Chacun des cadres de l'indice participe une fois, c'est-à-dire que le montant total d'intérêt est de 100. Le deuxième diagramme montre le résultat d'une étude de Java Magazine, 2018 . L'étude a demandé quels cadres Web sont utilisés, il a été permis d'en choisir plus d'un dans la réponse. Pour cette raison, chaque pourcentage est indépendant de l'autre et ne peut pas être résumé.



Spécifications techniques


La pierre angulaire de l'existence de toutes les bibliothèques réside dans les normes et spécifications sur lesquelles elles reposent. Les spécifications existent sous la forme de demandes de spécification Java ( JSR ) développées via une procédure formelle appelée Java Community Process ( JCP ).

Une liste des JSR liés à Java Enterprise Edition est ici . Le tableau ci-dessous ne montre que les deux spécifications les plus importantes sélectionnées parmi elles - Servlet et Java EE (ce dernier est un ensemble d'autres spécifications). Les premières versions des spécifications n'ont pas été acceptées dans le cadre du JCP , elles n'ont donc pas de numéro JSR .

Depuis le 12 septembre 2017, Java EE a été transféré à la direction de la Fondation Eclipse et s'appelle désormais Jakarta EE . JCP a été remplacé par le processus de spécification Jakarta EE en tant que processus d'élaboration et d'adoption des spécifications.

Utilisation de servlets HTTP


Voici quelques exemples de création d'une application Web sans bibliothèque ni infrastructure. Des liens vers l'emplacement du code avec un bref commentaire seront donnés séquentiellement. Il existe des méthodes plus similaires, dont les plus évidentes sont démontrées.

Le premier exemple ( module helloworld-web-servlet-xml ) du descripteur de déploiement web.xml spécifie la classe héritée de la classe abstraite HttpServlet avec sa propre implémentation de la méthode doGet () . Pour la première fois, le fichier descripteur de déploiement web.xml été mentionné dans la spécification Servlet 2.2 (1999).

Dans le deuxième exemple ( module helloworld-web-servlet-annotation ), le web.xml descripteur de déploiement web.xml manquant. Au-dessus de la même classe héritée de la classe abstraite HttpServlet, il y a une annotation WebServlet qui est apparue dans Servlet 3.0 (2011).

Le troisième exemple (les modules helloworld-web-servlet-interface-jar et helloworld-web-servlet-interface-war ) est un peu plus compliqué. Il montre comment utiliser l'implémentation de l'interface ServletContainerInitializer , qui est également apparue dans Servlet 3.0 . Dans le premier module helloworld-web-servlet-interface-jar, il n'y a toujours pas de web.xml descripteur de déploiement web.xml , il y a une classe dérivée de la classe abstraite HttpServlet . Servlet 3.0 permet l'implémentation de l'interface ServletContainerInitializer pour ajouter des composants de servlet par programme, y compris effectuer l'enregistrement du servlet. La classe d'implémentation de l'interface ServletContainerInitializer utilisant le concept SPI ( Service Provider Interface ) est configurée en spécifiant son nom dans le fichier META-INF/services/javax.servlet.ServletContainerInitializer . Le premier module crée un fichier JAR. Le fichier WAR crée le deuxième module helloworld-web-servlet-interface-war , le premier module est spécifié dans la liste des dépendances. Une approche similaire pour implémenter l'interface ServletContainerInitializer est utilisée par les frameworks JSF et Spring dans leurs classes FacesInitializer et SpringServletContainerInitializer , respectivement.

Servlet 3.0 a également introduit des servlets asynchrones, dans Servlet 3.1 (2013) - E / S non bloquantes, dans Servlet 4.0 (2017) - Prise en charge HTTP / 2 .

L'âge avant le printemps


tapisserie Apache Tapestry est un véritable cadre d'application Web à longue durée de vie. Sa première version est sortie en 2000; de nouvelles versions continuent de sortir maintenant. Lors de la conception de Tapestry , des idées de WebObjects , un framework web apparu plusieurs années auparavant, ont été empruntées. Les applications utilisant Tapestry (par exemple, le module helloworld-web-tapestry ) utilisent l'architecture modulaire et la liaison des composants de l'interface utilisateur des pages Web avec leurs classes Java correspondantes.

entretoises Apache Struts est apparu presque simultanément avec le cadre précédent, en mai 2000, et continue également de se développer à ce jour. Dans l'exemple basé sur celui-ci (le module helloworld-web-struts ), vous pouvez voir dans le fichier descripteur de déploiement web.xml une indication de la classe StrutsPrepareAndExecuteFilter tant que filtre. Cette classe sert de gestionnaire de demandes, en choisissant une action correspondant à la demande. Apache Struts , comme Tapestry , est basé sur le modèle de conception MVC .

jsf En mars 2004, la spécification JavaServer Faces a été publiée et deux implémentations successives de celle-ci: désormais appelée Eclipse Mojarra (anciennement Sun JSF Reference Implementation , JSF RI , Mojarra , Oracle Mojarra ) et Apache MyFaces . L'approche principale prise en charge par la spécification est l'utilisation de composants. Les deux exemples ( modules helloworld-web-jsf-mojarra et helloworld-web-jsf-myfaces ) sont absolument identiques l'un à l'autre, à l'exception des bibliothèques de dépendances. Les applications définissent et affichent sur les pages Web la version de l'implémentation de la spécification JSF , le nom de l'implémentation ( Mojarra ou MyFaces ) et la version de l'implémentation.

guichet Juin 2005 et la sortie de la première version du framework Wicket , idéologiquement similaire à Tapestry et JavaServer Faces . Une approche orientée composants et reliant les modèles HTML pour les pages Web aux classes Java . Depuis juin 2007, le framework appartient à Apache Software Foundation , changeant son nom en Apache Wicket . Le pic de popularité du cadre est survenu vers 2008-2009, suivi d'un déclin graduel de son intérêt. De nouvelles versions continuent d'être publiées; un exemple d'application peut être vu dans le module helloworld-web-wicket .

grails En octobre 2005, la première version de Grails , un cadre pour la création d'applications Web écrites dans le langage Groovy JVM , a été lancée . Comme le nom du produit l'indique, Ruby on Rails , un framework écrit en Ruby, a eu une forte influence sur sa création. Également basé sur le modèle MVC . Une caractéristique distinctive est l'utilisation de fichiers de vue GSP ( Groovy Server Pages ) comme modèles. Un exemple ( module helloworld-web-grails ) est créé, construit et peut être exécuté à l'aide du plugin Grails Maven , un plugin pour Maven .

Spring MVC, Spring Boot et Spring WebFlux


printemps La première version de Spring Framework , y compris Spring MVC , est apparue en décembre 2005. La classe du servlet HTTP qu'il contient est DispatcherServlet . Voici quelques exemples par ordre chronologique d'apparition des opportunités (nouvelles versions de la spécification Servlet , lancées pour la première fois Spring Boot en avril 2014, puis Spring WebFlux en septembre 2017), qui y sont utilisées.

Dans le premier exemple ( module helloworld-web-spring-mvc-xml ), le web.xml descripteur de déploiement web.xml est spécifié en tant que servlet DispatcherServlet . Dans le contrôleur avec la seule méthode qui traite la demande GET, il y a des annotations correspondantes ( Controller et RequestMapping ). La vue est un fichier JSP .

Dans le deuxième exemple (le module helloworld-web-spring-mvc-java ), le web.xml descripteur de déploiement web.xml manquant et la fonctionnalité introduite dans Servlet 3.0 est utilisée pour effectuer la configuration logicielle. La classe héritée de AbstractAnnotationConfigDispatcherServletInitializer (implémentant finalement l'implémentation de l'interface ServletContainerInitializer avec SPI ) et JavaConfig (la configuration utilisant le code de programme avec l'annotation de configuration est utilisée ensemble ).

Le troisième exemple ( module helloworld-web-spring-boot-mvc ) démontre une simplification significative du projet tout en conservant les mêmes fonctionnalités grâce à l'avènement de Spring Boot . En plus de la classe contrôleur, il n'y a en outre qu'une seule classe héritée de SpringBootServletInitializer et annotée par SpringBootApplication .

Le quatrième exemple (le module helloworld-web-spring-boot-webflux ), avec Spring Boot, montre l'utilisation de Spring WebFlux , qui a été ajouté au Spring Framework relativement récemment. Spring WebFlux utilise des principes réactifs et Project Reactor . Des deux principales approches ( style fonctionnel et basé sur les annotations ), la première est impliquée dans l'exemple.

Après l'avènement du printemps, les années 2000


vaadin Le développement de Vaadin a commencé en 2002 en complément d'un autre framework, Millstone 3 . En 2006, ce qui a été créé a été présenté comme un produit commercial fini. Jusqu'en mai 2009, il avait le nom IT Mill Toolkit , seulement après ce moment, devenant Vaadin . Fin 2007, sa partie client précédemment implémentée de manière indépendante a été remplacée par Google Web Toolkit ( GWT ). Dans l'exemple ( module helloworld-web-vaadin ), on peut voir qu'il n'y a qu'un seul fichier de classe Java dans lequel tous les composants de l'interface utilisateur sont créés par programme, tout en cachant les détails techniques de bas niveau.

gwt Un produit très intéressant, Google Web Toolkit ( GWT ), est apparu en mai 2006, la dernière version a été publiée il y a deux ans. Pour écrire les parties serveur et client, vous avez la possibilité d'utiliser le même langage Java . Un compilateur spécial convertit le code client en Java en JavaScript . L'exemple se compose de trois modules - helloworld-web-gwt-client (partie client), helloworld-web-gwt-serveur (partie serveur) et helloworld-web-gwt-shared (code commun pour les parties client et serveur). Pendant le développement, vous pouvez utiliser le plug-in Maven pratique pour lancer la partie client en mode Super Dev , dans lequel le soi-disant Code Server facilite la recompilation du code Java modifié.

couture Seam a commencé sa vie en mai 2007 et a cessé d'exister en 2012. Il était basé sur Enterprise JavaBeans ( EJB3 ) et JavaServer Faces ( JSF ). Développé par JBoss , alors partie de Red Hat . Il a proposé divers concepts intéressants (par exemple, la bijection , pour laquelle il y avait des annotations correspondantes ). Le site du framework existe toujours, mais dans certaines de ses sections certains liens ne sont plus pertinents. Un exemple d'application se trouve dans le module helloworld-web-seam .

jax-rs La première version de la spécification de l'API Java pour les services Web RESTful ( JAX-RS ) a été publiée en 2008 ( JSR 311 ), puis la spécification a été mise à jour ( JSR 339 , JSR 370 ). Les implémentations JAX-RS les plus populaires sont les frameworks Apache CXF (la première version est avril 2008), RESTEasy (septembre 2008), Jersey (mai 2010) et Restlet (janvier 2013). Des exemples de leur utilisation se trouvent dans les modules helloworld-web-jaxrs-apache-cxf , helloworld-web-jaxrs-resteasy , helloworld-web-jaxrs-jersey et helloworld-web-jaxrs-restlet, respectivement .

jouer Play Framework est apparu en mai 2008. Écrit dans le langage de programmation Scala JVM . Vous permet de créer des applications Web basées sur lui dans Scala et Java . Une caractéristique particulière des développeurs de Play est leur engagement envers l' outil de construction sbt . Pour cette raison, pour écrire un exemple ( module helloworld-web-play ), j'ai dû faire quelques efforts pour construire sous Maven , en utilisant le plug-in approprié pour cela.

2010, la dernière fois


sparkjava En 2011, la première version du merveilleux microframework Spark , sorti sous l'influence de Sinatra , écrit en Ruby , est sortie. Le laconicisme, la légèreté et le minimalisme de la syntaxe y sont inhérents. Un exemple ( module helloworld-web-sparkjava ) montre comment vous pouvez écrire une application complète en seulement quelques lignes. Les capacités du framework peuvent bien être suffisantes si vous n'avez pas besoin de quelque chose de trop compliqué dans votre application.

vertx En 2011, Vert.x , un framework orienté événements fonctionnant sur la JVM, est apparu . Écrit sous l'influence significative de Node.js , initialement appelé Node.x. Il a une nature multilingue, vous permettant d'utiliser Java , JavaScript , Groovy , Ruby , Ceylan , Scala ou Kotlin lors de l'utilisation du framework. Basé sur la bibliothèque Netty , il présente de nombreuses caractéristiques et avantages distinctifs. Un exemple est dans le module helloworld-web-vertx .

dropwizard Décembre 2011 a été la première fois pour l'existence de Dropwizard , dont les auteurs positionnent leur produit comme quelque chose entre la bibliothèque et le framework. Les trois principales parties qui le composent sont les bibliothèques Jetty ( HTTP ), Jersey ( JAX-RS ) et Jackson ( JSON ). Il continue de se développer à l'heure actuelle, ayant même une certaine popularité. L'exemple ( module helloworld-web-dropwizard ) montre une structure typique d'une application Web basée sur Dropwizard .

ratpack Ratpack est un autre framework (en plus de Spark ), inspiré de la bibliothèque Sinatra et écrit en grande partie dans le langage Groovy JVM . Le lien de Frank Sinatra avec le soi-disant pack de rats ("pack de rats"). La première version du framework a été publiée en 2013, de nouvelles versions continuent d'être publiées. Basé sur la bibliothèque Netty , rapide, minimaliste, facile à utiliser, hautement évolutif. Un exemple peut être vu dans le module helloworld-web-ratpack .

jhipster Octobre 2013, l'avènement du curieux projet JHipster , générateur de framework d'applications web. Pour construire la partie client, le framework JavaScript Angular , React et Vue est supporté (ce dernier est toujours supporté en mode expérimental ). Le backend est basé sur Spring Boot . Pour construire le projet, Maven ou Gradle peuvent être sélectionnés. Un exemple d'application générée par JHipster se trouve dans le module helloworld-web-jhipster .

rapidoid En août 2014, la première version du framework Rapidoid est sortie , simple, rapide et modulaire. Le module recommandé avec lequel il est recommandé de commencer à utiliser le cadre comprend l'interaction sur HTTP , les bibliothèques Hibernate , Hibernate Validator , MySQL Connector et Logback . Avec des besoins croissants, l'ensemble de modules utilisé peut être étendu. Un exemple ( module helloworld-web-rapidoid ) vous permet d'évaluer le minimalisme du code requis pour obtenir une application web simple.

lagom Mars 2016, sortie du framework Lagom . Les auteurs de ce logiciel positionnent son application pour décomposer les anciennes applications monolithiques en microservices réactifs qui évoluent bien au cours de leur fonctionnement. Le framework est basé sur Akka et Play Framework . Les langages de programmation Java ou Scala peuvent être utilisés pour développer leurs applications. Un exemple basé sur Lagom se trouve dans les modules helloworld-web-lagom-api et helloworld-web-lagom-impl .

javaline Plus récemment, en mai 2017, la bibliothèque Javalin légère et simple est sortie . Ses créateurs indiquent eux-mêmes leurs remerciements aux auteurs des frameworks Sinatra et Spark déjà mentionnés. La bibliothèque se concentre sur les langages Java et Kotlin . Il garantit l'absence d'annotations et la nécessité d'hériter de toutes les classes de bibliothèque, un code aussi concis que possible, la prise en charge de WebSocket , HTTP / 2 et des requêtes asynchrones. Un exemple basé sur celui-ci peut être vu dans le module helloworld-web-javalin .

micronaut L'étoile montante des frameworks web, dont la première version est apparue il y a seulement un an, en octobre 2018, est Micronaut . Prend en charge les langages de programmation JVM Java , Groovy et Kotlin . Son avantage significatif est un démarrage rapide des applications basées sur lui et une faible consommation de mémoire. Ceci est assuré par l'implémentation de dépendances au stade de la compilation, et non au moment de l'exécution. Une autre des fonctionnalités est un excellent support pour la programmation réactive, l'utilisation des bibliothèques RxJava , Reactor et Akka est possible . Un exemple ( module helloworld-web-micronaut ) montre comment construire une application simple basée sur Micronaut .

Microprofile


microprofil En raison de la lourdeur actuelle de Java EE , un certain nombre d'entreprises ont besoin de microservices pour développer un ensemble léger de spécifications, ce qui a été fait - en septembre 2016, MicroProfile 1.0 a été publié. Initialement, l'ensemble ne comprenait que trois spécifications ( CDI , JAX-RS et JSON-P ). Les exigences ont progressivement augmenté; avec la version 3.0, la liste des spécifications a considérablement augmenté.

Non.SpécificationVersion 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
3Tolérance aux pannes1.01.01.11.11.12.02.0
4La santé1.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
8JWT Auth1.01.01.11.11.11.11.1
9Mesures1.01.11.11.11.11.12.0
10API ouverte1.01.01.01.01.11.1
11Traçage ouvert1.01.11.11.21,31,3
12Tapez Safe Rest Client1.01.11.11.11.21,3

Actuellement, il existe des cadres Web qui satisfont MicroProfile à des degrés divers. Sept d'entre eux ont été choisis pour la démonstration, voici la correspondance des versions du framework avec les versions de MicroProfile . Des informations complètes sur tous les frameworks existants qui implémentent MicroProfile sont ici .
Non.CadreVersion MicroProfile
1.01.11.21,31.42.02.12.23.0
1Tomee7.1.08.0.0-M18.0.0-M28.0.0-M3
2Hamac2.0
3Thorntail2.1.0
Finale
2.3.0
Finale
2.4.0
Finale
2.5.0
Finale
4Kumuluzee2.1.02.5.23.0.03.2.03.2.03.2.03.2.03.5.0
5Payara micro174181182183183191192
6Liberté ouverte17.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
7Hélidon0.9.41.01.2.01.2.01.2.01.2.01.2.0

microprofil1 Le premier groupe de frameworks comprend ceux qui existaient déjà au moment de la sortie de MicroProfile 1.0: TomEE (la première version est sortie en avril 2012), Hammock (février 2014), Thorntail (anciennement appelé WildFly Swarm , janvier 2016) et KumuluzEE (avril 2016). Le plus souvent, le respect d'un nouvel ensemble de spécifications a été atteint pour eux en supprimant du produit existant tout ce qui était superflu. Des exemples d'utilisation sont dans les modules helloworld-web-microprofile-tomee , helloworld-web-microprofile-hamac , helloworld-web-microprofile-thorntail et helloworld-web-microprofile-kumuluzee .

microprofile2 Le deuxième groupe de frameworks comprend ceux qui sont apparus plus tard que la première version de MicroProfile : Payara Micro (juillet 2017), Open Liberty (septembre 2017) et Helidon (septembre 2018). Pour ces cadres, l'inverse est devenu possible - dès le début de la mise en œuvre, par exemple, Helidon a été développé spécifiquement pour la conformité MicroProfile , donc il n'a rien de superflu dans sa composition. Des exemples d'applications de construction peuvent être vus dans les modules helloworld-web-microprofile-payara , helloworld-web-microprofile-openliberty et helloworld-web-microprofile-helidon .

Conteneurs de servlets et serveurs d'applications


Les applications Web sont exécutées dans un logiciel spécialisé qui implémente les spécifications pertinentes (par exemple, l' API Servlet ). Vous trouverez ci-dessous les conteneurs de servlets et les serveurs d'applications les plus populaires à l'heure actuelle. Le pourcentage de popularité est également tiré des résultats de l' étude (question 20).
Non.Conteneur de servlet, serveurs d'applicationsDate de la première versionDate de la dernière version stablePopularité,%
FamilleNom
1TomcatTomcat11/199817/08/201941
2Tomee04.201221/06/2019
3JbossJboss eap199922/01/201915
4Wildfly199907/03/2019
5Jetée200014/08/20199
6Serveur Weblogic11/199730/08/20176
7WebsphereWebSphere Application Server199804/02/20195
8Liberté ouverte09.201714/08/2019
9GlassfishServeur Glassfish06/06/200528/01/20195
10Serveur Payara31/10/201429/08/2019

La chronologie montre la durée de vie de chacun des produits logiciels du tableau. Vous pouvez voir la séquence de leur apparition et l'heure de sortie des dernières versions.



De plus en plus de conteneurisation est désormais utilisée lors du déploiement et de la publication d'applications, de sorte que l'utilisation des serveurs d'applications devient de moins en moins pertinente.

Utilisation de langages autres que Java dans les applications


Récemment, il y a eu une tendance à créer des applications hybrides, comme l'un des composants dont il existe du code Java . Conformément à la tendance du Java Magazine , dont le thème principal était le langage de programmation Java , dans la colonne du rédacteur en chef du numéro de janvier / février 2017 , «The Polyglot Future» a été annoncé et l'inclusion de JavaScript dans la zone d'intérêt.

Dans l' étude déjà mentionnée ci-dessus , à la question 16, ils étaient intéressés par les langages non JVM utilisés dans les applications JVM . Le leader (57%) était JavaScript , utilisé dans le frontend. Étant donné que certaines applications Web n'ont pas du tout d' interface graphique (services, microservices, services), nous pouvons affirmer avec certitude que l'utilisation de cadres JavaScript pour l'interface graphique dans les applications Java est répandue.



Exemple d'une application Java typique aujourd'hui


Pour démontrer une application Web Java typique avec une interface graphique, un programme a été écrit avec émulation de la fonctionnalité Twitter de base : authentification, gestion de compte (créer, éditer, supprimer, rechercher par sous-chaîne), la page principale (propriétés du compte, flux de messages), création Tweets, abonnez-vous / désabonnez-vous.

Le backend est écrit en utilisant Spring Boot , le frontend est écrit en utilisant le framework Angular JavaScript populaire. Dans la partie Java de l'application, les composants de la famille Spring sont représentés au maximum: Spring MVC , Spring Boot , Spring Security , Spring Test , Spring Boot Admin . L'API REST backend est rendue à l'aide de Swagger .

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

( Spring Boot Angular ) , TechTrain 2019 .

Conclusions


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/fr453468/


All Articles