# Unidad 2: Entornos integrados de desarrollo

* [Diapositivas](http://jamj2000.github.io/entornosdesarrollo/2/diapositivas)
* [Actividades](http://jamj2000.github.io/entornosdesarrollo/2/actividades)

## Introducción

En esta Unidad aprenderemos a:

* Instalar entornos de desarrollo, propietarios y libres.
* Personalizar y automatizar el entorno de desarrollo.
* Generar ejecutables a partir de código fuente.
* Identificar las características comunes y específicas de diversos entornos de desarrollo.

### Conceptos

* Codigo fuente
* Codigo intermedio u objeto
* Codigo binario
* Bibliotecas (librerías)
* Compilar
* Enlazar (Link)
* Interpretar

## Herramientas básicas

### Lo básico

* Editor de texto: permite escribir código fuente
* Compilador: genera código objeto a partir del código fuente
* Enlazador: agrupa varios archivos objeto en uno binario
* Interprete: lee código fuente y genera código binario para su ejecución

### Bibliotecas (o librerías) (I)

> Conjunto de archivos objeto que extienden la funcionalidad del lenguaje

* **Biblioteca estándar** del lenguaje
* **Bibliotecas adicionales**

### Bibliotecas (o librerías) (II)

* **Biblioteca estándar del lenguaje C**
  * Entrada y salida por terminal
  * Manejo de archivos
  * Funciones matemáticas
* **Biblioteca estándar del lenguaje Java**
  * Entrada y salida por terminal
  * Manejo de archivos
  * Funciones matemáticas
  * Interfaz gráfica&#x20;
  * Red
  * Bases de datos
  * Gráficos (sólo 2D)

### Bibliotecas (o librerías) (III)

* Cada biblioteca está compuesta por varios archivos objeto
* Tipos
  * bibliotecas dinámicas (.DLL o .so) (.jar en Java)
    * muy usadas
  * bibliotecas estática (.LIB o .a)
    * menos usadas actualmente

### Bibliotecas (o librerías) (IV)

* Una biblioteca se compone de 2 partes:
  * Especificación (ofrece una API)
  * Implementación&#x20;

**API** = Interfaz de Programación de Aplicaciones

### Entorno necesario en java

* JRE: necesario para ejecutar programas
  * JVM (inteprete java)
  * Biblioteca estándar
* JDK: necesario para desarrollar programas
  * Herramientas: javac, jar, javadoc, ...

### Construir (Build) (I)

> Construir (Build) = Compilar + Enlazar

* Dos opciones:
  * Herramientas de construcción
  * Servidor de construcción

### Construir (Build) (II)

#### **Herramientas de construcción**

* make, ninja (C, C++)
* ant, maven, gradle (Java)
* grunt, gulp (Javascript)
* rake (ruby)

### Construir (Build) (III)

#### **Archivos de construcción (buildfiles)**

* make: **Makefile**
* ninja: **build.ninja**
* ant: **build.xml**
* maven: **pom.xml**
* gradle: **build.gradle**
* grunt: **Gruntfile.js**
* gulp: **gulpfile.js**
* rake: **Rakefile**

### Construir (Build) (IV)

* Generadores de archivos de construcción
  * CMake: CMakeLists.txt
  * Meson: meson.build &#x20;

### Construir (Build) (V)

* Servidores de construcción
  * Jenkins&#x20;
  * TravisCI
  * CircleCI
  * Bamboo
  * TeamCity

## Entornos integrados de desarrollo (IDE)

### Ejemplos

* Destinados principalmente a C++:
  * DevC++
  * Microsoft Visual Studio
  * QtCreator
* Destinados principalmente a Java:
  * Netbeans
  * Eclipse
  * IntelJ IDEA
  * Oracle JDeveloper


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kibrands.gitbook.io/apuntes-ed/2.entornos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
