![Servicios de Red e Internet](http://jamj2000.github.io/entornosdesarrollo/entornosdesarrollo.png)
[![cc-by-sa](http://jamj2000.github.io/entornosdesarrollo/cc-by-sa.png)](http://creativecommons.org/licenses/by-sa/4.0/)
IES Luis Vélez de Guevara - Écija - Spain
# Índice
#### [Apuntes](#apuntes)
#### [Introducción](#introduccion)
#### [Herramientas de desarrollo](#herramientas)
#### [Entornos integrados de desarrollo](#IDE)
#[Apuntes](#indice)
1. Elabora los apuntes de esta Unidad y guárdalos en GitHub en un repositorio llamado 'Apuntes_ED'.
#[Introducción](#indice)
1. ¿Para que sirve un compilador? ¿Qué tipo de archivo obtenemos tras compilar?
1. ¿Para que sirve un enlazador? ¿Qué tipo de archivo obtenemos tras enlazar?
1. ¿Para que sirve un interprete? ¿Obtenemos algún archivo tras interpretar?
1. Explica cada uno de los siguientes conceptos e indica la relación entre ellos.
- código fuente
- código objeto
- código binario
1. ¿Qué tipo de código es el `bytecode` generado por el compilador de Java?
#[Herramientas de desarrollo](#indice)
1. Ejecuta el programa "Hola mundo" en los siguientes lenguajes:
- bash
- python
- php
- javascript (nodejs)
- c
- c++
- java
- ruby
- go
- rust
- lisp
- ensamblador (nasm)
Los paquetes a instalar en Ubuntu son: `python`, `php`, `nodejs`, `gcc`, `g++`, `openjdk-8-jdk`, `ruby`, `golang`, `rustc` , `clisp` y `nasm`.
El código fuente para distintos lenguajes de programación está disponible en:
https://es.wikipedia.org/wiki/Anexo:Ejemplos_de_implementaci%C3%B3n_del_%C2%ABHola_mundo%C2%BB
Instrucciones en https://github.com/jamj2000/DAW1-ED-HolaMundo.
1. Para cada uno de los lenguajes anteriores, indica el proceso realizado para conseguir ejecutar el código: ¿compilación o interpretación?
1. Para cada uno de los lenguajes anteriores, indica el nombre del compilador o interprete utilizado en GNU/Linux.
1. Investiga y averigua que extensión tienen los archivos de código fuente de los siguientes lenguajes:
- bash
- python
- php
- javascript
- c
- c++
- java
- ensamblador
- ruby
- go
- rust
- lisp
1. Scripts ejecutables para los lenguajes interpretados. Edita los scripts para los siguientes lenguajes:
- bash
- python
- php
- javascript
- java
- ruby
- go
- rust
- lisp
Instrucciones en https://github.com/jamj2000/DAW1-ED-HolaMundo.
1. ¿Qué extensión tienen los archivos de código objeto?
1. Lenguaje C. Código en varios archivos. Obtener el código objeto a partir del código fuente de los 3 archivos siguientes:
```c
//-------------
// datos.c
//-------------
char *mensaje="Hola a todos y todas";
int num1 = 8;
int num2 = 10;
```
```c
//-------------
// suma.c
//-------------
int suma (int a, int b) {
return a + b;
}
```
```c
//-------------
// main.c
//-------------
#include
int suma (int a, int b);
extern char *mensaje;
extern int num1, num2;
int main(){
printf("%s\n", mensaje);
printf("%d\n", suma (num1, num2) );
return 0;
}
```
```bash
# Para obtener código objeto
gcc -c main.c datos.c suma.c
```
Deberemos obtener 3 archivos: `main.o`, `suma.o` y `datos.o`
1. Lenguaje C. Código en varios archivos. Obtener el código binario ejecutable a partir del código objeto de los 3 archivos anteriores:
```bash
# Para obtener código binario
gcc -o programa main.o datos.o suma.o
```
Deberememos obtener un archivo `programa` binario ejecutable. Si lo ejecutamos obtenemos el siguiente resultado:
```
./programa
Hola a todos y todas
18
```
1. Lenguaje C++. Código en varios archivos. Obtener el código objeto a partir del código fuente de los 3 archivos siguientes:
```cpp
//-------------
// datos.cpp
//-------------
# include
std::string mensaje = "Hola a todos y todas";
int num1 = 8;
int num2 = 10;
```
```cpp
//-------------
// main.cpp
//-------------
#include
using namespace std;
int suma (int a, int b);
extern string mensaje;
extern int num1, num2;
int main(){
cout << mensaje << endl;
cout << suma (num1, num2) << endl;
return 0;
}
```
```cpp
//-------------
// suma.cpp
//-------------
int suma (int a, int b) {
return a + b;
}
```
```bash
# Para obtener código objeto
g++ -c main.cpp datos.cpp suma.cpp
```
Deberemos obtener 3 archivos: `main.o`, `suma.o` y `datos.o`
1. Lenguaje C++. Código en varios archivos. Obtener el código binario ejecutable a partir del código objeto de los 3 archivos anteriores:
```bash
# Para obtener código binario
g++ -o programa main.o datos.o suma.o
```
Deberememos obtener un archivo `programa` binario ejecutable. Si lo ejecutamos obtenemos el siguiente resultado:
```
./programa
Hola a todos y todas
18
```
1. Bibliotecas. Define que se entiende por biblioteca o librería y los tipos que existen.
1. Bibliotecas. ¿Qué tipo es el más utilizado actualmente? ¿Por qué?
Más información en https://github.com/jamj2000/DAW1-ED-Bibliotecas
1. Bibliotecas. Crea una biblioteca dinámica en C que proporcione las funciones para sumar, restar, multiplicar y dividir 2 números enteros.
Crea un programa que haga uso de ella y comprueba que se ejecuta correctamente.
Instrucciones en https://github.com/jamj2000/DAW1-ED-Bibliotecas
1. Bibliotecas. Crea una biblioteca dinámica en Java que proporcione las funciones para sumar, restar, multiplicar y dividir 2 números enteros.
Crea un programa que haga uso de ella y comprueba que se ejecuta correctamente.
Instrucciones en https://github.com/jamj2000/DAW1-ED-Bibliotecas
1. Bibliotecas. Busca información y explica las ventajas y desventajas de usar bibliotecas estáticas.
1. Bibliotecas. Busca información y explica las ventajas y desventajas de usar bibliotecas dinámicas.
1. Build. Automatiza el proceso de compilación de ejecutable y biblioteca, su enlazado y la generación del archivo ejecutable para código fuente en C con make. Haz uso de un buildfile.
Instrucciones en https://github.com/jamj2000/DAW1-ED-Bibliotecas/blob/master/Build.md
1. Build. Automatiza el proceso de compilación de ejecutable y biblioteca, su enlazado y la generación del archivo .jar para código fuente en Java con Ant. Haz uso de un buildfile.
Instrucciones en https://github.com/jamj2000/DAW1-ED-Bibliotecas/blob/master/Build.md
1. Build. Automatiza el proceso de compilación de ejecutable y biblioteca, su enlazado y la generación del archivo .jar para código fuente en Java con Maven. Haz uso de un buildfile.
Instrucciones en https://github.com/jamj2000/DAW1-ED-Bibliotecas/blob/master/Maven.md
1. Build. Automatiza el proceso de compilación de ejecutable y biblioteca, su enlazado y la generación del archivo .jar para código fuente en Java con Gradle. Haz uso de un buildfile.
Instrucciones en https://github.com/jamj2000/DAW1-ED-Bibliotecas/blob/master/Gradle.md
1. CMake. Automatiza el proceso de compilación de ejecutable y bibliotecas, su enlazado y la generación del archivo ejecutable para código fuente en C++. Crea un buildfile con CMake.
Instrucciones en https://github.com/jamj2000/DAW1-ED-Bibliotecas/blob/master/CMake.md
#[Entornos integrados de desarrollo](#indice)
1. Instala el editor sublime text. Saca una captura de pantalla una vez instalado.
1. Personaliza Sublime text instalando los complementos más importantes.
Consulta la página https://www.genbetadev.com/desarrollo-web/10-packages-de-sublimetext-para-desarrolladores-web
1. ¿Para que sirve el complemento __Emmet__? Haz uso de él al escribir un archivo html de prueba.
1. Instala el editor Visual Studio Code. Saca una captura de pantalla una vez instalado y funcionando.
1. Haz una comparativa de la funcionalidad ofrecida por Sublime text y la ofrecida por Visual Studio Code referente a los siguientes aspectos:
- terminal integrado
- emmet incorporado
- iconos para los tipos de archivos
- atajo de teclas para comentar (Ctrl+Shift+7)
- atajo de teclas para buscar y seleccionar (Ctrl+D)
1. ¿Qué paquetes básicos debemos instalar en Ubuntu para desarrollar en Java?
1. Instala el entorno integrado Netbeans. Saca una captura de pantalla una vez instalado y funcionando.
1. Instala el entorno integrado Eclipse. Saca una captura de pantalla una vez instalado y funcionando.
1. Crea un proyecto en Java en Netbeans. Realiza su compilación y ejecución.
1. ¿Qué sistema de construcción utiliza Netbeans para generar los archivos "ejecutables"? Mira en el directorio raíz del proyecto
y examina qué _buildfile_ utiliza de los vistos en el tema.
1. Crea un proyecto en Java en Eclipse. Realiza su compilación y ejecución.
1. ¿Qué sistema de construcción utiliza Eclipse para generar los archivos "ejecutables"? Mira en el directorio raíz del proyecto
y examina qué _buildfile_ utiliza de los vistos en el tema.