Java Programmer I
Il primo esame per il percorso di certificazione Java è Java Programmer I (1Z0-808),
ecco nel dettaglio su cosa verte:
- Definire lo scope di una variabile
- Definire la struttura di una classe Java
- Creare un’applicazione Java eseguibile con un metodo main; eseguire un programma Java dal command line; includere l’output della console.
- Importare altri pacchetti Java per renderli accessibili nel codice
- Comprendere ed utilizzare le caratteristiche ed i componenti del linguaggio come: indipendenza dalla piattaforma, programmazione ad oggetti, incapsulamento, ecc.
- Dichiarare e inizializzare una variabile (incluso il cast dei tipi primitivi)
- Differenze fra variabili oggetto referenziate e variabili primitive
- Sapere come leggere e scrivere gli attributi di un oggetto
- Conoscere il “Lifecycle” di un Oggetto (creazione, dereferenziazione per riassegnamento e garbage collection)
- Sviluppare codice che usi le wrapper class come Boolean, Double, Integer, ecc.
- Usare operatori Java; uso delle parentesi per forzare la precedenza degli operatori
- Testare l’uguaglianza fra Stringhe usando == e equals().
- Usare if, if/else e operatore ternario.
- Usare il comando switch
- Dichiarare, istanziare ed inizializzare un array uni-dimensionale
- Dichiarare, istanziare ed inizializzare un array multi-dimensionale
- Il costrutto while
- Il costrutto for e “for each”
- Il costrutto do/while
- Confronto fra i costrutti loop
- Comprensione di break e continue
- Creare metodi con argomenti e tipo di ritorno; overload dei metodi
- Applicare la parola chiave statica metodi e attributi
- Creare e fare overload dei costruttori; incluso l’impatto sul costruttore di default.
- Applicare i modificatori di accesso
- Applicare i principi dell’incapsulamento ad una classe
- Comprendere le differenze fra il passaggio di variabili primitive ed oggetti (passaggio per riferimento) quando usate come argomenti per un metodo
- Descrivere l’ereditarietà ed i suoi benefici
- Sviluppare codice che dimostri l’uso del Polimorfismo; incluso override e tipizzazione per oggetti o per riferimento
- Comprendere quando il casting è necessario
- Uso di super e this per accedere ad oggetti e costruttori
- Usare classi astratte e interfacce
- Differenze fra checked exceptions, unchecked exceptions, e Errors
- Creare un blocco try-catch e comprendere come le eccezioni alterano il normale flusso del programma
- Descrivere i vantaggi della gestione delle Eccezioni
- Creare e invocare un metodo che solleva un’eccezione
- Riconoscere eccezioni comuni (NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException, ClassCastException, ecc)
- Manipolare dati usando la classe StringBuilder e i suoi metodi
- Creare e manipolare le Stringhe
- Creare e manipolare date di calendario usando java.time.LocalDateTime, java.time.LocalDate, java.time.LocalTime, java.time.format.DateTimeFormatter, java.time.Period
- Dichiarare ed usare un ArrayList di un dato tipo
- Scrivere una semplice Lambda expression che usi un’espressione Lambda Predicate.
Java Programmer II
Il secondo step per la certificazione è l’esame Java Programmer II (1Z0-809) che verte su:
Architettura di Classi Java
- Implementare l’incapsulamento
- Implementare l’ereditarietà inclusi modificatori di visibilità e composizione
- Implementare polimorfismo
- Override dei metodi hashCode, equals e toString della classe Object
- Creare e usare classi singleton e classi immutabili.
- Sviluppare codice che usa la parola chiave static sul codice di inizializzazione, variabili, metodi e classi.
Architettura Avanzata di Classi Java
- Sviluppare codice che usa classi e metodi astratte.
- Sviluppare codice che usa la parola chiave final.
- Creare classi interne incluse: static, locali e classi interne anonime.
- Usare gli enumeratori inclusi metodi e costruttori.
- Sviluppare codice che dichiara, implementa e/o estende interfacce e/o classi ed usa l’annotation @Override
- Creare e usare espressioni Lambda.
Generici and Collezioni
- Creare e usare una classe generica
- Creare ed usare oggetti ArrayList, TreeSet, TreeMap e ArrayDeque.
- Usare le interfacce java.util.Comparator e java.util.Comparable
- Collezioni Streams e Filters
- Iterare Streams e List usando il metodo forEach
- Descrivere l’interfaccia Stream e la Stream pipeline
- Filtrare una collezione usando le lambda expression
- Usare il riferimento ai metodi con Streams
Interfacce Funzionali Lambda
- Usare le interfacce del package java.util.function, quali Predicate, Consumer, Function, and Supplier
- Sviluppare codice che usa le versioni primitive delle interfacce funzionali
- Sviluppare codice che usa le versioni binarie delle interfacce funzionali
- Sviluppare codice che usa l’interfaccia UnaryOperator
Java Stream API
- Sviluppare codice che estrae dati da un oggetto usando i metodi peek() e map(), incluse le versioni primitive del metodo map()
- Cercare dati usando il metodo search() della classe Strean inclusi findFirst, findAny, anyMatch, allMatch, noneMatch
- Sviluppare codice che usi le classi Optional
- Sviluppare codice che usi i metodi di manipolazioni dei dati e di calcolo di Stream
- Ordinare una collezione usando le Stream API
- Salvare i risultati di una collezione usando il metodo collect e raggruppare/dividere i dati usando la classe Collectors
- usare i metodi flatMaps() delle Stream API
Eccezioni ed Asserzioni
- Usare gli statement try-catch e throw
- Usare clausole catch, multi-catch e finally
- Usare risorse Autoclose in uno statement try-with-resources
- Creare eccezioni personalizzare e risorse Auto-chiudenti
- Testare espressioni invarianti usando le asserzioni
Use Java SE 8 Date/Time API
- Creare e manipolare eventi basati su date e tempo incluso la combinazione di date e tempi in un singolo oggetto usando LocalDate, LocalTime, LocalDateTime, Instant, Period, and Duration
- Lavorare con le date e i tempi attraverso i fuso-orari e gestire i cambiamenti risultanti inclusi il formato delle date e dei tempi
- Definire, creare e manipolare eventi basati su Date e Time usando Instant, Period, Duration, and TemporalUnit
Java I/O Fundamentals
- Leggere e scrivere dati dalla console
- Usare BufferedReader, BufferedWriter, File, FileReader, FileWriter, FileInputStream, FileOutputStream, ObjectOutputStream, ObjectInputStream e PrintWriter dal package java.io.
Java File I/O (NIO.2)
- Usare l’interfaccia Path per operare con i percorsi di directory e file
- Usare la classe File per verificare, leggere, cancellare, copiare, muovere o manipolare i metadati di un file o directory
- Usare le Stream API con NIO.2
Java Concurrency
- Creare worker-threads usando le interfacce Runnable, Callable ed usare un ExecutorService per eseguire i task in concorrenza
- Identificare potenziali problemi di threading fra deadlock, starvation, livelock e condizioni di esecuzione
- Usare la parola chiave synchronized e il pacchetto java.util.concurrent.atomic per controllare l’ordine di esecuzione dei thread.
- Usare le collezioni e le classi di java.util.concurrent incluse CyclicBarrier e CopyOnWriteArrayList
- Usare il Framework Fork/Join
- Usare parallel Streams incluse riduzione, scomposizione, processo di merge, pipeline e performance
Building Database Applications with JDBC
- Descrivere le interfacce che costituiscono il cuore delle JDBC API incluse le interfacce Driver, Connection, Statement e ResultSet e le loro relazioni con le implementazioni dei providers.
- Identificare i componenti richiesti per connettere un database usando la classe DriverManager e i JDBC URL
- Eseguire query e leggere i risultati da un database inclusa la creazione di Statemens, ResultSet di ritorno, iterare i result sets e chiudere propriamente result sets, statements e connessioni.
Localizzazione
- Leggere e scrivere il locale usando l’oggetto Locale
- Creare e leggere un file Properties
- Costruire un resource-bundle per ogni locale e caricarlo in una applicazione
Per simulare l’esame si possono usare:
- http://www.indiabix.com/online-test/java-programming-test/
- http://scjptest.com/mock-test.xhtml?execution=e1s2
- http://www.gocertify.com/quizzes/java/ocajp-java-quiz-1.html
- http://www.aiotestking.com/oracle/category/exam-1z0-808-java-se-8-programmer-i/