Java-certifiering

Översikt

Certifiering för Java-utvecklare har funnits ända sedan 1990-talet, då Java var ett ungt programspråk. Sun Microsystems, som ursprungligen utvecklade programspråket, har slagit fast hur certifieringen ska gå till.  Sedan Oracle i januari 2010 förvärvat Sun Microsystems har Oracle tagit över denna styrande roll.

Certifieringen utförs av särskilda testcentra som utses av Oracle.
Det är vanligt att prata om Java-certifiering som en enda certifiering, men i praktiken handlar det om 16 olika certifieringar, beroende på vilken av de tre Java-arkitekturerna det gäller, vilken version samt vilken yrkesroll det avser.  De 16 som förekommer, med både deras nuvarande och tidigare namn, är:

Certifieringar för Java Standard Edition (Java SE)

  • Oracle Certified Associate, Java SE 5/SE 6
    Sun Certified Java Associate (SCJA)
  • Oracle Certified Associate, Java SE 7 Programmer
  • Oracle Certified Professional, Java SE 5 Programmer
    Sun Certified Java Programmer (SCJP), J2SE 5.0
  • Oracle Certified Professional, Java SE 6 Programmer
    Sun Certified Java Programmer (SCJP), Java SE 6
  • Oracle Certified Professional, Java SE 7 Programmer
  • Oracle Certified Master Java SE 6 Developer
    Sun Certified Java Developer (SCJD)

Certifieringar för Java Enterprise Edition (Java EE)

  • Oracle Certified Professional, Java EE 5 Web Component Developer
    Sun Certified Web Component Developer (SCWCD)
  • Oracle Certified Professional, Java EE 5 Business Component Developer
    Sun Certified Business Component Developer (SCBCD)
  • Oracle Certified Professional, Java EE 5 Web Services Developer
    Sun Certified Developer for Java Web Services (SCDJWS)
  • Oracle Certified Master, Java EE 5 Enterprise Architect
    Sun Certified Enterprise Architect (SCEA)
  • Oracle Certified Master, Java EE 6 Enterprise Architect
  • Oracle Certified Expert, Java EE 6 Enterprise JavaBeans Developer
  • Oracle Certified Expert, Java EE 6 Java Persistence API Developer
  • Oracle Certified Expert, Java EE 6 Web Services Developer
  • Oracle Certified Expert, Java EE 6 Web Component Developer)

Certifieringar för Java Micro Edition (Java ME)

  • Oracle Certified Professional, Java ME 1 Mobile Application Developer
    Sun Certified Mobile Application Developer (SCMAD)

De mer grundläggande certifieringarna genomförs i en testlokal under strikt kontrollerade former på begränsad tid och bedöms maskinellt.  De mer avancerade kräver inlämningsuppgifter som bedöms manuellt (t ex en löst programmeringsuppgift plus en uppsats som motiverar ens designval).

De certifieringar som de flesta menar när de endast talar om Java-certifiering är den andra i översikten, dvs Oracle Certified Associate, Java SE 7 Programmer, eller den femte i översikten, Oracle Certified Professional, Java SE 7 Programmer.  De båda testerna för dessa certifieringar har beteckningarna 1Z0-803 Java SE 7 Programmer I resp 1Z0-804 Java SE 7 Programmer II.  Detta är de certifieringar som varit mest populära i Sverige. Resten av detta dokument kommer att handla om dem.

Den som inte certifierat sig för någon tidigare version av Java SE måste först genomgå och klara testet på OCA-nivån (1Z0-803 Java SE 7 Programmer I) innan man får genomgå testet på OCP-nivån (1Z0-804 Java SE 7 Programmer II).

Det finns i skrivande stund (januari 2014) inga certifieringar för Java EE 7.

Oracle Certified Professional, Java SE 7 Programmer

Certifieringstest:  1Z0-803 Java SE 7 Programmer I

De delar av Java och Javas standardbibliotek som ingår i testet för den här certifieringen beskrivs i detalj i (hela adressen på en rad):
http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-803&p_org_id=&lang=

De åtta olika ämnesområdena motsvarar följande kursavsnitt i våra kurser:

1     Java Basics

Programmera i Java, kapitel Introduktion till Java
Programmera i Java, kapitel Styrstrukturer (skillnad mellan lokala variabler och instansvariabler)
Programmera i Java, kapitel Klasser
Programmera i Java, kapitel Klassegenskaper
Programmera i Java, kapitel Gränssnitt och programstruktur (import, inkapslingsnivåer)

2     Working With Java Data Types

Programmera i Java, kapitel Grundläggande språkelement
Programmera i Java, kapitel Objekt
Programmera i Java, kapitel Klasser
Programmera i Java, kapitel Klassegenskaper
Programmera i Java, kapitel Uppräknade datatyper
Programmera i Java, kapitel In- och utmatning (StringBuilder)

3     Using Operators and Decision Constructs

Programmera i Java, kapitel Grundläggande språkelement
Programmera i Java, kapitel Styrstrukturer (if, if-else och switch)
Programmera i Java, kapitel Objekt (== och equals, switch-satsen för String)
Programmera i Java, kapitel Uppräknade datatyper (switch-satsen)
Programmera i Java, kapitel Standardbiblioteket (equals och hashCode)

4     Creating and Using Arrays

Programmera i Java, kapitel Vektorer
Programmera i Java, kapitel Datastrukturer och parametrisering (ArrayList)

5     Using Loop Constructs

Programmera i Java, kapitel Styrstrukturer (while, for, do-while, break och continue)
Programmera i Java, kapitel Vektorer (förenklad for-sats)
Programmera i Java, kapitel Datastrukturer och parametrisering (förenklad for-sats)

6     Working With Methods and Encapsulation

Programmera i Java, kapitel Klasser
Programmera i Java, kapitel Klassegenskaper (static)
Programmera i Java, kapitel Arv (inkapslingsnivåer i samband med arv)
Programmera i Java, kapitel Gränssnitt och programstruktur (inkapslingsnivåer)

7     Working With Inheritance

Programmera i Java, kapitel Arv

8     Handling Exceptions

Programmera i Java, kapitel Språkunderstödd felhantering
Programmera i Java, kapitel Objekt (NullPointerException)
Programmera i Java, kapitel Arv (ClassCastException)

Oracle Certified Professional, Java SE 7 Programmer

Certifieringstest:  1Z0-804 Java SE 7 Programmer II

De delar av Java och Javas standardbibliotek som ingår i testet för den här certifieringen beskrivs i detalj i Oracles beskrivning av certifieringen (hela adressen på en rad):
http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-804&p_org_id=&lang=

De tolv olika ämnesområdena motsvarar följande kursavsnitt i våra kurser:

1     Java Class Design

Programmera i Java, kapitel Klasser
Programmera i Java, kapitel Klassegenskaper
Programmera i Java, kapitel Arv
Programmera i Java, kapitel Gränssnitt och programstruktur (package och import)
Programmera i Java, kapitel Standardbiblioteket (instanceof och explicit typomvandling)
Programmera i Java, kapitel Standardbiblioteket (toString, equals och hashCode)

2     Advanced Class Design

Programmera i Java, kapitel Grundläggande språkelement (final)
Programmera i Java, kapitel Klassegenskaper (static)
Programmera i Java, kapitel Arv (abstrakta klasser, final-deklarerade klasser och metoder)
Programmera i Java, kapitel Uppräknade datatyper
        Avancerad Java, kapitel Introduktion samt inre klasser (inre klasser, final-deklarerade argument)

3     Object-Oriented Design Principles

Objektorientering, hela kursen
Programmera i Java, kapitel Arv
Programmera i Java, kapitel Gränssnitt och programstruktur
Programmera i Java, kapitel Datastrukturer och parametrisering (exempel på Factory-objekt)
Ej i någon kurs:  implementera designmönstren Singleton, Factory och Data Access Object

4     Generics and Collections

Programmera i Java, kapitel Datastrukturer och parametrisering
Programmera i Java, kapitel Standardbiblioteket (wrapperklasser, autoboxing, autounboxing)
Avancerad Java, kapitel Parametriserade klasser och gränssnitt
        Ej i någon kurs:  datastrukturer av gränssnittet Deque

5     String Processing

Programmera i Java, kapitel Objekt (String)
Programmera i Java, kapitel In- och utmatning (Scanner och StringBuilder)
Programmera i Java, övning: StringTokenizer
Avancerad Java, kapitel Nationell anpassning (formatering, Formatter)
Ej i någon kurs:  reguljära uttryck (klasserna Pattern och Matcher, metoden String.split)

 

6     Exceptions and Assertions

Programmera i Java, kapitel Språkunderstödd felhantering
Programmera i Java, kapitel In- och utmatning (try-with-resources)
Avancerad Java, kapitel Felsökning och loggning (assert)

7     Java I/O Fundamentals

Programmera i Java, kapitel Introduktion till Java
Programmera i Java, kapitel In- och utmatning
Avancerad Java, kapitel Lagring i filer
        Ej i någon kurs:  klasserna BufferedWriter, DataInputStream och DataOutputStream

8     Java File I/O (NIO.2)

Namnrymden java.nio (ramverket NIO.2) ingår ej i någon kurs

9     Building Database Applications with JDBC

Avancerad Java, kapitel Lagring i relationsdatabaser
Ej i någon kurs:  savepoints, RowSet-objekt,  CallableStatement

10   Threads

Avancerad Java, kapitel Parallell exekvering

10   Concurrency

Namnrymden java.util.concurrent (Concurrency Utilities) ingår ej i någon kurs

12   Localization

Avancerad Java, kapitel Nationell anpassning

Hur går ett certifieringstest till?

Certifieringen utförs i en av ett antal testlokaler i Sverige som auktoriserats av Oracle.  Man bokar tid och plats i förväg.  Det finns en avgift, och man betalar med en voucher som man beställer i förväg.  Tester i Sverige måste betalas med en voucher köpt i Sverige.

Testlokalen är utrustad med ett antal datorer, en per deltagare som bokat plats i testet.  Lokalen övervakas av en testledare.  Testet är helt på engelska och ska utföras på begränsad tid.  Inga hjälpmedel är tillåtna, dvs du får inte ta med dig böcker, anteckningar, dator, handdator, mobiltelefon, USB-minnen eller minneskort.  Det enda som du får ha med dig är pennor, dryck och ett enklare mellanmål (t ex ett äpple).  Räkna med att det du tar med dig kommer att undersökas.

Eftersom testet är helt på engelska, brukar det finnas en allmän engelsk-svensk ordbok i testlokaler i Sverige.  Räkna dock endast med att du kan slå upp ord i allmän engelska i den ordboken.  Specifika Java-termer på engelska måste du redan känna till.

Testet består av ett antal frågor som ska besvaras inom tidsramen för testet.  Frågorna för varje deltagare slumpas fram från en stor databas, så två deltagare som tar testet samtidigt får inte samma frågor, och om du gör om testet vid ett senare tillfälle kommer du inte att få samma frågor som förra gången.  Du måste besvara minst en bestämd procentuell andel av frågorna korrekt för att klara testet. (De båda testerna 1Z0-803 Java SE 7 Programmer I och 1Z0-804 Java SE 7 Programmer II består i nuvarande version vardera av 90 frågor som ska besvaras på 150 minuter, varav minst 63 % resp 65 % måste vara korrekt besvarade.)

Eftersom testet ska kunna granskas maskinellt, kan frågorna endast vara av vissa typer:

  • frågor med flera svarsalternativ där ett alternativ är korrekt
  • frågor med flera svarsalternativ där ett okänt antal alternativ är korrekta
  • frågor där ett kort svar ska skrivas in, t ex ett reserverat ord, ett namn eller ett numeriskt värde
  • frågor där du ska placera kodfragment på tomma platser i källkoden med dra-och-släpp-teknik

Däremot förekommer t ex inte frågor där du ska skriva en lång motivering eller ett längre stycke källkod, eftersom dessa skulle vara svåra att granska maskinellt.

Datorn du sitter vid under testet har inte tillgång till kompilator eller andra Java-utvecklingsverktyg, ingen språkdefinition och ingen dokumentation av standardbibliotekets API:er (programgränssnitt), utöver det som ingår i uppgiftsformuleringarna.  Det finns ingen tillgång till Internet.  Du måste alltså ha de kunskaper som krävs i huvudet.

Tiden för hela testet är begränsad, däremot inte tiden per fråga.  Vissa frågor kan gå väldigt snabbt att besvara, andra kan t ex kräva att du analyserar ett stycke källkod och därmed ta betydligt längre tid.  Räkna med att det kan bli ont om tid.  Det finns i testsystemet en möjlighet att markera frågor som du vill komma tillbaka till och granska på nytt i mån av tid.

Efter fullbordat test får du reda på om du klarat testet, och hur många procent av frågorna som var korrekt besvarade.  Du får inte reda på vilka av dina svar som var korrekta eller felaktiga, och du får inte berätta för andra vilka frågor du fått.

Klarar jag testet om jag är redan är en bra Java-programmerare?

Kanske, men inte alls säkert.  Testet sker i en miljö som är väldigt olik den en vanlig Java-programmerare är van vid nuförtiden.  Den som arbetar professionellt med Java idag omger sig med mängder av moderna utvecklingsverktyg, dokumentation och ständig tillgång till Internet.  Att plötsligt ställas utan allt detta är för många en chockerande upplevelse.  Det är alltså som regel nödvändigt även för en erfaren Java-programmerare att förbereda sig inför ett test.

Är jag en bra Java-programmerare om jag klarar testet?

Om du klarar testet har du ett mycket god grundförståelse för Java och centrala delar av Javas standardbibliotek, och det är en viktig egenskap hos en bra Java-programmerare, men naturligtvis inte den enda.  En bra programmerare måste besitta fler goda egenskaper, t ex analytisk förmåga, förmåga att arbeta i ett projekt och att kunna kommunicera sina arbetsresultat.  Men det är utan tvekan en god start.

Hur förbereder jag mig för testet?

Även om man tillåts ha ganska många felaktiga svar, räknas testet som svårt.  Det är inte ovanligt att vana Java-programmerare misslyckas vid första försöket.  Därför är det klokt att förbereda sig ordentligt inför ett certifieringstest.  Det finns många resurser att utnyttja:

Kurser

Våra kurser ger en solid teoretisk grund att stå på inför fortsatta förberedelser, så de är ett utmärkt första steg.  Det är tre kurser som kan vara relevanta inför certifieringstester för Java SE 7:

Kursen Objektorientering, för dem som saknar tillräckliga grunder i det objektorienterade synsättet

Kursen Programmera i Java, samtliga avsnitt utom det som rör användargränssnitt

Kursen Avancerad Java, i första hand avsnitten om:

– inre klasser
– parametriserade klasser och gränssnitt
– felsökning med assert-satsen
– nationell anpassning
– lagring i filer
– lagring i relationsdatabaser
– parallell exekvering

En detaljerad översikt av hur dessa kurser motsvarar de olika testavsnitten presenteras ovan.

För dig som redan gått kurserna är kursmaterialet en utmärkt bas för repetition av teorin.  Titta inte enbart på bilderna, utan läs även den beskrivande texten.  Ofta innehåller den fler detaljer än vad som kan tas upp under kursen, och dessa detaljer kan vara särskilt intressanta om du läser inför ett certifieringstest.

De flesta av våra kurser innehåller fler övningar än vad flertalet hinner med under kurstillfället.  Dessa extra övningar kan användas för att förstärka dina kunskaper.

Våra kursmaterial innehåller en ordlista över både svenska och engelska termer inom objektorientering i allmänhet och Java i synnerhet.  Första halvan av ordlistan är alfabetiskt ordnad efter svenska termer med förklaring på svenska och översättning till motsvarande engelska term.  Andra halvan av ordlistan är alfabetisk ordnad efter engelska termer med översättning till motsvarande svenska term.  Lär dig de engelska termerna ordentligt – testet är helt på engelska!

Böcker

Det finns särskilda böcker som är avsedda för dem som studerar inför en certifiering.  De är ett utmärkt nästa steg.  Flertalet av dessa böcker innehåller både enskilda övningar och hela fejkade tester med frågor som liknar de du kommer att möta under ett verkligt test.  En utmärkt bok för båda certifieringarna Oracle Certified Associate, Java SE 7 Programmer och Oracle Certified Professional, Java SE 7 Programmer är:

Kathy Sierra – Bert Bates:
OCA/OCP Java SE 7 Programmer I & II Study Guide (Exams 1Z0-803 & 804)
McGraw-Hill Osborne 2013

ISBN-13:  978-0-071-77200-6

En bok som enbart behandlar certifieringen Oracle Certified Professional, Java SE 7 Programmer är:
S G Ganesh – Tushar Sharma:
Oracle Certified Professional Java SE 7 Programmer Exams 1Z0-804 and 1Z0-805:  A Comprehensive OCPJP 7 Certification Guide
Apress 2013
ISBN-10:  1-4302-4764-9
ISBN-13:  978-1-4302-4764-7

(Certifieringstestet 1Z0-805 i bokens titel är en variant av 1Z0-804 avsedd för dem som vill uppgradera sin certifiering för en äldre version av Java SE.)

Du kan läsa böckerna och genomföra övningar på egen hand, eller i grupp med andra.  Flera företag där många ska certifiera sig samtidigt har valt att ordna studiecirklar.

Javas språkdefinition

Javas språkdefinition är måhända ingen lättsam läsning, men det är nyttigt att bekanta sig med den.  Det sätt att uttrycka sig som används här kommer du även att möta i testet.  Att läsa den från pärm till pärm är nog för mastigt för att göra ordentlig nytta, men gör till vana att använda språkdefinitionen för att reda ut oklarheter kring vad som är tillåtet och inte i Java!

Språkdefinitionen finns tillgänglig i både HTML- och PDF-format på Internet:
http://docs.oracle.com/javase/specs/index.html

Provtester

När du närmar dig slutet på dina studier kan det vara mycket nyttigt att genomföra provtester, som försöker efterlikna det verkliga testet så mycket som möjligt.  De böcker som refererades ovan innehåller flera kompletta sådana provtester.

Ytterligare provtester kommer att publiceras i boken:
Bert Bates – Katherine Sierra:
OCA/OCP Java SE 7 Programmer I & II Practise Exams (Exams 1Z0-803 & 1Z0-804)
McGraw-Hill Osborne 2015
(Observera att denna bok endast innehåller testfrågor, så den är ett komplement – inte en ersättning – till de tidigare nämnda böckerna.)

Det finns också företag som säljer provtester via Internet:
Enthuware – http://enthuware.com/
Whizlabs – http://www.whizlabs.com/
Provtester är nyttiga på många sätt:
•      De visar vilken nivå din kunskap kommer att testas på.
•      De visar vilka dina svaga punkter är – vad du behöver studera noggrannare.
•      De vänjer dig vid formen på testet, och du får känna på tidspressen.

Provtester är gjorda för att efterlikna riktiga tester, men de får inte använda sig av frågor som förekommer i verkliga certifieringstester.  Så bry dig inte om att försöka lära dig svaren på provtesterna utantill – just de frågorna kommer inte upp på ditt test!

Praktiska tips under testet

  • Kom till testet utvilad, koncentrerad och i tid!  Försök att planera in testet en dag som inte redan är full av andra aktiviteter.  Är du mest koncentrerad på förmiddag eller eftermiddag?  Hitta den tid som passar dig bäst!
  • Läs frågorna noggrant!  Vissa frågor kan vara luriga eller dubbelbottnade.  Du har ingen kompilator och inga kollegor som hjälper dig att se det du inte ser.
  • Jäkta inte, men håll koll på tiden!  Vissa frågor kräver mer tid än andra.  Försök klara av varje fjärdedel av frågorna på 20 % av tiden – det ger dig 20 % av tiden kvar på slutet att granska det du är osäker på en gång till.
  • Utnyttja möjligheten att markera frågor som du är osäker på, så att du kan granska dem igen om det finns tid över.
  • Om du stöter på en fråga som du absolut inte vet svaret på, tänk då efter om du känner till likartade fall i andra delar av programspråket.  Även om det förekommer undantag, är Java ett ovanligt konsekvent uttänkt programspråk, så det är sannolikt att du kan dra nytta av dina kunskaper i andra delar av språket för att hitta fram till rätt svar.