Kursplan
Introduktion till Java
- Historia och utveckling av Java
- Översikt över Java versioner och uppdateringar
- Nyheter i Java 17
- Konfigurera Java Development Kit (JDK 17) och IDE
Java Programstruktur
- Skriva ett enkelt Java program
- Java Översikt över syntax
- Kompilera och köra Java-program
Datatyper och variabler
- Primitiva datatyper och omslutningsklasser
- Deklarera variabler och konstanter
- Typkonvertering och gjutning
Operatorer i Java
- Aritmetiska, relationella, logiska och bitvisa operatorer
- Operatorprioritet och associativitet
Instruktioner för kontrollflöde
- Villkorssatser (if-else, switch)
- Loopa konstruktioner (för, medan, göra-medan)
- Förbättrade växeluttryck (Java 17-funktion)
Introduktion till OOP-begrepp
- Klasser och objekt
- Inkapsling, arv, polymorfism och abstraktion
Skapa klasser och objekt
- Deklarera och initiera objekt
- Operatorn this nyckelord
- Konstruktorer (standard och parametriserade)
Arv
- Utöka klasser (utökar nyckelordet)
- Metodåsidosättning och supernyckelord
- Abstrakta klasser och metoder
Polymorfism
- Kompileringstid jämfört med körtidspolymorfism
- Överlagring och åsidosättning av metoder
Gränssnitt
- Definiera och implementera gränssnitt
- Funktionella gränssnitt och standardmetoder
Spela in klasser (Java 17 funktioner)
- Förstå poster i Java 17
- Hur poster förenklar datainkapsling
Generiska läkemedel i Java
- Förstå typparametrar
- Generiska klasser, metoder och gränssnitt
- Avgränsade typer och jokertecken
Hantering av undantag
- Typer av undantag (markerade och avmarkerade)
- Prova-fånga-äntligen-block
- Utlösa och fånga undantag
- Skapa anpassade undantag
Java Ramverk för samlingar
- List-, Set-, Map- och Queue-gränssnitt
- Populära implementeringar: ArrayList, HashMap, HashSet
- Iteratorer och förbättrade for-loopar
Lambda Expressjoner och funktionella Programming
- Introduktion till lambda-uttryck
- Syntax och användning
- Funktionella gränssnitt
API för direktuppspelning
- Översikt över Java strömmar
- Strömåtgärder (filtrering, mappning, minskning)
- Parallella strömmar och prestandaöverväganden
Förseglade klasser
- Definiera och använda förseglade klasser
- Tillåtna underklasser och begränsningar
Mönstermatchning för instans av (Java 17 funktion)
- Förenkla typkontroller med mönstermatchning
Textblock
- Arbeta med textblock med flera rader i Java
- Jämförelse med traditionell stränghantering
Förbättringar av poster och serialisering
- Serialisering och bakåtkompatibilitet
- Hur poster förbättrar kodens läsbarhet och underhåll
Utfasning och borttagning av funktioner
- Inaktuella API:er i Java 17
- Borttagning av föråldrade funktioner
Förbättringar av Switch Expression
- Mönstermatchning i switch
- Använda växeluttryck för renare kod
API för främmande funktion och minne (inkubator)
- Översikt över inkubatormodulen
- Arbeta med inbyggd kod i Java
Java Modulsystem (Projektpussel)
- Introduktion till moduler i Java
- Skapa och använda moduler
- Moduldeskriptorer och module-info.java
- Fördelar med modularisering
Samtidighet och multitrådning
- Introduktion till gängor och multithreading
- Körbart gränssnitt och anropbart gränssnitt
- Synkronisering, lås och gängsäkerhet
Asynkron Programming med CompetableFuture
- Skriva asynkron kod
- Använda CompetableFuture för icke-blockerande operationer
Distribuera Java-program
- Skapa och köra JAR-filer
- Paketering och distribution av Java applikationer
- Introduktion till GraalVM (valfritt)
Bästa praxis och kodoptimering
- Skriva effektiv och underhållbar Java kod
- Vanliga fallgropar när det gäller prestanda och hur du undviker dem
- Tekniker för refaktorisering av kod
Sammanfattning och nästa steg
Krav
- Grundläggande kunskaper i programmering
Publik
- Mjukvaruutvecklare
- Programmerare