Uso de Quarkus Framework en Fedora Silverblue: solo un vistazo rápido

Quarkus es un marco para el desarrollo de Java que se describe en su sitio web como:

Una pila Java nativa de Kubernetes adaptada para OpenJDK HotSpot y GraalVM, creada a partir de las mejores bibliotecas y estándares de Java.

https://quarkus.io/ – 5 de febrero de 2020

azul plateado – un Fedora La variante de estación de trabajo con un flujo de trabajo basado en contenedores central para su funcionalidad debería ser un sistema host ideal para el marco de Quarkus.

Actualmente hay dos formas de usar Quarkus con Silverblue. Se puede ejecutar en un contenedor de mascotas como Toolbox/Coretoolbox. O puede ejecutarse directamente en un emulador de terminal. Este artículo se centrará en el último método.

¿Por qué Quarkus?

Según Quarkus.io: “Quarkus ha sido diseñado en torno a una primera filosofía de contenedores. Lo que esto significa en términos reales es que Quarkus está optimizado para un uso de memoria bajo y tiempos de inicio rápidos”. Para lograr esto, emplean soporte de primera clase para Graal/Substrate VM, procesamiento de metadatos en tiempo de compilación, reducción en el uso de reflejos y prearranque de imágenes nativas. Para obtener detalles sobre por qué esto es importante, lea Contenedor primero en Quarkus.

requisitos previos

Deberá configurar algunos requisitos previos antes de que pueda comenzar a utilizar Quarkus. Primero, necesita un IDE de su elección. Cualquiera de los populares servirá. VIM o Emacs también funcionarán. El sitio de Quarkus proporciona detalles completos sobre cómo configurar los tres principales IDE de Java (Eclipse, Intellij Idea y Apache Netbeans). Necesitará una versión de JDK instalada. JDK 8, JDK 11 o cualquier distribución de OpenJDK está bien. Se necesita GrallVM 19.2.1 o 19.3.1 para compilar a nativo. también necesitarás Apache Maven 3.53+ o Gradle. Este artículo usará Maven porque es con lo que el autor está más familiarizado. Utilice el siguiente comando para superponer Java 11 OpenJDK y Maven en Silverblue:

$ rpm-ostree install java-11-openjdk* maven

Alternativamente, puede descargar su versión favorita de Java e instalarla directamente en su directorio de inicio.

Después de reiniciar, configure sus variables de entorno JAVA_HOME y PATH para hacer referencia a las nuevas aplicaciones. A continuación, vaya a la Página de descarga de GraalVMy obtenga GraalVM versión 19.2.1 o versión 19.3.1 para Java 11 OpenJDK. Instale Graal según las instrucciones proporcionadas. Básicamente, copie y descomprima el archivo en un directorio bajo su directorio de inicio, luego modifique la variable de entorno PATH para incluir Graal. Lo usa como lo haría con cualquier JDK. Así que puedes configurarlo como una plataforma en el IDE de tu elección. Ahora es el momento de configurar la imagen nativa si va a usar una. Para obtener más detalles sobre cómo configurar su sistema para usar Quarkus y la imagen nativa de Quarkus, consulte su Tutorial de introducción. Con estas piezas instaladas y la configuración del entorno, ahora puede probar Quarkus.

arranque

Quarkus le recomienda crear un proyecto utilizando el método de arranque. A continuación se muestran algunos example comandos ingresados ​​en un emulador de terminal en el shell de Gnome en Silverblue.

$ mvn io.quarkus:quarkus-maven-plugin:1.2.1.Final:create 
    -DprojectGroupId=org.jakfrost 
    -DprojectArtifactId=silverblue-logo 
    -DclassName="org.jakfrost.quickstart.GreetingResource" 
    -Dpath="/hello"
$ cd silverblue-logo

El proceso de arranque que se muestra arriba creará un proyecto en el directorio actual con el nombre silverblue-logo. Una vez que esto se complete, inicie la aplicación en modo de desarrollo:

$ ./mvnw compile quarkus:dev

Con la aplicación en ejecución, verifique si responde como se esperaba emitiendo el siguiente comando:

$ curl -w 'n' https://localhost:8080/hello

El comando anterior debe imprimir hola en la siguiente línea. Alternativamente, pruebe la aplicación navegando a https://localhost:8080/hello con su navegador web. Debería ver el mismo hola solitario en una página vacía. Deje la aplicación ejecutándose para la siguiente sección.

Inyección

Abra el proyecto en su IDE favorito. Si está utilizando Netbeans, simplemente abra el directorio del proyecto donde reside el archivo pom.xml. Ahora sería un buen momento para echar un vistazo al archivo pom.xml.

Quarkus usa ArC para su inyección de dependencia. ArC es una dependencia de quarkus-resteasy, por lo que ya forma parte de la instalación central de Quarkus. Agregue un bean compañero al proyecto creando una clase java en su IDE llamada GreetingService.java. Luego pon el siguiente código en él:

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class GreetingService {

    public String greeting(String name) {
        return "hello " + name;
    }

}

El código anterior es una copia textual de lo que se usa en la inyección example en el tutorial de introducción a Quarkus. Modifique GreetingResource.java agregando las siguientes líneas de código:

import javax.inject.Inject;
import org.jboss.resteasy.annotations.jaxrs.PathParam;

@Inject
    GreetingService service;//inject the service

    @GET //add a getter to use the injected service
    @Produces(MediaType.TEXT_PLAIN)
    @Path("/greeting/{name}")
    public String greeting(@PathParam String name) {
        return service.greeting(name);
    }

Si no ha detenido la aplicación, será fácil ver el efecto de sus cambios. Solo ingresa lo siguiente curl mando:

$ curl -w 'n' https://localhost:8080/hello/greeting/Silverblue

El comando anterior debe imprimir hola Silverblue en la siguiente línea. La URL debería funcionar de manera similar en un navegador web. Hay dos cosas importantes a tener en cuenta:

  1. La aplicación se estaba ejecutando y Quarkus detectó los cambios en el archivo sobre la marcha.
  2. La inyección de código en la aplicación fue muy fácil de realizar.

La imagen nativa

A continuación, empaquete su aplicación como una imagen nativa que funcionará en un contenedor podman. Exit la aplicación presionando CTRL-C. Luego use el siguiente comando para empaquetarlo:

$ ./mvnw package -Pnative -Dquarkus.native.container-runtime=podman

Ahora, construye el contenedor:

$ podman build -f src/main/docker/Dockerfile.native -t silverblue-logo/silverblue-logo

Ahora ejecútalo con lo siguiente:

$ podman run -i --rm -p 8080:8080 localhost/silverblue-logo/silverblue-logo

Para que la compilación del contenedor se completara con éxito, era necesario copiar el directorio /target y el contenido en el directorio src/main/docker/. Todavía se requiere investigar la razón por la cual, y aunque la solución utilizada fue rápida y fácil, no es una forma aceptable de resolver el problema.

Ahora que tiene el contenedor ejecutándose con la aplicación dentro, puede usar los mismos métodos que antes para verificar que funciona.

Dirija su navegador a la URL https://localhost:8080/ y debería obtener un index.html que Quarkus genera automáticamente cada vez que crea o modifica una aplicación. Reside en el directorio src/main/resources/META-INF/resources/. Suelte otros archivos HTML en este directorio de recursos para que Quarkus los sirva a pedido.

Para examplecree un archivo llamado logo.html en el directorio de recursos que contenga el siguiente marcado:

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>Silverblue</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>
            <img src="https://fedoramagazine.org/using-the-quarkus-framework-on-fedora-silverblue-just-a-quick-look/fedora-silverblue-logo.png" alt="Fedora Silverblue"/>
        </div>
    </body>
</html>

A continuación, guarde la siguiente imagen junto con el archivo logo.html con el nombre fedora-silverblue-logo.png:

Ahora vea los resultados en https://localhost:8080/logo.html.

Probando tu aplicación

Quarkus admite pruebas junit 5. Mire el archivo pom.xml de su proyecto. En él deberías ver dos dependencias de prueba. El proyecto generado contendrá una prueba simple, llamada GreetingResourceTest.java. La prueba del archivo nativo solo se admite en modo prod. Sin embargo, puede probar el archivo jar en modo desarrollador. Estas pruebas son RestAssured, pero puede usar cualquier biblioteca de pruebas que desee con Quarkus. Utilice Maven para ejecutar las pruebas:

$ ./mvnw test

Más detalles se pueden encontrar en el Quarkus Empezando tutorial.

Más lecturas y tutoriales

Quarkus tiene una extensa colección de tutoriales y guias. Vale la pena dedicar tiempo a profundizar en la amplitud de este marco de microservicios.

Quarkus también mantiene una publicaciones página que enumera algunos artículos muy interesantes sobre casos de uso reales de Quarkus. Este artículo solo ha arañado la superficie del tema. Si lo que se presentó aquí ha despertado su interés, siga los enlaces anteriores para obtener más información.

Related Posts