Entorno de desarrollo Integrado - IDE
---
* **Coordinador Tecnológico:** Rafael Palau
* **Arquitecto:** Horacio Nemeth
* **Consultores:**
Julio Mello
Marcos Benítez
Marco Aquino
Ilse Grau
Alan Sanier
Lauro Segovia
[TOC]
## ¿ Qué es un IDE ?
El entorno de desarrollo integrado, denominado **IDE** (entorno de desarrollo integrado), reúne las herramientas más importantes para crear software. Por ejemplo, estas herramientas incluyen editores de código fuente y resaltado de sintaxis, compiladores, depuradores, intérpretes, administración de versiones etc.
---
## IDE para diferentes usos
Hay muchos entornos de desarrollo integrados en el mercado.
Los más representativos son:
* IntelliJ : https://www.jetbrains.com/idea/
* Visual Code : https://code.visualstudio.com/
* Eclipse : https://www.eclipse.org/downloads/
* Netbeans : https://netbeans.apache.org/download
---
## Eclipse STS
SpringSource Tool Suite (STS) es un IDE basado en la versión Java EE de Eclipse, pero altamente personalizado para trabajar con Spring Framework
* Enlace para descarga : https://spring.io/tools
---
### Acceso al IDE STS

Figura: Vista acceso del IDE STS v4.x
---
### Vista inicial del IDE

<em>Figura: Vista inicial del IDE STS v4.x</em>
---
### Vista del IDE

<em>Figura: Vista principal del IDE</em>
---
### Configuración del JRE del IDE
Hacer clic en el menú **Windows >> Java >> Installed JREs >> Add**

<em>Figura: Ventana de configuración del JRE</em>
---
### Agregar JRE
Seleccionar la opción de *Standard VM* y luego oprimir el botón **Next**

<em>Figura: Ventana para agregar JRE</em>
---
### Seleccionar ubicación JRE
Seleccionar la ubicación del java JDK y luego oprimir el botón **Finish**

<em>Figura: Ventana para seleccionar ubicación del Java</em>
> Seleccionar el JRE agregado como configuración por defecto
---
### Herramienta de construcción (Build tool) de proyectos
Una herramienta de construcción automatiza el proceso de construcción de un proyecto de software. Por lo general incluye algunas de estas actividades
---
### Herramienta de construcción (Build tool) de proyectos
* Generar documentación desde el código fuente
* Compilar el código fuente
* Empaquetar el código compilado en archivos comprimidos (jar, ear ,war, zip, etc)
* Instalar los paquetes en diferentes lugares como ser : server y repositorio
---
### Herramienta de construcción (Build tool) de proyectos
La ventaja del proceso de compilación automatizado es que minimiza el riesgo de errores manuales al compilar software manualmente. Además, las herramientas de compilación automatizadas suelen ser más rápidas que las personas que realizan los mismos pasos manualmente.
---
### Maven
Es una poderosa herramienta para gestionar proyectos de software en Java.
También puedes usar otros lenguajes para crear proyectos de software, pero Maven está desarrollado en Java, por lo que históricamente se usa más para proyectos Java.
---
### Maven
Maven intenta simplificar el proceso de gestión y construcción de proyectos
Maven gestiona los proyectos utilizando el concepto de **project object model (POM)**
---
### Objetivos del Maven
* Facilitar el proceso de construcción de proyectos
* Proveer un sistema de construcción uniforme
* Proveer completa información del proyecto
* Fomentar mejores prácticas de desarrollo
---
### POM
El POM contiene toda la información necesaria sobre un proyecto, así como las configuraciones de complementos que se utilizarán durante el proceso de compilación. Es la manifestación declarativa del "quién", "qué" y "dónde", mientras que el ciclo de vida de la compilación es el "cuándo" y "cómo".
---
### Ejemplo POM
El **proyect object model (pom)**, es un archivo en formato xml que contiene la información necesaria del proyecto y esta ubicado en la raíz del mismo.
```xml=
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-project</artifactId>
<version>1.0</version>
</project>
```
---
### Ejemplo POM
El *POM* define un conjunto mínimo de propiedades requeridas para un proyecto que son:
* **groupId**: Es el identificador de la organización o el agrupador del proyectos
* **artifactId**: Es el nombre del proyecto
* **version**: Es la última pieza agregada al nombre del proyecto para identificarlo en forma unívoca
---
### Arquetipos en Maven
Un arquetipo de Maven es una plantilla de proyecto que Maven puede generar. En otras palabras, cuando se inicia un nuevo proyecto, puede usar Maven para generar un proyecto desde una plantilla. En Maven, las plantillas se denominan arquetipos (*archetype*).
---
### Creación de nuevo proyecto
Hacer clic en el menú **File >> New >> Project >> Maven >> Maven Project**

<em>Figura: Ventana de creación de proyecto Maven, oprimir el botón *Next*</em>
---
### Creación de nuevo proyecto

<em>Figura: Ventana de creación de proyecto, oprimir el botón *Next*</em>
---
### Selección del arquetipo

<em>Figura: Venta de selección de arquetipo</em>
* Seleccionar el arquetipo *maven-archetype-quickstar* y oprimir el botón *Next*
---
### Configuración del proyecto

* Ingresar los valores de:
* Group Id: *py.gov.mh*
* Artifact Id: *proyecto_ejemplo*
* package: *py.gov.mh*
* Y Oprimir el botón *Finish*
*
---
### Estructura del proyecto creado

<em>Figura: Estructura de proyecto Maven</em>
---
### Estructura del proyecto creado
```haskell=
project
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- $package
| `-- App.java
`-- test
`-- java
`-- $package
`-- AppTest.java
```
---
### Clase Main
```java=
package py.gov.mh;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
```
---
### Cambiar versión del Java del proyecto
Editar el archivo *pom.xml* ubicado en la raíz del proyecto
* Agregar la siguiente configuración
```typescript=
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
```
---
### Cambiar librería JRE del proyecto
Hacer clic sobre el proyecto **Properties >> Java Build Path >> Libraries >> Remove**
* Eliminar JRE existente del proyecto

<em>Figura: Ventana de propiedades del proyecto</em>
---
Desde la ventana de propiedades oprimir el botón *Add Library*, el cual habilitará la venta de selección de tipo de librería a agregar.

<em>Figura: Ventana para agregar librería</em>
---
El tipo de librería a seleccionar es *JRE System Library* y luego oprimir el botón *Next* para seleccionar el JRE instalado por defecto.
Posteriormente oprimir el botón de *Finish* y *Apply and Close*

<em>Figura: Ventana para seleccionar librería JRE</em>
---
### Convertir el proyecto Maven a Spring Boot
Para convertir el proyecto a un proyecto Spring Boot, ese necesario agregar las dependencias al **pom.xml**.
Las dependencias son :
```typescript=
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.3</version>
</dependency>
```
---
### Convertir el proyecto Maven a Spring Boot
```typescript=
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.5.3</version>
<scope>provided</scope>
</dependency>
```
---
### Archivo **pom.xml** despues del cambio

<em>Figura: Archivo del pom.xml (Proyect Object Model)</em>
---
### Actualización de la Clase **App**
Para configurar el proyecto con el Framework Spring/Boot, es necesario agregar la anotación **@SpringBootApplication** e invocar al método estático **run** de la clase **SpringApplication**.
---
### El código luego del cambio
```java=
package py.gov.mh;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App
{
public static void main( String[] args )
{
System.out.println( "Spring Boot init!!" );
SpringApplication.run(App.class, args);
}
}
```
---
### Construir el proyecto Maven
Para compilar el proyecto utilizando maven hay que dar clic derecho sobre el **proyecto_ejemplo >> Run As >> Maven build...**
Comando para construcción del proyecto
```java=
clean package
```
> Luego de ingresar el comando hay que oprimir el botón **Run**
---
### Construir el proyecto Maven

<em>Figura: Venta para configurar la construcción y ejecución</em>
---
### Resultado de la construcción

<em>Figura: Vista de log de construcción</em>
---
### Ejecutar el proyecto
Para ejecutar el proyecto utilizando Spring Boot hay que dar clic derecho sobre el **proyecto_ejemplo >> Run As >> Spring Boot App**
> Luego de seleccionar el botón *Spring Boot App*
---
### Resultado de la ejecución

<em>Figura: Vista de log de ejecución</em>
{"metaMigratedAt":"2023-06-16T16:16:37.506Z","metaMigratedFrom":"YAML","title":"IDE","breaks":true,"description":"Entorno de desarrollo Integrado.","slideOptions":"{\"transition\":\"slide\"}","contributors":"[{\"id\":\"e91465d8-053e-4b6c-9d94-c55eaa5843ee\",\"add\":20059,\"del\":10066}]"}