Hopp til innhold
Personlig Roadmap
Læringsspor · Spor B

Java backend

Java som backend-språk, med Spring Boot som rammeverk for API-er i produksjon.

Java-grunnlag

Variabler

Senere

Hva: Deklarering og typing av data i Java.

Hvorfor: Grunnleggende byggeklosser i alt Java-kode.

Bør kunne: Velge riktig primitiv eller referansetype.

Datatyper

Senere

Hva: Primitive typer og wrapper-klasser.

Hvorfor: Java skiller strengt mellom primitive typer og objekter.

Bør kunne: Vite når autoboxing skjer og hvorfor det har en kostnad.

Kontrollflyt

Senere

Hva: if/else, switch, løkker.

Hvorfor: Grunnlaget for all forgrening og gjentakelse.

Bør kunne: Bruke switch expressions der det gir klarere kode.

Metoder

Senere

Hva: Gjenbrukbare kodeblokker med signatur.

Hvorfor: Strukturerer logikk i håndterbare enheter.

Bør kunne: Skrive metoder med ett tydelig ansvar.

Klasser

Senere

Hva: Definisjoner av objekter med felter og metoder.

Hvorfor: Java er gjennomgående objektorientert.

Bør kunne: Modellere domenet med riktig innkapsling.

Interfaces

Senere

Hva: Kontrakter en klasse kan implementere.

Hvorfor: Muliggjør løs kobling mellom komponenter.

Bør kunne: Programmere mot interfaces i offentlige API-er.

Arv

Senere

Hva: Gjenbruk og spesialisering via extends.

Hvorfor: Reduserer duplisering mellom relaterte klasser.

Bør kunne: Foretrekke komposisjon når arv ikke passer naturlig.

Collections

Senere

Hva: List, Set, Map og deres implementasjoner.

Hvorfor: Kjernen i hvordan data samles og behandles i Java.

Bør kunne: Velge riktig samlingstype for ytelse og bruksmønster.

Generics

Senere

Hva: Typeparametrisert kode i Java.

Hvorfor: Gir typesikre, gjenbrukbare samlinger og metoder.

Bør kunne: Skrive egne generiske klasser og metoder.

Streams

Senere

Hva: Funksjonell databehandling av samlinger.

Hvorfor: Gjør transformasjon og filtrering av data mer deklarativt.

Bør kunne: Bruke map, filter og collect fremfor manuelle løkker.

Exceptions

Senere

Hva: Checked og unchecked unntak i Java.

Hvorfor: Java tvinger eksplisitt håndtering av forventede feil.

Bør kunne: Vite når et unntak bør være checked eller unchecked.

Records

Senere

Hva: Kompakte, uforanderlige databærende klasser.

Hvorfor: Reduserer boilerplate for enkle datamodeller.

Bør kunne: Bruke records for DTO-er og verdiobjekter.

Enums

Senere

Hva: Faste sett med navngitte konstanter.

Hvorfor: Gjør kode tryggere enn å bruke rå strenger eller tall.

Bør kunne: Bruke enums for tilstander og kategorier.

Pakker

Senere

Hva: Organisering av klasser i navnerom.

Hvorfor: Holder store kodebaser strukturerte og lesbare.

Bør kunne: Følge en konsistent pakkestruktur per lag.

Maven eller Gradle

Senere

Hva: Byggverktøy og avhengighetshåndtering for Java.

Hvorfor: Forutsetning for ethvert reelt Java-prosjekt.

Bør kunne: Konfigurere avhengigheter og byggeliv selv.

Spring Boot

Prosjektstruktur

Senere

Hva: Standard lagdeling i et Spring Boot-prosjekt.

Hvorfor: Gjenkjennelig struktur for controller, service og repository.

Bør kunne: Organisere kode etter ansvar, ikke etter tilfeldighet.

Controllers

Senere

Hva: Klasser som håndterer HTTP-forespørsler.

Hvorfor: Inngangspunktet for alle API-kall.

Bør kunne: Holde controllers tynne og delegere til services.

Services

Senere

Hva: Forretningslogikk atskilt fra HTTP-laget.

Hvorfor: Gjør logikken testbar uavhengig av web-rammeverket.

Bør kunne: Plassere forretningsregler i services, ikke controllers.

Repositories

Senere

Hva: Datatilgangslag, ofte via Spring Data JPA.

Hvorfor: Skiller databaselogikk fra forretningslogikk.

Bør kunne: Bruke repository-grensesnitt fremfor rå SQL der mulig.

Dependency injection

Senere

Hva: Springs kjernemekanisme for å koble sammen komponenter.

Hvorfor: Gjør komponenter løst koblet og testbare.

Bør kunne: Bruke konstruktørinjeksjon som standard.

Spring Data JPA

Senere

Hva: Abstraksjon over JPA for enklere datatilgang.

Hvorfor: Reduserer boilerplate for vanlige CRUD-operasjoner.

Bør kunne: Skrive egne query-metoder når standardmetodene ikke strekker til.

Hibernate

Senere

Hva: JPA-implementasjonen Spring Boot bruker som standard.

Hvorfor: Håndterer mapping mellom objekter og databaserader.

Bør kunne: Forstå lazy loading og N+1-problemer.

Validering

Senere

Hva: Bean Validation-annotasjoner på inndata.

Hvorfor: Fanger ugyldig data før den når forretningslogikken.

Bør kunne: Validere DTO-er konsekvent på alle endepunkter.

Configuration

Senere

Hva: application.yml/properties og profiler per miljø.

Hvorfor: Skiller konfigurasjon fra kode per miljø.

Bør kunne: Bruke profiler for lokal, test og produksjon.

Logging

Senere

Hva: SLF4J og strukturert logging i Spring Boot.

Hvorfor: Nødvendig for feilsøking i produksjon.

Bør kunne: Logge med riktig nivå og kontekst.

REST API

Senere

Hva: Bygging av ressursorienterte endepunkter med Spring MVC.

Hvorfor: Kjernen i backend-utvikling med Java.

Bør kunne: Designe konsistente, RESTfulle endepunkter.

Testing

Senere

Hva: Enhets- og integrasjonstesting med JUnit og Spring Test.

Hvorfor: Gir trygghet ved endringer i forretningslogikk.

Bør kunne: Teste både isolert logikk og fulle HTTP-flyter.

Spring Security

Senere

Hva: Rammeverk for autentisering og autorisering.

Hvorfor: Standardløsningen for sikkerhet i Spring-økosystemet.

Bør kunne: Konfigurere sikkerhetsfiltre uten å svekke beskyttelsen ved et uhell.

JWT eller sessions

Senere

Hva: To hovedstrategier for å holde brukere innlogget.

Hvorfor: Valget påvirker skalerbarhet og kompleksitet.

Bør kunne: Vite hvilken strategi som passer API vs. tradisjonell webapp.

PostgreSQL

Senere

Hva: Relasjonsdatabasen Spring Boot-prosjekter typisk bruker i produksjon.

Hvorfor: Robust og godt støttet i JPA-økosystemet.

Bør kunne: Designe skjema og migrasjoner for en ekte database.

Swagger/OpenAPI

Senere

Hva: Automatisk generert API-dokumentasjon via springdoc.

Hvorfor: Gjør API-et utforskbart uten separat dokumentasjon.

Bør kunne: Holde annotasjoner synkronisert med faktisk API-oppførsel.

Prosjektstige

1

Konsollprogram

Grunnleggende syntaks, kontrollflyt og metoder uten rammeverk.

2

Budsjettprogram

Enkel datamodellering og collections/streams for beregninger.

3

CRUD-app

Første møte med persistens, enten i minnet eller mot en enkel database.

4

Spring Boot REST API

Bygg et første API med controller, service og repository-lag.

5

API med PostgreSQL

Spring Data JPA mot en ekte relasjonsdatabase.

6

Autentisering

Spring Security med JWT-basert innlogging.

7

Testing

Enhets- og integrasjonstester for hele API-et.

8

Fullstack-app med Next.js-frontend

Koble et Spring Boot-API til en Next.js-frontend i produksjon.

Anbefalt lagdeling

Controller
Service
Repository
Database