Archive for January, 2008

SCJP 6 Upgrade

Sunday, January 27th, 2008

Letzte Woche habe ich das SCJP 6 Upgrade Exam bestanden.

Folgende Bücher habe ich während der Vorbereitungsphase durchgearbeitet:

  • Fast Track to Sun Certified Java Programmer (Scjp) 5.0 Upgrade Exam von Ka Iok Tong
  • SCJP Sun Certified Programmer for Java 5 Study Guide (Exam 310-055) von Kathy Sierra

Letzteres umfasst das komplette SCJP 5 und gibt Auskunft, welche Klassen und Methoden im Examen vorkommen können und welche nicht. Diese Hinweise vermisst man im “Fast Track to SCJP 5 Upgrade Exam” Buch. Hier wird beispielsweise die Klasse MessageFormat ausführlich beschrieben, obwohl sie für das Examen absolut irrelevant ist.

Bücher zum SCJP 6 gibt es noch keine, allerdings halten sich die Unterschiede zum SCJP 5 stark in Grenzen. Lediglich ein paar neue Klassen (NavigableMap, NavigableSet sowie Console) sind dazu gekommen.

Im Vergleich zum SCJP 1.4 sind die neuen Prüfungsthemen praxisbezogener. So wurden einige Klassen aus den Packages java.text und java.util.regex hinzugefügt. Als Konsequenz erhöht sich leider auch der Auswendiglern-Faktor (z.B. welche Konstruktor gibt es in der java.text.DateFormat Klasse ?)

Gleichzeitig wurden komplexe (aber dennoch spassige) Operatoren-Fragen wie Bitshifting oder Operatorvorrang gestrichen.

Java-Entwicklung auf einem MacBook ?

Sunday, January 13th, 2008

Letzten Monat habe ich mir für daheim einen Apple MacBook fürs Mp3-Verwalten, Surfen und EMail-Schreiben gekauft. Für die Java-Entwicklung bleibe ich aber bei meinem Dell. Wieso ?

  • Das JDK 6 ist bis jetzt nur in einer Developer Preview Version erhältlich
  • Das Netbeans Mobility-Pack gibts nicht für Mac OS X
  • Eclipse Europa stürzt beim “Organize Imports” gerne ab
  • Das Tastaturlayout entspricht nicht dem Schweizer Tastaturlayout, und ist fürs
    Programmieren eher hinderlich (z.B. geschweifte Klammern mit alt-8 / alt-9)

NavigableMap

Sunday, January 13th, 2008

(heute wirds sehr technisch…)
Das Collection-Framework wurde im JDK6 unter anderem um das Interface NavigableMap erweitert.
NavigableMap leitet von SortedMap ab und bringt neue Zugriffsmöglichkeiten auf Keys und Entries. Beispielsweise gibt die Methode lowerEntry(K key) den nächst kleineren Eintrag zurück. Die Methode ceilingEntry(K key) ist da weniger restriktiv. Hier gilt: kleiner oder gleich.

Interessant ist noch, dass der Rückgabetyp von headMap(K key) und headMap(K key, boolean inclusive) sich unterscheidet. Beim ersteren gibts eine SortedMap zurück, beim anderen eine NavigableMap. Laut API liegt das daran, dass vorhandene Implementierungen von SortedMap einfach an NavigableMap angepasst werden können.

Dies gilt auch für tailMap und subMap Methoden.

Implementiert wird dieses Interface von der bisher bekannten TreeMap Klasse. Hier ein kleines Beispiel.

  1. NavigableMap<Integer,String>; nm = new TreeMap<Integer,String>();
  2. nm.put(32, “Kaffee“ );
  3. nm.put(112, “Tee“ );
  4. nm.put(12, “Orangensaft“ );
  5. nm.put(86, “Milch“);
  6.  
  7. nm.lowerKey(32); // 12 (Integer)
  8. nm.lowerEntry(32); // 12=Orangensaft (Map.Entry)
  9. nm.floorKey(32); // 32 (Integer)
  10. nm.floorEntry(32); // 32=Kaffee (Map.Entry)
  11. nm.headMap(32); // {12=Orangensaft} (SortedMap)!
  12. nm.headMap(32,true); // {12=Orangensaft,32=Kaffee} (NavigableMap)!
  13. nm.pollLastEntry(); // 112=Tee (Map.Entry)
  14.  
  15. nm.toString() // {12=Orangensaft, 32=Kaffee, 86=Milch}