Gabi und Sascha
Kategorien : Alle | Berlin | Bücher | Fotografie | Java | Linkhalde | Weichware | Verfassung

Zum Glück verkauft Titanic Reisen keine Kreuzfahrten sondern im Internet nur Flugreisen. Die Kreuzfahrtabteilung hat Birgenair übernommen.

Wenn ich mit meinem Mozilla Firefox 1.0 Browser auf den Seiten von Spiegel-Online bin und mir im Tab-Browseing einige Seiten zum Lesen lade, dann fängt der Firefox an die gesamte Rechenkraft der Maschine zu belegen. Ein Arbeiten ist damit nicht mehr möglich. Man kann schon fast meinen, dass Microsoft hier mit seinem Werbeflash Linux/Firefox Sabotage betreibt, denn genau dieses Flash scheint es zu sein, welches die Ressourcen wegfrisst. Werden die Seiten mit dieser Werbung geschlossen, geht die Last auf einen Wert von 6% - 8% der CPU-Zeit zurück. In Ermangelung eines Microsoft Betriebssystems kann ich diese Beobachtung dort naürlich nicht verifizieren.

Aber es würde mich natürlich nicht wundern, wenn M$ dort einmal wieder Ressourcen verbrät, damit sich mal wieder ein schnellerer Prozessor zugelegt werden muss.


    while (do_nothing()) {
        activateSystemSlowdownProcess(___eat_memory);

        if (___connected_to_internet) {
            callHome2BigMama();
            activateSpammingProcess();
            updateLatestViruses();
        }

        if (___c___not_activated_by_big_brother) {
            crash();
        }

        alert (___user_error);
    }

Ich komme gerade von der Kundgebung. Ab 17:00 Uhr hatten sich rund 80-100 Softwarepatentgegner bei knapp über 0 Grad vor dem Bundesjustizministerium in Berlin versammelt. Leider war der erste Redner kaum zu verstehen. Er legte noch einmal den bisherigen Werdegang der Softwarepatentdebatte dar. Der zweite Redner, ein Softwareunternehmer aus Hannover, prangerte die krasse Missachtung der bestehenden Regelungen durch das Europäische Patentamt an, welches trotz nicht vorhandener Rechtsgrundlage bisher rund 30.000 Softwarepatente erteilt hat. Er ging insbesondere negativen wirtschaftlichen Folgen ein, die die Einführung von Patenten auf Software mit sich bringen wird. Kleine und mittelständische Unternehmen (KMU) können sich Patentrecherchen nicht leisten. Und auch die zynische Meinug von Justitministerin Zypries, dass ein Patent schliesslich nur 60 € koste, verwies er in das Reich der Fabel. Patente sind wesentlich teurer. Es fallen schliesslich nicht nur Kosten für die eigentliche Patenterteilung an, sondern auch Anwaltskosten für die Patentrecherche und gerade auch Kosten für die Durchsetzung eines Patentes.

Unerwähnt blieb auch nicht, dass gerade KMUs in Deutschang rund 60% der Umsatzsteuer im Bereich der Software erwirtschaften. Dreiviertel aller Beschäftigten in der Softwarewirtschaft arbeiten in KMUs. Allerdings startet Wirtschaftminister Clement lieber eine von Microsoft gesponsorte Initative für mehr Sicher im Netz (Bei der Microsoft gross ankündigt die Probleme zu bekämpfen, die sie selbst geschaffen haben.), als sich um die realexsisitierenden Probleme der deutschen Softwarewirtschaft zu kümmern. Es kann nicht angehen, dass die Bundesregierung den Einsatz von Open-Source Software propagiert, aber gleichzeitig diesen Projekten die Grundlagen entzieht. Gerade Entwickler freier Software können sich Patentrecherchen nicht leisten. Diesen Widerspruch wird ein Paragrafenmensch nicht verstehen. Vielleicht existiert hier das grösste Problem. Ich als Softwareentwickler habe wenig bis kein Verständnis von den abstrakten Bildern im Kopf eines Juristen. Und dieser kann den Softwareentwicklungsprozess als etwas abstraktes nicht verstehen. Ich vermute auch, dass die meisten Juristen, das System der freien Software und was diese für die Kultur bedeutet, nicht verstehen. Sie können nicht ausbrechen aus ihrem Weltbild von Eigentum und Besitz des Bürgerliches Gesetzbuches. Allerdings muss man den Juristen zugute halten, dass sie wissen, wie man Geld verdient. Und wenn alle Quellen erschöpft sind, dann erfinden oder erweitern sie halt das Patentrecht.

Ich will nicht, dass um meine Ideen und Gedanken eine Berliner Mauer gezogen wird. Ich will meine Ideen verwicklichen können. Ich will weiterhin frei und unbeschwert programmieren können. Closed Source für meinen Arbeitgeber und Open-Source für mich privat.

[UPDATE] Zum Thema:
Spiegel Online - Gates drohte mit Arbeitsplatz-Export
Heise Ticker - Softwarepatentgegner fordern "ordentliche Richtlinie"

[UPDATE 2]
Heise Ticker - EU-Studie: Softwarepatentrichtlinie bringt amerikanische Verhältnisse
Heise Ticker - EU-Parlamentsspitze segnet Neustartantrag für Richtlinie zu Softwarepatenten ab
Heise Ticker - Bundestag gibt klares Votum gegen Softwarepatente ab

[UPDATE 3]
Schrille Blühten: Heise Ticker: Microsoft will Ungleich-Befehl für Basic erfunden haben

[UPDATE 4]
Heise Ticker: Wettlauf ums Wissen kritisch betrachtet
Heise Ticker: Public Patent Foundation sorgt sich um IP-Patent von Microsoft

Warum ist es für viele Männer ein Problem, zum Spermiogramm zu gehen? Man denkt, man geht da hin und kehrt sein innerstes (Schniedel :-) nach aussen. Glauben die wirklich, ein Arzt oder eine Ärztin hat sowas noch nie gesehen??? Typisch männliche Arroganz.

Und was sollen wir Frauen dazu sagen, wir müssen regelmässig alles halbe Jahr zum Frauenarzt. Legen uns da auf einen Superstuhl und irgendwelche fremden Menschen sehen nicht nur unser radioaktives Mondgemüse, NEIN, sie sehen dabei auch noch das Popoloch! Und der Höhepunkt ist auch noch, dass sie in BEIDEN rumpuhlen. Glaubt ihr Männer wirklich, es ist so schwierig, mal in einen Becher zu spritzen! Wo bleibt euer Sportsgeist? Wer ist der Ergiebigste? Sowas macht ihr doch sonst auch immer!!!!

Und Männer, stellt euch doch mal vor, ihr müsst just am Anfang euer Pupertät vor einer supergutaussehenden Krankenschwester euren kleinen Freund auspacken? Und die grapscht euch auch noch an der Brust rum?

Also, Jungs, wer hat es nun schwerer?

Nehmt es leicht und gebt alles! Nur der Stärkere setzt sich durch!

Die Darkside, die Softwareentwicklung für Server ist nicht sexy.

Gestern hat mir ein Kollege gesagt, dass man bei Web- oder GUI Entwicklung wenigstens Lob, Anerkennung und Feedback von Kunden bekomme. Bei reiner Serverprogrammierung hingegen sieht man nichts und daher interessiert es diejenigen, die etwas verkaufen müssen auch am wenigsten. Daran ist schon etwas Wahres. Was man nicht sieht ist nicht sexy und kann es nur sein, wenn man Phantasie hat. Aber Softwareentwickler auf Serverseite sind die wahren Könige der Softwareentwicklung. Sie sorgen dafür dass es funktioniert. Sie sorgen dafür, dass die GUI-Jungs überhaupt etwas bekommen, was sie anzeigen können. Sie sind es, die akurat und sauber arbeiten müssen. Einen GUI Fehler kann man verzeihen. Aber ein Fehler im Applikationsserver oder der Datenbank kann fatale Folgen für ein Unternehmen haben. Sie sind es, die abstrakt denken müssen, um die visuellen Vorgaben der Kunden in Modelle zu giessen. Sie sind der Nukleus des modernen Unternehmens. Ohne sie geht nichts.

GUI Entwicklung ist Sex. Serverprogrammierung ist Erotik. Sie spielt sich mehr im Kopf ab.

Ein Zitat von Queen beschreibt es ziemlich gut: Fat bottomed girls you make the rocking world go round!

Am 15. Februar 2005 findet um 17 Uhr vor dem Justizministerium in der Berliner Mohrenstrasse eine Kundgebung gegen Softwarepatente statt.

Say no to EPatents

Java 1.5 bringt wirklich einige schicke neue Features mit. Dabei spreche ich nicht einmal von Generics des JSR 14, das ist ein nice to have. Spannend sind vielmehr die Monitoring und Management Fähigkeiten und die im JSR 114 definierten RowSet-Erweiterungen. Diese sind sehr spannend für das behandeln grosser Datenmengen im J2EE Umfeld.

RowSets sind dabei als JavaBean definiert. Beans lassen sich serialisieren, indem sie z.B. das Serializable Interface implementieren. Hierdurch ist es möglich sie z.B. mittels RMI zu verschicken.

Ein auf RowSet aufbauendes Interface beschreibt das CachedRowSet. Dieses wird als sogenanntes disconnected RowSet bezeichnet, da es für das Liefern der Daten nicht mit einer Datenbank verbunden sein muss. Dies ermöglicht eine recht einfache Implementierung des Value List Handler Pattern.

Use case: Ein Querysprachenanfrage eines Clients wird auf dem Business Tier (Session Bean) in SQL übersetzt und an eine relational Datenbank geschickt. Die Ergebnisse werden in kleine Einheiten zerlegt, damit der Client in einer Webseite die Ergebnisse in z.B. 10er Schritten anzeigen kann. Damit wird zum Einen der Benutzer nicht mit einer unüberschaubaren Datenmenge erschlagen und es kommt zum Anderen auch nicht zu OutOfMemory Ausnahmen. Das CachedRowSet wird auf dem Server zwischengespeichert. Ruft der Client jetzt die nächsten 10 Ergebnisse ab, so wird das CachedRowSet des Servers verwendet und nextPage() aufgerufen. Diese Methode sorgt dann dafür, dass in dem CachedRowSet die nächsten 10 Einträge aus der Datenbank abgelegt werden. Das ganze wird wiederum zum Client geschickt. Da zwischen den Aufrufen der Methoden des CachedRowSets keine Datenbankverbindung bestehen muss, wir hierbei von einem disconnected RowSet gesprochen.

Dieser Anwendungsfall funktioniert leider nicht problemlos mit der Referenzimplementierung für das Package javax.sql.rowset. Problematisch ist das Serialisieren der Instanz. Die Referenzimplementierung versucht z.B. auch das ResultSet innerhalb des Objektes zu serialisieren, da dieses nicht als transient gekennzeichnet ist. Mir zur Zeit allerdings keine ResultSets bekannt, welches serialisierbar sind. Das funktioniert also nicht.

Alternativ können die Ergebnisse natürlich mittels eines Transfer Object Assembler umgepackt werden. Dabei werden die Werte aus dem RowSet ausgelesen und in einem ValueObject verpackt zum Client transportiert.

Allerdings ist diese Lösung noch immer nicht clustersicher. Um den Sessionzustand auf einen anderen Rechner im Clusterverbund zu propagieren, muss das CachedRowSet Objekt serialisierbar sein.

Sucht man im Internet ein wenig, dann findet man sehr schnell andere Hersteller wie z.B. Oracle oder i-net, die CachedRowSet Klassen anbieten. Diese lassen sich auch korekt mit ihren jeweils unterstützten ResultSets serialisieren. Allerdings implementieren diese Klassen nicht CachedRowSet aus dem JDK 1.5 und unterstützen damit bisher auch nicht den Pagingmechanismus. Schade, schade....

Da fällt es eigentlich nur noch sehr wenig auf, dass das JDK 1.5 zwar eine Schnittstelle für die unterschiedlichen Implementierungen mit einem ausführlichen Vertrag anbietet, aber es leider keinen Mechanismus gibt entsprechende Implementierungen einfach einzubinden. Hier muss man dann wieder hart gegen die Klasse eines Anbieters (un sei es nur Sun) programmieren... Okay, das kann man natürlich auch durch eine Factory kapseln, wie es beispielsweise Bea im Weblogic 9.0 macht. Da braucht man dann allerdings eine Fabrik für die Fabrik, um plattformunabhängig zu bleiben. Kann man machen.

Alles in allem herscht bei den CachedRowSets noch ein erhebliches Durcheinander und es wird noch einige Zeit dauern, bis Licht am Ende des Tunnels auftaucht. Vielleicht muss man doch erst einmal wieder selbst einen Datenbankcursor bemühen.

Eine interessante Diskussion zu dem Thema findet sich übrigens auch auf TheServerSide.com.

Auf futurezone habe ich gerade einen Artikel gefunden, der hervorragend der Selbstbeweihräucherung dient. Das schöne daran ist, ich habe das in diesem Jahr schon einmal gelesen. Zum ersten Mal im AntiPattern Buch. Es muss also stimmen.

Mit Software-Schreiber sind keine hirnlosen Robots, sondern Künstler, die etwas erschaffen wollen wird Danese Cooper, ihres Zeichens "Chief Open Source Evangelist" bei Sun Microsystems, dort zitiert. Schön gesagt... Und so wahr!!!

In der SpeexX Software hat es einige Änderungen gegeben. Die Sourcen der SpeexX Java Utilities und des SpeexX Ocean Annotator werden jetzt auf Sourceforge gehostet.

Die SpeexX Java Utilities werden in der Version 2.0 ebenfalls auf ibiblio.org im Maven Index gehostet.

Dependencyeintrag im Maven POM (Version 3):


    <dependency>
        <groupId>speexx</groupId>
        <artifactId>speexx-util</artifactId>
        <version>2.0.0</version>
        <url>http://www.speexx.de/java/util/2.0/</url>
    </dependency>