Java-Zertifizierungen für Entwickler

Jodel-Diplome?

Stefan Zörner

Die Zeiten, in denen jeder mit IT-Grundkenntnissen Ausgestattete zwischen unzähligen gutdotierten Angeboten auswählen konnte, sind vorbei. Insbesondere für Quereinsteiger erscheinen die Angebote vieler Hersteller, sich Kenntnisse durch einen x Certified y for z (ersetze x durch den Hersteller, y durch eine Rolle und z durch ein Produkt) bescheinigen zu lassen, als gute Möglichkeit, den Lebenslauf aufzuwerten. Auch zum Thema Java existieren verschiedene Zertifizierungsprogramme. Was steckt hinter diesen Angeboten? Und welchen Wert haben Sie für den einzelnen?

Das Interesse an IT-Zertifizierungen kann sehr unterschiedlich motiviert sein. Bei Freiberuflern, Jobsuchenden oder Jobwechselfreudigen ist es in erster Linie die Möglichkeit, Fähigkeiten schriftlich belegen zu können. Mitarbeiter, die in ihrer Anstellung verbleiben wollen, erhoffen nicht selten ein höheres Gehalt zu erzielen, ihren Job zu sichern, oder andere Aufgaben übertragen zu bekommen. Für die andere Seite des Anstellungsverhältnisses (Personaler, Manager) kann eine Zertifizierung als Beleg für spezielle Kenntnisse oder für das erfolgreiche Absolvieren eines kostspieligen Schulungsplanes dienen. Bei Firmen, welche IT-Spezialisten für Projekte an Kunden vermitteln, wirkt sich eine Anreicherung der Mitarbeiterprofile durch Zertifizierungen mitunter direkt verkaufsfördernd aus.

Andererseits wird die Aussagekraft von Herstellerzertifizierungen verglichen mit praktischer Erfahrung nicht selten angezweifelt und darüber hinaus Geldschneiderei vermutet. Tatsächlich steht hinter der Zertifizierungsszene eine ganze Industrie (Schulungsanbieter, Verlage, die Hersteller selbst) und die Kosten für Trainings, Vorbereitungszeit und -materialien addieren sich oft zu beträchtlichen Summen. Das Thema wird (z.B. in zahlreichen Internet-Foren) kontrovers diskutiert; hier soll keine Lanze gebrochen werden für oder wider Zertifizierungen. Einen Überblick über die Vielzahl von Angeboten, die der IT-Markt mittlerweile bereithält, verschafft die Website GoCertify [1]. Quantitative Aussagen über die verschiedenen Motivationen von Kandidaten und über Einschätzungen von Managern liefert eine Studie [2] von Gartner Consulting.

Dieser Artikel soll einen Überblick über die wichtigsten Java-Angebote verschaffen. Den Auftakt pictureet das Curriculum von Sun Microsystems. Zwei der insgesamt vier Examen werden detaillierter vorgestellt. Anhand von Beispielfragen wird ein Eindruck über Art und Tiefe der Tests vermittelt. Als herstellerübergreifende Option wird zum Abschluss auf die Offerten der jCert-Initiative eingegangen.

Das Java-Curriculum von Sun

Als Erfinder der Technologie ist Sun Microsystems naheliegender erster Anlaufpunkt für Zertifizierungen zum Thema Java. Das Sun-Curriculum besteht gegenwärtig aus vier Examina, zwei für die Java 2 Standard Edition (J2SE) und zwei für die Java 2 Enterprise Edition (J2EE). Sun Educational Services (SES) empfiehlt zum Erwerb der nötigen Kenntnisse den Besuch einschlägiger Schulungen, grundsätzlich bleibt es aber jedem Kandidaten selbst überlassen, wie er sich auf die Zertifizierungen vorbereitet. Die Prüfungsinhalte sind kein Geheimnis, sondern in Form der Spezifikationen und APIs frei im Internet verfügbar.

Abpictureung 1 stellt die vier Prüfungen mit ihren Bestandteilen schematisch dar. Als Einstieg für Entwickler kann der Sun Certified Programmer for the Java 2 Platform (SCPJ2) angesehen werden. Um dieses Zertifikat zu erhalten genügt es, den online in einem autorisierten Testcenter durchgeführten Multiple-Choice-Test zu bestehen. Im Anschluss an den SCPJ2 haben Java-Entwickler die Wahl zwischen dem eher Client-seitig orientierten Sun Certified Developer for the Java 2 Platform und dem Server-seitig ausgerichteten Sun Certified Web Component Developer for J2EE (SCWCD). Letzterer richtet sich an Entwickler von Web-Applikationen auf Basis von Servlets und JSP. In beiden Fällen ist der Nachweis des bestandenen SCPJ2 zwingende Voraussetzung zum Absolvieren der Prüfungen. Für den SCWCD ist wie beim Programmer lediglich ein Online-Test zu bestehen.

Der Certfied Developer richtet sich laut SES an erfahrene Entwickler und beinhaltet zwei Teilprüfungen. Die erste ist eine konkrete Programmieraufgabe, die in Java zu lösen ist. Nach Abgabe werden in einer zweiten Prüfung in Form vier kleiner Aufsätze (Essay Exam) Designentscheidungen zur vorherigen Programmieraufgabe abgefragt. Als letztes Zertifikat in Suns Java-Portfolio bleibt noch der Sun Certified Enterprise Architect for J2EE zu nennen. Es richtet sich an Software-Architekten; interessierte Kandidaten brauchen keines der anderen Zertifikate vorweisen. Die Prüfung besteht aus insgesamt drei Bestandteilen. Ein Multiple-Choice-Test prüft Kenntnisse aus verschiedenen Bereichen ab (z.B. Design Patterns, Technologien für Backend-Systeme, Sicherheit). Als praktischer Bestandteil ist ein Architecture and Design Project enthalten, nach Abgabe der Lösung schließt ein Essay Exam mit vier kleinen Aufsätzen das Prozedere ab.

Nähere Informationen zum gesamten Java-Curriculum von Sun finden sich auf den Web-Seiten des Unternehmens [4]. Da es sich beim Programmer Exam um die gängigste Java-Zertifizierung handelt, wird auf Prüfungsablauf und -inhalte im Folgenden genauer eingegangen. Der Schwerpunkt der Java-Entwicklung hat sich in den letztem Jahren stark in Richtung Server verschoben; hier werden insbesondere Web-basierte Applikationen erstellt. So ist das verhältnismäßig neue SCWCD-Examen ebenfalls von besonderem Interesse, und wird im Rahmen des Artikels detaillierter betrachtet.

Abb. 1: Java-Zertifizierungen von Sun

Das Programmer Exam behandelt die Grundlagen von Java. Fortgeschrittene APIs wie Swing oder RMI gehören nicht zu den Prüfungsinhalten. Dafür sind bei den relevanten Themen Detailkenntnisse gefragt, über die auch erfahrene Java-Entwickler häufig nicht (auswendig) verfügen. Die Objectives (zu deutsch Lernziele) umfassen neben den fundamentalsten Dingen (Datentypen, Kontrollstrukturen, Erstellen von Klassen, etc.) Themen wie Multithreading, AWT, I/O und die Collection API. Für eine vollständige Liste sei auf die Sun-Seiten verwiesen.

Einen guten ersten Eindruck über Art und Tiefe des Tests bekommt man durch Beispielfragen, wie sie in dem Abschnitt Sample Questions SCPJ2 abgedruckt sind. Da das Examen nicht in deutscher Sprache angeboten wird, sind sie in Englisch formuliert. Das Internet ist Quelle einer ganzen Reihe vollständiger Beispieltests (Mock Exams), deren Autoren versucht haben, Umfang und Schwierigkeitsgrad an das Original anzugleichen. Die von Marcus Green erstellten Tests [5] sind dabei von besonderer Qualität, da die Antworten kommentiert sind.

Nicht nur wegen der Mock Exams bietet sich das Internet als primäre Quelle zur Vorbereitung auf die Zertifizierung an. Sun selbst stellt hier viele relevante Informationen zur Verfügung. Darüber hinaus gibt es einige unabhängige Java-Web-Sites, die dem Thema einen besonderen Stellenwert beimessen. So betreibt die Java Ranch [6] spezielle Foren zu allen vier Sun-Zertifikaten, es findet dort ein weltweiter, reger Erfahrungs- und Meinungsaustausch statt.

Weiterhin werden mehrere Bücher speziell zur Vorbereitung auf das SCPJ2-Zertifikat angeboten, stellvertretend seien an dieser Stelle zwei genannt. Das erste von Bill Brogden [7] ist explizit als Ergänzung zu anderen Vorbereitungsmaterialien (z.B. Standardwerken zu Java) gedacht und arbeitet insbesondere alles für den Test wesentliche heraus. Das Buch von Simon Roberts [8] ist weitaus umfangreicher und kann mit der Tatsache werben, das der Autor den Test für Sun mit konzipiert hat. Beide Bücher enthalten kommentierte Beispielfragen und -tests.

Wie viel Zeit in die Vorbereitung investiert werden muss, kann nicht pauschal gesagt werden. Es hängt nicht nur davon ab, wie viel Java-Erfahrung der Kandidat mitbringt, sondern auch inwieweit alle relevanten Bereiche dadurch abgedeckt werden. Bei Entwicklern, die ausschließlich an Web-Applikationen gearbeitet haben, werden z.B. Kenntnisse in AWT nicht ausreichend vorhanden sein. Ein Test der eigenen Fähigkeiten mit Hilfe eines Mock Exams kann einen Eindruck vermitteln, mit welchem Lernaufwand zu rechnen ist. Für Interessierte sei im Folgenden noch der eigentliche Prüfungsablauf beschrieben.

Zunächst erwirbt man über SES einen Voucher (Gutschein) zum Preis von 150 (Bezugsquelle siehe [9]). Er ist ca. ein Jahr gültig, so dass man ihn sich auch schon im Vorfeld besorgen kann. Wenn man sich ausreichend vorbereitet fühlt, stimmt man mit der Firma Prometric [3] Termin und Ort des Tests ab. Prometric ist ein weltweit operierender Anbieter von Online-Prüfungen. Für den SCPJ2 lassen sich auf seinen Seiten (Stand Februar 2002) 123 autorisierte Test-Center in Deutschland lokalisieren (Österreich 22, Schweiz 16), so dass in jedem Falle eines in der Nähe zu finden sein sollte.

Am vereinbarten Termin erscheint man mit Personalausweis o.ä. bewaffnet im Test-Center und legt am Rechner online seine Prüfung ab. Ein Test umfasst 59 Fragen, welche in 120 Minuten beantwortet werden müssen. Zum Bestehen sind 61 % erforderlich. Das Ergebnis erhält man direkt im Anschluss an die Prüfung schwarz auf weiß, die Zusendung des Welcome Package (Zertifikat, Pin) im Falle des Erfolges dauert dagegen einige Wochen.

Die Vorbereitung auf dieses Examen führt dazu, dass man sich mit allen grundlegenden Javathemen (Sprache, API, JDK) ausgiebig beschäftigt. Auch erfahrene Entwickler können in der Regel noch von dem Studium profitieren. Doch kann gerade Neulingen, die sich intensiv mit Java auseinandersetzen wollen, das Lernen anhand der Objectives, gepaart mit viel Experimentieren mit den JDK-Werkzeugen, empfohlen werden. Insbesondere denjenigen, die gerne auf ein Ziel hinarbeiten, wird durch das Zertifikat zum Abschluss ein gewisser, allgemein anerkannter Kenntnisstand bescheinigt. Doch kann die Zertifizierung praktische Erfahrungen nicht ersetzen. Das Examen kann man bei geeigneter Vorbereitung problemlos bestehen, ohne je ein nicht-triviales Java-Programm von mehr als 30 Zeilen oder drei Klassen Umfang geschrieben zu haben.

Sample Questions SCPJ2

Question P1

Check all declarations for the local variable „v“ used in the following switch statement that will not cause an error at compile time!

// Place declaration here

switch (v) {

case 5: // …

case 50: // …

case 500: // …

case 5000: // …

}

a) int v = 50;

b) short v = 50;

c) long v = 50;

d) char v = 50;

e) byte v = 50;

Question P2

java.lang.Exception

+– MixingException

+– ShakerNotReadyException

+– IngredientNotFoundException

You have created some classes related to cocktail mixing and a hierarchy of exceptions starting with java.lang.Exception as described above. The class GenericCocktailWaiter has a method declared as follows

Cocktail mix (Recipe r) throws MixingException

The class ConcreteCocktailWaiter is a subclass of GenericCocktailWaiter and overrides this method. Which of the following are legal declarations for the overriding method of the subclass? Check all correct answers.

a) Cocktail mix (Recipe r)
throws Exception

b) Cocktail mix (Recipe r)
throws MixingException

c) Cocktail mix (Recipe r)

d) Cocktail mix (Recipe r)
throws ShakerNotReadyException

Question P3

Identify the correct extends-hierarchy for the interfaces Collection, Map and Set from the java.util package!

a)

Collection

+– Set

+– Map

b)

Collection

+– Set

Map

c)

Collection

+– Set

+– Map

d) None of the above

SCWCD

Der jüngste Spross in der Zertifizierungs-Familie von Sun ist der Sun Certified Web Component Developer. Auch hierbei handelt es sich um einen reinen Online-Test; das Prozedere gestaltet sich völlig analog zum SCPJ2. Die Lerninhalte lassen sich zusammenfassen in die Bereiche Servlets, Deployment von Web-Applikationen, JSP und TagLib-Entwicklung. Darüber hinaus werden Kenntnisse in ausgewählten (J2EE-) Design Patterns abgefragt (z.B. Data Access Object, Business Delegate). Eine detaillierte Liste der Objectives findet sich auf den Web-Seiten von Sun [4]. Bei der Vorbereitung ist zu beachten, dass dem Test bereits die aktuellen Versionen der Spezifikationen (Servlet 2.3 und JSP 1.2) zugrundegelegt sind.

Einen Eindruck über die Art der Fragen sollen auch hier einige Beispiele vermitteln (siehe Abschnitt Sample Questions SCWCD). Gegenwärtig (Stand Februar 2002) ist noch kein Buch im Handel, das gezielt auf dieses Examen vorbereitet. Allgemein zum Thema Web Development mit Java gibt es dagegen reichlich gute Literatur. Als Problem können sich dabei die neuen Spezifikationen erweisen, da viele Fachbücher noch keine aktualisierten Ausgaben herausgegeben haben. Es ist daher empfehlenswert, die Spezifikationen zur Vorbereitung zu verwenden. Sie sind verblüffend gut lesbar, aufgrund vieler Kommentare gilt das sogar für die DTDs der Deployment Deskriptoren. Wer weitere Quellen zur Vorbereitung sucht, etwa Links und Literaturtipps, dem leistet die Java Ranch [6] mit ihrer Link-Sammlung hervorragende Dienste.

Wie beim SCPJ2 lässt sich auch hier sagen, dass die Vorbereitung auf dieses Examen es mit sich bringt, dass man sich mit allen für Java-Web-Applikationen relevanten Themen ausgiebig beschäftigt. Kenntnisse in den erforderlichen APIs und im Aufbau von WAR-Files zählen ebenso dazu wie ein gutes Verständnis für die verschiedenen Lebenszyklen der zu entwickelnden Komponenten (Servlet, JSP, Custom Tag). Somit kann das Studium der Lernziele, gepaart mit viel Experimentieren mit der Referenzimplementierung jedem empfohlen werden, der sich intensiv mit der Entwicklung von Web-Applikationen in Java beschäftigen möchte.

Sample Questions SCWCD

Question W1

Your servlet implements javax.servlet.SingleThreadModel. After deploying it to a Servlet Container, it must handle a lot of traffic. How many instances of the servlet will be created in the container?

a) just one

b) one per request

c) It depends on the Servlet Container.

d) It depends on a configuration in the web.xml file.

e) a lot of instances, definitly more than one

Question W2

The intent of the following JSP is to view the current Server date and time individual for each client request.

Place missing code here

<HTML>

<HEAD>

<TITLE>now.jsp</TITLE>

</HEAD>

<BODY>

<%= now %>

</BODY>

</HTML>

Which of the following code fragments could be used to implement this behaviour?

a) <%! java.util.Date now

= new java.util.Date(); %>

b) <% java.util.Date now

= new java.util.Date(); %>

c) <jsp:useBean class=“java.util.Date“ name=“now“ />

d) <jsp:useBean class=“java.util.Date“ name=“now“ scope=“request“ />

e) <jsp:useBean class=“java.util.Date“ id=“now“ />

Question W3

Which of the following subelements of an -entry of a custom tag in a Tag Library Descriptor are optional?

a) <required>

b) <rtexprvalue>

c) <name>

d) <type>

e) None of the above

Die jCert-Initiative

1999 riefen sechs im Java-Umfeld aktive Unternehmen, darunter auch Sun Microsystems, eine hersteller-übergreifende Zertifizierungsinitiative ins Leben, welche produktspezifische Java-Abschlüsse untereinander vergleichbar machen sollte. Am jCert [10] getauften Vorhaben nehmen neben Sun derzeit die Firmen Bea, HP, IBM, Oracle und Sybase teil. Gemeinsam wurden drei Stufen der Zertifizierung definiert, die aufeinander aufbauen. Die Grundidee besteht darin, dass eine bei einem Hersteller abgelegte Prüfung auch von den anderen teilnehmenden Unternehmen als erbrachte Leistung anerkannt wird (Certified once, Recognized everywhere).

Als erste Stufe fungiert einheitlich der Sun Certified Programmer for the Java 2 Platform, wie oben beschrieben. Die zweite Stufe trägt den (generischen) Titel Vendor Certified Solutions Developer, wobei Vendor durch einen der teilnehmenden Hersteller zu ersetzen ist. Um diese Zertifizierung zu erreichen, muss man die erste jCert-Stufe absolviert haben und zwei weitere Tests bestehen. Der erste Test ist für alle Hersteller gleich und behandelt objektorientierte Analyse und Design mit UML. Der zweite Test ist herstellerspezifisch und hat die Anwendungsentwicklung in Java mit einem konkreten Werkzeug zum Thema. Dies ist bei IBM zum Beispiel Visual Age for Java, bei Oracle der JDeveloper. Welche Optionen dem Kandidaten insgesamt zur Verfügung stehen ist den jCert-Seiten, bzw. den von dort referenzierten Herstellerseiten zu entnehmen. Das Zertifikat stellt derjenige Hersteller aus, dessen Examen als Option für den zweiten Test gewählt und bestanden wurde.

Die dritte und letzte Stufe des jCert-Programmes ist der Vendor Certified Enterprise Developer, wobei auch hier wieder Vendor durch HP, Sybase o.ä. zu ersetzen ist. Voraussetzung ist die zweite jCert-Stufe, wobei der konkrete Hersteller beliebig ist, da die jCert-Abschlüsse wie oben erwähnt wechselseitig anerkannt werden. Auch hier sind zwei Tests zu bestehen, von denen der erste Enterprise Connectivity (mit J2EE) zum Thema hat, und von allen Herstellern einheitlich angeboten wird. Der zweite Test ist herstellerspezifisch und behandelt einen konkreten J2EE Application Server. Bei Bea ist dies z.B. Weblogic, bei Sun der iPlanet Application Server. Auch hier stellt der Hersteller, dessen Produkt für die zweite Prüfung gewählt wurde, das Zertifikat aus.

Während das Sun-Curriculum ausschließlich Java-Technologien behandelt, kommen bei der zweiten und dritten jCert-Stufe auch produktspezifische Kenntnisse zum Tragen. In Anbetracht der zum Teil beträchtlichen Unterschiede der Werkzeuge und Server werden für Projekte regelmäßig Spezialkenntnisse in einem bestimmten Produkt nachgefragt (z.B. Konfiguration und Performance-Tuning). Das Belegen von einschlägigem Know-how ist mit Hilfe des jCert-Curriculums möglich. Ein Plus ist die Tatsache, dass zum Erlangen einer bereits erworbenen Stufe für einen weiteren Hersteller nur ein weiterer Test absolviert werden muss, nämlich der produktspezifische. Die Beimischung allgemeinerer Lernziele (UML, Connectivity) macht die Zertifizierungen von jCert zu einer attraktiven Alternative oder Ergänzung zu reinen Herstellerzertifikaten. Die Initiative erreicht nicht den Bekanntheitsgrad des Sun-Angebotes, und leider fehlen einige prominente Hersteller, und mit Ihnen Produkte mit hoher Marktrelevanz (z.B. Borland). Da die erste jCert-Stufe mit dem Java-Curriculum zusammenfällt, ist SCPJ2 in jedem Falle der Startpunkt für Zertifizierungswillige. Danach lohnt ein Blick in das jCert-Angebot, vielleicht ist das Leib-und-Magen-Produkt dort gelistet.

Sinn oder Unsinn?

Für den interessierten Prüfling ist eine Zertifizierung neben finanziellen Aufwänden oft mit erheblicher Vorbereitungszeit verbunden. Den erfahrenen Entwickler mag es dabei stören, dass Detailkenntnisse verlangt werden, die mit praktischen Realisierungsarbeiten teilweise wenig zu tun haben. Und über den Wert eines Zertifikates lässt sich ohnehin trefflich streiten. Ob es sich gewinnbringend bei der nächsten Gehaltsverhandlung einsetzen lässt oder die Job-Suche erleichtert, sei dahingestellt.

In Lebensläufen und Profilen stellen Zertifizierungen meines Erachtens eine interessante Ergänzung zu Projekterfahrungen mit gleichem Thema dar. Die Lernziele der Zertifizierungen dokumentieren darüber hinaus einen Lehrplan für jene, die sich in die Java-Thematik einarbeiten wollen. Idealerweise geschieht dies im Rahmen eines Projektes in Zusammenarbeit mit erfahrenen Entwicklern (Training on the Job). Durch die Prüfungen kann am Ende der Mühen ein messbarer Lernerfolg stehen. Insbesondere diese Objektivität kann Zertifizierungen zu einem interessanten Bestandteil von Zielvereinbarungen in den in vielen Unternehmen obligatorischen Jahresgesprächen machen.

Die Entscheidung für oder gegen eine Zertifizierung ist anhand der persönlichen Entwicklungspläne eines jeden einzelnen zu treffen und nicht zuletzt Geschmackssache. Ich persönlich würde behaupten, von den Zertifizierungen profitiert zu haben. Zum einen sicherlich durch tiefere Kenntnisse in Java, insbesondere im Bereich Web-Applikationen. Zum anderen vermutlich durch Gelegenheiten im Berufsleben. Dass ein Zertifikat hier oder da den Ausschlag bei der Kandidatenauswahl gegeben hat, ist allerdings Spekulation.
Stefan Zörner (szoerner@de.ibm.com) arbeitet als IT Spezialist im IBM e-Business Innovation Center in Hamburg.

Lösungen zu den Beispielfragen

P1 : a, b, d

Der Typ long ist in switch-Anweisungen grundsätzlich nicht erlaubt. Dass der Compiler prüft, ob die Werte in den cases auf den Typ im switch-Ausdruck „passen“, mag dagegen überraschen. Option e) ist aus diesem Grund falsch.

P2 : b, c, d

Beim Überschreiben einer Methode ist das Werfen einer allgemeineren Exception (Option a)) unzulässig. Dass es erlaubt ist, keine Exception zu werfen (Fall c)), wird erstaunlicherweise regelmäßig vergessen.

P3 : b

Neben Kenntnissen der eigentlichen Sprache (siehe P1, P2) ist ein Verständnis für grundlegende Konzepte der Java-Klassenbibliothek gefragt. Außer der Collection API sind dies insbesondere die Bereiche AWT und I/O.

W1 : c

Das Programmiermodell von Servlets zählt zu den wichtigsten Objectives des SCWCD. Da auch Freiheitsgrade bzgl. der Implementierung durch einen Container-Hersteller geprüft werden, ist ein Studium der Spezifikation ratsam.

W2 : b, e

Die Semantik von JSP Scriptlets, Deklarationen und JavaBean Komponenten gehört ebenso zu den Lernzielen wie die korrekte Syntax. Hierzu zählen auch die XML-basierten Varianten der Elemente.

W3 : a, b, d

Details zu den DTDs von Deployment Descriptor und Tag Library Descriptor gehören zu den Dingen, die mühsam sind zu lernen, insbesondere da diese Dateien i.d.R. mit validierenden Tools erstellt werden.

Geschrieben von
Stefan Zörner
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.