Un entorn mal configurat és la causa número u d'abandonament entre qui comença a programar en Java. Els missatges d'error són críptics ('javac' no es reconeix com una ordre, JAVA_HOME is not set, UnsupportedClassVersionError) i no tenen res a veure amb programar. Aquesta lliçó elimina aquest obstacle d'una vegada: instal·laràs un JDK, comprovaràs que funciona, entendràs per què existeixen JAVA_HOME i PATH en comptes de limitar-te a copiar ordres, compilaràs i executaràs el teu primer programa des del terminal i triaràs l'IDE amb què treballaràs durant tot el curs. En acabar tindràs el projecte bibliotech creat i a punt per escriure-hi codi.

Contingut

  1. Quin JDK triar i d'on descarregar-lo
  2. Instal·lació a Windows, macOS i Linux
  3. Verificar la instal·lació: java -version i javac -version
  4. JAVA_HOME i PATH: què són i com configurar-los
  5. El teu primer programa des del terminal: HolaBiblioTech.java
  6. JShell: el laboratori per aprendre
  7. Triar un IDE i crear el projecte bibliotech
  8. Estructura de carpetes recomanada
  9. Errors Habituals i Consells
  10. Exercicis

  1. Quin JDK triar i d'on descarregar-lo

A la lliçó anterior va quedar clar que necessites un JDK (no pas un JRE), perquè el JDK inclou el compilador javac. El que potser no esperaves és que hi hagi diversos JDK diferents per a la mateixa versió de Java.

Tots parteixen del mateix codi font, OpenJDK, que és la implementació de referència i de codi obert. El que canvia entre distribucions és qui la compila, qui la signa, durant quant de temps publica pedaços i sota quina llicència.

Distribució Qui la publica Llicència i cost Recomanació
Eclipse Temurin Eclipse Adoptium Lliure (GPL+CE), gratuïta també en producció L'opció recomanada del curs
Oracle JDK Oracle Gratuïta per a desenvolupament; condicions específiques en producció Vàlida, però revisa la llicència si és per a empresa
Amazon Corretto Amazon Lliure, gratuïta, suport llarg Bona si desplegues a AWS
Azul Zulu Azul Systems Lliure, amb suport comercial opcional Bona alternativa
Microsoft Build of OpenJDK Microsoft Lliure, gratuïta Bona si treballes a Azure

Recomanació pràctica: descarrega Eclipse Temurin 21 (o el 17 si prefereixes cenyir-te estrictament a la versió mínima del curs) des d'adoptium.net. És gratuït sense matisos, àmpliament utilitzat en producció i no requereix compte d'usuari per descarregar-lo.

Sobre la versió: aquest curs fa servir Java 17 com a referència i marca explícitament allò que necessita una versió superior. Si instal·les Java 21, tot funcionarà igual i a més tindràs disponibles les millores més recents. Totes dues són LTS.

Un detall a l'hora de descarregar: tria el paquet correcte per al teu processador. A Windows i a la majoria de PC amb Linux serà x64. En un Mac modern (M1, M2, M3, M4) serà aarch64/ARM64; en un Mac antic, x64. Descarregar el binari equivocat provoca errors d'arrencada desconcertants.

  1. Instal·lació a Windows, macOS i Linux

Windows

  1. A adoptium.net, descarrega l'instal·lador .msi de Temurin per a Windows x64, versió 21 (LTS), JDK (no JRE).
  2. Executa l'instal·lador. A la pantalla d'opcions personalitzades, activa aquestes dues caselles, que t'estalviaran tot l'apartat 4:
    • Add to PATH
    • Set JAVA_HOME variable
  3. Acaba la instal·lació. El JDK quedarà normalment a C:\Program Files\Eclipse Adoptium\jdk-21.x.x-hotspot.
  4. Obre un terminal nou (PowerShell o Símbol del sistema). Aquest pas és obligatori: els terminals ja oberts no veuen les variables d'entorn noves.

macOS

La manera més còmoda és Homebrew. Si no el tens, instal·la'l des de brew.sh. Després:

# Instal·la Temurin 21
brew install --cask temurin@21

# Comprova quin JDK ha detectat el sistema
/usr/libexec/java_home -V

Si prefereixes no fer servir Homebrew, descarrega l'instal·lador .pkg d'Adoptium i executa'l; el JDK s'instal·larà a /Library/Java/JavaVirtualMachines/.

macOS porta una utilitat molt pràctica, /usr/libexec/java_home, que localitza el JDK instal·lat. La faràs servir a l'apartat 4.

Linux

En distribucions basades en Debian o Ubuntu, el paquet dels repositoris oficials sol ser suficient:

sudo apt update
sudo apt install openjdk-21-jdk

A Fedora o RHEL:

sudo dnf install java-21-openjdk-devel

Fixa't en els sufixos: a Debian/Ubuntu el paquet -jdk inclou el compilador, i a Fedora és el sufix -devel. Si instal·les openjdk-21-jre o java-21-openjdk a seques, tindràs JVM però no javac.

Si la teva distribució no ofereix la versió que vols, descarrega el .tar.gz d'Adoptium i descomprimeix-lo a /opt:

sudo mkdir -p /opt/java
sudo tar -xzf OpenJDK21U-jdk_x64_linux_hotspot_21.tar.gz -C /opt/java

Nota per a qui gestiona diverses versions: eines com SDKMAN! (sdkman.io) permeten instal·lar i canviar entre JDK amb una sola ordre (sdk install java 21-tem, sdk use java 17-tem). És el que fa servir molta gent que treballa amb projectes de diferents edats. No cal per al curs, però val la pena conèixer-ho.

  1. Verificar la instal·lació: java -version i javac -version

Aquest és el moment de la veritat. Obre un terminal nou i executa les dues ordres:

java -version
javac -version

Una sortida correcta s'assembla a això (els números concrets variaran):

openjdk version "21.0.5" 2024-10-15 LTS
OpenJDK Runtime Environment Temurin-21.0.5+11 (build 21.0.5+11-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.5+11 (build 21.0.5+11-LTS, mixed mode, sharing)

javac 21.0.5

Interpretem què t'està dient cada ordre:

  • java -version mostra la versió de la JVM que s'executarà. Si aquesta ordre respon, pots executar programes Java.
  • javac -version mostra la versió del compilador. Si aquesta ordre falla però l'anterior funciona, tens un JRE o una instal·lació incompleta: no podràs compilar.

És fonamental que tots dos números coincideixin. És molt habitual, en màquines on s'han instal·lat diversos JDK al llarg del temps, trobar-se amb un java de la versió 8 i un javac de la 21. En aquest escenari compiles codi modern que la teva JVM es nega a executar, i apareix el temut UnsupportedClassVersionError.

Si alguna de les ordres respon amb "no es reconeix com una ordre interna o externa" (Windows) o "command not found" (macOS/Linux), el JDK està instal·lat però el sistema no sap on trobar-lo. Això és exactament el que resol l'apartat següent.

  1. JAVA_HOME i PATH: què són i com configurar-los

Què són realment

Són dues variables d'entorn: valors de text que el sistema operatiu posa a disposició de tots els programes que arrenca.

  • PATH és una llista de directoris separats per ; (Windows) o : (macOS/Linux). Quan escrius javac al terminal, el sistema recorre aquesta llista en ordre buscant un executable amb aquell nom i executa el primer que troba. Si el directori bin del teu JDK no és al PATH, el terminal no troba javac encara que estigui perfectament instal·lat. I si hi ha dos JDK al PATH, guanya el que apareix primer: aquesta és la causa habitual de versions descompassades.

  • JAVA_HOME apunta a la carpeta arrel del JDK (la que conté bin, lib, conf…), no pas a un executable. No la fa servir el terminal, sinó altres eines: Maven, Gradle, servidors d'aplicacions, scripts d'arrencada i alguns IDE la llegeixen per saber amb quin JDK han de treballar. Pots tenir Java funcionant al terminal sense JAVA_HOME, però tan bon punt facis servir una eina de l'ecosistema te la demanarà.

flowchart LR
    A["Escrius<br/>javac Hola.java"] --> B["El sistema recorre PATH<br/>directori a directori"]
    B --> C{"Troba<br/>javac?"}
    C -->|"Sí"| D["L'executa<br/>(el primer de la llista)"]
    C -->|"No"| E["command not found"]
    F["Maven, Gradle,<br/>servidors…"] --> G["Llegeixen JAVA_HOME<br/>per localitzar el JDK"]

Windows

  1. Prem la tecla Windows i busca "Editar les variables d'entorn del sistema".
  2. Prem Variables d'entorn….
  3. A Variables del sistema, prem Nova:
    • Nom: JAVA_HOME
    • Valor: el camí arrel del JDK, per exemple C:\Program Files\Eclipse Adoptium\jdk-21.0.5.11-hotspot
  4. Selecciona la variable Path, prem Edita i afegeix-hi una entrada nova: %JAVA_HOME%\bin. Fer servir %JAVA_HOME% en comptes del camí complet és una bona pràctica: el dia que actualitzis el JDK, només hauràs de canviar JAVA_HOME.
  5. Si hi ha entrades antigues d'altres Java (per exemple C:\ProgramData\Oracle\Java\javapath), mou-les per sota de la teva o elimina-les.
  6. Accepta-ho tot i obre un terminal nou.

Per comprovar-ho:

echo %JAVA_HOME%
where java

A PowerShell serien $env:JAVA_HOME i Get-Command java.

macOS i Linux

La configuració es fa al fitxer d'arrencada del teu shell: ~/.zshrc si fas servir zsh (el predeterminat al macOS modern) o ~/.bashrc / ~/.bash_profile si fas servir bash. Afegeix-hi al final:

A macOS:

export JAVA_HOME=$(/usr/libexec/java_home -v 21)
export PATH="$JAVA_HOME/bin:$PATH"

A Linux (ajusta el camí al real de la teva instal·lació):

export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
export PATH="$JAVA_HOME/bin:$PATH"

Fixa't en el detall de PATH="$JAVA_HOME/bin:$PATH": col·loquem el nostre bin davant del PATH existent, perquè guanyi davant de qualsevol altre Java instal·lat. Després, recarrega la configuració:

source ~/.zshrc     # o ~/.bashrc
java -version
echo $JAVA_HOME
which java

A Linux, si tens diverses versions instal·lades pel gestor de paquets, l'ordre sudo update-alternatives --config java et permet triar quina és la predeterminada del sistema.

  1. El teu primer programa des del terminal: HolaBiblioTech.java

Compilaràs i executaràs un programa sense IDE. Encara que després treballis sempre amb IntelliJ o Eclipse, fer-ho una vegada a mà és el que converteix "compilar" en una cosa concreta en comptes d'un botó màgic.

Crea una carpeta de treball i, a dins, un fitxer anomenat exactament HolaBiblioTech.java:

public class HolaBiblioTech {
    public static void main(String[] args) {
        System.out.println("BiblioTech - Nexus Software");
        System.out.println("Sistema de gestio de la biblioteca tecnica interna");
        System.out.println("Versio 0.1");
    }
}

Encara no dissecarem aquesta estructura (això és la lliçó 01-03), però hi ha una regla que necessites ja: el nom del fitxer ha de coincidir amb el nom de la classe pública, majúscules incloses. La classe es diu HolaBiblioTech, així que el fitxer és HolaBiblioTech.java. Si el deses com a holabibliotech.java o Hola.java, el compilador el rebutjarà amb un missatge del tipus "class HolaBiblioTech is public, should be declared in a file named HolaBiblioTech.java".

Compilar i executar

# 1. Compilar: genera HolaBiblioTech.class
javac HolaBiblioTech.java

# 2. Comprovar que s'ha creat el .class
ls          # a Windows: dir

# 3. Executar: ATENCIO, SENSE l'extensio .class
java HolaBiblioTech

Sortida esperada:

BiblioTech - Nexus Software
Sistema de gestio de la biblioteca tecnica interna
Versio 0.1

Les dues ordres mereixen una explicació detallada:

  • javac HolaBiblioTech.java rep el nom del fitxer amb extensió. Tradueix el font a bytecode i crea HolaBiblioTech.class al mateix directori. Si no hi ha errors, no imprimeix res: a les eines de línia d'ordres, el silenci és senyal d'èxit.
  • java HolaBiblioTech rep el nom de la classe, sense extensió i sense .class. Aquí és on gairebé tothom s'equivoca la primera vegada escrivint java HolaBiblioTech.class, cosa que produeix un error de "classe no trobada". La raó és conceptual: java no obre un fitxer, sinó que carrega una classe pel seu nom buscant-la al classpath (per defecte, el directori actual).

Execució directa del font (Java 11 i superiors)

Des de Java 11 existeix una drecera molt còmoda per a programes d'un sol fitxer:

java HolaBiblioTech.java

Fixa't que aquí que porta l'extensió .java. Aquest mode compila el fitxer en memòria i l'executa al vol, sense deixar cap .class al disc. És perfecte per a proves ràpides i per aprendre, però té límits: només serveix per a programes continguts en un únic fitxer font. Tan bon punt el teu projecte tingui diverses classes (a partir del mòdul 3), tornaràs a javac o, més probablement, deixaràs que l'IDE ho faci per tu.

Ordre Extensió Què fa Quan fer-la servir
javac Fitxer.java sí, .java Compila i genera un .class Sempre que vulguis el bytecode
java NomClasse no Executa una classe ja compilada Execució normal
java Fitxer.java sí, .java Compila en memòria i executa Proves ràpides d'un sol fitxer (Java 11+)

  1. JShell: el laboratori per aprendre

Java 9 va introduir JShell, una consola interactiva (el que en altres llenguatges s'anomena REPL: read-eval-print loop). Et permet escriure expressions soltes i veure'n el resultat a l'instant, sense crear un fitxer, sense classe i sense main.

jshell

Una sessió típica:

jshell> int diesRetard = 12
diesRetard ==> 12

jshell> double tarifaDiaria = 0.25
tarifaDiaria ==> 0.25

jshell> double multa = diesRetard * tarifaDiaria
multa ==> 3.0

jshell> String titol = "Java Eficac"
titol ==> "Java Eficac"

jshell> titol.toUpperCase()
$5 ==> "JAVA EFICAC"

jshell> titol.length()
$6 ==> 11

jshell> /exit
|  Goodbye

Observa un parell de detalls:

  • No calen els punts i coma al final de cada línia (encara que els hi pots posar).
  • Quan una expressió no es desa en una variable, JShell li assigna un nom automàtic ($5, $6) que pots reutilitzar després.

Les ordres de JShell comencen per barra:

Ordre Funció
/vars Llista les variables definides a la sessió
/list Mostra tot el codi que has escrit
/imports Mostra els imports actius
/help Ajuda completa
/exit Sortir

Per a què et servirà durant el curs: cada vegada que dubtis de com es comporta alguna cosa ("què retorna exactament 5/2?", "trim() elimina també els tabuladors?"), obrir JShell i provar-ho en cinc segons és infinitament millor que suposar-ho. Fes-lo servir sense manies als mòduls 1, 4 i 5.

  1. Triar un IDE i crear el projecte bibliotech

Un IDE (Integrated Development Environment) és un editor que a més compila, executa, depura, autocompleta i detecta errors mentre escrius. En Java és pràcticament imprescindible: l'ecosistema professional ho dona per fet.

IDE Cost Punts forts Punts febles Recomanat per a
IntelliJ IDEA Community Gratuït (Apache 2.0) El millor autocompletat i refactorització; depurador excel·lent; molt polit Consumeix bastanta memòria; la versió gratuïta no inclou suport web/Spring avançat L'opció recomanada del curs
Eclipse IDE Gratuït Molt extensible; compilador incremental molt ràpid; estàndard en moltes empreses Interfície menys moderna; la configuració inicial pot ser confusa Qui treballi en empreses que ja el fan servir
Visual Studio Code Gratuït Lleuger; multillenguatge; arrencada instantània Necessita l'Extension Pack for Java; menys potent en refactoritzacions grans Qui ja faci servir VS Code per a altres llenguatges
NetBeans Gratuït Tot integrat de sèrie Comunitat més petita Ús puntual

Per a aquest curs la recomanació és IntelliJ IDEA Community Edition: la seva detecció d'errors en temps real i els seus suggeriments són, a la pràctica, un professor invisible que et va corregint mentre escrius. Dit això, qualsevol dels quatre serveix; el codi del curs és idèntic a tots.

Crear el projecte a IntelliJ IDEA Community

  1. Obre IntelliJ i prem New Project.
  2. Omple:
    • Name: bibliotech
    • Location: la carpeta on deses els teus projectes
    • Language: Java
    • Build system: IntelliJ (no triïs Maven ni Gradle encara; els veurem al mòdul 11)
    • JDK: selecciona el 21 (o el 17) que has instal·lat. Si no apareix, fes servir Add JDK… i navega fins a la carpeta de JAVA_HOME.
    • Desmarca Add sample code per partir de zero.
  3. Prem Create.
  4. Al plafó esquerre, prem el botó dret sobre la carpeta srcNewJava Class i escriu HolaBiblioTech.
  5. Enganxa-hi el codi de l'apartat 5 i prem el triangle verd del marge per executar-lo. Veuràs la sortida a la finestra Run.

A Eclipse

FileNewJava Project, nom bibliotech, selecciona el JRE/JDK 21 i desmarca la creació de module-info.java. Després, botó dret sobre srcNewClass, nom HolaBiblioTech, i marca la casella que genera el mètode main.

A VS Code

Instal·la l'Extension Pack for Java de Microsoft. Després, Ctrl+Shift+PJava: Create Java ProjectNo build tools → tria carpeta i nom bibliotech.

  1. Estructura de carpetes recomanada

Encara que en aquest mòdul treballis amb un o dos fitxers, val la pena adoptar ja l'estructura estàndard del món Java. És la que espera Maven (mòdul 11), la que reconeixen tots els IDE i la que veuràs en qualsevol projecte professional:

bibliotech/
├── src/
│   └── main/
│       ├── java/                      <- codi font .java
│       │   └── com/
│       │       └── nexussoftware/
│       │           └── bibliotech/
│       │               └── BiblioTechApp.java
│       └── resources/                 <- fitxers de dades, configuracio
├── src/
│   └── test/
│       └── java/                      <- proves automatitzades (modul 11)
├── out/  (o target/)                  <- fitxers .class generats
└── README.md

Tres idees importants d'aquesta estructura:

  • El codi font i el compilat viuen en carpetes separades. No barregis mai .java i .class al mateix lloc en un projecte real: la carpeta de sortida s'esborra i es regenera constantment, i no es desa al control de versions.
  • Els directoris com/nexussoftware/bibliotech reflecteixen el paquet com.nexussoftware.bibliotech. En Java, la jerarquia de paquets ha de correspondre's amb la de carpetes. Ho explicarem en detall a la lliçó següent; de moment queda't amb que no és decoratiu.
  • src/main i src/test separats anticipen l'arribada de les proves automatitzades.

Sobre les eines de construcció: Maven i Gradle automatitzen la compilació, la gestió de dependències i l'empaquetat. Són imprescindibles en qualsevol projecte real i els dedicarem la lliçó 11-05 sencera. En aquest mòdul no els necessites: afegir-los ara només introduiria soroll entre tu i el llenguatge.

Errors Habituals i Consells

  • 'javac' no es reconeix com una ordre. El directori bin del JDK no és al PATH, o has instal·lat un JRE. Revisa l'apartat 4 i recorda obrir un terminal nou després de tocar variables d'entorn.
  • java -version i javac -version mostren versions diferents. Tens més d'un Java instal·lat i el PATH els barreja. Executa where java / where javac (Windows) o which -a java javac (Unix) per veure tots els camins actius i col·loca el del JDK que vulguis al principi del PATH.
  • Error: Could not find or load main class HolaBiblioTech.class. Has escrit java HolaBiblioTech.class. L'ordre java rep el nom de la classe, sense extensió.
  • class X is public, should be declared in a file named X.java. El nom del fitxer no coincideix amb el de la classe pública. Java distingeix majúscules i minúscules també aquí.
  • UnsupportedClassVersionError: ... has been compiled by a more recent version of the Java Runtime. Has compilat amb un JDK més nou que la JVM amb què executes. Unifica versions, o compila amb javac --release 17.
  • No veure l'extensió real dels fitxers a Windows. L'explorador amaga per defecte les extensions conegudes, i acabes amb HolaBiblioTech.java.txt. Activa Visualitza → Extensions de nom de fitxer abans de continuar.
  • Consell: desa els teus projectes en un camí sense espais ni accents (C:\dev\bibliotech, no pas C:\Els meus documents\Programació\). Moltes eines de l'ecosistema Java encara tenen problemes amb aquests camins.
  • Consell: dedica quinze minuts a aprendre tres dreceres del teu IDE: executar el programa, buscar una classe pel nom i reanomenar un identificador a tot el projecte. És la millor inversió de temps del curs.

Exercicis

Exercici 1: Auditoria del teu entorn

Fes una comprovació completa de la teva instal·lació i anota'n els resultats:

  1. Versió que reporten java -version i javac -version. Coincideixen?
  2. Valor de JAVA_HOME.
  3. Camí físic de l'executable java que s'està fent servir.
  4. Hi ha més d'un Java instal·lat a la teva màquina?

Escriu les ordres exactes que faries servir al teu sistema operatiu i explica què et diu cada resultat.

Exercici 2: Compilació manual de la fitxa de BiblioTech

Sense fer servir l'IDE, crea en una carpeta anomenada proves un fitxer FitxaLlibre.java que imprimeixi per consola la fitxa del llibre "Java Eficaç" amb aquest format exacte:

=== BiblioTech: fitxa de llibre ===
Titol: Java Eficac
ISBN: 978-0000000001
Estat: disponible

Compila'l i executa'l amb javac i java. Després, executa'l amb el mode de fitxer únic de Java 11+. Respon: quina diferència observes en el contingut de la carpeta després de cada mètode?

Exercici 3: Exploració amb JShell

Obre JShell i, sense escriure cap fitxer, calcula la multa d'un préstec de BiblioTech: defineix una variable diesRetard amb valor 9, una constant tarifaDiaria amb valor 0.25 i calcula la multa. Després fes servir /vars per llistar el que has definit. Finalment, prova d'escriure titol.length() sobre una variable titol que no hagis definit i observa el missatge d'error.

Solucions

Solució 1

A Windows (PowerShell):

java -version
javac -version
$env:JAVA_HOME
Get-Command java | Select-Object Source
where.exe java

A macOS / Linux:

java -version
javac -version
echo $JAVA_HOME
which java
which -a java javac      # mostra TOTES les coincidencies del PATH

Interpretació dels resultats:

  • Si java -version i javac -version donen el mateix número major (per exemple, tots dos 21), el teu entorn és coherent i pots compilar i executar sense sorpreses.
  • JAVA_HOME ha d'apuntar a la carpeta arrel del JDK. Si apunta a .../bin o és buit, eines com Maven fallaran més endavant.
  • which -a java (o where.exe java) és la clau de l'exercici: si retorna més d'una línia, tens diversos Java instal·lats i el que mana és el de la primera línia. Aquí s'origina la majoria d'incoherències de versió.

Solució 2

El fitxer FitxaLlibre.java:

public class FitxaLlibre {
    public static void main(String[] args) {
        // Cada println imprimeix el seu text i salta a la linia seguent.
        System.out.println("=== BiblioTech: fitxa de llibre ===");
        System.out.println("Titol: Java Eficac");
        System.out.println("ISBN: 978-0000000001");
        System.out.println("Estat: disponible");
    }
}

Compilació i execució clàssiques:

javac FitxaLlibre.java
java FitxaLlibre

Execució directa del font:

java FitxaLlibre.java

Diferència observable: després de javac, la carpeta conté dos fitxers: FitxaLlibre.java i FitxaLlibre.class. Després de l'execució directa del font, hi continua havent només FitxaLlibre.java: la compilació es fa en memòria i el bytecode es descarta en acabar el programa. Per això el mode directe és còmode per provar, però inservible per distribuir: no produeix res que puguis lliurar.

Solució 3

jshell> int diesRetard = 9
diesRetard ==> 9

jshell> final double tarifaDiaria = 0.25
tarifaDiaria ==> 0.25

jshell> double multa = diesRetard * tarifaDiaria
multa ==> 2.25

jshell> /vars
|    int diesRetard = 9
|    double tarifaDiaria = 0.25
|    double multa = 2.25

jshell> titol.length()
|  Error:
|  cannot find symbol
|    symbol:   variable titol
|  titol.length()
|  ^---^

Dues observacions que convé interioritzar ja:

  • El resultat 2.25 surt de multiplicar un int per un double: Java converteix automàticament l'enter a decimal abans d'operar. És una conversió eixamplant, i l'estudiaràs formalment a la lliçó 01-04.
  • L'error cannot find symbol és un dels missatges més freqüents del compilador de Java i significa sempre el mateix: estàs fent servir un nom que el compilador no coneix. Les causes típiques són no haver declarat la variable, haver-la escrit amb unes altres majúscules o haver-la declarat en un àmbit diferent. Aprendre a reconèixer-lo de seguida t'estalviarà molt de temps.

Conclusió

Ja tens un entorn funcional: un JDK LTS instal·lat, java i javac responent amb la mateixa versió, JAVA_HOME i PATH configurats i entesos, el teu primer programa HolaBiblioTech compilat i executat des del terminal, JShell disponible per experimentar i el projecte bibliotech creat al teu IDE amb l'estructura de carpetes estàndard. Tot el que vingui a partir d'ara és programar.

A la lliçó següent, Sintaxi i estructura bàsica, dissecarem aquell fitxer HolaBiblioTech.java paraula per paraula: què significa exactament public static void main(String[] args), què són les sentències i els blocs, com es comenta el codi, quines convencions de nomenclatura segueix tothom en Java i per què, com funcionen els paquets i la seva relació amb els directoris, i com llegir els missatges d'error del compilador per no quedar-te mai encallat.

Curs de Programació en Java

Mòdul 1: Introducció a Java

Mòdul 2: Flux de control

Mòdul 3: Programació orientada a objectes

Mòdul 4: Programació orientada a objectes avançada

Mòdul 5: Estructures de dades i col·leccions

Mòdul 6: Gestió d'excepcions

Mòdul 7: Entrada/sortida de fitxers

Mòdul 8: Multifil i concurrència

Mòdul 9: Xarxes

Mòdul 10: Temes avançats

Mòdul 11: Frameworks i llibreries de Java

Mòdul 12: Construcció d'aplicacions del món real

© Copyright 2026. Tots els drets reservats