JavaRush /Blog Java /Random-ES /Pausa para el café #157. Uso de Java para aplicaciones we...

Pausa para el café #157. Uso de Java para aplicaciones web front-end en 2022

Publicado en el grupo Random-ES
Fuente: Nocodefunctions Le traemos a su atención un artículo sobre la experiencia de desarrollar una aplicación web independiente utilizando Java. Pausa para el café #157.  Uso de Java para aplicaciones web front-end en 2022 - 1

Java para la interfaz: ¿es realmente posible?

Mucha gente cree que usar Java para el desarrollo front-end es simplemente imposible: después de todo, Java está diseñado para el back-end. Sí, hace mucho tiempo, los subprogramas de Java y Java Webstart le permitían ejecutar aplicaciones Java desde el navegador. Pero esto es historia antigua, tan antigua como los complementos Flash. Pero incluso sin subprogramas, existe una forma de utilizar Java para el front-end: estos son JSP (Java Server Pages), que muchos escolares estudiaron en lecciones de informática. Sin embargo, aunque JSP todavía se analiza en algunos libros de Java, la tecnología ha quedado obsoleta desde la década de 2010. ¿Es realmente otro callejón sin salida? También existen marcos que permiten a los desarrolladores de Java "transpilar" (transformar de manera compleja) su código en JavaScript utilizando Google Web Toolkit (GWT, tampoco es muy nuevo ) o mediante J2Cl (también de Google). Es importante tener en cuenta que GWT y J2Cl no son adecuados para principiantes; son herramientas más empresariales desarrolladas por Google para su uso en proyectos grandes.

El héroe anónimo de Java para la interfaz: Jakarta Faces (JSF)

Java Server Faces (JSF), ahora conocido como “Jakarta Faces”, existe al menos desde principios de la década de 2010. Siempre me sorprende que sea poco conocido y rara vez se mencione porque este marco facilita el desarrollo de aplicaciones web de forma rápida, segura y confiable. JSF es fácil de aprender y aprovecha al máximo el ecosistema Java. Así es como, por ejemplo, se crea una página web con contenido dinámico:
  • Cree una página html (con la extensión .xhtml).
  • Cambie las etiquetas html <head> y <body> por etiquetas <h:head> y <h:body>.
  • Ahora, para mostrar contenido dinámico llamando a alguna propiedad en el backend, simplemente coloque este código después del hashtag y entre las barras de control:

    #{backendscript.myText}
Luego cree un archivo Backendscript.java en su backend, agregue una variable llamada String myText = "¡Hola! ¡Bienvenido a mi página!" . Se mostrará en la página web. JSF es realmente muy simple. Está bien documentado gracias a muchas preguntas sobre Stackoverflow , documentación oficial , varios libros ( este enlace , y también me gustan los libros de David Heffelfinger ) y, por supuesto, vídeos de Youtube .

¿Es JSF complicado? ¿Cuáles son sus ventajas?

JSF no es nada complicado. Además:
  1. Está bien integrado con los IDE de Java clásicos (NetBeans, IntelliJ IDEA y Eclipse). Cada IDE proporciona:
    • Proyectos de plantilla que completan la plantilla para la configuración de Maven (que, por cierto, es muy sencilla).
    • Herramientas de depuración (con recarga en caliente, al menos para NetBeans).
    • Potentes herramientas de autocompletado, refactorización, navegación y resaltado de errores para el ecosistema Java. El IDE puede proporcionar información útil sobre cualquier clase que mencione en la página html (como la #{backendscript.myText} mencionada anteriormente). ¡Las páginas HTML realmente se integrarán con el resto de su código base!
  2. Maneja variaciones de código complejas en páginas html con mucha facilidad.
    • ¿Necesita actualizar parte de una página con un simple clic en un botón? Agregue una propiedad de actualización a su botón, seguida del ID del componente que desea actualizar.
    • En cuanto a actualización y contenido dinámico: me gusta mucho la simplicidad de JSF: el frontend actualiza el backend, se actualiza a sí mismo o el backend actualiza el frontend. Todos estos son los requisitos básicos de una aplicación web y están presentes aquí.
    • Si desea que el usuario pueda descargar un archivo o varios archivos con condiciones para los tipos y tamaños de archivos, simplemente agregue una línea al código con parámetros claros .
    • ¿Necesita crear un sitio web en varios idiomas? Agregue la etiqueta <f:view> a su html y obtenga el idioma del usuario con solo una línea en el backend.
  3. Puede agregar y mezclar etiquetas HTML, scripts JS y CSS, y todo está optimizado para SEO.
Tienes control total sobre el html generado por JSF y siempre puedes agregar código html y js. Esto hace que sea más fácil colaborar con diseñadores y desarrolladores front-end que no conocen o no se preocupan por JSF. Cuando trabajaba con CSS, contaba con la ayuda de un diseñador que podía trabajar con las páginas HTML que creaba usando JSF, realizando los cambios necesarios sin ninguna dificultad. JSF genera código HTML que puede ver y leer en su navegador. Esto es muy útil para depurar con herramientas de desarrollo habituales y verificar que sus acciones de SEO se implementen correctamente.

Primefaces: enorme lista de componentes y temas JSF gratuitos

JSF viene con una larga lista de componentes listos para usar que crean las partes clásicas de una página HTML, para que no tengas que hacerlo tú mismo. Por ejemplo, utilice la etiqueta <h:dataTable> para crear una tabla que muestre datos específicos cargados desde su backend, sin tener que volver a crearlos desde cero. Y hay una opción mejor: Prime Tek ha desarrollado un conjunto de componentes de código abierto llamado Primefaces . Vienen con características adicionales y tienen varias ventajas. Por ejemplo, en lugar de <h:dataTable>, simplemente use la etiqueta Primefaces <p:dataTable>. Esto crea una tabla de datos básica a la que puede agregar fácilmente cambios de columna , columnas dinámicas o funciones de edición en la tabla.

¿Pero Java es lento y pesado?

1. ¿Java es lento?

No. Lo curioso es que los frameworks JS como React, Angular y Vue se crearon con la promesa de ser más rápidos e inteligentes que JSF en Java, porque inmediatamente enviaban toda la lógica de la aplicación al navegador del visitante del sitio. JSF funciona de manera diferente: cuando un usuario llama a una página (por ejemplo, https://nocodefunctions.com), la aplicación en el backend genera el html solo para esa página y lo devuelve. Esto se llama "renderizado del lado del servidor" (SSR). En la práctica, las aplicaciones de una sola página pueden requerir mucho tiempo para que el usuario recupere y cargue los archivos javascript que componen la aplicación completa. Esto puede provocar una mala experiencia del usuario (tener que esperar a que se cargue la primera página) y problemas de SEO. Como resultado, la renderización del lado del servidor estilo Java ha recuperado popularidad, ya que se considera superior a la renderización del lado del cliente en términos de velocidad y rendimiento. Están surgiendo nuevos marcos SSR que requieren que los desarrolladores acostumbrados a la representación del lado del cliente manejen y combinen estas dos lógicas diferentes.

2. ¿Java es difícil?

No. Lo que necesita para implementar una aplicación JSF:
  • La aplicación en sí. Una aplicación JSF simple de “hola mundo” probablemente tenga 10 KB o menos.
  • Opcionales son Primefaces (discutidos anteriormente) si necesita componentes de mayor calidad. Se trata de 4,5 MB adicionales .
Ahora ejecútelo todo en el servidor. Para hacer esto necesitas:
  1. Tener un servidor en la nube o en otro lugar. Para la versión de prueba de Nocodefunctions (https://test.nocodefunctions.com) utilizo Hetzner, donde alquilo un servidor bare metal con 2 GB de RAM por 4,15 euros al mes. Podría usar menos RAM, pero mi aplicación proporciona algunos servicios con uso intensivo de datos y necesita caber en la memoria. La versión real (no de prueba) de nocodefunctions se ejecuta en un servidor más grande (también con Hetzner) para soportar tareas intensivas en datos de más usuarios en paralelo, por menos de 50 € al mes.

  2. Debes tener Java instalado. Se trata de una descarga de un único archivo de menos de 200 MB para Mac, Win o Linux, completamente gratuita incluso para uso comercial.

  3. Necesita tener un servidor web Java para ejecutarlo. Muchos de ellos. Personalmente, uso Payara Micro (Community Edition), que es gratuito y requiere una única descarga de archivo de 77 MB.

  4. Inicie su aplicación.

Conclusión: ¡piense en Java!

Siento que algunos programadores piensan que Python, Ruby, PHP, NodeJS + React... son la única opción al iniciar una pequeña aplicación web. Pero ahora espero que también consideren Java + JSF para su próximo proyecto.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION