Está en la página 1de 24

Programación Avanzada II

Ing. Kenny Joseph Cooper


2

Índice
● Automatización.
● Programación sin automatización.
● Ventajas de la Automatización.
● Herramientas de Gestión y Construcción de proyectos.
○ Introducción a Maven
○ Introducción a Gradle
● Buenas prácticas.
● Comparativa de herramientas.
● Conclusiones.
3

Automatización
Proceso mediante el cual una actividad o acción es realizada de forma
automática por una máquina o sistema.
Para automatizar un proceso es necesario tecnología que realice la actividad
prácticamente sin intervención de una persona. Se puede implementar en
prácticamente cualquier sector que tenga tareas repetitivas.
Entre las áreas más comunes están:
● Fabricación ● Tecnología
● Robótica ● Software en general
● Automóviles
4

Programación sin automatización


Existen múltiples tareas repetitivas en el proceso
de programación.
• Descargar dependencias.
• Compilar el código fuente.
• Ejecutar pruebas unitarias.
• Implementación del proyecto.
Normalmente estas tareas las ejecutamos de forma
manual, pero hoy en día existen herramientas que
nos permiten automatizar estos procesos.
1
Di
sm
in
uc

n
de
Ti
em
po

2
Co
ns
is
te
n ci
a
en
lo
s
re
su
lta
do
s
3

M
ay
or
Ca
l
Ventajas de la Automatización

id
a d
4

Di
sm
in
uc

n
de
co
st
os
5
6

Automatización en la construcción del software


Uno de los procesos centrales a automatizar es la compilación del software.
Existen múltiples herramientas que permiten automatizar este proceso, entre
ellas:
7

Maven
Maven es una herramienta open-source, creada en 2001 con el objetivo de
simplificar los procesos de compilación y generación de ejecutables a partir del
código fuente de un programa automatizando estos dos puntos.
Antes de que Maven introdujera una interfaz común para hacer los builds del
software, cada proyecto solía tener a alguna persona dedicada exclusivamente
a configurar el proceso de construcción.
8

Maven: Etapas del ciclo de vida

Pruebas de Integración
01 Validación (Validate) 05 (Integration-test)

02 Compilación (Compile) 06 Verificación (Verify)

03 Test 07 Instalación (Install)

04 Empaquetar (Package) 08 Desplegar (Deploy)


9

Maven: Archivo POM


Este archivo se utiliza para administrar el código fuente, archivos de
configuración, información y roles del desarrollador, sistema de
seguimiento de problemas, información de la organización, autorización
del proyecto, URL del proyecto, dependencias del proyecto, etc.

El archivo pom es guardado en el formato xml (lenguaje de marcado


extensible). Su nombre se deriva de Project Object Model.
10

Maven: Archivo POM


Elementos mínimos de configuración.

01 Project

<project>
02 model Version
<modelVersion>4.0.0</modelVersion>
<groupId>com.hn.uth</groupId>
<artifactId>my-personal-app</artifactId>
03 Group Id
<version>1.0.0</version>
</project>

04 Artifact Id

05 Version
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 11
<modelVersion>4.0.0</modelVersion>
<groupId>…</groupId>
<artifactId>…</artifactId>
<version>…</version>
<packaging>…</packaging>
<dependencies>…</dependencies> Elemento Básicos
<parent>…</parent>
<dependencyManagement>…</dependencyManagement>
<modules>…</modules>
<properties>…</properties>
<build>…</build>
<reporting>…</reporting>
Configuración de construcción
<name>…</name>
<description>…</description>
<url>…</url>
<inceptionYear>…</inceptionYear> Información del proyecto
<licenses>…</licenses>
<organization>…</organization>
<developers>…</developers>
<contributors>…</contributors>
<issueManagement>…</issueManagement>
<prerequisites>…</prerequisites>
<repositories>…</repositories>
<pluginRepositories>…</pluginRepositories> Configuración de Ambiente
<distributionManagement>…</distributionManagement>
<profiles>…</profiles>
</project>
12

Compilación con Maven


13

Ventajas de Maven
• Convención sobre su
configuración.
• Compilaciones múltiples y
repetidas.
• Gestión, prueba y desarrollo de
sus complementos.
• Comprobación del estado de cada
construcción.
14

Gradle
Gradle es una herramienta de automatización de compilación de código
abierto, que obtuvo una rápida popularidad ya que fue diseñada
fundamentalmente para construir multiproyectos, utilizando conceptos
provenientes de Apache Maven.
Gradle mejora principalmente las siguientes funcionalidades de Maven:
• Lenguaje
• Gestión del ciclo de vida
15

Gradle: Etapas del ciclo de vida

Inicialización Configuración Ejecución

Determinación del Ejecución de scripts del Ejecución de


alcance de la alcance definido. argumentos adicionales.
construcción.

Etapas del ciclo de ejecución Gradle


La construcción Gradle tiene 3 distintas fases
apply plugin: 'java' 16
apply plugin: 'eclipse' Aplicación de plugins binarios
apply plugin: 'application'

mainClassName = 'hello.HelloWorld'

repositories { Declaración de repositorios


mavenCentral()
}

jar {
baseName = 'gs-gradle'
version = '0.1.0' Ensamblado de Jars
}

sourceCompatibility = 1.8
targetCompatibility = 1.8 Definición de compatibilidades del lenguaje

dependencies {
compile "joda-time:joda-time:2.2"
testCompile "junit:junit:4.12" Gestión de dependencias
}
17

Archivos Gradle
Settings.gradle build.gradle
dependencyResolutionManagement { plugins {
repositoriesMode.set(RepositoriesMode id 'com.android.application'
.FAIL_ON_PROJECT_REPOS)
}
repositories {
dependencies {
google()
implementation
mavenCentral() 'com.google.android.material:material:1.
4.0'
jcenter()
implementation
}
'androidx.constraintlayout:constraintlay
} out:2.1.0'
rootProject.name = "VotacionesHN" compileOnly
'com.github.pengrad:jdk9-deps:1.0'
include ':app'
}
18

Buenas prácticas
• Especificar siempre una versión de los plugins en Maven.
• Minimiza el número de dependencias SNAPSHOT o nightly build.
• Utiliza propiedades con total libertad.
• Configura suficiente memoria para la herramienta seleccionada.
• Especificar la versión de java a utilizar.
• Utilizar la estructura de archivos recomendada.
19

Maven vs Gradle
La gran diferencia entre estas herramientas es la sintaxis con la que se
escriben. Maven utiliza XML y Gradle Groovy. Ambas hacen las mismas
acciones, sin embargo, podemos decir que la implementación en Gradle es
más fácil de leer y mantener.
Eso se debe a que, a diferencia de XML, no utiliza tags para abrir y cerrar
sus sentencias.
20

Comparativa
Maven Gradle

El rendimiento de Maven es lento en comparación El tiempo de construcción de Gradle es corto y


con Gradle rápido

Los scripts de Maven son un poco largos en Los scripts de Gradle son mucho más cortos y
comparación con Gradle limpios

Utiliza XML Utiliza lenguaje específico de dominio (DSL)

Su uso es altamente extendido, ha estado muchos Su uso es poco extendido por ser más nuevo
años en el mercado

Soporte en la mayoría de herramientas de Soporte en la mayoría de herramientas de


Integración continua Integración continua
21

¿Cuál debo elegir Maven o Gradle?


La clave está en la flexibilidad, si el proyecto se puede gestionar con metas
estándar o con poca personalización entonces Maven es suficiente, por
otro lado si el proyecto requiere diferentes comportamientos en función
de múltiples variables en tiempo de construcción quizá Gradle responda
más eficazmente a esos requerimientos.

Otro factor importante es su lenguaje, si ya manejas XML no habrá


problemas al adoptar Maven, mientras que si tienes facilidad en aprender
lenguajes de programación no tendrás problema en aprender Groovy que
es el lenguaje utilizado por Gradle.
22

Ejemplo de Ejecución
23
Comparativa - Tiempo de procesamiento
24

Conclusiones

En la programación avanzada es La selección de una herramienta de apoyo


fundamental el apoyo de herramientas que dependerá de muchos factores, dependerá
permitan la automatización de las tareas del contexto y solución específica.
más recurrentes.

También podría gustarte