Course Outline
Εισαγωγή στο Java
- Ιστορία και εξέλιξη του Java
- Επισκόπηση των Java εκδόσεων και ενημερώσεων
- Τι νέο υπάρχει στο Java 17
- Ρύθμιση Java Development Kit (JDK 17) και IDE
Java Δομή προγράμματος
- Σύνταξη ενός απλού Java προγράμματος
- Java επισκόπηση σύνταξης
- Μεταγλώττιση και εκτέλεση Java εφαρμογών
Τύποι δεδομένων και μεταβλητές
- Πρωτόγονοι τύποι δεδομένων και κλάσεις περιτυλίγματος
- Δήλωση μεταβλητών και σταθερών
- Μετατροπή τύπου και χύτευση
Χειριστές σε Java
- Αριθμητικούς, σχεσιακούς, λογικούς και bitwise τελεστές
- Προτεραιότητα και συσχετισμός χειριστή
Δηλώσεις ροής ελέγχου
- Δηλώσεις υπό όρους (if-else, switch)
- Κατασκευές βρόχου (for, while, do-while)
- Βελτιωμένες εκφράσεις διακόπτη (Java 17 χαρακτηριστικό)
Εισαγωγή στις έννοιες του OOP
- Τάξεις και αντικείμενα
- Ενθυλάκωση, Κληρονομικότητα, Πολυμορφισμός και Αφαίρεση
Δημιουργία κλάσεων και αντικειμένων
- Δήλωση και αρχικοποίηση αντικειμένων
- Αυτή η λέξη-κλειδί
- Κατασκευαστές (προεπιλογή και παραμετροποιημένοι)
Κληρονομία
- Επέκταση τάξεων (επεκτείνει τη λέξη-κλειδί)
- Παράκαμψη μεθόδου και σούπερ λέξη-κλειδί
- Αφηρημένες τάξεις και μέθοδοι
Πολυμορφισμός
- Πολυμορφισμός χρόνου μεταγλώττισης έναντι χρόνου εκτέλεσης
- Υπερφόρτωση και παράκαμψη μεθόδου
Διεπαφές
- Καθορισμός και υλοποίηση διεπαφών
- Λειτουργικές διεπαφές και προεπιλεγμένες μέθοδοι
Κατηγορίες εγγραφής (Java 17 χαρακτηριστικό)
- Κατανόηση των εγγραφών στο Java 17
- Πώς οι εγγραφές απλοποιούν την ενθυλάκωση δεδομένων
Γενόσημα σε Java
- Κατανόηση των παραμέτρων τύπου
- Γενικές κλάσεις, μέθοδοι και διεπαφές
- Περιορισμένοι τύποι και χαρακτήρες μπαλαντέρ
Χειρισμός Εξαίρεσης
- Τύποι εξαιρέσεων (επιλεγμένα και μη)
- Try-catch-finally blocks
- Πετώντας και πιάνοντας εξαιρέσεις
- Δημιουργία προσαρμοσμένων εξαιρέσεων
Java Πλαίσιο Συλλογών
- Διασυνδέσεις λίστας, ορισμού, χάρτη και ουράς
- Δημοφιλείς υλοποιήσεις: ArrayList, HashMap, HashSet
- Επαναληπτικοί και ενισχυμένοι βρόχοι για
Ιόντα λάμδα Express και λειτουργικά Programming
- Εισαγωγή στις εκφράσεις λάμδα
- Σύνταξη και χρήση
- Λειτουργικές διεπαφές
Stream API
- Επισκόπηση των Java ροών
- Λειτουργίες ροής (φιλτράρισμα, χαρτογράφηση, μείωση)
- Παράλληλες ροές και εκτιμήσεις απόδοσης
Σφραγισμένες τάξεις
- Καθορισμός και χρήση σφραγισμένων κλάσεων
- Επιτρεπόμενες υποκατηγορίες και περιορισμοί
Αντιστοίχιση μοτίβων για παράδειγμα (Java 17 χαρακτηριστικό)
- Απλοποίηση ελέγχων τύπου με αντιστοίχιση προτύπων
Μπλοκ κειμένου
- Εργασία με μπλοκ κειμένου πολλών γραμμών στο Java
- Σύγκριση με τον παραδοσιακό χειρισμό χορδών
Βελτιώσεις εγγραφών και σειριοποίησης
- Σειριοποίηση και συμβατότητα προς τα πίσω
- Πώς οι εγγραφές βελτιώνουν την αναγνωσιμότητα και τη συντήρηση του κώδικα
Κατάργηση και αφαίρεση λειτουργιών
- Καταργημένα API στο Java 17
- Αφαίρεση παλαιών λειτουργιών
Εναλλαγή ιόντων Express Βελτιώσεις
- Ταίριασμα μοτίβου στο διακόπτη
- Χρήση εκφράσεων διακόπτη για καθαρότερο κώδικα
API ξένων λειτουργιών και μνήμης (Incubator)
- Επισκόπηση της μονάδας θερμοκοιτίδας
- Εργασία με εγγενή κώδικα στο Java
Java Σύστημα ενότητας (Project Jigsaw)
- Εισαγωγή στις ενότητες στο Java
- Δημιουργία και χρήση ενοτήτων
- Περιγραφείς ενοτήτων και module-info.java
- Πλεονεκτήματα της σπονδυλοποίησης
Συγχρονισμός και Multithreading
- Εισαγωγή στα νήματα και το multithreading
- Διεπαφή με δυνατότητα εκτέλεσης και διεπαφή με δυνατότητα κλήσης
- Συγχρονισμός, κλειδώματα και ασφάλεια νημάτων
Ασύγχρονη Programming με CompetableFuture
- Σύνταξη ασύγχρονου κώδικα
- Χρήση του CompetableFuture για μη αποκλειστικές λειτουργίες
Ανάπτυξη εφαρμογών Java
- Δημιουργία και εκτέλεση αρχείων JAR
- Συσκευασία και διανομή Java εφαρμογών
- Εισαγωγή στο GraalVM (προαιρετικό)
Βέλτιστες πρακτικές και βελτιστοποίηση κώδικα
- Σύνταξη αποτελεσματικού και συντηρήσιμου Java κώδικα
- Κοινές παγίδες απόδοσης και πώς να τις αποφύγετε
- Τεχνικές ανακατασκευής κώδικα
Περίληψη και Επόμενα Βήματα
Requirements
- Βασικές γνώσεις προγραμματισμού
Ακροατήριο
- προγραμματιστές λογισμικού
- Προγραμματιστές