0% encontró este documento útil (0 votos)
364 vistas81 páginas

Introducción a Java FX y POO

Este documento presenta una introducción a Java FX y la programación orientada a objetos. Explica los cuatro pilares de la POO (encapsulación, herencia, polimorfismo y abstracción) y cómo se aplican en Java FX. También describe los principales layouts en Java FX como HBox, VBox y GridPane y cómo crear una interfaz gráfica de usuario usando estos layouts.

Cargado por

damr79
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
364 vistas81 páginas

Introducción a Java FX y POO

Este documento presenta una introducción a Java FX y la programación orientada a objetos. Explica los cuatro pilares de la POO (encapsulación, herencia, polimorfismo y abstracción) y cómo se aplican en Java FX. También describe los principales layouts en Java FX como HBox, VBox y GridPane y cómo crear una interfaz gráfica de usuario usando estos layouts.

Cargado por

damr79
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Java FX

Aldo Malaver Ciudad


Unidad 1
Aldo Malaver
Vamos a conocernos un poco

• Nombres

• Rol actual

• ¿Has trabajado antes con Java o Java FX?

• ¿Cuál es tu objetivo?
Programación orientada a Objetos

• La POO es un paradigma que ha ganado popularidad en los últimos años


debido a su capacidad para crear aplicaciones más robustas, flexibles y
fáciles de mantener.

• Esta metodología de desarrollo se basa en la idea de que los programas se


puedan organizar como una colección de objetos interconectados, cada uno
con su propio conjunto de datos y funcionalidades.
Programación orientada a Objetos

• Es un paradigma de programación, es decir, un modelo o un estilo de


programación que nos da unas guías sobre cómo trabajar con él. Se
basa en el concepto de clases y objetos.

• Se busca dejar de centrarse en la lógica pura de los programas, para


empezar a pensar en objetos, dejar de pensar en funciones, y pensar en
las relaciones o interacciones de los componentes del sistema.
Pilares de programación orientada a objetos

• La programación orientada a objetos está compuesta de 4 pilares o


principios los cuales son los siguientes:
❑ Encapsulación

❑ Herencia

❑ Polimorfismo

❑ Abstracción
Encapsulación

• La encapsulación contiene toda la información importante de un


objeto dentro del mismo y solo expone información seleccionada.

• La única forma en la que se puede modificar la información de un


objeto es mediante los propios métodos del objeto (get y set).

• Ejemplo: Una Laptop tiene información pública como pantalla o


entradas e información privada como placa madre o memoria.
Encapsulación

public class Persona {


public String nombres;
public String apellidos;

public String getNombres() {


return nombres;}

public void setNombres(String nombres) {


this.nombres = nombres;
}

public String getApellidos() {


return apellidos;
}

public void setApellidos(String apellidos) {


this.apellidos = apellidos;
}}
Herencia

• Define relaciones jerárquicas entre clases, de forma que atributos y


métodos comunes puedan ser reutilizados.

• Las clases Padres extienden atributos y comportamientos a las


clases hijas.

• Se utiliza las palabras claves extends y super.


Herencia

public class Main extends Persona {

public Main(){ Palabra clave extends


super();
}
}

Palabra clave super


Polimorfismo

• Consiste en diseñar objetos para compartir comportamientos, lo


que nos permite procesar objetos de diferentes maneras.

• El polimorfismo permite que el mismo método ejecute diferentes


comportamientos secundarios específicos de dos formas: anulación
de métodos y sobrecarga de método.

• Existe la sobrecarga de método y constructores.


Polimorfismo

public class PersonaNatural extends Persona implements IPersona{

public String nombres() {


return "Aldo";
}

public String apellidos() {


return "Malaver";
}

public static void main(String[] args) {


PersonaNatural personaNatural = new PersonaNatural();
personaNatural.nombres();
Persona persona = personaNatural;
IPersona ipersona = personaNatural;
}
}
Abstracción

• Es cuando el usuario interactúa solo con los atributos y métodos


seleccionados de un objeto, utilizando herramientas simplificadas de alto
nivel para acceder a un objeto complejo.

• En la POO, los programas suelen ser muy grandes y los objetos se


comunican mucho entre sí. La abstracción facilita el mantenimiento de un
código de gran tamaño, donde a lo largo del tiempo pueden surgir
diferentes cambios.
Qué es una clase

• Una clase es una abstracción de la realidad o plantilla compuesta


por campos o atributos, constructores y métodos.
Nombre del paquete
package com.java;
Palabra clave class
Modificador
public class Main { Nombre de la
de acceso
clase
public static void main(String[] args) {
Cuerpo de
la clase
}

}
Qué es una clase

Elemento Ejemplo ¿Requerido? ¿Dónde va?


Declaración de Paquete package abc; No Primera línea en el archivo

Enunciado import import java.util.*; No Inmediatamente después del


paquete

Declaración de clase public class C Si Inmediatamente después del


import

Declaración de campos int value; No En cualquier lugar dentro de una


clase
Declaración de métodos void metodo() No En cualquier lugar dentro de un
a clase
Qué es una interfaz

• Es una colección de métodos abstractos y propiedades constantes.

• En la versión java 8 se pueden definir métodos estáticos y default.

Modificador de Palabra clave interface


acceso
public interface IAlumno { Nombre de la
interface
static final Double PI = 3.14; Constante
String getNombre(); Método abstracto

}
Qué es un Enum

• Es una agrupación de constantes para tener mayor control.

Modificador de Palabra clave enum


acceso

public enum EstadoEnum { Nombre del


enum

ACTIVO,
Constantes
BLOQUEADO, definidas
INACTIVO;

}
Instalación de herramientas

• Netbeans (https://netbeans.apache.org/)

• JDK 11

• Java FX
Ejercicio 1: POO

• Realizar un proyecto para poner en práctica los 4


principios de la programación orientada a objetos
Java FX

• Java FX es una librería con un conjunto de API


interoperable escrita en Java para el propósito de crear
aplicaciones de interfaz de usuario.

• Construido con archivos Java, XML y CSS.


Java FX

• Antes de Java FX, se trabajaba con AWT y Swing.


• AWT (1995)

• Swing (1997)

• JavaFX (2008)

• En 2014 se liberó Java FX 8.0 con JDK 8 (gráficos 3D y rich text)


Proyecto en Java FX

• Abrir Netbeans

• Crear un proyecto en Java FX

• Tipo Simple JavaFX Maven


Archetype
Unidad 2
Aldo Malaver
Layouts Principales

HBox • Es una fácil opción de poner nodos

• JavaFX tiene muchas layouts por defecto


• Hbox, Vboox

• FlowPane

• BorderPane

• GridPane
VBox FlowPanel
Uso de Layouts

• El Layout BorderPane provee 5 regiones en el cual se


puede alojar nodos: top, bottom, left, right y center.
Uso de Layouts

• El panel HBox provee una fácil forma para arreglar una


serie de nodos en una sola fila.

• La propiedad de padding puede ser configura para


administrar la distancia entre los nodos y bordes del
panel HBox.
Uso de Layouts

• El panel VBox es similar al HBox, excepto que los nodos


son arreglados en una sola columna.

• La propiedad de padding puede ser configura


para administrar la distancia entre los nodos y
bordes del panel VBox.
Uso de Layouts

• El panel StackPane coloca todos los nodos dentro de


una sola pila con cada nuevo nodo agregado encima del
nodo anterior.
• Este modelo de diseño proporciona una manera fácil de
superponer texto en una forma o imagen o de
superponer formas comunes para crear una forma
compleja.
Uso de Layouts

• FlowPane se disponen
consecutivamente y se envuelven en
el límite establecido para el panel.
• Los nodos pueden fluir verticalmente
(en columnas) u horizontalmente (en
filas). Un panel de flujo vertical se
envuelve en el límite de altura del
panel.
Uso de Layouts

• TilePane es similar a un FlowPane. TilePane coloca todos los


nodos en una cuadrícula en la que cada celda o mosaico
tiene el mismo tamaño. Los nodos se pueden distribuir
horizontalmente (en filas) o verticalmente (en columnas).
• El mosaico horizontal envuelve los mosaicos en el límite de
ancho del panel de mosaico y el mosaico vertical los
envuelve en el límite de altura. Utilice las propiedades
prefColumns y prefRows para establecer el tamaño
preferido del panel de mosaico.
Uso de Layouts

• AnchorPane permite anclar nodos


en la parte superior, inferior,
izquierda, derecha o centro del
panel. A medida que se cambia el
tamaño de la ventana, los nodos
mantienen su posición relativa a su
punto de anclaje.
Crea un GUI

En este punto vamos a crear una GUI usando los principales


Layouts, el uso de Stage y Scene
Manejo del GridPanel

• El GridPanel permite crear una cuadrícula flexible de


filas y columnas en la que se puede colocar los nodos.
• Los nodos se pueden colocar en cualquier celda de la
cuadrícula y pueden abarcar celdas según sea necesario.
Patrón MVC

• El patrón MVC consiste en la separación de


un software en tres componentes: modelo,
vista y controlador, y describe como se
relacionarán entre ellos para mantener una
estructura organizada, limpia y con un
acoplamiento mínimo entre las distintas
capas.
Patrón MVC

• En la capa Modelo encontraremos la representación de los datos del


dominio, aquellas entidades que sirven para almacenar información.

• En la capa Vista está la responsabilidad de generar la interfaz de nuestro


software componer las pantallas, páginas.

• La capa Controlador actúa como intermediarios entre el usuario y el


software. Es capaz de capturar las acciones de la vista y actuar en función de
ellas.
FXML

• Es un Lenguaje de etiqueta basado en XML para definir las


interfaces de usuario de una aplicación Java FX.
<HBox>
HBox box = new HBox();
<children>
box.getChildren().addAll(new Label(“User Name”),
<Label text=“ User Name” />
new TextField(),
<TextField />
new Button(“Connect”));
<Button text=“Connect” />
</HBox>
HBox box = FXMLLoader.<HBox>load(this.getClass()
.getResource(“simpleui.fxml));
FXML

Recurso FXML Clase FXMLLoader Controller


El archivo XML con Clase utilitaria para cargar un Una clase responsable para
declaraciones para UI archivo FXML los comportamientos
Controller

Contiene referencia a Máximo un controlador por


Inicializado por FXML Loader
elementos UI FXML

Event Handlers por elementos Puede tener métodos de Constructor por defecto debe
UI inicialización ser público
Beneficios de FXML

Leible No recompilable Localización


Estructura jerárquica de XML FXML no es un lenguaje
estrechamente paralelos Java compilable, solo reejecuta la Internacionalización es muy
FX Scene GRaph app después de cambios simple y automática
Scene Builder

Scene Builder está escrito como una aplicación JavaFX, compatible con Windows, Mac
OS X y Linux. Es el ejemplo perfecto de una aplicación de escritorio JavaFX completa.
Scene Builder está empaquetado como una aplicación independiente, lo que significa
que viene con su propia copia privada de JRE.
• UI Layout Tool
• Drag & Drop UI
• FXML Visual Editor
• Cross Platform
• Integrtated with IDEs
• CSS Support
Scene Builder
WebView

• JavaFX WebView es un mini navegador que se denomina navegador integrado en la


aplicación JavaFX. Este navegador se basa en WebKit, que es un motor de
navegador de código fuente abierto compatible con CSS, JavaScript, DOM y HTML5.
JavaFX WebView le permite realizar las siguientes tareas en sus aplicaciones JavaFX:
• Procesar contenido HTML desde URL locales y remotas
• Obtener historial web Ejecutar comandos JavaScript Realizar llamadas ascendentes de
JavaScript a JavaFX Administrar ventanas emergentes web Aplicar efectos al navegador
integrado
Control UI y CSS

La interfaz gráfica de usuario de cada aplicación de escritorio considera


principalmente los elementos, diseños y comportamiento de la interfaz de
usuario. Los elementos de la interfaz de usuario son los que realmente se
muestran al usuario para la interacción o el intercambio de información.
El diseño define la organización de los elementos de la interfaz de usuario
en la pantalla. El comportamiento es la reacción del elemento de la interfaz
de usuario cuando se produce algún evento en él.
Control UI y CSS

SN Control Description

1 Label La etiqueta es un componente que se utiliza para definir un texto simple en la


pantalla. Por lo general, se coloca una etiqueta con el nodo que describe.

2 Button El botón es un componente que controla la función de la aplicación. La clase de


botón se utiliza para crear un botón etiquetado.
3 RadioButton El botón de radio se utiliza para proporcionar varias opciones al usuario. El
usuario sólo puede elegir una opción entre todas. Un botón de radio está
seleccionado o deseleccionado.

4 CheckBox El Checkbox se utiliza para obtener el tipo de información del usuario que
contiene varias opciones. El usuario marcó la casilla de verificación activada
(verdadero) o desactivada (falso).

5 TextField El campo de texto se usa básicamente para obtener la entrada del usuario en
forma de texto. javafx.scene.control.TextField representa TextField
Control UI y CSS

6 PasswordField PasswordField se utiliza para obtener la contraseña del usuario. Cualquier cosa
que se escriba en el campo de contraseña no se muestra en la pantalla a
nadie.

7 HyperLink Los hipervínculos se utilizan para referir cualquier página web a través de su
aplicación. Está representado por la clase javafx.scene.control.HyperLink

8 Slider El control deslizante se utiliza para proporcionar un panel de opciones al


usuario en forma gráfica donde el usuario necesita mover un control
deslizante sobre el rango de valores para seleccionar uno de ellos.

9 ProgressBar La barra de progreso se utiliza para mostrar el progreso del trabajo al usuario.
Está representado por la clase javafx.scene.control.ProgressBar.
Control UI y CSS

10 ProgressIndicator En lugar de mostrar el progreso analógico al usuario, muestra el progreso


digital para que el usuario pueda saber la cantidad de trabajo realizado en
porcentaje.

11 ScrollBar La barra de desplazamiento JavaFX se utiliza para proporcionar una barra de


desplazamiento al usuario para que pueda desplazarse hacia abajo en las
páginas de la aplicación.

12 Menu JavaFX proporciona una clase de menú para implementar menús. El menú es
el componente principal de cualquier aplicación.

13 ToolTip JavaFX ToolTip se utiliza para proporcionar pistas al usuario sobre cualquier
componente. Se utiliza principalmente para proporcionar sugerencias sobre
los campos de texto o los campos de contraseña que se utilizan en la
aplicación.
CSS

JavaFX brinda la posibilidad de usar CSS para mejorar la apariencia de la aplicación. El paquete
javafx.css contiene las clases que se utilizan para aplicar CSS para aplicaciones JavaFX. Un CSS se
compone de reglas de estilo que son interpretadas por el navegador y luego aplicadas a los
elementos correspondientes en su documento.
Una regla de estilo consta de tres partes, que son:
• Selector: Es una etiqueta HTML en la que se aplicará un estilo. Podría ser un <h1> o <table>, etc.
• Propiedad: En términos más simples, los atributos HTML se convierten en propiedades CSS.
• Valor: Se asignan a las propiedades. Ejemplo, una propiedad de color puede tener el valor rojo
o #F1F1F1, etc.
Properties

• Un data observable, el cual permite automáticamente ser


notificado hacia un cambio de datos envueltos dentro

Mantiene el valor actual Provee soporte al cambio Soporte invalidación

Capacidades Bingind Propiedades de solo lectura


Properties

• Se cuenta con diversos ejemplos de Properties:


• SimpleBooleanProperty

• SimpleIntegerProperty

• ReadOnlyBooleanWrapper

• ReadOnlyIntegerWrapper
Binding

• Una property puede ser mapeada a un objetivo.

• Crea un enlace entre propiedades.

• Sincroniza dos propiedades.

• Unidireccional o Bidireccional.

• La API de alto nivel es la forma más rápida y sencilla de comenzar a utilizar enlaces en sus propias
aplicaciones. Consta de dos partes: la API Fluent y la clase Bindings. La API Fluent expone métodos en
los diversos objetos de dependencia, mientras que la clase Bindings proporciona métodos de fábrica
estáticos en su lugar. Para comenzar a usar la API de Fluent, considere un caso de uso simple en el
que se unen dos números enteros para que sus valores siempre se sumen.
Binding

package bindingdemo;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.binding.NumberBinding;
public class Main {
public static void main(String[] args) {
IntegerProperty num1 = new SimpleIntegerProperty(1);
IntegerProperty num2 = new SimpleIntegerProperty(2);
NumberBinding sum = num1.add(num2);
System.out.println(sum.getValue());
num1.set(2);
System.out.println(sum.getValue());
}
}
Colecciones y Concurrencia

• Detectan cambia a una colección


• Agregando ítems
• Removiendo Items

• FXCollections es una clase utilitario

• Clases / Interfaces
• ObservableList
• ObservableSet
• ObservableIntegerArray
Colecciones y Concurrencia

Clases / Interfaces Change Listeners

ObservableList ListChangeListener

ObservableMap/ObservableHashMap MapChangeListener

ObservableSet SetChangeListener

ObservableIntegerArray ArrayChangeListener

ObservableFloatArray ArrayChangerListener

ObservableArray ArrayChangerListener
TableView

JavaFX TableView le permite mostrar vistas de tabla dentro de sus aplicaciones


JavaFX. El TableView de JavaFX está representado por la clase
javafx.scene.control.TableView. Aquí hay una captura de pantalla de un JavaFX
TableView:
Alerts

• Alert es parte de JavaFX y es una subclase de la clase Dialog. Las alertas son
algunos cuadros de diálogo predefinidos que se utilizan para mostrar cierta
información al usuario. Las alertas son básicamente de tipos de alerta
específicos:
• Alerta de CONFIRMACIÓN: el tipo de alerta de CONFIRMACIÓN configura el cuadro de diálogo
Alerta para que aparezca de una manera que sugiera que el contenido del cuadro de diálogo
está buscando la confirmación del usuario.
Alerts

• Alerta de ADVERTENCIA: el tipo de alerta de ADVERTENCIA configura el cuadro de diálogo Alerta


para que aparezca de manera que sugiera que el contenido del cuadro de diálogo advierte al
usuario sobre algún hecho o acción.
• Alerta NINGUNA: el tipo de alerta NINGUNA tiene el efecto de no establecer ninguna propiedad
predeterminada en la Alerta.
• Alerta de INFORMACIÓN: el tipo de alerta de INFORMACIÓN configura el cuadro de diálogo Alerta
para que aparezca de una manera que sugiera que el contenido del cuadro de diálogo informa al
usuario de una información.
• Alerta de ERROR: el tipo de alerta de ERROR configura el cuadro de diálogo Alerta para que
aparezca de una manera que sugiera que algo salió mal.
Alerts
Listeners

• Muy a menudo en JavaFX tenemos que reaccionar a los eventos del


usuario: el usuario hace clic en un botón, presiona una tecla, mueve
el mouse, etc.
Listeners

• Button Events

• CheckBox Events

• ComboBox Events

• Hyperlink Events

• Slider Events

• Change Listener
Ejercicio 2: JavaFX Controles

• Realizar un proyecto para poner en práctica lo visto


actualmente. – Layout, FXML, Listeners, etc.
Unidad 3
Aldo Malaver
Inserción de imágenes y animación

Image img = new Image(getClass().getResourceAsStream("/images/abc.png"));

public void start(Stage stage) {


// Panel principal que contendrá los elementos de la pantalla
Pane paneRoot = new Pane(); var scene = new Scene(paneRoot, 640, 480);
stage.setScene(scene); stage.show();
// Cargar la imagen crear objeto ImageView
Image img = new Image(getClass().getResourceAsStream("/images/abc.png"));
ImageView imgView = new ImageView(img);
// Añadir el ImageView al panel principal de la pantalla
paneRoot.getChildren().add(imgView);
}
Inserción de imágenes y animación

En general, animar un objeto implica crear la ilusión de su movimiento mediante una


visualización rápida. En JavaFX, un nodo se puede animar cambiando su propiedad con el tiempo.
JavaFX proporciona un paquete llamado javafx.animation. Este paquete contiene clases que se
utilizan para animar los nodos. La animación es la clase base de todas estas clases.

Con JavaFX, puede aplicar animaciones (transiciones) como Fade Transition, Fill Transition,
Rotate Transition, Scale Transition, Stroke Transition, Translate Transition, Path Transition,
Sequential Transition, Pause Transition, Parallel Transition, etc.
Inserción de imágenes y animación

Todas estas transiciones están representadas por clases individuales en el paquete


javafx.animation.
Para aplicar una animación particular a un nodo, debe seguir los pasos que se detallan a
continuación:
• Cree un nodo requerido usando la clase respectiva.
• Crea una instancia de la respectiva clase de transición (animación) que se va a aplicar
• Establecer las propiedades de la transición y
• Finalmente reproduzca la transición usando el método play() de la clase Animation.
Ejercicio 3: Animaciones del reloj

• Animaciones de Reloj

• Efectos y transiciones

• Iconos personalizados y finalización del reloj


Unidad 4
Aldo Malaver
Construir animaciones intermedias

• Creación de reloj analógico


Unidad 5
Aldo Malaver
Ejercicio 4: Construir un Selector de colores

• Interfaz gráfica de la aplicación Mini Cooper.

• Apagar y encender luces del Mini Cooper.

• Paleta de colores
Ejercicio 4: Construir un Selector de colores

• Eventos de mouse

• Estilo cascada css para la aplicación del MiniCooper

• Empaquetado de la app MiniCooper


SQL Lite

• SQLite es un motor de base de datos escrito en el lenguaje de programación C.

No es una aplicación independiente; más bien, es una biblioteca que los

desarrolladores de software integran en sus aplicaciones. Como tal, pertenece a la

familia de las bases de datos integradas. Es el motor de base de datos más

implementado, ya que lo utilizan varios de los principales navegadores web,

sistemas operativos, teléfonos móviles y otros sistemas integrados


Manejo de Base de datos

• Las Base de datos es un conjunto de datos pertenecientes a un mismo contexto y


almacenados sistemáticamente para su posterior uso.
• Existen dos tipos de base de datos:

o SQL: también llamada relacional, se refiere a que existen

relaciones entre distintas entidades o tablas de la base.

o NoSQL: No tiene una estructura definida y permiten manejar

adecuadamente la escalabilidad y rendimiento


Manejo de Base de datos

• Los motores de base de datos SQL manejan tipos de consultas para definir y
modificar datos.
• Existen las consultas transact-SQL comunes para todos los motores de base de
datos SQL.
• Existen dos tipos de consultas DDL y DML
Manejo de Connection

• Maneja la conexión (sesión) con una base de datos especifica.


• Las consultas SQL son ejecutadas y los resultados devueltos dentro del contexto de la
conexión.
public Connection connection() {
try {
Class.forName("nombre_del_driver");

DriverManager.getConnection("url", "user", "password");


} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
Manejo de Statement

• La interfaz Statement provee métodos para ejecutar consultas con la base de datos.

try {
Statement stmt = conn.createStatement();
stmt.execute("sql");
} catch (SQLException e) {
e.printStackTrace();
}
Manejo de PreparedStatement

• Es la interfaz que maneja objetos que representan un SQL statement precompilado.


• Este objeto puede ser usado para ejecutar eficientemente statements múltiples
veces.

try {
PreparedStatement stmt = conn.prepareStatement("sql");
stmt.setInt(1, 1);
stmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
Manejo de CallableStatement

• La interfaz CallableStatement se utiliza para ejecutar procedimiento almacenados.

try {
CallableStatement cstmt = conn.prepareCall("{call proc(?,
?)}");
cstmt.setString(1, "parameter");
cstmt.registerOutParameter("inOutParam", Types.INTEGER);
} catch (SQLException e) {
e.printStackTrace();
}
Manejo de ResultSet

• La interfaz ResultSet representa el resultado de una tabla la cual generalmente es


devuelta después de una consulta.

final ResultSet rs = cStmt.getResultSet();

while (rs.next()) {
System.out.println(“resultado="+rs.getString("inputParam"));
}
Ejercicio 6: Java
JDBC
Retrofit

• Retrofit es un cliente REST para Java y Android que permite recuperar y cargar JSON
(u otros datos estructurados) a través de un sistema basado en REST. Puede
configurar qué convertidores se utilizan para la serialización de datos, por ejemplo,
GSON para JSON.
Ejercicio 7: Retrofit

También podría gustarte