JHipster (Java Hipster): una plataforma de desarrollo web de pila completa para el desarrollador moderno

Según la encuesta Stack Overflow Developer de 2019 , alrededor del 51 % de los desarrolladores son desarrolladores full-stack . Entonces, ¿qué hace que un desarrollador sea un desarrollador de pila completa? Un desarrollador de pila completa es el que juega con todas las facetas del proceso de desarrollo, desde el front-end hasta el back-end, las bases de datos, las pruebas y la depuración. Aquí, stack se refiere a una amplia variedad de componentes y herramientas que contribuyen al desarrollo de una aplicación. 

JHipster (Java Hipster) - A Full Stack Web Development Platform for the Modern Developer

En esta función, hablaremos de JHipster , una plataforma de desarrollo de pila completa que puede eliminar el 70 % de su esfuerzo al escribir código repetitivo y configurar bibliotecas. JHipster le ayuda a centrarse en la lógica empresarial en lugar de dedicar tiempo a la integración de tecnologías . Es compatible con una amplia gama de tecnologías modernas de aplicaciones web. Veamos las diferentes tecnologías compatibles con JHipster.

  • Tecnologías del lado del cliente
  • Tecnologías del lado del servidor
  • Otras herramientas de apoyo
  • Opciones de implementación

Tecnologías del lado del cliente

En los últimos años, las tecnologías del lado del cliente han crecido rápidamente desde aplicaciones de una sola página hasta el marco MVVM (Model-View-ViewModel). Este avance tecnológico se volvió abrumador para los desarrolladores. La buena noticia es que JHipster admite una amplia gama de tecnologías del lado del cliente. Aquí, discutiremos las importantes tecnologías del lado del cliente compatibles con JHipster.

  • Tecnologías de interfaz de usuario
  • Marco MVVM
  • Marco de prueba
  • Otras herramientas

1. Tecnologías de interfaz de usuario

JHipster admite varias tecnologías de interfaz de usuario. Echemos un vistazo a algunas tecnologías de interfaz de usuario.

  • HTML5 y CSS3 : HTML5 es la última versión de HTML que tiene nuevos elementos, atributos y comportamiento. El lanzamiento ha ofrecido soporte para funciones como conectividad (Web Sockets y WebRTC), almacenamiento fuera de línea, acceso a dispositivos, gráficos 2D/3D (Canvas, WebGL y SVG), y más. Considerando que, CSS3 es la última versión de CSS. Ofrece muchas funciones, como consulta de medios, flexbox, animaciones, etc.
     
  • Bootstrap : Bootstrap es el marco de interfaz de usuario más popular del mundo. Cuenta con variables SaaS y Mixins y también es compatible con potentes complementos de JavaScript.

2. Marco MVVM

Model-View-View-Model (MVVM) es un patrón arquitectónico que separa la interfaz de usuario del lado del servidor. JHipster es compatible con los marcos Angular y React. 

A. Angular

Angular es un marco MVVM basado en TypeScript para crear aplicaciones web móviles y de escritorio. Algunas características de Angular son las siguientes:

  • Angular garantiza una instalación de alto rendimiento, fuera de línea y paso cero.
  • Con el nuevo enrutador de componentes, proporciona una división de código automática y una carga más rápida de la aplicación.
  • Ofrece una sintaxis de plantilla sencilla y eficaz para las vistas de la interfaz de usuario.
  • Utiliza estrategias de Cordova, Ionic o NativeScript para aplicaciones móviles.
  • Proporciona una poderosa herramienta de línea de comandos, llamada Angular CLI, para desarrollar y mantener aplicaciones angulares.
  • También introdujo conceptos como Ahead of Time Compilation (AOT), carga diferida, programación reactiva, etc.

B. Reaccionar

React es una biblioteca de JavaScript para desarrollar interfaces de usuario y utiliza una sintaxis similar a XML llamada JSX para escribir componentes de React. No es un marco MVVM completamente establecido, solo se ocupa de la representación de la interfaz de usuario. Pero, React permite interactuar con otras bibliotecas para ofrecer funciones similares a Angular. Estas bibliotecas incluyen React Router, Redux, MobX, etc. Normalmente, JHipster usa TypeScript para codificar React. Pero también se puede codificar usando JavaScript.

3. Marco de prueba

Debido al crecimiento significativo del marco del lado del cliente, también surge la necesidad de marcos de prueba del lado del cliente. JHipster admite varios marcos de prueba del lado del cliente para pruebas unitarias y también para pruebas de extremo a extremo. Son los siguientes:

  • Jasmine: es un marco de prueba para código JavaScript; Jasmine es un marco de prueba de unidades basado en el comportamiento y tiene una sintaxis fácil de leer.
  • Mocha: Mocha es un marco de prueba repleto de funciones para código JavaScript. Proporciona numerosas funciones, como detección de fugas de variables globales, soporte asincrónico simple, informes de cobertura de prueba, soporte de módulos ES nativos de Node, soporte de depurador de Node y más.
  • Quint: Quint es un poderoso marco de prueba de JavaScript fácil de usar. Solo requiere una configuración mínima para proyectos basados ​​en navegador y configuración cero para proyectos de Node.js. Este marco proporciona la flexibilidad para ejecutar la prueba en cualquier lugar y tiene API flexibles para aserciones personalizadas.
  • Transportador: es un marco de prueba de extremo a extremo desarrollado para aplicaciones Angular y Angular JS. Transportador se basa en WebDriverJS que ofrece una fácil interacción del usuario con la aplicación. Y también, puede ejecutar automáticamente la siguiente tarea al terminar las tareas pendientes.4.

4. Otras herramientas

Algunas de las otras herramientas compatibles con JHipster son:

  • Webpack: es un paquete que tiene complementos flexibles para agrupar sus scripts, imágenes, estilos, etc.
  • BrowserSync: es una herramienta de prueba sincronizada del navegador que ahorra tiempo. BrowserSync está repleto de características como la recarga automática en los cambios de archivos, interacciones de interfaz de usuario sincronizadas, etc. Al integrarse con Webpack/GulpJS, puede experimentar una configuración de desarrollo productiva.
  • Karma: Karma es un corredor de pruebas que ejecuta códigos de prueba de JavaScript. Proporciona un entorno de prueba productivo mediante la creación de un servidor web donde elimina la necesidad de establecer un montón de configuración. Admite marcos de prueba como Jasmine, Mocha.

Tecnologías del lado del servidor

Con la evolución de las tecnologías del lado del servidor, los desarrolladores pudieron proporcionar un amplio conjunto de funciones utilizando una amplia gama de herramientas y tecnologías. Echemos un vistazo a las tecnologías importantes compatibles con JHipster.

  • Marco de aplicación
  • Seguridad
  • Herramientas de prueba
  • Herramientas de construcción
  • Opciones de base de datos

1. Marco de aplicación

Con el surgimiento del framework Spring, hubo una reducción significativa en la demanda de JavaEE. Además, Hibernate es otro concepto central que debe tenerse en cuenta. Discutámoslos a continuación.

  • Spring Framework: Spring es el marco de aplicaciones web de Java más popular que hace que Java sea moderno, productivo, reactivo y listo para la nube. Spring utiliza el principio de inversión de control (IoC) que proporciona inyección de dependencia y contexto de aplicación. Una de las características destacadas de Spring es que combina IoC, Programación Orientada a Aspectos (AOP) y abstracción tecnológica de manera persistente. Algunos módulos en el marco Spring son Spring Boot , Spring Security, Spring MVC, Spring data y más.
     
  • Hibernate: Hibernate es la herramienta de asignación relacional de objetos (ORM) más conocida para Java que asigna un modelo de dominio orientado a objetos a un esquema de base de datos relacional. Utiliza anotaciones de Java para el mapeo y también implementa una capa de acceso a datos basada en la API de persistencia de Java (JPA). Algunas otras características proporcionadas por Hibernate son:
    • Búsqueda de texto completo para su modelo de dominio.
    • Restricciones basadas en anotaciones.
    • Persistencia del modelo de dominio para almacenes de datos NoSQL.
    • Herramientas de línea de comandos y complementos IDE.

2. Seguridad 

JHipster admite una amplia variedad de mecanismos de seguridad. Son los siguientes:

  • JWT: los tokens web JSON son un método RFC 7519 abierto y estándar de la industria que proporciona seguridad entre dos partes. Aquí, el servidor proporciona un token JWT al cliente al validar con éxito las credenciales del cliente.
  • Sesión: es un mecanismo de autenticación tradicional en el que el servidor crea y mantiene una sesión para los clientes que iniciaron sesión correctamente. JHipster proporciona más complementos además de este mecanismo tradicional.
  • OAuth2: Proporciona un flujo de autorización y autenticación específico para las aplicaciones. OAuth2 es más complicado en comparación con otros mecanismos de autenticación. Aquí, utiliza el mecanismo de alcance donde el acceso del usuario puede limitarse a ciertos servicios de una aplicación. JHipster utiliza la conexión OpenID para admitir el mecanismo OAuth2.

3. Herramientas de prueba

Las herramientas de prueba admitidas en JHipster son las siguientes.

  • JUnit: JUnit es un marco de pruebas de Java, que se utiliza principalmente para pruebas unitarias. Pero también se puede usar para pruebas de integración cuando se combina con el marco Spring Test.
  • Gatling: Es una herramienta para realizar pruebas de carga para tu aplicación web. Gatling usa Scala DSL para escribir especificaciones de prueba y es una herramienta esencial para probar el rendimiento de aplicaciones críticas.
  • Pepino: es un marco de prueba de desarrollo impulsado por el comportamiento (BDD). El pepino se utiliza principalmente para pruebas de aceptación.

4. Herramientas de construcción

Maven y Gradle son las dos herramientas de compilación del lado del servidor compatibles con JHipster.

  • Maven: es una herramienta de gestión de proyectos de software que gestiona la creación, los informes y la documentación de un proyecto. Maven utiliza el concepto del modelo de objeto del proyecto (POM) para establecer el proceso de construcción. Tiene un rico conjunto de complementos.
  • Gradle: es una herramienta de compilación que acelera la productividad del desarrollador. Gradle ayuda a construir, automatizar y entregar proyectos a un ritmo rápido. Utiliza Groovy DSL para establecer el plan de compilación y las dependencias.

5. Opciones de base de datos

JHipster brinda soporte a una amplia gama de bases de datos que incluyen bases de datos SQL y NoSQL.

A. Bases de datos SQL

Las bases de datos SQL admitidas en JHipster son H2, MySQL, MariaDB, PostgreSQL, MS SQL y Oracle. A continuación hablaremos de algunos de ellos.

  1. MariaDB: Es una base de datos relacional de código abierto que ofrece un servicio rápido, escalable y robusto. MariaDB tiene un rico ecosistema de motores de almacenamiento y complementos. La última versión de MariaDB tiene funciones GIS y JSON.
  2. PostgreSQL: PostgreSQL es otro sistema de base de datos relacional de objetos de código abierto que ofrece confiabilidad, solidez y rendimiento. Admite técnicas de indexación avanzadas como GiST, GIN, índices de cobertura, filtros de auge y más. PostgreSQL proporciona opciones de alta seguridad que incluyen GSSAPI, SSPI, LDAP, SCRAM-SHA-256. Una de las otras características de PostgreSQL es el almacenamiento de objetos JSON, lo que permite usarlo como un modelo híbrido.
  3. MS SQL: es un sistema de base de datos empresarial y requiere una licencia paga. MS SQL es una opción popular para aplicaciones inteligentes y de misión crítica.
  4. Oracle: proporciona una arquitectura eficaz para acceder y mantener datos. Oracle tiene funciones listas para la empresa, como fragmentación, replicación, alta disponibilidad, etc.

B. Bases de datos NoSQL

Las bases de datos NoSQL admitidas en JHipster son las siguientes:

  1. MongoDB: MongoDB es una base de datos distribuida basada en documentos. Almacena datos en formato JSON que lo hace más poderoso y expresivo. Admite agregaciones y otras funciones, como búsqueda basada en geolocalización, búsqueda de gráficos y búsqueda de texto.
  2. Cassandra: Cassandra es una base de datos NoSQL popular debido a sus opciones arquitectónicas fundamentales. Sus características de escalabilidad lineal y tolerancia a fallas lo hacen ideal para aplicaciones de misión crítica.
  3. Elasticsearch: Elasticsearch es una base de datos NoSQL, pero se utiliza principalmente como motor de búsqueda debido a su capacidad de indexación y rendimiento.

Otras herramientas de desarrollo

1. GIT

GIT es un sistema de control de versiones distribuido de código abierto para la gestión del código fuente. Tiene una variedad de características que incluyen bifurcación y fusión, áreas de preparación convenientes, múltiples flujos de trabajo y más. JHipster usa GIT para la actualización de aplicaciones y también para el buen funcionamiento de los ecosistemas Node.js y NPM.

2. Node.js

Node.js es un entorno de tiempo de ejecución de JavaScript, administrado por NPM. La CLI de JHipster requiere Node.js para ejecutar la aplicación porque depende de la aplicación NodeJS. Muchas de las herramientas utilizadas en la aplicación también necesitan NodeJS.

3. ventana acoplable

Docker es una tecnología de código abierto que ofrece virtualización o contenedorización a nivel de sistema operativo. Ayuda a crear contenedores que son fáciles de construir, implementar, versionar y compartir. Contiene las dependencias necesarias para que la aplicación se ejecute en el sistema operativo host. Por esta razón, es más ligero que la máquina virtual. Docker permite ejecutar incluso más aplicaciones en el mismo hardware en comparación con VM.

Opciones de implementación

1. Heroku

Heroku es una plataforma en la nube para implementar, administrar y escalar aplicaciones. Se enfoca en aplicaciones en lugar de contenedores y admite una amplia gama de lenguajes de programación. JHipster utiliza el subgenerador de Heroku para implementar y actualizar las aplicaciones de JHipster en la plataforma en la nube de Heroku.

2. Fundición de nubes

Cloud Foundry es una plataforma informática de múltiples nubes que tiene una arquitectura basada en contenedores. Puede ejecutar aplicaciones desarrolladas en cualquier lenguaje de programación y no interrumpirá su flujo de trabajo actual. Las aplicaciones se implementan con la ayuda del subgenerador JHipster.

3. Servicios web de Amazon

AWS es una plataforma informática en la nube que proporciona plataforma, software e infraestructura como servicio. Elastic Beanstalk de AWS es una plataforma fácil de usar para implementar y escalar sus aplicaciones. Usando subgeneradores, JHipster puede implementar una aplicación en AWS.  

JHipster se está volviendo popular entre los desarrolladores Full-stack. Con JHipster, puede concentrarse más en la lógica comercial y es compatible con una amplia gama de tecnologías de aplicaciones web. Tiene más de 400 colaboradores: Google, Redhat, Heroku son algunos de los colaboradores oficiales. Disfruta codificando con JHipster y conviértete en un experto en todos los oficios. 

Publicación traducida automáticamente

Artículo escrito por SonuGeorge y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *