Ir al contenido

Hola Mundo en Vaadin 10+

·1243 palabras·6 mins
Vaadin
Alejandro Duarte
Autor
Alejandro Duarte
Alejandro Duarte es un Ingeniero de Software, escritor publicado y galardonado. Actualmente, trabaja para MariaDB plc como Ingeniero de Relaciones con Desarrolladores (Developer Relations Engineer). Comenzó su trayectoria en programación a los 13 años con BASIC en una rudimentaria pantalla negra, para lugo rápidamente transitar a C, C++ y Java durante sus años académicos en la Universidad Nacional de Colombia. Trasladándose primero al Reino Unido y luego a Finlandia, Alejandro profundizó su participación en la comunidad de código abierto. Es reconocido en los círculos de Java, acreditado con artículos y videos que acumulan millones de vistas, y presentaciones en eventos internacionales.

Nota: Traducido de la versión original en Inglés.

Vaadin es un conjunto de herramientas para crear aplicaciones web dirigido tanto a desarrolladores frontend como backend. Si eres, por ejemplo, un Desarrollador JavaScript, puedes usar los Componentes de Vaadin en cualquier documento HTML. Si eres un Desarrollador Java, puedes usar la API de Java y olvidarte de programar en HTML y JavaScript.

En este artículo te mostraré cómo crear la famosa aplicación “Hola Mundo” usando el Lenguaje de Programación Java y Vaadin 12 (también válido para Vaadin 10 y 11). Ponte cómodo, asegúrate de tener Maven instalado, inicia tu IDE favorito, ¡y empecemos!

Comienza con un starter, obviamente
#

Visita https://vaadin.com/start/latest y selecciona Project Base. Este es el starter de proyecto más sencillo y sirve bien como un punto inicial. Haz clic en Descargar y extrae el archivo zip. Obtendrás un directorio que contiene un proyecto Maven. Importa este proyecto en tu IDE favorito (el mío es IntelliJ IDEA, por cierto).

Resultarás con una estructura de directorios similar a la siguiente:

Estructura de directorio

No te preocupes por los subdirectorios resources y webapp por ahora. Además, quiero que te pongas manos a la obra e implementes la aplicación de ejemplo por ti mismo. Ahora, el starter incluye la clase MainView que implementa una especie de aplicación Hola Mundo. Así que, deshazte del código en la clase MainView eliminando cualquier anotación, clases extendidas y código en el constructor. Continúa y elimina el código hasta que se vea como lo siguiente (o elimina el archivo y crea uno nuevo):

package org.vaadin.alejandro; // usa el tuyo, por supuesto

public class MainView {

    public MainView() {
    }

}

El proyecto está listo. ¡Agreguemos un poco de código!

Agrega componentes de UI a la página web
#

Piensa en la clase MainView como la página web mostrada cuando solicitas la aplicación en el navegador web. Comencemos haciendo la aplicación Hola Mundo más sencilla que podamos hacer con Vaadin: Una aplicación web que muestra un saludo en la pantalla.

Primero, necesitamos que la clase MainView sea de un tipo que Vaadin reconozca como un componente de UI con el que pueda tratar. Tienes muchas opciones, pero extenderemos una clase popular llamada VerticalLayout:

package org.vaadin.alejandro;

import com.vaadin.flow.component.orderedlayout.VerticalLayout;

public class MainView extends VerticalLayout {

    public MainView() {
    }

}

Ahora la clase MainView es más poderosa que antes. Revisa en tu IDE algunos de los métodos disponibles en VerticalLayout. Puedes usar la función de autocompletado de tu IDE para explorar rápidamente lo que está disponible:

Función de autocompletado

¿Pero qué es un VerticalLayout? Un VerticalLayout es un componente de UI que organiza otros componentes de UI (como botones o tables) de manera vertical (en columna). Para esto se usa el método VerticalLayout.add(Component...). Pero primero, necesitamos preparar el componente que queremos agregar al VerticalLayout. Usemos uno muy simple: Text. Adelante, crea una nueva instancia de esta clase dentro del constructor:

public MainView() {
    Text text = new Text("Hola, Mundo!");
}

Ahora llama al método add(Component...) para agregar el componente de texto al VerticalLayout:

public MainView() {
    Text text = new Text("Hola, Mundo!");
    add(text);
}

Expone la vista como una página web
#

Para servir esta clase como una página web, necesitas informarle a Vaadin tu intención de hacerlo. Esto es muy fácil. Simplemente anota tu clase MainView con @Route:

@Route
public class MainView extends VerticalLayout {
    ...
}

La anotación @Route acepta un parámetro opcional para especificar la ruta actual (la última parte de la URL) que deseas usar para mostrar esta vista. Por ejemplo, @Route("hola") haría que la vista estuviera disponible en http://localhost:8080/hola. Sin embargo, Vaadin utiliza una convención con el nombre de la clase. Como nuestra clase se llama MainView, Vaadin expone la vista en la raíz del contexto (http://localhost:8080/). Además, si agregas una clase llamada CustomersView, por ejemplo, Vaadin expone la vista en http://localhost:8080/customers (nótese cómo se ignora la parte “View” en el nombre de la clase). Cualquier otro nombre se expone usando el nombre de la clase. Solo recuerda que puedes anular esto usando el parámetro de tipo String en la anotación @Route.

Despliega y ejecuta la aplicación web
#

Dado que usamos un starter de Vaadin para crear el proyecto, el archivo pom.xml incluye el plugin de Jetty para Maven, que te permite usar Maven para desplegar y ejecutar la aplicación web en un servidor Jetty local. La forma más rápida de ejecutar la aplicación es usar un terminal de línea de comandos y ejecutar:

mvn jetty:run

Sin embargo, te recomiendo crear una configuración de ejecución en tu IDE. Una configuración de ejecución es como un atajo dentro del IDE para ejecutar una acción, por ejemplo, un comando Maven. La mayoría de los IDEs ofrecen la posibilidad de crear esto desde una vista Maven que muestra todos los complementos y sus metas correspondientes. En IntelliJ IDEA se ve de la siguiente forma:

IDE mostrando complementos Maven

Simplemente puedes hacer doble clic en la opción jetty:run para desplegar la aplicación e iniciar el servidor Jetty. O puedes hacer clic derecho en la opción para crear una configuración de ejecución que se mostrará en la parte superior de la ventana del IDE. Este último método tiene la ventaja de ofrecer un atajo de teclado para la configuración de ejecución también. Alternativamente, puedes usar cualquier otro servidor que incluya un Servlet Container para desplegar y ejecutar la aplicación. Por ejemplo, Tomcat o GlassFish. No cubriremos este tema aquí. Hay muchos recursos útiles online que explican cómo usar estos servidores.

Una vez que la aplicación esté compilada, dirige tu navegador a http://localhost:8080 para ver el resultado. Ten en cuenta que la compilación puede tardar un tiempo la primera vez que la hagas, ya que es posible que no tengas todas las dependencias de Maven en tu disco duro, pero esto será mucho más rápido después, tanto para este proyecto como para los nuevos. Aquí hay una captura de pantalla de la aplicación:

Agrega comportamiento a la aplicación web
#

Vaadin incluye muchos componentes de UI listos para usar. Hay botones, cuadros combinados, tablas (grids), casillas de verificación, campos de texto, gráficos y muchos más. Usemos las clases TextField y Button para agregar interactividad a la aplicación web.

Comienza creando instancias de estas dos clases en el constructor:

TextField textField = new TextField("¿Cómo te llamas?");
Button button = new Button("Ok");

Queremos mostrar un saludo personalizado que contenga el nombre introducido en el campo de texto cada vez que el usuario haga clic en el botón. La forma en que reaccionas a las acciones del usuario (como hacer clic en un botón) es agregando listeners. En el caso de un Button, un listener de clics:

button.addClickListener(e -> ... tu código personalizado aquí ...);

Usemos otro componente de UI de Vaadin para mostrar un mensaje:

button.addClickListener(e -> Notification.show("Hola"));

El saludo aún no es personalizado. Queremos usar el nombre introducido en el campo de texto como parte del saludo. Podemos obtener este valor usando el método TextField.getValue(). No podría ser más fácil:

button.addClickListener(e -> Notification.show("Hola " + textField.getValue()));

Ahí está. Tienes nuevos componentes y comportamiento en tu aplicación. Sólo nos falta una última cosa: Hemos creado y configurado componentes de UI, pero nunca los agregamos al VerticalLayout. Usa el método add para solucionarlo:

add(textField, button);

Reinicia el servidor Jetty y ve a http://localhost:8080 para ver los cambios:

¿Qué sigue?
#

Hay muchas otras características interesantes en Vaadin. Te sugeriría continuar con el tutorial oficial de Vaadin en https://vaadin.com/tutorials/getting-started-with-flow que explica cómo construir una aplicación más realista. Si quieres dominar Vaadin, sugiero leer la documentación en https://vaadin.com/docs.

Relacionados

¿Aplicaciones Centradas en Datos con Vaadin 10?
·261 palabras·2 mins
Vaadin Noticias
Nota: Traducido de la versión original en Inglés. Recientemente recibí algunas copias impresas de mi último libro sobre Vaadin.
¿Qué tiene de especial Vaadin Flow?
·372 palabras·2 mins
Vaadin
Nota: Traducido de la versión original en Inglés. Vaadin Flow es un framework web de código abierto y gratuito para desarrolladores de Java.
Nuevo libro sobre Vaadin 8: Aplicaciones Centradas en Datos con Vaadin 8
·281 palabras·2 mins
Vaadin Noticias
Nota: Traducido de la versión original en Inglés. ¡Me complace anunciar que mi segundo libro sobre Vaadin ha sido publicado!