Creación de Puntos de Entrada y Dependencias en Proyectos Java

Clase 33 de 39Curso de Programación Funcional con Java SE

Contenido del curso

Functional Programming en Java

Optional y Streams: Datos mas interesantes

Todo junto: Proyecto Job-search

Resumen

Construir un proyecto en Java desde cero requiere definir con claridad por dónde arranca la aplicación y qué herramientas externas facilitarán el desarrollo. Aquí se explica paso a paso cómo crear el punto de entrada, configurar Gradle para ejecutarlo y agregar las tres librerías esenciales que permitirán recibir argumentos por terminal, hacer peticiones web y transformar datos JSON en objetos de Java.

¿Cómo crear el punto de entrada de un proyecto Java?

El punto de entrada es la clase que contiene el método main, es decir, el lugar exacto donde la aplicación comienza a ejecutarse. Para organizarlo correctamente, lo primero es crear un paquete que agrupe las clases del proyecto [0:12]. En este caso se utiliza la convención com.platzy.JobSearch.

Dentro de ese paquete se crea una nueva clase llamada JobSearch haciendo clic derecho, seleccionando New > Java class y escribiendo el nombre [0:29]. Una vez creada, se le agrega el método main usando un shortcut del IDE que genera la firma del método de forma automática [0:38].

java public class JobSearch { public static void main(String[] args) { System.out.println("Hello JobSearch"); } }

Para que Gradle sepa cuál es la clase principal, se abre el archivo build.gradle y se agrega el bloque application con la propiedad mainClassName apuntando a com.platzy.JobSearch.JobSearch [0:55]. Después, desde el panel de Gradle en el IDE, se ejecuta la tarea Application > run, que compila el proyecto, crea la instancia de la clase y ejecuta el método main automáticamente [1:17].

¿Qué librerías se necesitan y dónde encontrarlas?

En lugar de escribir todo desde cero, se aprovechan librerías que resuelven problemas comunes: parsear argumentos de terminal, realizar llamadas web y convertir formatos de datos [1:30]. El sitio MVN Repository es un recurso muy útil para buscar dependencias compatibles con Gradle; basta con buscar el nombre de la librería, elegir la versión y copiar la línea de dependencia [1:55].

¿Qué hace JCommander en un proyecto Java?

JCommander transforma los argumentos que se pasan por terminal en objetos de Java listos para ser manipulados [1:45]. En vez de recorrer manualmente el arreglo args, JCommander mapea cada parámetro a atributos de una clase, simplificando la validación y el acceso a los valores recibidos.

¿Cómo funcionan Feign Core y Feign GSON juntos?

Feign Core se encarga exclusivamente de realizar peticiones web [2:28]. Actúa como un cliente HTTP declarativo: se define una interfaz con las rutas de la API y Feign genera la implementación que ejecuta las llamadas a la API de GitHub.

El problema es que la respuesta llega en formato JSON. Ahí entra Feign GSON, una extensión que integra la popular librería de Google llamada GSON [2:55]. Esta combinación toma el JSON de respuesta, lo procesa y lo convierte en clases y objetos de Java que se pueden utilizar directamente en el código.

groovy dependencies { implementation 'com.beust:jcommander:<versión>' implementation 'io.github.openfeign:feign-core:<versión>' implementation 'io.github.openfeign:feign-gson:<versión>' }

¿Por qué es importante definir dependencias desde el inicio?

Agregar las dependencias al bloque dependencies del archivo build.gradle permite que el gestor de dependencias descargue, organice y ponga a disposición cada librería sin intervención manual [2:10]. Al importar los cambios sugeridos por IntelliJ, el proyecto queda listo para utilizar las tres herramientas:

  • JCommander: convierte argumentos de terminal en objetos Java.
  • Feign Core: ejecuta peticiones HTTP a APIs externas.
  • Feign GSON: transforma respuestas JSON en objetos Java manipulables.

Con esta base configurada, el proyecto tiene un punto de arranque claro y las herramientas necesarias para enfocarse en la lógica de negocio. ¿Ya probaste ejecutar tu primer Hello JobSearch desde Gradle? Comparte tu experiencia o dudas en los comentarios.