Programació en Java
El llenguatge Java, des de la sintaxi bàsica fins a una aplicació gràfica que desa les dades. Els conceptes d’orientació a objectes i de disseny independents del llenguatge són a Fonaments de programació, i la concurrència a Java té el seu propi bloc a Processos i fils.
Com llegir aquests documents
Els documents segueixen l’ordre en què es construeix un programa cada vegada més complet:
- El llenguatge. Sintaxi, tipus, mètodes i classes. Tota la resta hi construeix a sobre.
- Pensar algorismes. La recursivitat i l’ordenació ensenyen a raonar sobre com es resol un problema i quant costa, abans de fer servir les solucions que ja dona la biblioteca.
- La biblioteca estàndard. Les col·leccions guarden i processen grups d’objectes; les excepcions gestionen els errors. Són les dues eines que apareixen a qualsevol programa real.
- Aplicacions. Una interfície gràfica canvia el model d’execució: el programa no va de dalt a baix, sinó que espera esdeveniments. La persistència fa que les dades sobrevisquin a l’execució, amb fitxers o amb una base de dades.
- Consulta. Píndoles, glossari i eines no es llegeixen en ordre: es consulten quan apareix el dubte.
flowchart TD
B["Java bàsic"] --> R["Recursivitat"]
R --> O["Ordenació"]
B --> C["Col·leccions i mapes"]
O --> C
B --> E["Excepcions"]
C --> G["Interfícies gràfiques"]
E --> G
C --> P["Persistència POO"]
E --> P
El llenguatge
- Java bàsic: sintaxi, tipus, cadenes, variables, mètodes i estructura d’un programa Java
Algorismes
- Recursivitat: resoldre problemes per casos més petits: implementació, model d’execució i verificació
- Ordenació: algorismes, complexitat, estructures de dades, cerca binària i mètodes d’ordenació
Biblioteca estàndard
- Col·leccions i mapes: triar la garantia que et cal és triar una interfície, i triar el rendiment és triar una implementació
- Framework: el mapa de les interfícies, què garanteix cadascuna i quina implementació escollir
- Genèrics: el mecanisme que fa que una
List<String>només accepti text, i els errors de compilació que se’n deriven - Ús de col·leccions: recórrer, afegir i cercar en llistes, conjunts i cues, amb el paper d’
equals()ihashCode() - Ús de mapes: les operacions amb parelles clau-valor i les tres implementacions habituals
- Comparació d’objectes: definir l’ordre dels teus objectes amb
ComparableiComparator - Algorismes: les operacions de la classe
Collections, com ordenar o cercar - Stream API: processar col·leccions de manera declarativa, encadenant filtres, transformacions i agrupacions
- Expressions regulars: cercar i validar patrons dins de cadenes de text
- Excepcions: separar el codi de gestió d’errors del codi normal i propagar-los fins a qui els pot resoldre
- Tipus d’excepcions: la diferència entre checked i unchecked, i quan cal gestionar cadascuna
- Gestió d’excepcions:
throws,try-catch,finally, try-with-resources i captures múltiples - Excepcions pròpies: crear els teus tipus d’excepció i enllaçar-los amb la causa (wrapping)
- Llençant excepcions: llençar checked i unchecked, rethrowing, wrapping i herència entre excepcions
- Indicacions: criteris per decidir quin tipus d’excepció fer servir i on gestionar-la
- Logging: registrar els missatges d’execució amb prioritats i destins, en lloc de
System.out.println
Aplicacions
- Interfícies gràfiques: una aplicació gràfica no s’executa de dalt a baix, espera; el model d’esdeveniments i la seva construcció amb JavaFX
- Programació orientada a esdeveniments: el bucle d’esdeveniments, el patró observador i els callbacks
- JavaFX: què és, com afegir-la al projecte i el model Stage, Scene i Node
- Tipus de nodes: controls, contenidors, figures i el dibuix amb
Canvas - Aplicació: l’estructura mínima d’una aplicació i el seu cicle de vida
- Scene Graph: l’arbre de nodes i els layouts que els col·loquen
- FXML: definir la interfície en un fitxer XML i connectar-la amb un controlador
- Múltiples finestres: obrir finestres, modalitat i diàlegs
- Gestió d’esdeveniments: com viatja un esdeveniment pel graf i com se’l captura
- Patró de disseny UI: MVC i MVP, i com separar la vista del model
- Concurrència: per què la interfície es congela i com evitar-ho amb
Task - Binding de propietats: mantenir sincronitzats el model i la interfície
- Persistència POO: perquè l’estat dels objectes sobrevisqui a l’execució cal escriure’l fora de la memòria i saber-lo tornar a llegir
- Fitxers en Java: formats a mida i estàndard (Properties, JSON, YAML), accés aleatori i serialització d’objectes
- Java Database Connectivity (JDBC): drivers, connexions, sentències, transaccions i pool de connexions
- Patrons de disseny: el model de capes, el patró DAO i les seves estratègies, i el control de concurrència
Consulta
- Píndoles Java: notes curtes sobre detalls del llenguatge: noms, modificadors, conversions i genèrics
- Glossari Java: definicions breus dels termes del llenguatge, ordenades alfabèticament
- Eines Java: eines de l’ecosistema: JUnit, Maven, jps i jstack, i VisualVM
Després
Persistència de dades explica com dissenyar les dades que la persistència POO desa: models relacional i NoSQL, i protecció de dades personals. Processos i fils aprofundeix en la concurrència que les interfícies gràfiques només introdueixen.
Itinerari curt
Si no pots llegir-ho tot, aquests quatre documents en ordre donen una base suficient per escriure una aplicació Java que gestiona i desa dades:
Java bàsic → Col·leccions i mapes → Excepcions → Persistència POO