<div class="page">
<div class="cover text-center">
<img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo">
# Preparació de l'entorn
<div class="text-end fit-content ms-auto my-3 mt-auto pt-3">
<p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p>
<p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p>
<p><strong>Curs:</strong> 2024/2025</p>
</div>
<div>
<p class="fw-bold mb-0">Llicència: BY-NC-SA</p>
<p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p>
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank">
<img class="mx-auto" src="/itb/images/license.png" alt="Licence"/>
</a>
</div><!--license-->
</div><!--cover-->
</div><!--page-->
{:toc}
# Objectius
Configurar l'entorn de desenvolupament en ordinadors amb sistema operatiu Windows o distribucions
de Linux basades en Debian, com Ubuntu o Linux Mint.
En aquest manual s'instal·larà i es configuraran les següent eines:
- [IntelliJ IDEA](https://www.jetbrains.com/idea/): Entorn de desenvolupament integrat.
- [Git](https://git-scm.com/): Enina de control de versions.
- [GitHub](https://github.com/): Emmagatzenament en línia de repositoris Git.
## IntelliJ IDEA
Descarrega i instal·la [IntelliJ IDEA](https://www.jetbrains.com/idea/) mitjançant
l'instal·lador disponible a https://www.jetbrains.com/idea/download/. Utilitzarem la
versió __Community__ de l'IDE.
- Inicia IntelliJ.
- Crea un nou projecte.
- Nom del projecte: __CognomNom-ED__
- Canviar _Cognom_ i _Nom_ pel teu primer cognom i el teu nom.
- Llenguatge: __Java__
- Build system: __Maven__
- Aquest sistema és més complex que _IntelliJ_, però aquest projecte
l'utilitzarem durant tot el curs i estudiarem aquest sistema més endavant.
- Seleccionar __JDK__: Oracle OpenJDK 19.
- Si no en tens cap instal·lat, donar-li a l'opció __Download JDK...__

Una vegada creat, tindreu un projecte buit creat.

- Comprova que el programa _Main.java_ que ve per defecte s'executa.
Per executar un programa Java heu de donar-li al botó
{.icon} __Run__.
- Una vegada comprovat, es pot eliminar.
### Estructura d'un projecte
Com podeu observar, per defecte s'han creat una sèrie de carpetes en el projecte.
- El __codi font__, es guarda en la carpeta marcada com a _arrel del codi font_. Normalment és __src__.
En Maven, s'ha creat la carpeta __src/main/java__. En IntelliJ aquesta carpeta està marcada en blau.
- Les __proves__, es guarda en la carpeta marcada com a _arrel del codi font de proves_. Normalment és __test__.
En Maven, s'ha creat la carpeta __src/test/java__. En IntelliJ aquesta carpeta està marcada en verd.
- El __bytecode (.class)__, es guarda en la carpeta configurada com _destí d'eixida (output path)_. Normalment és __out__.
En Maven, s'ha creat la carpeta __target/classes__. En IntelliJ aquesta carpeta es pot configurar a __Project Structure > Modules > Path__.

### Codi font
Java és un llenguatge orientat a objectes i el codi font s'organitza en __Classes__.
En Java, es poden organitzar les diferents _Classes_ en carpetes, anomenats __paquets o packages__.
Igual que amb les carpetes, un package pot contindre més packages dins. Com a separador s'utilitza
el __punt (.)__.
- Crea el package __ud1.examples__. Botó dret > New > Package...
- Crea una classe [DebugRepetirNom](./02_entorns_desenvolupament.html#debugger)
dins d'aquest paquet, còpia el contingut de l'exemple i executa'l. Comprova que funciona.

## Git
Abans que res, cal instal·lar [Git](https://git-scm.com/).
Cal descarregar l'instalador des de la web: https://git-scm.com/downloads
En Ubuntu es pot instal·lar mitjançant les comandes:
```bash
$ sudo apt-get update
$ sudo apt-get install git
```
## GitHub
- Si no en tens cap, crea't un compte a [GitHub](https://github.com/).
- Proporciona-li el teu usuari al docent del mòdul mitjançant la tasca corresponent en
el curs del mòdul.
- Espera a ser convidat a l'organització:
- __DAM1S__: [fpmislata-dam1s-ed](https://github.com/fpmislata-dam1s-ed).
- __DAW1__: [fpmislata-daw1-ed](https://github.com/fpmislata-daw1-ed).
- Crea un repositori dins de l'organització:
- Propietari: __fpmislata-{grup}-ed__
- Nom del repositori: __CognomNom-ED__
- Descripció: Respositori de les solucions del mòdul ED del grup {GRUP} en CIPFP Mislata del estudiant Nom Cognom
- Visibilitat: __Privat__
- __NO__ afegir __README__ ni __LICENSE__.

Si s'ha creat correctament, haurieu de veure una pàgina com aquesta:

Proporciona-li l'adreça HTTPS del teu repositori al docent del mòdul mitjançant la tasca corresponent en
el curs del mòdul.
## Integració IntelliJ + GitHub
- Copiar el contingut de [.gitignore](https://raw.githubusercontent.com/github/gitignore/master/Global/JetBrains.gitignore)
en un fitxer anomenat __.gitigonre__ en l'arrel del teu repositori.
- Afegir les línies:
```
# Maven
log/
target/
```
- Crea el fitxer <strong>README.md</strong> a l'arrel del projecte amb el contingut:
```md
# CognomNom-ED
Respositori de les solucions del mòdul ED de {GRUP} en CIPFP Mislata del estudiant Nom Cognom
```
- Activar la versió de control: __VCS > Enable Version Control Integration__ i seleccionar __Git__
Abans de poder fer la integració, cal configurar l'autentificació amb GitHub. Hi han dues maneres,
mitjançant __SSH__ o __Personal Access Tokens (PAT)__. Jo recomane __SSH__.
### Autentificació SSH
Seguir els passos de [](/itb/DAM-ED/UD2/exercicis/01_tutorial_git.html#ssh).
- Afegir el repositori de Github: __Git > Manage Remotes...__ i donar-li al __+__
- Name: __origin__
- URL: __L'enllaç SSH del teu projecte de GitHub__.
### Autentificació PAT
- Afegir el repositori de Github: __Git > Manage Remotes...__ i donar-li al __+__
- Name: __origin__
- URL: __L'enllaç HTTPS del teu projecte de GitHub__
- Vos demanarà iniciar sessió, feu-ho mitjançant Use Token...
- Doneu-li a __Generate...__
- Se vos obrirà una pàgina de GitHub per generar el PAT token.
- Poseu la expiració: No expiration
- Genereu el token
- Copieu (i guardeu-vos) el token i introduiu-lo a IntelliJ.
### Remotes
Una vegada afegit el repositori remot, ja es podrien realitzar canvis.

- Realitzar un commit inicial: __Git > Commit...__
- Seleccionar tots els fitxers
- Missatge: Initial commit
- Botó: __Commit__

- Pujar el projecte a GitHub: __Git > Push...__
Us hauria de sortir en verd els fitxers que aneu a pujar.

- Verifiqueu que s'ha pujat a GitHub:

## Treballar amb Git
Una vegada configurat l'espai de treball, ja es pot utiliztar per afegir noves classes i sincronitzar-les en diferents espais de treball mitjançant Git.
Tot el codi estarà dins de la carpeta __src__.
Quan es vulga sincronitzar el codi de IntelliJ IDEA a Github caldrà:
- Realitzar un pull per incorporar els canvis que hagen pogut haver i no crear conflictes:
__Git > Pull...__
- Realitzar un commit amb els canvis: __Git > Commit...__
- Missatge del commit __significatiu__
- Realitzar un push: __Git > Push__
- Comprovar que s'ha actualitzat correctament en GitHub.
Aquest lloc web utilitza galetes per millorar l'experiència de l'usuari