Offtopic: Kurzreisebericht für 2 Monate Afrika

Namibia

Ein flächenmäßig großes Land mit unter 2 Millionen Einwohnern sagt schon etwas über die Verteilung aus. Die größte Stadt Namibias und gleichzeitig Hauptstadt ist Windhoek mit etwa 250.000 Einwohnern (im Kern!). Wird es dunkel, ist es leer auf den Straßen und man denkt, eine B-Bombe hätte alle Menschen ausgelöscht. Interessant finde ich in Namibia den Etosha Nationalpark, Swakopmund, Fish River Canyon und die Steinzeichnungen. Wenn man Swakop mit den Dünen gesehen hat und mit dem Quad auch zwischen den Dünen unterwegs ist, kann man sich die Dünen bei Sossusvlei vielleicht sparen; wenn man aber sowieso beim Canyon ist, wird man auf dem Weg nach Swakop dort vorbeikommen. Der Weg ist überwiegend unbefestigt und beschwerlich. Auf der Skeleton-Coast habe ich nur ein Schiffswrack gesehen und die Vorstellung, dass alle paar Meter ein alter rostiger Dampfer liegt, ist falsch. Vor Swakop wird gerade ein Schiff geborgen. Schwimmen ist nur dann möglich, wenn man keine Badewannentemperaturen erwartet, sondern sich auch bei Eiswasser wohlfühlt. Lüderitz ist schön und erinnert an Deutschland in den 50er Jahren, aber auch Swakop besitzt viel deutsches Flair. Walvis Bay muss man nicht gesehen haben, wobei es dort ein nettes Restaurant aus Holzpfählen gibt. Oberhalb von Etoscha ist die Bevölkerungsdichte höher; aus dem Grund findet dort sehr konzentriert Wahlkampf statt, so dass Politiker andere Städte eher vernachlässigen.

Botswana

Von Windhoek aus ist man schnell in Botswana, dort beginnt eine längere Reise. Sie führte mich über das Okavango Delta bis zu Gaborone. Die Hauptstadt des relativ reichen Landes ist aufgeräumt und ordentlich. Drei wichtige Shopping Malls markieren auch schon die Hauptsehenswürdigkeiten. Lonely Planet setzt einen Club und ein Restaurant dort hin, aber beides ist der Bevölkerung absolut unbekannt.

Südafrika/Swaziland/Lesotho/Mozambique

Der Weg von Gaborone nach Südafrika ist kurz. Eine Karte von Südafrika ist hilfreich, denn die DIN A5-Abbildung im Reiseführer ist unzureichend klein. Anders als in Deutschland bekommt man Karten nicht an Tankstellen. Der Kommentar eines Südafrikaners dazu: „Afrika ist eben nicht Europa“.

Die Städte Südafrikas sind von extremen Gegensätzen geprägt. Auf der einen Seite ungepflegte Städte, die mehrheitlich von Schwarzen bewohnt werden und auf der anderen Seite die herausgeputzten Lebensräume der Weißen. In Johannesburg zeigen sich besondere Extreme. Das Zentrum ist von heruntergekommenen Gebäuden geprägt in denen mehrheitlich Schwarze leben, außerhalb liegen chice Gebäude, die durch Zäune von der bösen Außenwelt abgeschirmt sind. Dieses Mal sind es nicht die Armen, die in den äußeren Stadtteilen wohnen, sondern die Reichen. Der Taxifahrer war ein totaler Idiot und wusste keine Adresse. Mit einem Türken, der im gleichen Backpackers untergebracht war, wollten wir zu dem Jazz-Club Kippie’s – laut LP eine absolute Institution – und er fand sie nicht. Nahe an Jo`burg liegt Soweto, was noch einmal eine Nummer ärmer ist.

Pretoria, die Hauptstadt Südafrikas, liegt gleich neben Jo´burg und wirkt völlig anders. Das Gebäude der Universität von Südafrika ist beeindruckend. Nach einer Übernachtung ging es nach Swaziland. Mit dem Minibus, die alle als abgenutzte Fahrzeuge aus China kommen, dann nach Maputo/Mozambique und am nächsten Tag zurück nach Swaziland und direkt wieder nach Südafrika.

Meine gedachte Route von Südafrika nach Lesotho (von Osten nach Westen) war über den Sani Pass, also über den Drakensberg. Die ersten Kilometer ließen sich noch ganz gut fahren, aber dann wurde es eklig. Der Fahrer eines entgegenkommenden 4×4-Autos empfahl mir, diesen Weg in meinem Nissan mit Frontantrieb nicht anzutreten. Also kehrte ich um und fuhr mehr oder weniger um Lesotho herum, um dann im Süden das Land zu betreten. Der Grenzposten überraschte durch seine Einfachheit, und ein Typ mit schlabberigem T-Shirt stempelte den Pass. Von schön geteerten Straßen ging es dann erst einmal ein paar Kilometer über Schotterpiste.

Von Lesotho fuhr ich wieder nach Südafrika, nach Port Elizabeth. Ein (günstiges) Hotel war schwer zu finden. Am nächsten  Tag ging es über die Garden Route nach Cape Town. Der Weg führte durch einige nette Orte wie Mossel Bay, ist aber nicht so zu verstehen, dass man unentwegt an der Küste fährt und eine tolle Aussicht genießt. Meistens ist es langweilig.

Kapstadt mit etwas über 3 Millionen Einwohnern ist lebenslustig und der Tafelberg gibt ihr eine zusätzliche Note. Auf den bekannten Aussichtspunkt kommt man entweder mit der Bahn – dann muss man 1 bis 2 Std. anstehen – oder zu Fuß. Das dauert etwa genauso lange ist aber recht anstrengend. Ich bin nicht ganz nach oben gegangen, da die Wege kurz vor dem Ziel nicht mehr ordentlich markiert sind. Die Aussicht ist aber schon prima. Das Hotel war das Riz, was von der Lage gut an der Waterfront liegt. Von dort kann man nach Robben Island (Nelson Mandelas Gefängnis), aber es ist naiv zu denken, dass man 5 Minuten später im Boot sitzt. Die Anzahl Touristen ist beschränkt und zu meinem Zeitpunkt war die Warteliste eine Woche.

Sambia/Zimbabwe

Als ich aus Windhoek/Namibia in Sambia eintreffe (die Fahrt geht von 18 Uhr abends bis 3 Uhr in der früh), fallen mir drei Dinge auf: Menschen benutzen Fahrräder, es ist deutlich grüner (dass im Januar Regenzeit ist, fällt immer wieder auf) und es lauern überall Moskitos (und dafür hat jede Unterkunft eine Moskitonetz). Der erste Stopp ist Livingstone, der Ort, an dem man die Victoria Falls betrachten kann. Ich entscheide mich aber für den Wasserfall auf der Seite von Zimbabwe, da die Sicht viel beeindruckender ist. Von Sambias Seites aus sieht man nur einen kleinen Teil. Da ich nur ein Single-Entry Visum für Sambia bezahlt habe, musste ich noch einmal 50 USD für ein neues Visum ausgeben. Für Zimbabwe zahlt man 30 USD (kommt aber immer auf die Laune der Beamten an) und 20 USD für den Eintritt. Die Plastiktüte für den Pass hat sich ausgezahlt, denn geht man entlang des Wasserfalls wird man von den gelösten Wasserwolken unglaublich nass. Von Livingstone kommt man in 8 Std. mit dem Bus nach Lusaka, der Hauptstadt. Außer ein paar Malls gibt es hier nichts besonderes zu sehen. In einem Club wimmelte es von Prostituierten und als ich mit dem Taxifahrer darüber sprach, brachte er eine interessante Analogie: „Taxifahrer und Nutten haben eins gemeinsam: Beide verstehen etwas von PR.“ Da hat er wohl recht …

Malawi

Von Lusaka/Sambia wollte ich mit dem Bus nach Lilongwe/Malawi. Direktverbindungen gibt es aber nicht jeden Tag. Also plante ich Etappen. Der erste Bus an den Rand von Sambia hatte 3 Std. Verspätung und kam somit in der Nacht um 4 Uhr an. Das Warten auf die Abfahrt wurde durch fliegende Händler versüßt, die im Minutentakt in den engen Bus kamen und etwas verkaufen wollten: Süßigkeiten, Getränke, Schuhe und Spiegel. Als der Bus losfuhr, kam die Aufforderung, sich doch bitte mit dem Nachbarn zu unterhalten, der könne doch das Leben bereichern. Ein Hotel fand sich leicht für 10 Euro. Bis zur Grenze musste es ein Taxi sein, denn Busse gibt es nicht. Der Taxifahrer jammerte die ganze Zeit, warum Weiße immer so brutal hart mit dem Preis verhandeln. Tja, warum wohl?

Bis zur Grenze ging es schnell. Auf der anderen Seite muss man erst mit einem Taxi in die nächste Stadt fahren und dann einen Minibus nach Lilongwe nehmen. Lilongwe ist eine schmuddelige Stadt, deren Reiz ich in den Tagen nicht erfahren konnte. Im Hotel traf ich mich mit einigen Amerikanern, die hier zusammen mit anderen Nationen das Land und auch die Nachbarländer auf  Einladung der Regierungen bei politischen, sozialen und rechtlichen Fragen beraten. Der Club, in den wir gingen, spielte die ersten Stunden alle Kuschelrock-CDs – die Musikrichtung ist sehr beliebt, genauso wie auch Modern Talking immer noch der Renner ist. Später wurde es dann R&B und ein paar junge Farbige machten sich über unseren Tanzstil lustig.

Von Lilongwe fuhr ich zu der Hauptsehenswürdigkeit des Landes: Dem Malawisee. Das Hotel war direkt am Süßwassersee und auch das Essen des srilankischen Kochs scheint im ganzen Land bekannt. Auf dem Weg nach Tansania machte ich in Mzuzu halt. Nahe der Stadt ist ein Berg, zu dem der frühere Präsident immer zum Lesen ging. Der Ort ist wirklich schön, doch leider sieht man von oben auch eines der größten Probleme des Landes: Die Rohdung des Waldes.

Tansania

Mein eigentliches Ziel in Tansania ist Dar es Salaam. Da der Zug aber nur von Sambia heraus fährt – in Malawi gibt es keine öffentlichen Züge –, fuhr ich morgens nach dem Bus-Gebet mit lauter Gospelmusik von Mzuzu nach Karonga. Vorbei ging es am Kaka-Hotel. (Kaka heißt einfach nur Bruder). In Karonga nahm ich ein Taxi, ging mit 50 USD über die Grenze, lief 1 km bis zu den Minibussen und fuhr weiter nach Mbeya. Nahe Mbeya gibt es eine Bahnstation. Mittlerweile ist die immer wieder von der Pleite bedrohten Bahn soweit, dass Züge nur noch zweimal in der Woche nach Dar es Salaam fahren. Ich hätte 2 Tage warten müssen, und das war es mir nicht wert, da andere Touristen immer wieder von sehr langen Pannen (6 Stunden auf dem Gleis) berichteten. Zum anderen ist durch die Regenzeit die Tierbeobachtung im Nationalpark, den die Bahn mit 40 km/h durchbummelt, wenig attraktiv. Also fuhr ich mit dem Bus. Hätte ich das vorher gewusst, wäre ich von Lilongwe direkt gefahren, denn Mbeya kann man sich wirklich sparen – wobei mir ein deutscher Lehrer die Berge empfohlen hat. Von Mbeya fahren viele Busse am Tag nach Dar es Salaam.

Dar es Salaam, die größte Stadt Tansanias, ist mondäner als die Hauptstädte von Malawi und Sambia. Aufgrund der Meerlage gibt es auch einige kleine Strände. Zu viel Zeit habe ich in der Stadt aber nicht verbracht, da hier Partys selten sind und die Sehenswürdigkeiten sich in Grenzen halten. Am Wichtigsten war das Ticket zur Insel Sansibar. Ein Reiseführer brachte mich auf die Idee, ein Resident-Ticket zu kaufen, was ich dann auch tat – es ist viel günstiger als ein Touristen-Ticket. Es fahren einmal die Schnellfähre in 90 Minuten und eine normale Fähre, die 3 Stunden benötigt. Mit dem Ticket wurde ich nicht kontrolliert, aber es hätte auch anders kommen können. Sansibar überraschte mich mit unglaublichen Gebäuden im Stadtteil Stone Town. Auch Regen überraschte mich am nächsten Tag bei der Spice-Tour (nicht Spice-Girl-Tour!), bei dem es um die lokalen Gewürze ging. Phantastisch.

Kenia

Von Sansibar flog ich dann nach Nairobi. Die Stadt begeisterte mich genauso wie die  Freundlichkeit der Menschen. Ich dachte erst an einen Witz, als der Reiseführer schrieb, die vielen Männer würden Hemden und Anzüge – in der Freizeit! – tragen, doch es ist wahr. Kenianische Männer sind sehr gut gekleidet. Die Frauen sind dezent angezogen und Miniröcke oder bauchfrei ist verpönt. Schockierenderweise war ich gerade vor Ort, als ein schwerer Brand ein Kaufhaus zerstörte. Dabei starben 30 Menschen. Da nur 2 Tage später über 200 Menschen bei einer zweiten Brandkatastrophe starben, waren die Fahnenmasten, etwa in der Festung Fort Jesus in Mombasa, auf Halbmast gesetzt. Die Unfälle markieren die schwersten Brandunfälle in der nahen Geschichte und die Menschen sind frustriert über die Rettungskräfte und Unfähigkeit der Polizei. Im ersten Fall, dem Kaufhausbrand, musste ein Polizeiauto, das eigentlich Demonstranten mit Wasser verscheuchte, das Löschfahrzeug ersetzen. Der zweite Brand ereignete sich, als Menschen mit Dosen, Bechern und Eimern das Benzin eines liegengebliebenden Benzintanklasters  aufsammeln wollten, doch eine Zigarette setze alles in Brand und die Menschen, in Benzin getränkte, verbrannten. Der erste Rettungswagen traf erst eine Stunde später ein.

Sehenswürdigkeiten in Nairobi gibt es nicht so viele, aber hier pulsiert nachts das Leben auf den Strassen, ganz anders als in allen anderen von mir bereisten afrikanischen Ländern. Für den Orphan Wildpark blättert man als Ausländer 12 Euro auf den Tisch, während Einheimische gerade einmal einen Euro zahlen. Da die Weisentiere von klein auf an Menschen gewöhnt sind, konnte ich eine Löwin (durch den Zaun) genauso streicheln wie junge Geparden (Cheetahs). Später im kleinen Giraffe Centre (African Fund for Endangered Wildlife-Kenya) (noch mal 7 €) küssten Giraffen einige Touristen, aber ich ziehe eine weibliche Zunge vor. Der Giraffenzoo ist relativ weit entfernt. Neben dem Zoo kann man ins Museum gehen, jedoch bietet das nicht so viel Neues.

Per Mietwagen bin ich zunächst zu dem nahe liegenden See Naivasha gefahren, mit einem weiteren schließlich von Nairobi nach Mombasa. Das Fahren in Kenia empfinde ich als problemlos und ich lerne schnell die Vorteile des Straßenverkehrs. (Nur vergesse ich oft noch die Tempohügel auf den Straßen …) Vielleicht werde ich im nächsten Leben Matatu-Lenker, also Minibusfahrer, die wie blöd durch die Stadt fahren und sich nur an die allernotwendigsten Verkehrsregeln halten – etwa keine Oma zu überfahren oder den Gebrauch der Hupe. Wäre ich in Deutschland, hätten auch  die Halter der beiden Fahrzeuge, deren Seitenspiegel ich umgeklappt habe, schon längst einen Tanz gemacht. In Kenia wird ein bisschen mit dem Zeigefinger gemahnt, kurz gestöhnt und das war’s dann schon. Die Mataus werben um ihre Kunden etwa mit lauter Disco-Musik. Bei Frauen scheint der Beruf des Sammeltaxifahrers gut anzukommen (das sagten mir die Fahrer…).

Mombasa selbst hat keine nennenswerten Strände. Das Strandleben spielt sich im entfernten Süden und Norden ab. Im Süden sind die besseren Strände, aber das ist mit etwa 20 km auch etwas weiter von der Stadt entfernt und man muss eine Fähre nehmen. Der Norden ist direkt mit der Stadt verbunden und etwa 5 km auswärts, beginnen die großen Hotels den Strand unter sich aufzuteilen. Vom Hotel zum Flughafen wurde es dann noch einmal stressig. Statt 30 Minuten Fahrt kostete mich die Anreise fast 1 Stunde und ich war der letzte, der eincheckte. Die Stadt ist genauso wie Nairobi um 7 Uhr morgens voll, und ich musste schon sehr aggressiv fahren, um zeitig ans Ziel zu kommen. Geschickterweise war dann auch noch eine zentrale Strasse gesperrt, was mir zusätzlichen Nervenkitzel brachte.

FAQ

Wie kann man die Mentalität der Menschen am Besten erleben und etwas über das Land lernen?

a) Mit jedem reden, b) nicht in Hotels, sondern in Hostels übernachten, um mit anderen Reisenden ins Gespräch zu kommen c) die lokalen Zeitungen kaufen. So konnte ich der Zeitung in Malawi entnehmen, dass hartgekochte Eier in der Öffentlichkeit zu essen etwas anstößiges ist. (Eine Erklärung war nicht dabei. Auch der Barkeeper kannte das nicht.)

Fährt man in den Länder rechts oder links?

Überall links, also für uns auf der anderen Straßenseite. Man gewöhnt sich recht schnell dran. Ich fuhr aber oft etwas zu weit links. Lästig war es nur, dass in einem Auto der Blinker rechts und in einem anderen der Blinker links war. Insgesamt bin ich etwa 12.000 km mit dem Auto gefahren und noch keinen Kilometer danach in Deutschland. Mal sehen, wie das klappt …

Kann man in Afrika überall seinen Müll hinschmeißen?

Afrika ist groß! Allerdings findet man oft schlichtweg keine Mülleimer und es bleibt einem kaum etwas anders übrig, als den Müll auf die Strasse zu werfen. Plastikflaschen sind beliebte Sammelobjekte bei Kindern. Wirft man sie aus dem Bus, ist die Flasche nach ein paar Sekunden weggeräumt.

Mit welchen Fluggesellschaften kommt man günstig nach Afrika?

Ich bin mit Air Berlin nach Windoek/Namibia geflogen und mit Condor von Mombasa/Kenia wieder zurück. Das Rückflugticket habe ich 2 Wochen vor der Heimreise gebucht.

Muss man bei der Einreise eine Ausreise-/Weiterreisegenemigung vorzeigen?

Dass musste ich nicht. Es kann aber grundsätzlich passieren, dass ein Beamter nachfragt. Die einzigen, die sich für meine Ausreise interessierten, war Air Berlin. Der Frau hinter dem Schalter habe ich meine Busreise nach Sambia vorgelegt und sie hat mit gesagt, dass das nicht reicht, weil Sambia ja eine Stadt in Namibia ist, ich aber eine Landesausreise benötige. Als ich sie korrigiert habe, dass das ein Land ist, musste sie erst eine Kollegin fragen. Nach 15 Minuten war das auch geklärt.

Wie kann man am besten nach Deutschland telefonieren?

E-plus funktionierte in den meisten Ländern nicht. In Namibia und Südafrika konnte ich zumindest SMS empfangen und telefonieren, aber keine SMS versenden. Davon abgesehen, ist es sehr teuer. Eine Alternative sind lokale SIM-Karten. Die sind sehr günstig (1 bis 2 Euros) und die Preise nach Deutschland OK. Zudem hat es den Vorteil, günstig mit Menschen vor Ort telefonieren zu können. Ich habe beim Zain gekauft, was in vielen afrikanischen Ländern verfügbar ist und was – wenn man es denn braucht – gute Konditionen zu den Nachbar-Zain-Ländern hat. Unglaublich ist das Branding von Zain. Viele Häuser sind in den Zain-Farben gestrichen. Die Marke ist sehr stark und an jeder Ecke kann man Airtime kaufen. Nun muss ich beim Kennenlernen mich nicht mehr nur auf meine Briefmarkensammlung verlassen, sondern kann fragen: "Möchtest du meine SIM-Kartensammlung sehen?"

Gibt es in Afrika etwas Gescheites zu essen?

Es kommt wieder darauf an, wo man ist. In Namibia zum Beispiel ist es sehr trocken und daher ist Gemüse selten (bis auf eine Kürbisart). McDonalds oder Burger King sind nicht zu finden, dafür gibt es Marken aus Südafrika, wie Steers, die Burger verkaufen. Besonders kulinarisch empfand ich die Länder aber nicht. Wer auf geschmacklosen Porridge (Brei) steht, ist aber genau richtig!

Kann man wie in Asien gut (illegale) DVDs kaufen?

Ja. Generell schon. Blu-ray Discs sind sehr verbreitet. Sie kosten dann zwischen 1 und 3 Euro und beinhalten 20 Filme. Es gibt DVDs von Filmen, die gerade im Kino sind. Die DVDs werden aus China importiert.

Sollte man im Moment (Anfang 2009) nach Zimbabwe reisen?

Wohl besser nicht. Beim Grenzübergang traf ich einen Gaswasserscheißemonteur, der nach Sambia reiste, um dort ein paar Lebensmittel zu kaufen, da er sagte, in Zimbabwe sind die Regale leer. Auch Benzin gibt es nicht überall. Wer mit dem Auto fährt, kann also mitunter nicht weiterreisen. Die Viktoria-Fälle MUSS man sich aber in Zimbabwe anschauen. Das ist problemlos. Gleich hinter der Grenze nahe den Wasserfällen stehen ein paar unglaubliche Hotelpaläste – persönlich von Robert M. eingeweiht – die dem Touristen das Elend ersparen. Die Währung ist klar: Dollar. Anfang Februar wurden gleich 6 Nullen gestrichen; mit Trillionen kann man wirklich schlecht rechnen. An jeder Ecke kann man Billionen-Scheine für einen Dollar kaufen. Als Souvenir.

Ist es in Afrika gefährlich?

Kommt drauf an. Gesundheitlich habe ich Lariam zur Malaria-Prophylakse eingenommen. In der Dunkelheit sollte man besser nicht auf die Strasse gehen, wobei Malawi sicher sein soll. Das Zentrum von Johannesburg ist aber ein klares No-Go.

An wen kann ich spenden und dabei sicher sein, dass das Geld auch in Projekte geht, statt in die Administration?

Unterstützt Eva in Kaduha (Rwuanda)! Sie würde gerne einen Klassenraum renovieren (wenn es durch die kaputten Wellblechdächer regnet, kann kein Unterricht stattfinden), ein Kissen für jedes Kind kaufen (bis jetzt teilen sich zwei oder drei Kinder ein Bett; für mehr Betten ist kein Platz), Schulsachen und Spielsachen für die Kinder besorgen, … Mehr unter http://www.eva-in-kaduha.blogspot.com/. Spenden bitte an die Bistumskasse Münster, Konto-Nr. 2000100 BLZ 400 602 65 DKM Münster, Betreff: RTR 001-1.2211.2261 Ruanda, Eva Fischer. Eine Spendenquittung wird gerne ausgestellt.

Thema des Monats: Programmieraufgaben / JavaBLOG Pause

Anders als bei den üblichen kleinen Beispielen für eine bestimmte API und Technologie sollen nun drei Aufgaben zur Auswahl stehen. Jeder kann nach Lust, Zeit und Laune eine/jede Aufgabe lösen.

Aufgabe 1

Brainfuck (http://de.wikipedia.org/wiki/Brainfuck) und Ook! (http://de.wikipedia.org/wiki/Ook!) sind einfache Turing-vollständige Sprachen, für die sich sehr leicht Interpreter in Java schreiben lassen. Für Brainfuck gibt es mittlerweile sogar eine IDE: http://hardtware.de/products/brainfuck.php. Die Aufgabe ist, unter Java 6 einen eleganten Compiler zu bauen, der aus einem Brainfuck– oder Oak!-Programm ein ausführbares Java-Programm in Form einer .class-Datei generiert. Der Aufruf kann so aussehen:

$ java BrainfuckC Application.bf

Successfully generated Application.class

$ java Application

Aufgabe 2

Gegeben ist eine potenziell sehr große ASCII-Datei mit Ganzzahlen im Wertebereich +-1000000, die durch Leerzeichen, Tab oder Return getrennt sind. Über die Datei soll eine Statistik gefahren werden, sodass am Ende die größte und kleinste Zahl sowie die maximale Teilsumme ausgegeben wird. Gesucht ist das schnellste Programm.

$ java Stat numbers.txt

Min: 3, Max: 199933, Maximale Teilsumme 4785

PS: Die maximale zusammenhängende Teilsumme von zum Beispiel

{-18,5,-3,9,4,-12} ist 5 + -3 + 9 + 4 = 15.

Aufgabe 3

Microsoft PowerPoint kann Folien im XML-Format speichern. Dazu verwendet Microsoft Zip-Dateien mit der Endung pptx. Im Zip-Archiv befindet sich ein Order ppt/slides und jede PowerPoint-Folie liegt dort als XML-Datei vor. Schreibe ein Swing-Programm, mit dem man einfache Text-Folien darstellen kann. Der Rückgriff auf beliebige Java-OpenSouce-Bibliotheken ist ausdrücklich gewünscht.

Lösungen können gerne in dem Blog gepostet werden (oder Verweise auf die Lösungen).

Blog-Pause

In den letzten Wochen gab es keine Posts, da ich auf den Philippinen, Brunei und Indonesien (ja, auch Java) war. Nach der Reise habe ich interessante Java-Neuigkeiten in den Blog nachgetragen. Nun wird es voraussichtlich für einige Wochen wieder keine weiteren Einträge geben, da ich nach Afrika fliege und Namibia, Südafrika, Swaziland, Lesotho, Botswana, Zambia, Mozambique, Malawi, Tansania, Kenia, Ruanda besuchen werde. Wollen wir hoffen, dass dies hier nicht der letzte Blog-Eintrag ist 😉

Apache Jackrabbit 1.5

Jackrabbit (http://jackrabbit.apache.org/) ist eine Implementierung der Content Repository API (JSR 170/JSR 283). (Bei dem JCR geht es darum, Datenquellen eines CR unter einer einheitlichen API anzusprechen. Die Anfrage werden mit XPath getellt.) Wichtige Neuerungen zählt http://www.apache.org/dist/jackrabbit/RELEASE-NOTES-1.5.0.txt auf. Zwei Sachen finde ich besonders interessant:

  • The standalone Jackrabbit server component. The runnable jackrabbit-standalone jar makes it very easy to start and run Jackrabbit as a standalone server with WebDAV and RMI access.
  • Simple Google-style query language. The new GQL query syntax makes it very easy to express simple full text queries.

Die aktuelle Version geht also deutliche Schritte in Richtung der neuen Version JSR-283. http://www.magnolia-cms.com/home.html ist ein bekanntes CMS, welche auf den Jack-Hasen setzt.

SpringSource und Groovy/Grails und SpringSource mit Adobe

SpringSource (http://www.springsource.com/) macht große Schritte. Zum einen durch den Aufkauf von G2one (http://www.g2one.com/), die sich der Beratung von Weiterentwicklung von Groovy und Grails verschrieben haben:

SpringSource,
the maker of the Spring framework have just announced they are acquiring G2One, Inc.,
the Groovy/Grails company. You can learn more about this announcement here:

Nun arbeitet SpringSource auch mit Adobe zusammen und Flash näher an Spring zu setzen. Das Spring-Framework integriert dazu BlazeDS (http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/), eine unter LGPL stehende Remoting- und Messaging-Technologie. Mit BlazeDS kann Flex auf Java-Methoden auf der Serverseite zugreifen, so wie es auch JavaScript über DWR (http://directwebremoting.org/) kann. Die Ankündigung zur Zusammenarbeit:

  • http://www.springsource.com/node/1077

XStream mit JSON-Serialisierung

XStream (http://xstream.codehaus.org/) ist neben
XmlBeans einer der bekanntesten XML-Serialisierer. Nun haben die Entwickler die Bibliothek erweitert, dass XStream auch als XML-JSON-Serialisierer (http://xstream.codehaus.org/json-tutorial.html) arbeitet. Die Methodenamen sind mit toXML() und fromXML() zwar nicht so passend, aber der Aufruf dennoch einfach:

Product product = new Product("Banana", "123", 23.00);
XStream xstream = new XStream(new JettisonMappedXmlDriver());
xstream.setMode(XStream.NO_REFERENCES);
xstream.alias("product", Product.class);
System.out.println(xstream.toXML(product));

Der andere Weg:

String json = "{\"product\":{\"name\":\"Banana\",\"id\":\"123\"" +
",\"price\":\"23.0\"}}";
XStream xstream = new XStream(new JettisonMappedXmlDriver());
xstream.alias("product", Product.class);
Product product = (Product)xstream.fromXML(json);
System.out.println(product.getName());

JavaFX 1.0 offiziell veröffentlicht

http://upload.wikimedia.org/wikipedia/en/4/4a/JavaFXCup200x230.pngSun hat Anfang Dezember 2008 JavaFX veröffentlicht. Es ist als Alternative zu MS Silverlight und Flash + Flex für Rich Internet Applications gedacht. Einige Links dazu:

Zentrale Punkte von JavaFX 1.0 sind: (Zitiert von http://blogs.sun.com/javafx/entry/javafx_1_0_is_live)

  • Fast and easy to use 2D graphics
  • PerspectiveTransform for 3D effects
  • KeyFrame animation
  • Video and Audio support using both native and cross-platform codecs
  • Swing Integration
  • XML & JSON web services
  • Pixel-filters and visual effects with GPU hardware acceleration
  • CSS styling (more on that later)
  • Windows XP+ and Mac 10.4+ support with Linux & Solaris in the works (more on that later too)
  • The new JavaFX Script language with binding and animation built in, running 10->20x faster than Javascript
  • Visually rich applets that you can drag to your desktop and save for later
  • Integration with Photoshop and Illustrator
  • Access to the world’s huge library of Java code and APIs
  • A new website with docs, tutorials, and tons of BSD licensed sample code and as a nice bonus:
  • A sneak-peek beta of JavaFX on mobile devices

Der Punkt Support with Linux & Solaris in the works macht sicherlich nicht jeden in der Community glücklich, aber gut…

Sun hat die schöne Seite http://javafx.com/ aufgebaut, um mehr über JavaFX zu lernen. Die NetBeans IDE 6.5 bringt volle Unterstützung für JavaFX (http://www.netbeans.org/features/javafx/index.html) mit. Für Eclipse gibt es bisher keine große Unterstützung.

http://www.netbeans.org/images/v6/5/screenshots/javafx.png

http://www.reportmill.com/jfx/ bringt passend ein Tool auf Markt. Zentrale Elemente sind (Zitiert von der Webseite):

  • Powerful Visual Designer
  • Animation, Illustration and Page Layout
  • Video, Sound and Image Effects
  • Drag & Drop Application Components
  • JDBC and POJO Data Binding
  • HTTP Form Generation and Binding
  • Navbar Generation, Page Transitions
  • Graphs, Charts, Tables and Reports
  • Full Featured Player/Document Reader
  • Extension Plugins with Internet Directory

http://www.reportmill.com/jfx/JFXBScreenShotFull.jpg

JBoss 5 ist fertig + Application Servers 2008 Rankings

Nach 3 Jahren gibt es nun (endlich) den JBoss 5 AS. Einige Meldungen und Meinungen dazu:

JBoss 5 taucht aber (noch) nicht als zertifizierter Java EE 5 Container unter http://java.sun.com/javaee/overview/compatibility.jsp auf, obwohl http://sacha.labourey.com/2008/09/15/jboss-as-is-now-ee5-certified/ davon berichtet.

Unter http://www.theserverside.com/news/thread.tss?thread_id=51008 wird der EDC report – "Application Servers 2008 Rankings" (http://www.evansdata.com/reports/viewRelease_download.php?reportID=20) diskutiert. Die Kommentare sind lesenswert. Der Download des Papers verlangt ein Login, ist aber ansonsten frei.

Inselraus: getContextClassLoader() vom Thread

Entwickler von Java-Enterprise-Applikationen haben oft damit zu kämpfen, dass immer der falsche Klassenlader eine Klasse bezieht und die Typen dann nicht zusammenpassen. In unserem Beispiel mit dem statischen Initialisierungsblock ist gut zu erkennen, dass durch das zweimalige Laden die Laufzeitumgebung auch zweimal die Anweisungen ausführt. Hätten wir Singletons definiert, würden ihre statische Anfragemethoden unterschiedliche, nicht kompatible Objekte liefern, obwohl es laut Defini-tion eines Singletons der Fall sein müsste. Allgemein gesprochen: Besonders Fabrikfunktionen liefern bei mehreren Versionen der Klasse unterschiedliche Objekte, die nicht zusammenpassen. Zwei Lösungen gibt es hier: Zum einen bekommen die Fabrikfunktionen einen Klassenlader, in dessen Kontext sie die Klassen erzeugen können, oder sie nutzen den Klassenlader, der mit einem Thread ver-bunden ist.

Jeder Thread ist mit einem Klassenlader assoziiert, der standardmäßig mit dem Standardklassenlader identisch ist. getContextClassLoader() auf dem Thread-Objekt bezieht diesen Klassenlader:

Listing 8.13    com/tutego/insel/lang/ThreadClassLoader.java, main()
ClassLoader loader = Thread.currentThread().getContextClassLoader();
System.out.println( loader );  // sun.misc.Launcher$AppClassLoader@a12a00
loader = ThreadClassloader.class.getClassLoader();
System.out.println( loader );  // sun.misc.Launcher$AppClassLoader@a12a00

Soll der assoziierte Klassenlader geändert werden, bewerkstelligt dies setContextClassLoader().

Inselraus: Ein flexibles Tabellenlayout mit JGrid

Eine JTable ist zwar eine einfache Komponente, doch schon in der HTML-Tabelle gibt es Eigenschaften, die die JTable nicht abbilden kann: Zellen, die über mehrere Zeilen und Spalten gehen. Hier ist einiges an Programmieraufwand nötig, der jedoch für diejenigen unnötig ist, die auf die freie Komponente JGrid zurückgreifen. Die Swing-Komponente gehört zu Pepper (http://jeppers.sourceforge.net/), einer Komponente für Tabellenkalkulationen, die sogar eine Formelauswertung ähnlich Excel versteht. Pepper selbst untersteht zwar der GPL, doch JGrid ist LGPL und lässt sich somit in eigene kommerzielle Anwendungen einbinden.

http://openbook.galileocomputing.de/javainsel7/bilder/jgrid.gif

PS: tutego bietet nun auch ein GWT-Seminar an:

Thema der Woche: SwingX

Die Anzahl Swing-Komponenten ist nicht besonders groß und seit dem Swing in Java 1.2 fest eingeführt wurde, hat sich wenig an Swing verändert. Im Laufe der Zeit sind diverse Projekte mit Zusatzkomponenten und Swing-Erweiterungen entstanden, wobei SwingX (http://swinglabs.org/) zu den bekannteren gehört.

SwingX wurde in den letzten Tagen mit mehr Aufmerksamkeit bedacht, seit dem Sun angekündigt hat, dass SwingX-Projekt nicht mehr zu unterstützten. Zusammen mit diversen Blog-Einträgen ergibt sich der Eindruck, dass Swing für Sun keine besondere Rolle spielt, sondern Sun stattdessen Geld und Entwicklerkapazität in JavaFX steckt. Lese dazu

Joda Time 1.6/JSR 310

Von Joda Time (http://joda-time.sourceforge.net/) gibt es ein neues Update in der Version 1.6 (vom 2008-10-27). Interessant bleibt zu sehen, wie sich Joda Time im Laufe der Zeit gegenüber der JSR 310: A New Java Date/Time API abhebt.

Zur JSR 310, die in Java 7 erwartet wird:

Stephen Colebourne ist einer der treibenden Personen von Joda Time und auch Specification Lead der JSR 310.

Java EE 6 in der Endphase der Spezifikation

Die JSR-316 (http://jcp.org/aboutJava/communityprocess/edr/jsr316/index.html) ist eine Umbrella-API für Java EE 6. Am 22. November 2008 war der Close of Early Draft Review, sodass Java EE 6 nun in die heiße Endphase geht. Interessante neue APIs in Java EE 6 sind:

  • JSR-311 JAX-RS: Java API for RESTful Web Services
  • JSR-299 Web Beans
  • JSR-236 Timer for Application Servers
  • JSR-237 Work Manager for Application Servers

Erwartet Updates gibt es bei

  • Enterprise JavaBeans
  • Java Persistence API
  • Servlets
  • JavaServer Faces
  • JAX-WS
  • Java EE Connector API

NetBeans IDE 6.5

Von der Webseite (http://www.netbeans.org/servlets/NewsItemView?newsItemID=1313):

NetBeans.org is proud to announce the availability of NetBeans IDE 6.5!

NetBeans IDE 6.5 offers simplified and rapid development of web, enterprise, desktop, and mobile applications with PHP, JavaScript, Java, C/C++, Ruby, and Groovy.
New features include a robust IDE for PHP, JavaScript debugging for Firefox and IE, and support for Groovy and Grails. The release also delivers a number of enhancements for Java, Ruby on Rails, and C/C++ development. Java highlights include: built-in support for Hibernate, Eclipse project import, and compile on save. Combining excellent out of the box experience, compelling features, and a great plugin ecosystem, NetBeans IDE 6.5 is a must-download for all developers.
NetBeans IDE 6.5 is currently available in English, Japanese, Simplified Chinese and Brazilian Portuguese. There are several community contributed localization efforts underway to support additional languages. Join the efforts today.
More information about NetBeans IDE 6.5:

As always, we welcome and encourage feedback about your experience using the NetBeans IDE. Share your thoughts on our mailing lists and forums; if you blog about NetBeans add your blog to Planet NetBeans. NetBeans is now on Twitter! Follow us at twitter.com/netbeans to get the latest news and information, ask questions and engage with the NetBeans team.

Diskussion und Anwendung von Ribbon-Komponenten

Kirill Grouchnikov hat unter http://www.pushing-pixels.org/?p=622 einen langen Blog verfasst, in dem er sich mit der Entwicklung und Einsatz der Ribbon-Komponente befasst. Der Blog mit seinen vielen Links ist auf jeden Fall lesenswert. Für Java hat Kirill eine Ribbon Komponente implementiert, die Teil vom Flamingo Framework (https://flamingo.dev.java.net/) ist. Die Dokumentation https://flamingo.dev.java.net/docs/ribbon/ribbon-overview.html zeigt Screenshots und die API dahinter.

Thema der Woche: Das XML-Modell XOM

XOM (http://www.xom.nu/tutorial.xhtml) ist ein XML-Modell von Elliotte Rusty Harold, welches eine Alternative zu DOM, aber auch zu moderneren XML-Modellen JDOM und dom4j ist.

Um die Philosophie hinter dem Design zu verstehen, hat Elliotte Rusty Harold mit Bill Venners auf artima ein Interview geführt.

Aufgabe: Gehe mit XOM und XPath an das XML-Ergebnis einer REST-Abfrage http://www.flickr.com/services/api/flickr.places.findByLatLon.html und gib nur die place_url aus.

http://acs.lbl.gov/nux/ lässt sich als Erweiterung von XOM verstehen. Was macht NUX genau?

Jersey 1.0 (JAX-RS) ist fertig

Im Sun-Blog ist http://blogs.sun.com/theaquarium/entry/jersey_1_0_just_shipped ist zu lesen:

JAX-RS co-spec lead and Jersey lead Paul Sandoz just announced Jersey 1.0 availability. v1.0 moments are always special and this one is certainly no exception given how progress was made on a regular basis from engineering hard work and lots of community feedback. Congrats to Paul and the entire community for a well run open source project !

Jersey 1.0 is obviously a JAX-RS 1.0 implementation, but it also adds Spring integration, a REST client, and obviously is production quality…
One of the signs of a community-involved project is the many ways the bits can be accessed: GlassFish v2 and v3, NetBeans 6.5, Maven 2, zip, etc…

With Jersey 1.0 out the door, you can now freely choose your Web Services style and stick to standards. Java EE 6, scheduled sometime mid-2009, will make this even clearer though a maintenance release.
See Jersey for more stories.

Thema der Woche: Sun Certified Java Programmer (SCJP)

The Sun Certified Java Programmer (SCJP) exam is the entry level Java exam and is a prerequisite to a number of the other Java-related certifications. SCJP 6, designated CX-310-065 by Sun, was released in December 2007. It is designed to have a fairly detailed test of basic knowledge of the essentials of the Java programming language. It tests looping constructs and variables, and does not cover specific technologies such as GUI creation, Web or network programming. It is assessed through an automatically administered multiple-choice test system and consists of 72 questions which the candidate has 210 minutes to answer. At least 47 questions are needed to be correct to pass (around 65%). The SCJP 5 exam tests a candidate on knowledge of declarations, access control, object orientation, assignments, operators, flow control, assertions, string handling, I/O, parsing, formatting, generics, collections, inner classes, threads and the JDK toos (Quelle: http://en.wikipedia.org/wiki/Sun_Certified_Professional).

Zur Vorbereitung auf den SCJP gibt es im Netz viele Fragen, die denen aus dem SCJP sehr ähnlich sind. Auch wer kein SCJP machen möchte, sollte sich mit dem Thema beschäftigen, da es doch das tiefe Verständnis der Sprache Java schärft (weniger den Bibliotheken oder dem Design von großen Anwendungen!)

Aufgabe: Trage 30 der spannendsten Fragen zusammen.