Öppna kurser
Java - beprövade lösningar och designmönster
Under den här kursen lär du dig att använda bästa praxis för Java-programmering, att undvika fallgropar och använda branschstandarder för mjukvaruutveckling. Du lär dig att använda designmönster som beprövad lösning på återkommande problem och att tillämpa dialekt och mönster för att förbättra din Java-kod. Lös vanliga problem inom mjukvaruutveckling och leverera responsiva applikationer som är snabba och driftsäkra.
Utbildningsmål
Efter genomgången kurs ska deltagarna kunna:
- Bygga pålitliga och skalbara Java-applikationer enligt bästa praxis
- Effektivt tillämpa testdriven utveckling för att göra programmen lättare att underhålla
- Lösa arkitektoniska problem med väl beprövade designmönster
- Använda avancerade Java APIs för multitrådad programmering
Förkunskaper
- Kunskap i nivå med det som lärs ut på kursen Introduktion till Java-programmering
- 3 till 6 månaders erfarenhet av Java-programmering
Du bör även kunna:
- Förstå Java-klasser, modellen för arv, polymorfism och inkapsling
- Använda grundläggande standardversioner av Java API
- Applicera objektorienterad analys och design, inklusive att definiera klasser och skapa objekt
Detaljerat kursinnehåll
Effektiv Java-programmering
- Tydliggöra målen för bästa praxis
- Identifiera de viktigaste egenskaperna hoshögkvalitativ programvara
- Organisera klasser, paket och undersystem i lager
- Designa enligt principerna för SOLID
Tillämpa testdriven utveckling
Utforska ett ramverk för testning
- Sammanställa och underhålla Junit-tester
- Dra nytta av avancerade Junit-funktioner
- Testa i närvaro av undantag
Övervaka mjukvaruhälsan med loggningsbibliotek
- Konfigurera loggning med log4j och SLF4J
- Minimera loggningens påverkan på prestandan
Skapa matchers och mock objekts
- Skriva anpassade Hamcrest-matchers
- Testa med fake objects och mocks
Använda designmönster
Tillämpa vanliga designmönster
- Observer
- Iterator
- Template method
- Strategy
- State
- Singleton
- Data Accessor Object
- Data Transfer Object
- Composite
- ServiceLocator
- Proxy
- Factory
Refaktorisera äldre kod
- Identifiera anledningar till byte av mjukvara
- Tydliggöra mekanismerna i en förändring
- Skriva tester till äldre klasser och metoder
Utöka applikationer med Java meta-programmering
Förbättra typsäkerhet med generiska typer och uppräkningstyper
- Skapa generiska klasser och metoder
- Navigera i generiska klasshierarkier
- Implementera uppräkningstyper för fasta uppsättningar konstanter
Lägga till metadata genom att skriva annotationer
- Utnyttja de inbyggda och anpassade annotationerna
- Kommentera med meta-annotationer
Modifiera körtidsbeteendet med reflektion
- Dynamiskt hämta klass- och metoddata
- Flagga metoder med namngivningskonventioner
- Lägga till information till kod med annoteringar
- Bedöma nackdelar med reflektion
Optimera för maximal prestanda
Mäta och förbättra prestandan
- Bedöma svarstiden
- Utföra belastnings- och stresstester
- Specificera strategier för att förbättra prestandan
Använda skräpinsamlare
- Utforska mått på skräpinsamling
- Välja lämpliga algoritmer för skräpinsamling
- Undvika faror med finalizer
- Förhindra minnesläckor med referenstyper
Utnyttja trådar fullt ut
- Skriva pålitlig, trådsäker kod
- Undvika kapplöpningssituationer och dödlägen
- Använda ramverket Executors
Säkra en trådad applikation
- Synkronisera och dela data mellan trådar
- Hantera prestanda och synkronisering
Utforska alternativ till synkronisering
- Dra nytta av den volatila modifieraren
- Eliminera datadelning med ThreadLocal-variabler
Skapa arkitektur för Separation of Concerns
Tilldela ansvar till komponenter
- Översätta metodanrop med Adaptor-mönstret
- Lägga till beteende med en Proxy
Centralisera skapandet av objekt
- Använda fabriker för att uppnå loose coupling
- Implemenera Inversion of Control (IoC)