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
- Quin JDK triar i d'on descarregar-lo
- Instal·lació a Windows, macOS i Linux
- Verificar la instal·lació:
java -versionijavac -version JAVA_HOMEiPATH: què són i com configurar-los- El teu primer programa des del terminal:
HolaBiblioTech.java - JShell: el laboratori per aprendre
- Triar un IDE i crear el projecte
bibliotech - Estructura de carpetes recomanada
- Errors Habituals i Consells
- Exercicis
- 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.
- Instal·lació a Windows, macOS i Linux
Windows
- A
adoptium.net, descarrega l'instal·lador.mside Temurin per a Windows x64, versió 21 (LTS), JDK (no JRE). - 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
- Acaba la instal·lació. El JDK quedarà normalment a
C:\Program Files\Eclipse Adoptium\jdk-21.x.x-hotspot. - 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 -VSi 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:
A Fedora o RHEL:
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:
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.
- Verificar la instal·lació:
java -version i javac -version
java -version i javac -versionAquest és el moment de la veritat. Obre un terminal nou i executa les dues ordres:
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 -versionmostra la versió de la JVM que s'executarà. Si aquesta ordre respon, pots executar programes Java.javac -versionmostra 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.
JAVA_HOME i PATH: què són i com configurar-los
JAVA_HOME i PATH: què són i com configurar-losQuè 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 escriusjavacal terminal, el sistema recorre aquesta llista en ordre buscant un executable amb aquell nom i executa el primer que troba. Si el directoribindel teu JDK no és alPATH, el terminal no trobajavacencara que estigui perfectament instal·lat. I si hi ha dos JDK alPATH, guanya el que apareix primer: aquesta és la causa habitual de versions descompassades. -
JAVA_HOMEapunta 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 senseJAVA_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
- Prem la tecla Windows i busca "Editar les variables d'entorn del sistema".
- Prem Variables d'entorn….
- 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
- Nom:
- 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 canviarJAVA_HOME. - 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. - Accepta-ho tot i obre un terminal nou.
Per comprovar-ho:
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:
A Linux (ajusta el camí al real de la teva instal·lació):
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ó:
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.
- El teu primer programa des del terminal:
HolaBiblioTech.java
HolaBiblioTech.javaCompilarà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 HolaBiblioTechSortida esperada:
Les dues ordres mereixen una explicació detallada:
javac HolaBiblioTech.javarep el nom del fitxer amb extensió. Tradueix el font a bytecode i creaHolaBiblioTech.classal 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 HolaBiblioTechrep el nom de la classe, sense extensió i sense.class. Aquí és on gairebé tothom s'equivoca la primera vegada escrivintjava HolaBiblioTech.class, cosa que produeix un error de "classe no trobada". La raó és conceptual:javano 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:
Fixa't que aquí sí 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+) |
- 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.
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
| GoodbyeObserva 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.
- Triar un IDE i crear el projecte
bibliotech
bibliotechUn 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
- Obre IntelliJ i prem New Project.
- 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.
- Name:
- Prem Create.
- Al plafó esquerre, prem el botó dret sobre la carpeta
src→ New → Java Class i escriuHolaBiblioTech. - 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
File → New → Java Project, nom bibliotech, selecciona el JRE/JDK 21 i desmarca la creació de module-info.java. Després, botó dret sobre src → New → Class, 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+P → Java: Create Java Project → No build tools → tria carpeta i nom bibliotech.
- 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
.javai.classal 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/bibliotechreflecteixen el paquetcom.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/mainisrc/testseparats 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 directoribindel JDK no és alPATH, o has instal·lat un JRE. Revisa l'apartat 4 i recorda obrir un terminal nou després de tocar variables d'entorn.java -versionijavac -versionmostren versions diferents. Tens més d'un Java instal·lat i elPATHels barreja. Executawhere java/where javac(Windows) owhich -a java javac(Unix) per veure tots els camins actius i col·loca el del JDK que vulguis al principi delPATH.Error: Could not find or load main class HolaBiblioTech.class. Has escritjava HolaBiblioTech.class. L'ordrejavarep 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 ambjavac --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 pasC:\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:
- Versió que reporten
java -versionijavac -version. Coincideixen? - Valor de
JAVA_HOME. - Camí físic de l'executable
javaque s'està fent servir. - 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:
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):
A macOS / Linux:
java -version
javac -version
echo $JAVA_HOME
which java
which -a java javac # mostra TOTES les coincidencies del PATHInterpretació dels resultats:
- Si
java -versionijavac -versiondonen el mateix número major (per exemple, tots dos 21), el teu entorn és coherent i pots compilar i executar sense sorpreses. JAVA_HOMEha d'apuntar a la carpeta arrel del JDK. Si apunta a.../bino és buit, eines com Maven fallaran més endavant.which -a java(owhere.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:
Execució directa del font:
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.25surt de multiplicar unintper undouble: 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
- Introducció a Java
- Configuració de l'entorn de desenvolupament
- Sintaxi i estructura bàsica
- Variables i tipus de dades
- Operadors
- Entrada i sortida per consola
- El teu primer programa complet: BiblioTech
Mòdul 2: Flux de control
- Sentències condicionals
- Bucles
- Sentències switch
- Break i continue
- Depuració i traces d'execució
- Projecte: menú interactiu de BiblioTech
Mòdul 3: Programació orientada a objectes
- Introducció a la POO
- Classes i objectes
- Mètodes
- Constructors
- Herència
- Polimorfisme
- Encapsulament
- Abstracció
- La classe Object: equals, hashCode i toString
Mòdul 4: Programació orientada a objectes avançada
- Interfícies
- Classes abstractes
- Classes internes
- Classes anònimes
- Expressions lambda
- Interfícies funcionals i referències a mètodes
- Enumeracions i registres
Mòdul 5: Estructures de dades i col·leccions
- Arrays
- El framework de col·leccions
- ArrayList
- LinkedList
- HashMap
- HashSet
- Cua i Deque
- Pila
- Ordenació i cerca en col·leccions
Mòdul 6: Gestió d'excepcions
- Introducció a les excepcions
- Bloc try-catch
- Throw i throws
- Excepcions personalitzades
- Bloc finally
- Try-with-resources i AutoCloseable
- Estratègies de gestió d'errors i logging
Mòdul 7: Entrada/sortida de fitxers
- Lectura de fitxers
- Escriptura de fitxers
- Fluxos de fitxers
- BufferedReader i BufferedWriter
- Serialització
- L'API NIO.2: Path i Files
- Formats d'intercanvi: CSV i Properties
Mòdul 8: Multifil i concurrència
- Introducció al multifil
- Creació de fils
- Cicle de vida d'un fil
- Sincronització
- Utilitats de concurrència
- Col·leccions concurrents i variables atòmiques
- Tasques asíncrones amb CompletableFuture
Mòdul 9: Xarxes
- Introducció a les xarxes
- Sockets
- ServerSocket
- DatagramSocket i DatagramPacket
- URL i HttpURLConnection
- El client HTTP modern
Mòdul 10: Temes avançats
- Genèrics
- Anotacions
- Reflexió
- Característiques de Java 8: Streams i Optional
- Dates i hores amb java.time
- Java 9 i més enllà
- Memòria, recol·lecció de brossa i rendiment
Mòdul 11: Frameworks i llibreries de Java
- Introducció als frameworks de Java
- Spring Framework
- Hibernate
- JUnit
- Maven
- Proves avançades amb Mockito
- Llibreries essencials de l'ecosistema
