Kursplan
Introduksjon til Java
- Historie og utvikling av Java
- Oversikt over Java versjoner og oppdateringer
- Hva er nytt i Java 17
- Sette opp Java Development Kit (JDK 17) og IDE
Java Programstruktur
- Skrive et enkelt Java program
- Java syntaksoversikt
- Kompilere og kjøre Java applikasjoner
Datatyper og variabler
- Primitive datatyper og innpakningsklasser
- Erklære variabler og konstanter
- Typekonvertering og støping
Operatører i Java
- Aritmetiske, relasjonelle, logiske og bitvise operatorer
- Operatør forrang og assosiativitet
Kontrollflyterklæringer
- Betingede utsagn (hvis annet, bytt)
- Løkkekonstruksjoner (for, mens, gjør-mens)
- Forbedrede bryteruttrykk (Java 17 funksjon)
Introduksjon til OOP-konsepter
- Klasser og objekter
- Innkapsling, arv, polymorfisme og abstraksjon
Opprette klasser og objekter
- Deklarere og initialisere objekter
- Dette nøkkelordet
- Konstruktører (standard og parameterisert)
Arv
- Utvide klasser (utvider søkeord)
- Metodeoverordnet og supernøkkelord
- Abstrakte klasser og metoder
Polymorfisme
- Kompileringstids- vs. runtime-polymorfisme
- Metode overbelastning og overstyring
Grensesnitt
- Definere og implementere grensesnitt
- Funksjonelle grensesnitt og standardmetoder
Rekordklasser (Java 17 funksjon)
- Forstå poster i Java 17
- Hvordan poster forenkler datainnkapsling
Generiske legemidler i Java
- Forstå typeparametere
- Generiske klasser, metoder og grensesnitt
- Avgrensede typer og jokertegn
Unntakshåndtering
- Typer unntak (avmerket og uavmerket)
- Prøv-fang-endelig blokkerer
- Kaste og fange unntak
- Opprette tilpassede unntak
Java Samlingers rammeverk
- Liste, Sett, Kart og Kø-grensesnitt
- Populære implementeringer: ArrayList, HashMap, HashSet
- Iteratorer og forbedret for loops
Lambda Expressioner og funksjonell Programming
- Introduksjon til lambda-uttrykk
- Syntaks og bruk
- Funksjonelle grensesnitt
Stream API
- Oversikt over Java Strømmer
- Strømoperasjoner (filtrering, kartlegging, reduksjon)
- Parallelle strømmer og ytelseshensyn
Forseglede klasser
- Definere og bruke forseglede klasser
- Tillatte underklasser og restriksjoner
Mønstermatching for eksempel av (Java 17 funksjon)
- Forenkler typesjekker med mønstertilpasning
Tekstblokker
- Arbeide med tekstblokker med flere linjer i Java
- Sammenligning med tradisjonell strenghåndtering
Oppføringer og serialiseringsforbedringer
- Serialisering og bakoverkompatibilitet
- Hvordan poster forbedrer kodelesbarhet og vedlikehold
Avskrivning og fjerning av funksjoner
- Utdaterte APIer i Java 17
- Fjerning av utdaterte funksjoner
Bryter Expressionforbedringer
- Mønstertilpasning i bryter
- Bruke bryteruttrykk for renere kode
Foreign Function & Memory API (inkubator)
- Oversikt over inkubatormodulen
- Arbeide med innebygd kode i Java
Java Modulsystem (Project Jigsaw)
- Introduksjon til moduler i Java
- Opprette og bruke moduler
- Modulbeskrivelser og modul-info.java
- Fordeler med modularisering
Samtidighet og flertråding
- Introduksjon til tråder og multithreading
- Kjørbart grensesnitt og Callable grensesnitt
- Synkronisering, låser og trådsikkerhet
Asynkron Programming med CompetableFuture
- Skrive asynkron kode
- Bruker CompetableFuture for ikke-blokkerende operasjoner
Distribuerer Java applikasjoner
- Opprette og kjøre JAR-filer
- Pakke og distribuere Java applikasjoner
- Introduksjon til GraalVM (valgfritt)
Beste praksis og kodeoptimalisering
- Skrive effektiv og vedlikeholdbar Java kode
- Vanlige ytelsesfeller og hvordan du unngår dem
- Kode refactoring teknikker
Sammendrag og neste trinn
Krav
- Grunnleggende kunnskaper i programmering
Publikum
- Programvareutviklere
- Programmerere