Apèndix A — Instal·lació de Java

A.1 Què és Java?

Java és alhora un llenguatge de programació i una plataforma d’execució. La seva idea clau va ser “escriu una vegada, executa a tot arreu” (write once, run anywhere): un mateix programa Java funciona a Windows, macOS i Linux sense recompilar-lo.

Com ho aconsegueix? El codi Java no es compila directament a instruccions de la màquina, sinó a un format intermedi anomenat bytecode. Aquest bytecode l’executa un programa especial —la màquina virtual de Java— que sí que és diferent a cada sistema operatiu.

flowchart LR
    A["Codi font<br/>Hola.java"] -->|"compilar<br/>javac"| B["Bytecode<br/>Hola.class"]
    B -->|"executar<br/>java"| C["JVM Windows"]
    B --> D["JVM macOS"]
    B --> E["JVM Linux"]

A.2 JVM, JRE i JDK

Sigla Nom Conté Per a què
JVM Java Virtual Machine El motor que executa el bytecode Fer córrer programes
JRE Java Runtime Environment JVM + biblioteques estàndard Executar programes Java
JDK Java Development Kit JRE + compilador i eines Desenvolupar programes


A nivell visual:

flowchart TB
    subgraph JDK["**JDK** — per DESENVOLUPAR"]
        direction TB
        C["Compilador (javac),<br/>eines (javadoc, jar)..."]
        subgraph JRE["**JRE** — per EXECUTAR"]
            direction TB
            L["Biblioteques estàndard<br/>(String, List, ...)"]
            subgraph JVMbox["**JVM**"]
                V["Màquina virtual:<br/>executa el bytecode"]
            end
        end
    end
    classDef jdkFill fill:#DDEBF7,stroke:#2F5597,stroke-width:2px
    classDef jreFill fill:#E2EFDA,stroke:#538135,stroke-width:2px
    classDef jvmFill fill:#FFF2CC,stroke:#BF8F00,stroke-width:2px
    classDef jdkNode fill:#9DC3E6,stroke:#2F5597,stroke-width:2px
    classDef jreNode fill:#A9D18E,stroke:#538135,stroke-width:2px
    classDef jvmNode fill:#FFD966,stroke:#BF8F00,stroke-width:2px
    class JDK jdkFill
    class JRE jreFill
    class JVMbox jvmFill
    class C jdkNode
    class L jreNode
    class V jvmNode

ImportantQuè necessites=

Per programar (no només a executar), necessites el JDK. El JDK ja inclou tot el que porten la JRE i la JVM.

A.3 Versió: JDK 25 (LTS)

Es recomana treballar amb versions LTS (Long-Term Support, suport a llarg termini). La darrera versió LTS és la JDK 25 i és la que farem servir per la seva estabilitat i perquè incorpora totes les novetats del llenguatge. Tot i que pels continguts del curs, també es podrien utilitzar versions anteriors com la JDK 21.

Hi ha diverses distribucions del JDK. La recomanació és utilitzar Eclipse Temurin (del projecte Adoptium): és gratuïta, oberta, sense complicacions de llicència i disponible per als tres sistemes operatius.

A.4 Instal·lació pas a pas

Windows

  1. Ves a adoptium.net i baixa el JDK 25 (LTS) per a Windows x64, format .msi.
  2. Executa l’instal·lador. Al pas d’opcions, activa “Set JAVA_HOME variable” i “Add to PATH” si apareixen: t’estalviaran la configuració manual.
  3. Segueix fins al final.

macOS

Amb Homebrew és el més còmode:

brew install --cask temurin@25

Si no fas servir Homebrew, baixa el .pkg des d’adoptium.net i executa’l.

Linux

En distribucions basades en Debian/Ubuntu:

sudo apt update
sudo apt install temurin-25-jdk
Consell

Molts gestors de paquets també ofereixen openjdk-25-jdk, que serveix igual:

sudo apt install openjdk-25-jdk

A.5 Variables d’entorn: JAVA_HOME i PATH

Perquè el sistema trobi les eines de Java des de qualsevol carpeta, ens interessen dues variables:

  • JAVA_HOME: apunta a la carpeta on s’ha instal·lat el JDK.
  • PATH: llista de carpetes on el sistema busca programes. Hi hem d’afegir la carpeta bin del JDK perquè java i javac funcionin des de la terminal.

Windows

Si l’instal·lador no ho va fer, configura-les a mà:

  1. Menú Inici → cerca “Edita les variables d’entorn del sistema”.
  2. Botó Variables d’entorn.
  3. Nova variable de sistema: JAVA_HOME = C:\Program Files\Eclipse Adoptium\jdk-25...
  4. Edita Path i afegeix una entrada nova: %JAVA_HOME%\bin.
  5. Accepta i obre una terminal nova (els canvis no afecten terminals ja obertes).

macOS / Linux

Afegeix aquestes línies al teu fitxer de configuració de la shell (~/.zshrc a macOS, ~/.bashrc a molts Linux):

export JAVA_HOME=$(/usr/libexec/java_home -v 25)   # macOS
# A Linux, per exemple:
# export JAVA_HOME=/usr/lib/jvm/temurin-25-jdk-amd64
export PATH="$JAVA_HOME/bin:$PATH"

Després recarrega la configuració:

source ~/.zshrc     # o ~/.bashrc

A.6 Verificar la instal·lació

Obre una terminal nova i comprova les dues eines clau:

java -version
javac -version

Hauries de veure alguna cosa com:

openjdk version "21.0.x" 2024-xx-xx LTS
OpenJDK Runtime Environment Temurin-21...

I per comprovar JAVA_HOME:

# Windows (PowerShell)
echo $env:JAVA_HOME
# macOS / Linux
echo $JAVA_HOME
AlertaErrors típics
  • 'java' no se reconoce... / command not found: el PATH no inclou bin, o no has obert una terminal nova.
  • java -version mostra una versió antiga (8, 11…): tens més d’un JDK instal·lat; ajusta JAVA_HOME i posa el seu bin al davant del PATH.
  • javac no funciona però java: probablement tens només la JRE; instal·la el JDK.

A.7 Editor / IDE

Pots escriure Java amb qualsevol editor de text, però un IDE (entorn de desenvolupament integrat) t’ajuda molt: autocompletat, detecció d’errors mentre escrius, depurador, execució amb un clic. Dues bones opcions són:

IntelliJ IDEA Community

És l’IDE recomanat per a Java. L’edició Community és gratuïta i sobradament suficient per al curs.

  1. Baixa’l de jetbrains.com/idea (tria Community Edition).
  2. Instal·la’l i obre’l. En crear un projecte, detectarà automàticament el JDK 25 que has instal·lat.

Visual Studio Code

Alternativa lleugera i molt popular. Necessita extensions:

  1. Instal·la VS Code, Descàrrega a: https://code.visualstudio.com.
  2. A la pestanya d’extensions, instal·la l’Extension Pack for Java (de Microsoft), que agrupa el suport de llenguatge, el depurador i les proves.
Criteri IntelliJ IDEA Community VS Code
Especialitzat en Java Sí, molt Genèric + extensions
Consum de recursos Més alt Més lleuger
Configuració inicial Mínima Cal instal·lar extensions