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.
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
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.
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 .

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.

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 .

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

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
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.

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é.
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 .

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 .
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

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.

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 .

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 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 .

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 .

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.

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 .
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 .

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

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é.
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 .

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 .

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).
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 GroupSpring :
- «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 .