La evolución de las aplicaciones web Java

La historia del desarrollo de la creación de aplicaciones web en el lenguaje de programación Java con ejemplos de su uso durante el período desde la aparición de la especificación de servlet hasta la actualidad.



El artículo no pretende ser académico en su totalidad y precisión. La interpretación de todos los hechos expuestos y los ejemplos dados reflejan únicamente el conocimiento, el punto de vista y los errores del autor del artículo. El propósito de la escritura es tratar de obtener una imagen completa de la situación actual de las aplicaciones web Java . Además, la información presentada puede ser utilizada por el lector como punto de partida para futuras investigaciones independientes.

El código de muestra está en los repositorios de GitHub : una demostración de cada biblioteca y marco y la aplicación de la parte final del artículo . Al momento de escribir, hay 37 ejemplos en el primer repositorio , con el tiempo, su lista se actualizará.

Cronología de la aparición de tecnologías, bibliotecas, marcos y su popularidad.


Para una percepción más fácil, los datos se tabulan y se ilustran adicionalmente mediante diagramas. Los elementos de la tabla se agrupan condicionalmente, si es posible. Las bibliotecas y los marcos están ordenados por popularidad en orden descendente.

La información sobre popularidad se toma de dos fuentes. La primera fuente es el Índice de popularidad del marco web RebelLabs ZeroTurnaround . Su última actualización fue a fines de 2017 y estuvo acompañada por dos publicaciones de blog antes: la primera y la segunda . El autor de la segunda publicación del blog, Simon Maple , se unió a Snyk y continuó recopilando y analizando estadísticas tan útiles. Una segunda fuente es su estudio , publicado en Java Magazine, noviembre / diciembre de 2018 (pregunta 17).

Se ha agregado un conjunto de especificaciones en la parte superior de la tabla, los marcos que no se incluyeron en el índice de popularidad, pero que aún quería mencionar, se agregaron al final de la tabla.
NoTecnología, biblioteca, marco.Fecha de primera versiónFecha de la última versión establePopularidad,%
TipoSubtipoRebelLabs, 2017Revista Java, 2018
1EspecificaciónServlet12/199610/09/2019
2Jsp27/09/199910/09/2019
3J2EE
Java EE ,
Jakarta ee
12/12/199910/09/2019
4 4Jax-ws28/10/200310/09/2019
5 5Jsf11/03/200410/09/2019
6 6Jax-rs08/09/200810/09/2019
7 7PrimaveraMvc de primavera12.200508/02/201928,8236
8Bota de primavera04.201408/02/201913,3540
9 9Spring webflux09.201708/02/2019
10Caras JavaServerEclipse mojarra03.03.200430/11/201815,219
11Apache MyFaces11.200523/05/2019
12Kit de herramientas web de Google16/05/200619/10/20177.746 6
13Griales10.200507/11/20196.353
14Puntales05.200001/09/20195,49 9
15Dropwizard21/12/201108/07/20194.93
16Jugar05/05/200819/06/20193.263
17Jipster21/10/201320/09/20192,493
18 añosJax-rsApache cxf04.04.200813/08/20192,44
19RESTAURANTE09.09.200830/08/2019
20Jersey05.201010/09/2019
21Restlet01.201301.2018
22Vaadin200616/09/20192,155 5
23Costura200725/07/20131,94
24Wicket2005/0609/09/20191,912
25Tapiz200006/09/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
33MicroperfilTomee27/04/201221/06/2019
34Hamaca27/02/201405/03/2018
35Thorntail01.201617/07/2019
36Kumuluzee04/04/201629/06/2019
37Payara micro07/07/201728/08/2019
38Libertad abierta19/09/201706/09/2019
39Helidon19/09/201813/09/2019

En la primera línea de tiempo, los datos de la tabla se muestran en el mismo orden que en la tabla. Los grupos existentes se clasifican por popularidad. En grupos (especificación, Spring , JSF , JAX-RS , MicroProfile ), los elementos se ordenan en orden cronológico de aparición. Puede hacer clic en cualquiera de las imágenes para ampliarla.



En la segunda línea de tiempo, la misma información está ordenada por la fecha en que apareció la primera versión de todos los elementos. Es fácil ver que en 2001, por ejemplo, para escribir una aplicación web, solo podía elegir entre dos marcos principales existentes: Tapiz y Struts . A principios de 2014, era imposible usar Spring Boot (su primera versión oficial fue lanzada más tarde) y no tenía sentido usar Seam (dejó de existir).



El gráfico circular muestra el índice de popularidad del marco según RebelLabs a fines de 2017 . Cada uno de los marcos en el índice participa una vez, es decir, el monto total de interés es 100. El segundo diagrama muestra el resultado de un estudio de Java Magazine, 2018 . El estudio preguntó qué marcos web se utilizan, se le permitió elegir más de uno en la respuesta. Por esta razón, cada porcentaje es independiente del otro y no puede resumirse.



Especificaciones


La piedra angular de la existencia de todas las bibliotecas son los estándares y especificaciones en los que se basan. Las especificaciones existen en forma de Solicitudes de especificación de Java ( JSR ) desarrolladas a través de un procedimiento formal llamado Proceso de comunidad de Java ( JCP ).

Una lista de JSR relacionados con Java Enterprise Edition está aquí . La siguiente tabla muestra solo las dos especificaciones más significativas seleccionadas de ellas: Servlet y Java EE (esta última es un conjunto de otras especificaciones). Las primeras versiones de las especificaciones no fueron aceptadas como parte del JCP , por lo que no tienen números JSR .

Desde el 12 de septiembre de 2017, Java EE ha sido transferido a la gerencia de la Fundación Eclipse y ahora se llama Jakarta EE . JCP ha sido reemplazado por el proceso de especificación EE de Yakarta como un proceso para desarrollar y adoptar especificaciones.

Usando Servlets HTTP


Los siguientes son algunos ejemplos de cómo crear una aplicación web sin bibliotecas ni marcos. Los enlaces a la ubicación del código con un breve comentario se darán secuencialmente. Existen métodos más similares, el más obvio de ellos se demuestra.

El primer ejemplo (módulo helloworld-web-servlet-xml ) en el descriptor de implementación web.xml especifica la clase heredada de la clase abstracta HttpServlet con su propia implementación del método doGet () . Por primera vez, el archivo descriptor de implementación web.xml se mencionó en la especificación Servlet 2.2 (1999).

En el segundo ejemplo (módulo helloworld-web-servlet-annotation ), falta el web.xml descriptor de implementación web.xml . Por encima de la misma clase heredada de la clase abstracta HttpServlet, hay una anotación de WebServlet que apareció en Servlet 3.0 (2011).

El tercer ejemplo (los módulos helloworld-web-servlet-interface-jar y helloworld-web-servlet-interface-war ) es un poco más complicado. Muestra cómo usar la implementación de la interfaz ServletContainerInitializer , que también apareció en Servlet 3.0 . En el primer módulo helloworld-web-servlet-interface-jar todavía no hay un web.xml descriptor de implementación web.xml , hay una clase derivada de la clase abstracta HttpServlet . Servlet 3.0 permite la implementación de la interfaz ServletContainerInitializer para agregar componentes de servlet mediante programación, incluyendo realizar registro de servlet. La clase de implementación de la interfaz ServletContainerInitializer que utiliza el concepto de interfaz de proveedor de servicios ( SPI ) se configura especificando su nombre en el archivo META-INF/services/javax.servlet.ServletContainerInitializer . El primer módulo crea un archivo JAR. El archivo WAR crea el segundo módulo helloworld-web-servlet-interface-war , el primer módulo se especifica en la lista de dependencias. Los marcos JSF y Spring utilizan un enfoque similar para implementar la interfaz ServletContainerInitializer en sus clases FacesInitializer y SpringServletContainerInitializer , respectivamente.

Servlet 3.0 también introdujo servlets asíncronos, en Servlet 3.1 (2013) - E / S sin bloqueo, en Servlet 4.0 (2017) - Soporte HTTP / 2 .

La edad antes de la primavera


tapiz Apache Tapestry es un verdadero marco de aplicaciones web de larga duración. Su primera versión fue lanzada en 2000; las nuevas versiones continúan lanzándose ahora. Al diseñar Tapestry , se tomaron prestadas ideas de WebObjects , un marco web que apareció varios años antes. Las aplicaciones que usan Tapestry (por ejemplo, el módulo helloworld-web-tapestry ) usan la arquitectura modular y el enlace de los componentes de la interfaz de usuario de las páginas web con sus clases Java correspondientes.

puntales Apache Struts apareció casi simultáneamente con el marco anterior, en mayo de 2000, y también continúa desarrollándose hasta el día de hoy. En el ejemplo basado en él (el módulo helloworld-web-struts ), puede ver en el archivo descriptor de despliegue web.xml una indicación de la clase StrutsPrepareAndExecuteFilter como filtro. Esta clase sirve como administrador de solicitudes, eligiendo una acción correspondiente a la solicitud. Apache Struts , como Tapestry , se basa en el patrón de diseño MVC .

jsf En marzo de 2004, se lanzó la especificación JavaServer Faces y dos implementaciones sucesivas de la misma: ahora llamada Eclipse Mojarra (anteriormente Sun JSF Reference Implementation , JSF RI , Mojarra , Oracle Mojarra ) y Apache MyFaces . El enfoque principal respaldado por la especificación es el uso de componentes. Ambos ejemplos ( módulos helloworld-web-jsf-mojarra y helloworld-web-jsf-myfaces ) son absolutamente idénticos entre sí, con la excepción de las bibliotecas de dependencias. Las aplicaciones definen y muestran en las páginas web la versión de la implementación de la especificación JSF , el nombre de la implementación ( Mojarra o MyFaces ) y la versión de la implementación.

wicket Junio ​​de 2005 y el lanzamiento de la primera versión del framework Wicket , ideológicamente similar a Tapestry y JavaServer Faces . Un enfoque orientado a componentes y vinculación de plantillas HTML para páginas web con clases Java . Desde junio de 2007, el marco pertenece a Apache Software Foundation , cambiando su nombre a Apache Wicket . El pico de popularidad del marco se produjo aproximadamente en 2008-2009, seguido de una disminución gradual del interés en él. Se siguen lanzando nuevas versiones; se puede ver una aplicación de ejemplo en el módulo helloworld-web-wicket .

griales En octubre de 2005 , se lanzó la primera versión de Grails , un marco para crear aplicaciones web escritas en el lenguaje Groovy JVM . Como el nombre del producto implica, Ruby on Rails , un marco escrito en Ruby, tuvo una fuerte influencia en su creación. También basado en el patrón MVC . Una característica distintiva es el uso de archivos de vista GSP ( Groovy Server Pages ) como plantillas. Un ejemplo (módulo helloworld-web-grails ) se crea, construye y puede ejecutarse utilizando el complemento Grails Maven , un complemento para Maven .

Spring MVC, Spring Boot y Spring WebFlux


la primavera La primera versión de Spring Framework , incluida Spring MVC , apareció en diciembre de 2005. La clase del servlet HTTP en él es DispatcherServlet . Los siguientes son algunos ejemplos en orden cronológico de la aparición de características (nuevas versiones de la especificación Servlet , lanzadas por primera vez Spring Boot en abril de 2014, luego Spring WebFlux en septiembre de 2017), que se utilizan en ellas.

En el primer ejemplo (el módulo helloworld-web-spring-mvc-xml ), el web.xml descriptor de implementación web.xml se especifica como el servlet DispatcherServlet . En el controlador con el único método que procesa la solicitud GET, hay anotaciones correspondientes ( Controlador y RequestMapping ). La vista es un archivo JSP .

En el segundo ejemplo (el módulo helloworld-web-spring-mvc-java ), falta el web.xml descriptor de implementación web.xml y la característica introducida en Servlet 3.0 se utiliza para realizar la configuración del software. La clase heredada de AbstractAnnotationConfigDispatcherServletInitializer (en última instancia, implementando la implementación de la interfaz ServletContainerInitializer con SPI ) y JavaConfig (la configuración usando el código del programa con la anotación de configuración se usan juntos ).

El tercer ejemplo (módulo helloworld-web-spring-boot-mvc ) demuestra una simplificación significativa del proyecto al tiempo que mantiene la misma funcionalidad gracias a la llegada de Spring Boot . Además de la clase de controlador, adicionalmente solo hay una clase heredada de SpringBootServletInitializer y anotada por SpringBootApplication .

El cuarto ejemplo (el módulo helloworld-web-spring-boot-webflux ) muestra, junto con Spring Boot, el uso de Spring WebFlux , que se agregó al Spring Framework relativamente recientemente. Spring WebFlux utiliza principios reactivos y Project Reactor . De los dos enfoques principales ( estilo funcional y basado en anotaciones ), el primero está involucrado en el ejemplo.

Después de la llegada de la primavera, los años 2000


vaadin El desarrollo de Vaadin comenzó en 2002 como complemento de otro marco, Millstone 3 . Durante 2006, lo que se creó fue enmarcado como un producto comercial terminado. Hasta mayo de 2009, se llamaba IT Mill Toolkit , solo después de ese momento se convirtió en Vaadin . A finales de 2007, su parte de cliente previamente implementada de forma independiente fue reemplazada por Google Web Toolkit ( GWT ). En el ejemplo (módulo helloworld-web-vaadin ), se puede ver que solo hay un archivo de clase Java en el que todos los componentes de la interfaz de usuario se crean mediante programación, mientras se ocultan detalles técnicos de bajo nivel.

gwt Un producto muy interesante, Google Web Toolkit ( GWT ), apareció en mayo de 2006, la última versión se lanzó hace dos años. Para escribir las partes del servidor y del cliente, tiene la oportunidad de usar el mismo lenguaje Java . Un compilador especial convierte el código del cliente en Java a JavaScript . El ejemplo consta de tres módulos: helloworld-web-gwt-client (parte del cliente), helloworld-web-gwt-server (parte del servidor) y helloworld-web-gwt-shared (código común para partes de cliente y servidor). Durante el desarrollo, puede usar el conveniente complemento Maven para iniciar la parte del cliente en modo Super Dev , en el que el denominado Code Server facilita la recompilación del código Java modificado.

costura Seam comenzó su vida en mayo de 2007 y dejó de existir en 2012. Se basó en Enterprise JavaBeans ( EJB3 ) y JavaServer Faces ( JSF ). Desarrollado por JBoss , entonces parte de Red Hat . Propuso varios conceptos interesantes (por ejemplo, biyección , para los cuales había anotaciones correspondientes ). El sitio del marco todavía existe, pero en algunas de sus secciones algunos enlaces ya no son relevantes. Una aplicación de ejemplo está en el módulo helloworld-web-seam .

jax-rs La primera versión de la especificación API de Java para RESTful Web Services ( JAX-RS ) se lanzó en 2008 ( JSR 311 ), luego se actualizó la especificación ( JSR 339 , JSR 370 ). Las implementaciones más populares de JAX-RS son los marcos Apache CXF (la primera versión es abril de 2008), RESTEasy (septiembre de 2008), Jersey (mayo de 2010) y Restlet (enero de 2013). Ejemplos de su uso se encuentran en los módulos helloworld-web-jaxrs-apache-cxf , helloworld-web-jaxrs-resteasy , helloworld-web-jaxrs-jersey y helloworld-web-jaxrs-restlet, respectivamente .

jugar Play Framework apareció en mayo de 2008. Escrito en el lenguaje de programación Scala JVM . Le permite crear aplicaciones web basadas en ella tanto en Scala como en Java . Una característica peculiar de los desarrolladores de Play es su compromiso con la herramienta de compilación sbt . Por esta razón, para escribir un ejemplo ( helloworld-web-play module), tuve que hacer algunos esfuerzos para construir bajo Maven , usando el complemento apropiado para esto.

2010, la última vez


sparkjava En 2011, se lanzó la primera versión del maravilloso microframework Spark , lanzado bajo la influencia de Sinatra , escrito en Ruby . El laconismo, la ligereza y el minimalismo de la sintaxis son inherentes a ella. Un ejemplo ( módulo helloworld-web-sparkjava ) demuestra cómo puede escribir una aplicación completa en solo un par de líneas. Las capacidades del marco pueden ser suficientes si no necesita algo demasiado complicado en su aplicación.

vertx En 2011, apareció Vert.x , un marco orientado a eventos que se ejecuta en la JVM . Escrito bajo la influencia significativa de Node.js , originalmente llamado Node.x. Tiene una naturaleza multilingüe, lo que le permite utilizar Java , JavaScript , Groovy , Ruby , Ceylon , Scala o Kotlin cuando utiliza el marco. Basado en la biblioteca Netty , tiene muchas características y ventajas distintivas. Un ejemplo está en el módulo helloworld-web-vertx .

mago Diciembre de 2011 fue el momento inicial para la existencia de Dropwizard , cuyos autores posicionan su producto como algo entre la biblioteca y el marco. Las tres partes principales en las que consiste son las bibliotecas Jetty ( HTTP ), Jersey ( JAX-RS ) y Jackson ( JSON ). Continúa desarrollándose en la actualidad, incluso teniendo algo de popularidad. El ejemplo ( módulo helloworld-web-dropwizard ) muestra una estructura típica de una aplicación web basada en Dropwizard .

Ratpack Ratpack es otro marco (además de Spark ), inspirado en la biblioteca Sinatra y escrito en gran parte en el lenguaje Groovy JVM . La conexión de Frank Sinatra con los llamados paquete de ratas ("paquete de ratas"). La primera versión del marco se lanzó en 2013, se siguen lanzando nuevas versiones. Basado en la biblioteca Netty , rápido, minimalista, fácil de usar, altamente escalable. Se puede ver un ejemplo en el módulo helloworld-web-ratpack .

jhipster Octubre de 2013, el advenimiento del curioso proyecto JHipster , un generador de marcos de aplicaciones web. Para construir la parte del cliente, se admite el marco de JavaScript Angular , React y Vue (este último aún se admite en modo experimental ). El backend se basa en Spring Boot . Para construir el proyecto, se puede seleccionar Maven o Gradle . Un ejemplo de una aplicación generada por JHipster se encuentra en el módulo helloworld-web-jhipster .

rapidoide En agosto de 2014, se lanzó la primera versión del marco Rapidoid , simple, rápida y modular. El módulo recomendado con el que se recomienda comenzar a usar el marco incluye la interacción a través de HTTP , las bibliotecas Hibernate , Hibernate Validator , MySQL Connector y Logback . Con necesidades crecientes, el conjunto de módulos usados ​​se puede ampliar. Un ejemplo ( módulo helloworld-web-rapidoid ) le permite evaluar el minimalismo del código requerido para obtener una aplicación web simple.

lagom Marzo de 2016, lanzamiento del marco de trabajo Lagom . Los autores de este producto de software posicionan su aplicación para dividir viejas aplicaciones monolíticas en microservicios reactivos que se escalan bien durante su operación. El marco está basado en Akka y Play Framework . Los lenguajes de programación Java o Scala se pueden usar para desarrollar sus aplicaciones. Un ejemplo basado en Lagom se encuentra en los módulos helloworld-web-lagom-api y helloworld-web-lagom-impl .

javalin Más recientemente, en mayo de 2017, se lanzó la biblioteca Javalin , liviana y simple. Sus propios creadores lo indican en agradecimiento a los autores de los ya mencionados marcos Sinatra y Spark . La biblioteca se centra en los lenguajes Java y Kotlin . Garantiza la ausencia de anotaciones y la necesidad de heredar cualquier clase de biblioteca, con el código más conciso posible, soporte para WebSocket , HTTP / 2 y solicitudes asíncronas. Se puede ver un ejemplo basado en él en el módulo helloworld-web-javalin .

micronaut La estrella en ascenso entre los frameworks web, cuya primera versión apareció hace solo un año, en octubre de 2018, es Micronaut . Admite los lenguajes de programación Java , Groovy y Kotlin JVM . Su ventaja significativa es un inicio rápido de aplicaciones basadas en él y un bajo consumo de memoria. Esto se garantiza mediante la implementación de dependencias en la etapa de compilación, y no en tiempo de ejecución. Otra de las características es un excelente soporte para la programación reactiva, es posible el uso de las bibliotecas RxJava , Reactor y Akka . Un ejemplo ( módulo helloworld-web-micronaut ) demuestra cómo construir una aplicación simple basada en Micronaut .

Microperfil


microperfil Debido a la pesadez actual de Java EE , varias compañías necesitan microservicios para desarrollar un conjunto de especificaciones livianas, lo que se hizo; en septiembre de 2016 se lanzó MicroProfile 1.0. Inicialmente, el conjunto incluía solo tres especificaciones ( CDI , JAX-RS y JSON-P ). Los requisitos aumentaron gradualmente; en la versión 3.0, la lista de especificaciones ha crecido significativamente.

NoEspecificaciónVersión de microperfil
1.01.11,21.31.42,02.12.2 2.23.0
1CDI1,21,21,21,21,22,02,02,02,0
2Config1.01.11,21.31.31.31.31.3
3Tolerancia a fallos1.01.01.11.11.12,02,0
4 4Salud1.01.01.01.01.01.02,0
5 5Jax-rs2,02,02,02,02,02.12.12.12.1
6 6Json-b1.01.01.01.0
7 7Json-p1.01.01.01.01.01.11.11.11.1
8JWT Auth1.01.01.11.11.11.11.1
9 9Métricas1.01.11.11.11.11.12,0
10API abierta1.01.01.01.01.11.1
11Trazado abierto1.01.11.11,21.31.3
12Escriba Safe Rest Client1.01.11.11.11,21.3

Actualmente, existen marcos web que satisfacen MicroProfile en diversos grados. Siete de ellos fueron elegidos para demostración, la siguiente es la correspondencia de las versiones de marco a las versiones de MicroProfile . La información completa sobre todos los marcos existentes que implementan MicroProfile está aquí .
NoMarcoVersión de microperfil
1.01.11,21.31.42,02.12.2 2.23.0
1Tomee7.1.08.0.0-M18.0.0-M28.0.0-M3
2Hamaca2,0
3Thorntail2.1.0
Final
2.3.0
Final
2.4.0
Final
2.5.0
Final
4 4Kumuluzee2.1.02.5.23.0.03.2.03.2.03.2.03.2.03.5.0
5 5Payara micro174181182183183191192
6 6Libertad abierta17.0.
0,3
18.0.
0.1
18.0.
0,3
18.0.
0,3
18.0.
0.4 0.4
19.0.
0,3
19.0.
0.7
7 7Helidon0.9.41.01.2.01.2.01.2.01.2.01.2.0

microperfil1 El primer grupo de marcos incluye los que ya existían en el momento del lanzamiento de MicroProfile 1.0: TomEE (la primera versión se lanzó en abril de 2012), Hammock (febrero de 2014), Thorntail (anteriormente llamado WildFly Swarm , enero de 2016) y KumuluzEE (abril de 2016). La mayoría de las veces, el cumplimiento de un nuevo conjunto de especificaciones se logró al eliminar del producto existente todo lo que era superfluo. Ejemplos de uso se encuentran en los módulos helloworld-web-microprofile-tomee , helloworld-web-microprofile-hammock , helloworld-web-microprofile-thorntail y helloworld-web-microprofile-kumuluzee .

microperfil2 El segundo grupo de marcos incluye los que aparecieron después de la primera versión de MicroProfile : Payara Micro (julio de 2017), Open Liberty (septiembre de 2017) y Helidon (septiembre de 2018). Para estos marcos, se hizo posible lo contrario: desde el comienzo de la implementación, por ejemplo, Helidon se desarrolló específicamente para el cumplimiento de MicroProfile , por lo tanto, no tiene nada superfluo en su composición. Se pueden ver ejemplos de aplicaciones de construcción en los módulos helloworld-web-microprofile-payara , helloworld-web-microprofile-openliberty y helloworld-web-microprofile-helidon .

Contenedores de Servlet y Servidores de Aplicaciones


Las aplicaciones web se ejecutan en software especializado que implementa las especificaciones relevantes (por ejemplo, la API de Servlet ). A continuación se muestran los contenedores de servlets y servidores de aplicaciones más populares en este momento. El porcentaje de popularidad también se toma de los resultados del estudio (pregunta 20).
NoServlet contenedor, servidores de aplicacionesFecha de primera versiónFecha de la última versión establePopularidad,%
FamiliaNombre
1TomcatTomcat11/199817/08/201941
2Tomee04.201221/06/2019
3JbossJboss eap199922/01/201915
4 4Mosca salvaje199907/03/2019
5 5Embarcadero200014/08/20199 9
6 6Servidor weblogic11/199730/08/20176 6
7 7WebsphereWebSphere Application Server199802/04/20195 5
8Libertad abierta09.201714/08/2019
9 9GlassfishServidor Glassfish06/06/200528/01/20195 5
10Servidor de Payara31/10/201429/08/2019

La línea de tiempo muestra la vida útil de cada uno de los productos de software en la tabla. Puede ver la secuencia de su aparición y el momento del lanzamiento de las últimas versiones.



Ahora se usa cada vez más contenedorización al implementar y publicar aplicaciones, por lo que el uso de servidores de aplicaciones es cada vez menos relevante.

Uso de lenguajes distintos de Java en aplicaciones


Recientemente, ha habido una tendencia a crear aplicaciones híbridas, como uno de los componentes de los cuales hay código Java . De acuerdo con la tendencia en la revista Java , cuyo tema principal era el lenguaje de programación Java , en la columna del editor en jefe en la edición de enero / febrero de 2017 , se proclamó "El futuro políglota" y la inclusión de JavaScript en la zona de interés.

En el estudio ya mencionado anteriormente , en la pregunta 16, estaban interesados ​​en qué lenguajes no JVM se utilizan en las aplicaciones JVM . El líder (57%) fue JavaScript , utilizado en la interfaz. Dado el hecho de que algunas aplicaciones web no tienen una GUI (servicios, microservicios, servicios), podemos decir con confianza que el uso de marcos JavaScript para la interfaz gráfica en aplicaciones Java está muy extendido.



Ejemplo de una aplicación típica de Java hoy


Para demostrar una aplicación web Java típica con una interfaz gráfica, se escribió un programa con la emulación de la funcionalidad básica de Twitter : autenticación, gestión de cuentas (crear, editar, eliminar, buscar por subcadena), la página principal (propiedades de la cuenta, alimentación de mensajes), creación Tweets, suscribirse / darse de baja.

El backend está escrito usando Spring Boot , el frontend está escrito usando el popular framework Angular JavaScript . En la parte Java de la aplicación, los componentes de la familia Spring están representados al máximo: Spring MVC , Spring Boot , Spring Security , Spring Test , Spring Boot Admin . La API REST de back-end se procesa usando Swagger .

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

( Spring Boot Angular ) , TechTrain 2019 .

Conclusiones


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


All Articles