Montag, 4. Februar 2013

Oracle Java 7 Zertifizierungen

Oracle Certified Professional
CC-BY-SA Sebastian Dietrich
Bei der Zertifizierung zum Java 7 Programmierer hat sich einiges geändert, weit mehr als sich in der Syntax von Java 6 auf Java 7 geändert hat. Klar war, dass mit der Übernahme von Java durch Oracle der Name auch angepasst wird. Vormals "Sun Certified Programmer for the Java Platform" heisst nunmehr "Oracle Certified Professional Java Programmer". Damit wird der bei Oracle typischen Einstufung der Zertifikate auf "Associate", "Professional", "Expert" und "Master" Ebene entsprochen.

Klarerweise wurde die Zertifizierung auch auf die neue Java Version umgestellt. Wobei sich bei der Syntax zwischen Java 6 und Java 7 nicht allzuviel geändert hat. "Simple" Fragen wie die folgende können aber auch alte Java Hasen vor ein Problem stellen (Antwort siehe ganz unten):
Which of the following lines compile correctly:

int anInt = 0X1;      // line 1
long aLong = 0x1;     // line 2
byte aByte = 0B1;     // line 3
short aShort = anInt; // line 4
Nicht vergessen werden darf aber auch dass neben der Syntax auch Teile der Klassenbibliothek bei der Zertifizierung abgefragt werden. Und zwar lt. Exam Topics Collection-Klassen, IO, NIO, JDBC, Concurrency und Localization. Hier hat sich insbesondere bei NIO und Concurrency mit Java 7 einiges verändert. Geübt werden müssen also auch Fragen wie die folgenden:
How many Threads are created when passing task to an Executor instance?
  1. new Thread is used for each task.
  2. A number of Threads equal to the number of CPUs is used to execute tasks.
  3. A single Thread is used to execute all tasks.
  4. A developer-defined number of Threads is used to execute tasks.
  5. A number of Threads determined by system load is used to execute tasks.
  6. The method used to obtain the Executor determines how many Threads are used to execute tasks.
Which two statements are true about the walkFileTree method of the files class?
  1. The file tree traversal is breadth-first with the given FileVisitor invoked for each file encountered.
  2. If the file is a directory, and if that directory could not be opened, the postVisitFileFailed method is invoked with the I/O exception.
  3. The maxDepth parameter’s value is the maximum number of directories to visit.
  4. By default, symbolic links are not automatically followed by the method.
Um diese Fragestellungen zu üben gibt es ein paar Tipps unter Java Zertifizierung Vorbereitung, sowie eine Reihe von Büchern z.B. Oracle Certified Professional Java SE 7 Programmer Exams und Java Practice Questions: Oracle Certified Professional, Java SE 7 Programmer - alle mit Fragensammlungen.

Java Certification Path
Oracle Java Zertifizierungspfad
CC-BY-SA Sebastian Dietrich
Neben der Anpassung des Namens und dem Einbau von Fragen zu Java 7 hat Oracle aber auch den gesamten Zertifizierungspfad umgestellt. Die wichtigsten Änderungen sind:
  • Die Java Associate Prüfung ist Vorbedingung für die Java Programmer Zertifizierung. Idealerweise werden beide kurz hintereinander absolviert. Die Associate Prüfung ist mehr oder weniger eine einfachere Programmer Zertifizierung mit Focus auf Syntax und ohne größeres Wissen über die Klassenbibliothek
  • Die Zertifizierung zum Enterprise Architect ist von keiner anderen Zertifizierung mehr abhängig. Ein kostspieliges Training bei Oracle muss dafür aber für die Qualifikation zur Teilnahme absolviert werden, nach der Prüfung muss noch eine Aufgabe und eine schriftliche Arbeit erledigt werden. Sie liegt allerdings derzeit (Feb. 2013) nur für die veraltete Java EE 5 Version vor (die JEE6 gibt es seit jetzt mehr als 3 Jahren).
  • Die Oracle Expert Zertifizierungen für die Enterprise Edition ("Enterprise JavaBeans Developer", "Java Persistence API Developer", "Web Services Developer", "Web Component Developer") wurden für die JEE Version 6 adaptiert und teilweise (von Professional) auf "Expert" Level angehoben.
Was sich leider nicht geändert hat ist die Tatsache, dass die Fragen weit entfernt von irgendeiner Relevanz für die Praxis sind - das Auswendiglernen von Methoden der Klassenbibliothek, sowie die Prüfung der Syntax von schlecht geschriebenem Code sollte eigentlich seit der Erfindung von JavaDoc (1995) und dem Erscheinen von Compilern (1949) der Vergangenheit angehören. Eine Java Zertifizierung zu besitzen sagt also weniger über die Eignung zum Java Entwickler, als über die Bereitschaft unintelligenten Tätigkeiten nachzukommen aus. Und wie schon von SUN Zeiten her gewohnt hinken die Zertifikate dem Erscheinen neuer Java Versionen deutlich hinterher.

Fazit: Es hat sich bei den Java Zertifizierungen einiges geändert, eine Relevanz für die Praxis ist allerdings immer noch nicht gegeben. Die Anzahl der guter Java Entwickler mit einem Zertifikat wird sich daher auch in Zukunft weiterhin stark in Grenzen halten. Gründe dafür, dennoch die Zertifizierungen zu machen finden, sich unter Wozu Java Zertifizierungen?

P.S. Die Antwort zu den oben gestellten Fragen:
Frage 1 (zu binären Literalen): Antwort 1, 2, 3. Binäre Literale können mit "0b" oder "0B" beginnen, führende Nullen sind nicht notwendig. Zeile 4 compiliert nicht, da auf byte gecastet werden muss (also byte aByte = (byte)anInt;). Zeile 2 compiliert, schöner wäre es aber, wenn dem long auch direkt ein long ohne implizitem Cast zugewiesen werden würde (also long aLong = 0b1L;).
Frage 2 (zu Executor): Antwort 6. Executor ist nur ein Interface, es kommt auf die konkrete Executor Implementierung an, wieviele Threads erzeugt werden (oder ob überhaupt Threads erzeugt werden und nicht bestehende Threads wiederverwendet werde)
Frage 3 (zu FileVisitors): Antwort 3 und 4. Die Methode FileVisitor.walkFileTree(Path start, Set options, int maxDepth, FileVisitor visitor) enthält ein Attribut maxDepth das die maximale Anzahl der zu besuchenden Directories enthält (Antwort 3). Per default geht die Methode walkFileTree keinen symbolic links nach (Antwort 4), das kann aber mittels der FileVisitOption.FOLLOW_LINKS umgestellt werde.
web analytics