Dies ist die Heimat der Java User Group Nürnberg.


Dienstag, 30. September 2008

Hex and the City: Java 7 Gerüchteküche

Hex and the City: Java 7 Gerüchteküche


Welche Neuerungen erwarten uns in Java 7?

Folgendes ist natürlich bloß als mögliche Neuerungen zu verstehen. Was tatsächlich in Java veröffentlicht wird (und wie es dann im Detail aussieht), werden wir wohl erst erfahren, wenn Java 7 erscheint1. Aber die folgenden Neuerungen sind im Gespräch.

Neuerungen allgemein
Während eine Applikation möglichst vollständig sein sollte, um dem Nutzer viele Featues zu bieten, sollte eine Sprache dagegen simpel aber ausreichend sein. Wir sollen kreativ mit der Sprache umgehen, aber nicht in ihr2. Und wir dürfen nicht vergessen, die Vergangenheit muss weiter leben3. Wir müssen also möglichst abwärtskompatibel bleiben. Jeder erinnert sich vielleicht, wie schlimm es war
enum als neues Schlüsselwort einzuführen - zumindest die, welche einst Variablen mit diesem Namen benutzt hatten. Daher wird mit der Weiterentwicklung und Auswahl neuer Features in der Sprache Java sehr vorsichtig umgegangen.

Superpackages
Diese neuen Module können "normale" Pakete und Klassen enthalten, und definieren, welche davon veröffentlicht werden (JSR 294). So kann ein Modul z.B. aus drei Paketen bestehen, die ihrerseits "public"-Klassen enthalten. Obwohl die Klassen durch eine "public"-Sichtbarkeit dann untereinander in den Paketen sichtbar sind, sind sie als Teil des Moduls vor der Öffentlichkeit versteckt, wenn das Modul selbst sie nicht zusätzlich als "public" definiert.

Ein Java Modul kann man dann als eine Art Jar (vielleicht ".JAM") mit erweiterten Metadaten, z.B. bessere Versionierung, verstehen (JSR 277). Die Versionierung schliesst zum Beispiel ein, dass man definiert, ein Modul A hängt von einem Modul B in der genauen Version 1.2.0 ab, während Modul B von Modul C in Version 2.0.3 oder höher abhängt. Durch die Module soll es dann auch möglich sein, eine Bibliothek in mehreren Versionen gleichzeitig in einem Prozeß zu haben, je nach Abhängigkeiten der Module. Ein Modulk welches wir benutzen könnte somit Log4J in einer alten Version nutzen, während unser eigener Code bereits die neues Version nutzt. Teilweise ist dies ja gerade dann wichtig, wenn Versionen nicht kompatibel sind. Mich erinnert das ganze sehr an die schöne Umsetzung der Assemblies in .NET, aber warum sollten Technologien auch nicht voneinander abgucken4.

Dank Module haben wir dann auch Laden on Demand und einen kleinen Memory Footprint. Die Java Laufzeit-Bibliotheken selbst werden dann vermutlich in Module getrennt, und bei Bedarf geladen. Auch Webstart-Anwendung können dann beschleunigt geladen werden, da wir besser regulieren können, was wirklich übertragen werden muss.

Ein Beispiel wie so ein Superpackages aussehen könnte:

src/com/foo/super-package.java:

superpackage com.foo {
member package com.foo.api,
com.foo.model, com.foo.util;
export com.foo.api; // public
}

Swing
Ein neues Swing-Applikations-Framework ist geplant, wie man es aus diversen anderen Rich-Client-Plattformen kennt (JSR 296). Dieser Container für Desktop-Anwendungen beinhaltet einen mächtigen ApplicationContext, der dann Tasks, Eventverarbeitung uvm. unterstützt. Da ich eher selten in der Client-Entwicklung tätig bin, werde ich dies nicht weiter ausführen5.

Annotationen
Die Annotationen aus Java 5 werden uns öfter begegnen. Demnächst sollen sie beinahe überall benutzt werden können, z.B. bei der Definition von Variablen in Methoden, mitten in Ausdrücken, bei Typ-Deklarationen... (JSR 308).


Auch wird Java um deutlich mehr Standard-Annotationen erweitert: @NonNull String, @Existing File, @UnmodifiableList, @NonEmpty Map (JSR 305). Diese sollen weit mehr Prüfungen durch den Compiler und automatisch zur Laufzeit ermöglichen. Demnächst sagen wir also nur noch


@NonNull String ichWerdeNieNull = "helloWorld"


und müssen uns über NullPointerExceptions nie wieder Gedanken machen6. Wir werden sehen, ob das holde Ziel wirklich erreicht wird. Ob die Annotationen den Code (gerade für "Nicht-Profis") besser lesbarer macht, stelle ich auch noch in Frage.

Generics
Das Problem, welches die Einführung von Generics in Java 5 und die gewünschte Abwärtskompabilität brachte, war das zur Laufzeit "ArrayList<String>" der gleiche Typ wie "ArrayList<Integer>" war. Per Reflection konnte man keinen Unterschied feststellen. Ebenso gab es bei generischen Konstruktoraufrufen oder erzeugen eines generischen Arrays Probleme. Dies soll mit einer besseren Laufzeitunterstützung von generischen Typen gelöst werden.

NIO2
Native IO 2 kommt (JSR 203) und bietet u.a. asynchrone APIs für den Zugriff auf Dateien und Sockets. Eine neue Filesystem API schenkt uns erweiterte Funktionalität im Bereich der Filesystem-spezifischen Daten (z.B. POSIX-Dateirechte). Desweiteren beinhaltet es Multicast-Unterstützung und Buffergrößen > int werden möglich sein.

JavaBeans
Innerhalb von JavaBeans gibt es einen neuen Bindungsmechanismus, der automatische Synchronisation zwischen JavaBeans-Properties ermöglicht. Die Bindungen sollen per Java-Code oder per JSP Expression Language definiert werden (JSR 295). Property-Typen die nicht direkt kompatibel sind, können dabei konvertiert werden. Zusätzlich wird ein Beans-Validierungs-Framework integriert, so dass Constraints auf Beans per Annotationen definiert werden können, wie man die bei Hibernate Validatoren kennt (JSR 303). Z.B. @Length(max=20) um festzulegen, dass ein Property maximal 20 Zeichen aufnehmen kann.


Properties
Um endlich von der Namenskonvention über get- und set-Methoden wegzukommen, mit der man Properties ja in Java momentan definiert7, sollen Properties in Java demnächst syntaktisch unterstützt werden. Dies wird letztlich wohl eine neue Schreibweise für solche Properties bedeuten, ermöglicht dann aber auch leichtere Analyse (z.B. für Designertools), was wirklich Properties sind, und leichte Kontrollierbarkeit, dass beim "get" auch wirklich nur gelesen wird.

Closures
Funktionen, die rumgereicht werden können. So könnte man Closures lapidar bezeichnen. Closures sind eine Art von Codeblöcke, die man ähnlich Funktionen definieren kann, und die man dann wie einen Parameter verwenden kann. Ein Closures besteht dabei aus einer Liste von möglichen formalen Parametern (oder keine, wenn keine benötigt werden) und eine Folge von Ausdrücken. Das ganze in geschweiften Klammern und getrennt durch "=>". Also sieht ein Closure folgendermaßen aus:

{ formale Parameter => Ausdrücke }

Ein Closure, welches einer Funktion ohne Parameter und "void" als Rückgabetyp entspricht, wäre:

{ => System.out.println("Hello World"); }

Soll das Closure einen String als Parameter bekommen, müssen wir es entsprechend anpassen:

{ String s => System.out.println(s); }

Jetzt können wir eine Variable definieren, der genau ein solches Closure zugewiesen werden kann:

{ String => void } print =
{ String s => System.out.println(s); };

Diese Variable können wir jetzt entsprechen an Methoden, etc. weiterreichen und letztlich die darin "gekapselte" Funktion aufrufen:

print.invoke("Hello World");

Die Schreibweise war an dieser Stelle beispielhaft. Wie das genau aussehen wird, falls Closures eingeführt werden, ist noch ungewiss, aber es gibt bereits dergleich gestalte Umsetzungen.

Zusatz zu den Closures: Nach einem Gespräch mit James Gosling (der "Vater" von Java) auf dem Herbstcampus, scheinen Closures wohl doch nicht in Java 7 zu erscheinen. Josh Bloch hat wohl sein Veto dagegen erhoben, nachdem er trotz anfänglicher Begeisterung Closures plötzlich nicht mehr mochte. Diese Erkenntnis hatte Bloch wohl bei einem Frühstück, bevor er auf einer Konferenz über Closures (positiv) reden wollte. Kurzerhand hat er seinen Vortrag dann umgeworfen und war gegen die Einführung von Closures in Java 78.

Skriptsprachen und Co.
Zusätzlich wird es vermutlich mehr Skriptsprachen geben, die auf der Java VM laufen sollen9. Um gerade die Sprachen ohne starke Typprüfung (also z.B. JavaScript, Ruby, Python) besser zu unterstützen, muss eine Möglichkeit geschaffen werden, das Ziel eines Methodenaufrufes dynamisch zu bestimmen. Dazu muss der Java-Bytecode um ein "invokedynamic" erweitert werden (JSR 292).

Uhrzeiten
Na endlich. Es soll Aufräumarbeiten bei Date/Time geben. Man kann es kaum glauben, das ist ja, als wenn der Osterhase um den Weihnachtsbaum tanzt. Endlich nicht mehr Monate von 0 – 11 trotz Tage von 1 - 31. Und nicht mehr tausende von deprecated-Methoden, die dennoch genutzt werden, weil es eigentlich nichts besseres gibt. Und dann nach dieser halbgare
Calendar, welch ein Graus. Jetzt besteht also Hoffnung für alle, die meine Meinung da teilen (JSR 310). Dazu vgl. man die JodaTime-Bibliothek.

Einheiten
Die Physiker unter uns werden sich freuen. Es gibt Chancen darauf, dass in die Libraries neue Pakete aufgenommen werden, die (physikalische) Einheiten und Quantitäten und das Umrechnen/Konvertieren dieser von Haus aus ermöglichen (JSR 275). Ich finde ja, dass ganze ist zu speziell um in Java direkt integriert zu werden, aber solange es Module gibt und die VM diese nur bei Bedarf nachlädt, kann ich damit leben. Das Ganze könnte dann wie folgt aussehen:

KILO(METER).getConverterTo(MILE).convert(10);

JMX 2.0
Die neue Version soll kommen. Und neue Annotation mit sich bringen, mit der man viel Schreibarbeit sparen kann (JSR 255). Desweiteren gibt es einen neuen Remote Connector, der die Anbindung als Webservices möglich macht (JSR 262).

BigDecimal
Endlich arithmetische Operatoren ("+", "-", ...) für BigDecimal-Typen. Juchuuu. Das brauchte die Welt ja schon lange.

String & Switch
String-Literale für Case kommen als Erweiterung der Syntax. Gar nicht mal so schlecht.

XML
Als besonderer "Freund" von XML10 (), musste ich Arg die Stirn runzeln, als ich von folgender Neuerung gehört habe. Allerdings bin ich auf der anderen Seite ein Liebhaber von allem, was wir uns der Compiler prüfen kann. XML soll syntaktisch in Java integriert werden können. Das sieht dann ungefähr wie folgt aus:

void addReviewer (XML feature,
String reviewer, Timestamp time) {
DataCoder dc = DataCoder.XSD;
feature.add(<reviewed>
<who>{ reviewer }</who>;
<when>{ dc.encode(time) }</when>;
</reviewed>);
}

Nachdem ich LINQ in C# liebe, gerade weil man keine Strings mehr schreibt, die einem zur Laufzeit irgendwann um die Ohren schlagen, sondern vom Compiler geprüft werden, kann ich den Ansatz hier irgendwie wohl nicht verteufeln. Allerdings ist LINQ eine Query Language, und das hier ist XML!!! Gebt uns lieber eine Query Language (quasi wie SQL nur nicht bloß auf Datenbanken beschränkt), die Syntaxgeprüft werden kann, statt XML. Aber das ist meine Meinung.

Enumerationen
Vergleichsoperatoren bei Enumerationen sollen nutzbar werden.


Insgesamt freuen wir alle uns bestimmt schon auf das neue (siebte) Spielzeug ;-)


Links:

http://tech.puredanger.com/java7

http://gafter.com/~neal/

http://de.wikipedia.org/wiki/LINQ


1Aber wie ja bekannt sein dürfte, was geschrieben steht ist wahr. Also definieren wir doch einfach einmal die Wahrheit.

2Wobei ich das selbst manchmal ja auch tue: Entschuldigung. Ich verweise da insbesondere auf die Kolumne Deutsch für Informatiker in der letzten Ausgabe von Norbert Petsch.

3Was man so unter leben versteht. Aber immerhin laufen auch noch Computerprogramme, die vor Jahrzehnten entwickelt wurden. Und die will niemand (naja, kaum jemand) umbauen, bloß weil eine neue Version der Sprache erscheint.

4Gerade wo momentan die verantwortlichen Personen ja auch so schön herum wandern, Neil Gafter geht ja jetzt auch zu Microsoft von Google und noch früher von Sun.

5Und davon abgesehen, wer will schon Swing-Applikationen bauen?^^

6Ähnlich wie jeder Java-Umsteiger aus der C++-Welt lernte: Du musst Dir um Pointer keine Gedanken machen. Und dann kam die erste NullPointerException.

7Was ich ziemlich grausig finde, aber die Gründe sprengen jetzt hier den Rahmen und meine Zeit^^

8Ich recherchiere noch, was er gefrühstückt hat.

9Wems Spaß macht ;-)

10Wo es Sinn macht, sehe ich es ja ein, leider wird es so oft ohne entsprechenden Sinn benutzt.

Donnerstag, 25. September 2008

SourceTalk

In Göttingen bei den Source-Talk-Tagen darf ich heute 2 Vorträge zu Java zu halten. Diese Konferenz findet am Mathematischen Institut der Universität Göttingen statt, und ich freue mich dabei sein zu dürfen.



Dienstag, 23. September 2008

Nachschlag: JBoss die Fünfte

Kurz nach der Herbstcampus-Session "JBoss die Fünfte" hat JBoss das zweite Candidate-Release ihres neuen Applicationservers veröffentlicht (Nein, das war nicht abgesprochen ,)). Unter http://www.jboss.org/jbossas/downloads/ ist seit dem 17. September die Version 5.0.0.CR2 verfügbar. Grund genug die auf dem Herbstcampus angeprangerten Bugs direkt mit der neuen Version zu testen.

Die gute Nachricht lautet: Dependency-Injection in Managed-Beans funktioniert. Und zwar genauso, wie man es sich wünscht. Einfach mit @EJB annotieren und glücklich sein (eine Angabe des JNDI-Namens ist nicht notwendig). Einfach schön :).

Die schlechte Nachricht ist: nur weil etwas mit JSF funktioniert bedeutet dies wohl noch lange nicht, dass es im Rahmen der guten alten Webentwicklung (sprich in einem einfachen Servlet) auch funktionieren muss. Hier bleibt es bei der Notwendigkeit des in der Session vorgestellten Workarounds über die Angabe des mappedName (@EJB(mappedName="xyz")). Schade eigentlich :(.

Alles in allem sind wir erkennbar auf dem Weg zu einer 5.0.0.GA (ein weiteres Candidate-Release ist bei JBoss für die 5.0.0 nicht mehr in Planung), die wir mit Spannung erwarten.

Source Nights Tournament: Ruby on Rails

Hier der Screencast der Ruby on Rails Lösung des Newsletter-Anwendungsfalles. Siehe hier.







Freitag, 19. September 2008

Herbstcampus 2008 Shortcuts

Die Folien zum Herbstcampus gibt es hier.

Die Lösungen zum Source-Knights-Tournament sind hier.

Alle Einträge zum Herbstcampus sind hier.

Photos sind hier.

Die Videos sind hier.

Die Konferenz-Website ist hier.

Herbstcampus: Source-Knights-Tournament Sourcen

Anbei die Folien zum Technologie-Turnier (die Sessions "Außer Konkurrenz I-V") auf der Herbstcampus-Konferenz 2008)

Innerhalb des Turniers wurde anhand des Newsletter-Anwendungsfalles live versucht, das Problem mit verschiedenen Technologien zu lösen. Dabei hatte jede Gruppe (jeweils ein Entwickler und ein Speaker, der erläuterte was der andere live vorführte) 60 Min. Zeit das Problem zu lösen (und vorab 10 Min. um die Aufgabenstellung zu erläutern). Somit wurde der Anwendungsfall als eine Art "Kleinprojekt" in einem Rundlauf live entwickelt.

Zuletzt gab es noch eine Diskussionsrunde mit den Beteiligten Gruppen. Dabei hat sich gezeigt, dass die Gruppen mit den Technologien 
  • .NET mit LINQ2SQL zur Persistence, ServiceComponents (COM+) und Webservices für Remote-Zugriff auf die  Business-Schicht, einer ASP.NET-Webclient Anwendung und einem Rich-GUI-Client unter Windows Form (im Beispiel zusätzlich auch mit Windows Presentation Layer), sowie Konsolenanwendung für die Batch-Steuerung
  • Ruby on Rails inklusive Ruby-Debug und mit Ruby TK für den Rich-GUI-Client
In-Time eine Lösung präsentieren können. Zwei Technologien haben das Problem ebenfalls gelöst, brauchten aber mehr Zeit.

  • Ercatons präsentierte eine Lösung nach 10 zusätzlichen Min. Allerdings gab es hier die Kritik, dass sie bereits ein Projektgerüst vorgefertigt hatten, was der Anforderung alles ohne Templates und von Scratch an zu entwickeln wiedersprach. An diese Anforderungen hatten sich die anderen gehalten. 
  • Spring unter Java präsentierte eine Lösung nach 25 zusätzlichen Min.

Eine Technologie wurde im Rahmen des Technologie-Turniers abgebrochen:

  • JEE Lösung mit Maven als Build-Environment wurde nach Überziehung abgebrochen, weil eine schnelle Lösung nicht mehr zu sehen war.
Generell gab es das Fazit, dass alle Technologien gleichwertige Probleme lösen können. Darüber herrschte größtenteils Einigkeit. Jede Technologie hat dabei natürlich Vor- und Nachteile. Die Stärken der einzelnen Technologien zu sehen, kann allen helfen sich zu verbessern.

Hier die Folien und Lösungen:

Screencast folgen in Kürze. Ich nehme auch gern Lösungen und Screencast zu anderen Technologien (die nicht im Herbstcampus 2008 gezeigt wurden) auf. Sie dürfen gern Vorschläge einreichen.

Wir freuen uns auf Kommentare zu den Technologien. Danke^^

Donnerstag, 18. September 2008

Herbstcampus: Middle-Tier^^

Der Tag in der Mitte des Herbstcamps ist vorbei, die Teilnehmer und Speaker haben den Mittwoch überstanden ;-) Ich hoffe doch positiv - aber ich bin da guter Dinge. Mit einigen Aussteigern aus dem Kickerturnier waren wir dann noch in der Sneak im Kino... Dabei muss man wissen, dass man in der Sneak bis zum Start nicht weiß, welcher Film denn gezeigt wird.

Naja, es sei denn man geht hier wirklich oft ins Kino und bekommt Informationen unter der Hand *g*

Die Leute, die sich von mir mitschleppen ließen, wurden mit einer ergreifenden Liebesgeschichte beglückt: ein ganz normales 90er-Jahre Handy verliebt sich in ein iPhone. Zumindest Designtechnisch war dies so, denn gezeigt wurde:


Der süße kleine Roboter, der auf der Erde für Ordnung sorgt. Denn: "der Letzte räumt den Müll weg". Sicherlich nur ein Highlight für die Besucher des Herbstcampus. Ein Photo des Kinobesuches findet man unter 

Ich wünsche allen einen freudigen Start in den finalen Herbstcampus 2008 Tag.

Dienstag, 16. September 2008

Montag, 15. September 2008

Herbstcampus

Willkommen auf dem Herbstcampus!

Heute beginnt der Herbstcampus 2008 in Nürnberg. Gestartet wird die Java- und .Net-Konferenz mit den Tutorien von Max Katz (RichFaces), Sascha Groß (Maven), Isabella Kneissl und Pourya Harirbafan (Java ServerFaces).

Die ersten Bilder von unserer "Nachtwanderung" - der Stadtführung durch die abendliche Nürnberger Altstadt - sind auch schon ersichtlich (siehe links^^).

Wir freuen uns auf zahlreiche Kommentare der Herbstcampus-Besucher!
(Dazu bitte diesen Post kommentieren - auch anonym möglich)

Freitag, 12. September 2008

Java User Group Erlangen-Nürnberg bei Consors

So, am Donnerstag war wieder JUG-Treffen. Diesmal waren wir bei Consors in Nürnberg, die uns netterweise ein Treffen in ihren Räumen erlaubt haben. Die Stimmung war sehr angenehm (hoffe ich zumindest) und der Raum vollständig gefüllt. Etwas über 40 Personen waren wohl anwesend.

Zusammen mit meinem Kollegen habe ich Java Puzzles im Vortag "Java Wars: Episode IV - Don't lose hope" vorgestellt, und gemeinsam haben die Anwesenden versucht rauszufinden, was die Code-Beispiele wohl tun. Dabei war die Lösung nicht immer das, was man glaubte.

Hoffentlich hat es allen so gefallen, wie uns als Speaker^^

Jetzt freuen wir uns schon auf den Herbstcampus nächste Woche, und ich auch auf den Java Source Talk Day.

Mittwoch, 10. September 2008

Hex and the City: Google Chrome Browser

Der neue Google Chrome Browser ist als Beta verfügbar. Ich habe mir mal die Mühe gemacht ihn zu testen und nutze ihn seitdem sogar sehr gern. Meine Kritik und mein Fazit ist in der September-Ausgabe des kostenlosen Magazin KaffeeKlatsch zu lesen. Wer es noch nicht abonniert hat, kann meine Kolumne auch hier lesen (wenn auch nicht so schön im Layout^^):

Hex and the City: Der Google Chrome Browser


Warum sollen wir eigentlich reisen, wenn wir die Welt doch googlen können?


Ein neuer Browser erobert die Welt. Ein Comic [1] hat ihn wie eine Prophezeiung verkündet.1 Da wird in freundlichen Bildern erklärt, das die Welt sich verändert hat. Quasi eine ganz eigene Internet-Welt im Aufbruch. Wir schauen uns keine Web-Seiten mehr an, wir bedienen Web-Applikationen. Na ja, ich für meinen Part würde mir teilweise gern mal wieder „Web-Seiten“ ansehen, aber heutzutage laufen ja beinahe überall Filmchen, es wird Musik gespielt, und das mir bereits vor Jahren verhasste Wort „Multimedia“ breitet sich aus. Wahrscheinlich ist es das elektronische Synonym zur Pest oder dem Schwarzen Tod des 14. Jahrhunderts.2 Vor allem, wenn man an die Bandbreitenverschwendung und Wartezeiten denkt.


Aber Recht haben sie in diesem Comic. Denn das Internet ist nicht mehr gefüllt mit statischen Inhalten. Die Web-Auftritte der meisten Domains haben ein multimediales Eigenleben und machen sich breit auf unseren Computern. Sehr zur Freude jedes Menschen, der Ergonomiestudien betreibt. Denn solange es diese Entwicklung gibt, wird sein Job gesichert sein. Je bunter, schriller ein Web-Auftritt wird, desto mehr entfernt er sich meist vom Standard. Gerade in der Bedienung. Und das ist nicht immer zum Wohl der Besucher der Web-Seiten. Manchmal ist weniger mehr.3


Aber so ist der Fortschritt eben. Und solange wir solche Seiten anklicken, werden sie wohl kaum weniger werden. Also: es ist ein Fakt, dass Web-Seiten heute oft Applikationen gleichen. Gerade bei diversen Internet-Shops ist das so. Und wer würde da motzen. Bevor ich einen Akku in einem lokalen, großen Elektronikmarkt für 49 € kaufe, bestelle ich ihn doch lieber im Internet. Da habe ich erst kürzlich für solch einen Akku nur 19 € bezahlt, dazu 3 € Versand. Und die ca. 35 Minuten Weg inklusive Parkplatzsuche gespart.


Webapplikationen

Was genau ist denn jetzt anders, wenn Web-Seiten eher Applikationen sind? Sie verbrauchen weit mehr Ressourcen. Dazu gehört Hauptspeicher und CPU-Last – ganz zu schweigen von Platz auf dem Bildschirm. Und statt einfach nur dem Browser zu sagen, wie Bilder, Texte und Videos angezeigt werden sollen, laufen mit JavaScript viele dynamische Effekte ab. Sichtbare und nicht sichtbare. Auf mathematischer Ebene betrachtet sind das nur irgendwelche Berechnungen. Teilweise werden Browser „ausgebremst,“ durch schlecht geschriebenen JavaScript-Code einer Web-Seite die angezeigt werden soll. Ausserdem brauchen wir weit mehr Stabilität, denn wenn wir in einer Applikation (Online-Office-Anwendung, eMail-Client) einen Text schreiben, wollen wir diesen ungern wegen eines Fehlers verlieren. Und falls doch ein Absturz auftritt, wollen wir den Text wiederherstellen können.


Prozesse

Ein Hauptaugenmerk in der Architektur des Google-Chrome-Browsers war daher, nicht nur alles linear zu verarbeiten. Eine Web-Seite die ewig rechnet, soll uns nicht mehr aufhalten. Statt einfach einen Multithreaded-Browser zu entwickeln, ging Google allerdings einen Schritt weiter. Jede Seite (und damit auch jedes Tab, was im Browser angezeigt wird) wird als eigener Prozess gestartet. Ein eigener Prozess bedeutet noch mehr Unabhängigkeit untereinander. Allerdings auch den Nachteil, dass gewisse Basisdatenstrukturen in jedem dieser Prozesse als Kopie vorliegen. Wir verlieren also ein wenig Speicher je Tab zu Gunsten der Stabilität. Aus Sicht des Software-Architekten lasse ich mir das aber gern gefallen, vor allem wenn man bedenkt, dass der gesamte Speicher, den eine Web-Seite belegt, so ohne Rückstände freigegeben wird, wenn ich sie schließe. Und aus Benutzersicht bedeutet es, ich kann alle anderen Tabs problemlos bedienen, selbst wenn ein Tab (eine Webseite) gerade beschäftigt ist. Jedes neu geöffnete Tab bedeutet einen geregelten Neustart dieser Seite. Und wenn ein Fehler auf genau einer Webseite vorliegt, droht kein Absturz des gesamten Browsers, sondern nur des einen Prozesses.


Selbst wenn man innerhalb eines Tabs die Domain wechselt, wird der alte Prozess geschlossen und ein neuer begonnen. Die Startzeit ist im Google-Browser überraschender Weise dennoch minimal. Ein nettes Feature des Browsers ist sein eingebauter Task-Manager für die Webseiten-Prozesse. Man sieht genau, welche Web-Seite wie viel Speicher und CPU „frisst.“ Da ist es schon erschreckend zu sehen, dass selbst simple Web-Seiten um die 20 MByte Hauptspeicher haben oder die Wikipedia-Hauptseite [2] ca. 10 MByte. Kein Wunder, dass manche minder dimensionierte Rechner bei vielen Tabs immer so langsam werden.4


Wiederherstellung nach Absturz

Google Chrome kann den letzten Zustand bei komplettem Absturz der Prozesse wiederherstellen. Dies geht sowohl, wenn ein Prozess für ein einzelnes Tab abstürzt, als auch, wenn der Hauptprozess verloren geht. Dies beinhaltet die geöffneten Tabs, die Liste der kürzlich geschlossenen Tabs, die Browserhistorie und noch viel wichtiger: unsere Eingaben!


Test-First

Was mich gerade bei dem Comic (dem Browser selbst sieht man den eigentlichen Entwicklungsprozess ja nicht direkt an) als Software-Architekt gefreut hat, war die Betonung des Tests bei der Entwicklung. Ja, auf diese Strips im Comic sollte ein jeder mal genau schauen der an Software-Entwicklung beteiligt ist. Bugs finden sich frühzeitig leichter als weit später, wenn man bereits ganz andere Module der Software entwickelt. Außerdem gilt wie immer: Fehler frühzeitig erkennen hilft, sie im Rest des Projektes zu unterlassen.5 Google Chrome ist also laut Comic ein Beispiel für Test-Driven-Design.


Engines

Zum Rendern und für JavaScript griff das Projektteam von Google Chrome auf existierende Software zurück. WebKit als Renderer und V8 als JavaScript Virtual Machine. Letzteres ist gerade so interessant, weil es statt interne Repräsentation von JavaScript-Code immer wieder zu interpretieren, Maschinen-Code generiert und im Gegensatz zu vielen anderen JavaScript-VMs inkrementelle Garbage-Collector-Algorithmen nutzt.


Drag & Drop

Was gibt es außer den Interna noch für Features? Insbesondere die Bedienbarkeit der Tabs hat mir gefallen. Da kann man Drag und Drop beinahe ohne Grenzen nutzen, somit die Tabs verschieben oder sie aus dem Fenster lösen und damit ein eigenständiges Fenster anlegen. Auch lassen sich Tabs in existierende Browser-Fenster verschieben. Ich konnte selbst ein Tab aus dem Mozilla Firefox in Google Chrome ziehen, da geht dann einfach ein neues Tab mit gleicher URL auf.


Das ganz neue Design beim Google-Browser setzt die Tabs übrigens ganz nach oben, Menüs und Adresseingabe sind Teil des Tabs und nicht übergeordnet. Gerade die Adresseingabe ist gut gelöst, es gibt ein Eingabefeld für alles (Adressen, Suchbegriffe, alles mit Autovervollständigung). Und als Suchmaschine ist selbstverständlich nicht nur Google nutzbar, sondern dies ist frei konfigurierbar.


Neue Tab-Seite

Öffnet man ein neues leeres Tab hat man direkt Zugriff auf die am häufigsten genutzten Adressen, seine Lesezeichen, die Historie und die kürzlich geschlossenen Tabs (hilfreich wenn man sich verklickt hat). Das ist sinnvoll, denn wenn man ein neues Tab öffnet, will man ja meist irgendwohin navigieren und ist somit ein netter Ersatz zu der sonst üblichen Startseite.


Inkognito-Modus

Und für Leute die gerade mal nichts über ihr Tun im Internet abspeichern wollen,6 gibt es extra die Möglichkeit ein Fenster „inkognito“ zu öffnen. Dies bedeutet, alles was jetzt in diesem Fenster passiert bleibt insoweit anonym, als das es auf dem Computer nicht vermerkt wird (Caches, Cookies etc. werden beim Schließen direkt gelöscht). Dies ist sicherlich ein wichtiges Feature für pubertierende Jugendliche, die den Computer der Eltern nutzen.7 Das hat natürlich keinen Einfluss auf die Seiten, welche wir besuchen, und was sich diese über uns merken.


Anwendungsverknüpfungen

Außerdem lassen sich Seiten als Anwendungen betrachten. Dafür kann man für die Seiten sogar Verknüpfungen (z. B. auf dem Desktop) anlegen lassen. In diesem Modus fehlt die URL-Leiste und sämtliche andere Menüs, die Web-Applikation wird dann in einem ansonsten leeren Fenster angezeigt. Gerade für eine Mail-Applikation oder Kalenderanwendung sieht das sehr schön aus, oft würde der „Zurück“-Button inklusive seiner Funktionalität ja ohnehin nur stören und Fehlerfälle provozieren.


Sicherheit

Auch Sicherheit wird versucht in dem neuen Browser effektiv zu lösen. Jede Web-Seite läuft in einer eigenen Sandbox, darin enthaltene Plugins (z. B. Video-Player) in einem eigenen Prozess. Bei der Ausführung von Plugins muss man immer noch sehr vorsichtig sein, da diese außerhalb der Sandbox laufen. Außerdem prüft Google Chrome bei der Eingabe von Adressen, ob diese auf „Schwarzen Listen“ stehen, weil sie bösartige Dinge zu tun versuchen und warnt den Benutzer dann, bevor die Seite geladen wird. Außerdem ist selbst die Anzeige der Adresszeile hilfreich bei der Sicherheit: Wird beispielsweise das führende „https://“ durchgestrichen und rot dargestellt, wenn das Zertifikat einer Seite für die SSL-Verschlüsselung abgelaufen ist.


Datenschutz [3]

Der Browser übermittelt zum prüfen ob eine Seite „bösartig“ ist, die URL an Google zum Abgleich mit den „Schwarzen Listen“. Außerdem werden die Eingaben in der Adresszeile an Google gesendet, um die Autovervollständigung von Domain-Namen anbieten zu können. Sind wir bereit Nutzungsstatistiken und Absturzberichte an Google zu senden, gehen auch diese Daten hinüber. Das alles kann man in den Optionen deaktivieren, hat dann natürlich auch die Funktionalitäten die darauf basieren nicht mehr. Viel problematischer dürfte sein, dass jede Kopie des Google Chrome Browsers, welche man installiert, eine eindeutige Anwendungs-ID bekommt. Damit sind für Google alle Daten und Anfragen eines Browsers auch eindeutig diesem Browser zuordbar. Es wird momentan für die Nutzungsstatistik und Absturzberichte und bei Updates des Browsers genutzt. Dies ist nicht deaktivierbar. Als Verfechter von Datenschutz muss ich das strikt ablehnen. Da der Browser Open Source ist, gibt es vielleicht bald gepatchte Version ohne letzteres fragwürdige „Feature“. Aber wer hat schon Bedenken beim Datenschutz, wir beichten ja auch in der Kirche.8


Mein Fazit

Meines Erachtens ist der Browser selbst jetzt in der Beta bereits „top“. Viele seiner Funktionen landen hoffentlich (gerade aufgrund seines OpenSource-Charakters) in anderen Browsern. Immerhin sind auch die erforderlichen Webdienste wie die „Schwarzen Listen“ frei zugänglich. Ich nutze Google Chrome ab sofort gern, bin mir aber auch bewusst über den Datenschutz, bzw. seine Abwesenheit. Auf meinen Firefox greife ich dann zurück, wenn ich ein Add-on zwingend benötige. Auf meinen Safari, wenn ich mit meinem Apple in der weiten Welt des Internets unterwegs bin. Und auf den Microsoft Internet Explorer, wenn ich in Outlook Web Access E-Mails lesen will. Das hat nämlich noch kein anderer Browser schön hinbekommen.


Meine größte Kritik ist, dass der Browser noch nicht auf meinem Apple-Notebook läuft – zumindest nicht nativ. Und diese lästige Anwendungs-ID.


Referenzen

[1] Google Google Chrome, http://www.google.de/googlebooks/chrome

[2] Wikipedia http://de.wikipedia.de

[3] Datenschutzbestimmungen Google Chrome, http://www.google.de/chrome/intl/de/privacy.html

1Und das Prinzip von Selbsterfüllenden Prophezeiungen dürfte ja jedermann bekannt sein. Spätestens seit Harry Potter, denn Voldemort versucht Harry als Baby zu töten, weil er durch eine Prophezeiung erfahren hat, dass ihn der Junge vernichten wird. Doch Harry überlebt und die Prophezeiung erfüllt sich selbst.

2Wobei nicht einwandfrei nachgewiesen ist, ob die Pandemie des 14. Jahrhunderts in Europa wirklich auf Pesterregern basierte – aber ebenso wenig wissen wir, ob Multimedia tatsächlich von den Usern gewünscht ist, zumindest in der Menge, in der wir damit überschwemmt werden

3Und das gilt auch in vielen anderen Bereichen

4Das sind dann die Bekannten, die ständig anrufen und sich beschweren (nicht zu Unrecht) ihr Rechner wäre zu langsam*

* Je nach Gemütslage gönne ich mir dann schonmal den Spass und führe einen Exkurs in die O-Notation und Grundlagen der Theoretischen Informatik**

** Die Anrufe werden dann auch spürbar weniger^^

5Hoffentlich – wobei ich durchaus auch Erfahrungsresistente Menschen kenne, die immer wieder dieselben Fehler machen. Ich z.B. verlasse jeden Tag aufs neue mein Bett. Oder noch plastischer: ich lasse den Schlüssel liegen, breche durchs Fenster ein, lasse wieder den Schlüssel liegen ...

6Vielleicht weil sie Geschenke für Personen suchen und bestellen, die den Computer auch benutzen*
* Man soll ja stets ans gute im Menschen glauben

7Für den Fall, dass auch sie Geschenke suchen. Wie gesagt, man soll ja stets ans gute im Menschen glauben

8An dieser Stelle Weise ich nochmal auf meinen Text über Datenschutz in der Februarausgabe des KaffeeKlatsch hin. Datenschutz und -Sicherheit geht alle an und ist meiner Meinung nach essentiell!

Sonntag, 7. September 2008

Hex and the City: Datenschutz und Datensicherheit

Meine Kolumne Hex and the City zum Thema Datenschutz und -Sicherheit war bereits im kostenlosen Magazin KaffeeKlatsch zu lesen. Wer es noch nicht abonniert hat, kann meine Kolumne auch hier lesen (wenn auch nicht so schön im Layout^^):

Hex And the City: Datenschutz und Datensicherheit

Gibt man in der weiten Welt der Datenverarbeitung eine Information ein, besteht immer die Gefahr, dass unbekannte Dritte ein weiteres Puzzlestück zusammenfügen können. Häufig gehen wir mit Daten nicht sensibel um. Bei eigenen Daten ist das schlimm genug, doch für die sind wir selbst verantwortlich. Aber bei Daten anderer ist dies meiner Meinung nach - und diese Ansicht teilt der Gesetzgeber1 - unverzeihlich. Selbst bei simplen Anwendungsfällen dürfen wir Sicherheit nicht unterschätzen. Stellen wir uns eine völlig unkritische Anwendung vor, beispielsweise ein harmloses2 Internetforum, mit Name und Passwort als Zugangsdaten. Außerdem ist dort die eMail-Adresse ausschließlich für Administratoren sichtbar hinterlegt. Völlig simpel. Vielleicht denkt sich der Entwickler dieses Forums: "Häufig vergessen User ihre Passwörter.3 Passwörter nach Sicherheitsfragen4 neu zu generieren oder zu mailen ist mir zu aufwendig. Wir hinterlegen alle Passwörter lesbar für unsere Administratoren, und die können sie den Nutzern bei Bedarf mitteilen." Er hat ein entscheidendes Detail nicht beachtet. Oft genug haben User dasselbe Passwort für ein Forum und den eMail-Zugang. Administratoren des Forums haben somit Zugang zu den eMail-Postfächern einiger User. Wenig Phantasie reicht aus, was für Missbrauch betrieben werden kann - Newsletter der Online-Bank, anderer Internetdienste, vielleicht wieder mit dem gleichen Passwort geschützt ... und wenn nicht, naja, solange der Mailaccount bekannt ist, kann ich jetzt bei Diensten Passwörter neu generieren und zuschicken lassen. Die eMails können wir schließlich lesen. Datenschutz und Datensicherheit ist wichtig, auch und gerade bei den weniger sensiblen Diensten.

Datenschutz

Als Datenschutz bezeichnen wir den Schutz personenbezogener Daten vor Missbrauch. Zu personenbezogenen Daten gehören alle Daten, die persönliche oder sachliche Verhältnisse eine Person wiedergeben. Kernpunkte des Datenschutzes sind Datensparsamkeit und Datenvermeidung (so wenig wie möglich sammeln), Erforderlichkeit (brauchen wir die Daten wirklich) und Zweckbindung (für was brauchen wir die Daten eigentlich). Häufig wird in diesem Zusammenhang in Deutschland auf das Recht auf informationelle Selbstbestimmung hingewiesen, doch was ist das für ein Recht und woher stammt es?

1983 sollte in Deutschland eine Volkszählung durchgeführt werden, zu der die Beantwortung von Fragebögen gehörte. Dazu sollte die Zählung durch Beauftragte, die an der Haustür klingelten, erfolgen. Die Volkszählung bestand auch aus einer Erhebung von Gebäude- und Wohnungsstatistiken und einer Berufszählung. Es ging um detaillierte Angaben zum Lebenslauf, Religion, alleinige Nutzung der Wohnung, Quelle des Lebensunterhaltes, Art/Größe/Eigentümer des Wohnraumes, soziale Förderungen für den Wohnraum, evtl. Miethöhe, Dauer des Leerstehens bei nicht benutzten Wohnungen. Die beruflichen Fragen umfassten u.a. Daten zum Telefonanschluss, Anzahl der Telefone, Art der ausgeübten Tätigkeit und des Unternehmens als solches, Zahl der beschäftigten Personen nach Geschlecht und Stellung im Betrieb, Summe der Gehälter. Die Fragen gaben Anlass zur Sorge, dass die Volkszählung zu einem Überwachungsstaat führte und der Gläserne Bürger wurde ein Begriff. Nach mehreren Verfassungsbeschwerden gab es eine einstweilige Verfügung, die die Volkszählung vorübergehend aussetzen ließ. Das Bundesverfassungsgericht bestätigte im selben Jahr, dass Vorschriften der Volkszählung die Grundrechte des Einzelnen verletzten. Aus diesem Urteil stammt das Recht auf Informationelle Selbstbestimmung, welches das Bundesverfassungsgericht in Artikel 2 Absatz 1, in dem Recht auf freie Entfaltung der Persönlichkeit aus dem Grundgesetz erkannte. Damit haben wir in Deutschland folglich eine Art Grundrecht auf Datenschutz, das direkt nicht im Grundgesetz erwähnt wird. Hier ein Auszug der Entscheidungsbegründung des Bundesverfassungsgerichtes:

Mit dem Recht auf informationelle Selbstbestimmung wären eine Gesellschaftsordnung und eine diese ermöglichende Rechtsordnung nicht vereinbar, in der Bürger nicht mehr wissen können, wer was wann und bei welcher Gelegenheit über sie weiß. Wer unsicher ist, ob abweichende Verhaltensweisen jederzeit notiert und als Information dauerhaft gespeichert, verwendet oder weitergegeben werden, wird versuchen, nicht durch solche Verhaltensweisen aufzufallen. […] Dies würde nicht nur die individuellen Entfaltungschancen des Einzelnen beeinträchtigen, sondern auch das Gemeinwohl, weil Selbstbestimmung eine elementare Funktionsbedingung eines auf Handlungsfähigkeit und Mitwirkungsfähigkeit seiner Bürger begründeten freiheitlichen demokratischen Gemeinwesens ist. Hieraus folgt: Freie Entfaltung der Persönlichkeit setzt unter den modernen Bedingungen der Datenverarbeitung den Schutz des Einzelnen gegen unbegrenzte Erhebung, Speicherung, Verwendung und Weitergabe seiner persönlichen Daten voraus. Dieser Schutz ist daher von dem Grundrecht des Art 2 Abs. 1 in Verbindung mit Art 1 Abs. 1 GG umfaßt. Das Grundrecht gewährleistet insoweit die Befugnis des Einzelnen, grundsätzlich selbst über die Preisgabe und Verwendung seiner persönlichen Daten zu bestimmen.

Diese Entscheidung hat alle Gesetze zum Thema Datenschutz, wie das Bundesstatistikgesetz und das Bundesdatenschutzgesetz sowie der Europäischen Datenschutzrichtlinie geprägt und wirkt sich auf alle Bereiche unserer Arbeit in der Informatik aus, sobald wir Verfahren entwickeln, die auf personenbezogenen Daten angewendet werden. An dieser Entscheidung ist die Rasterfahndung in Nordrhein-Westfalen 2006 gescheitert, da sie als verfassungswidrig erklärt wurde. Auch gibt es demnach keine unwichtigen Daten, jedes Datum als solches kann in einer per elektronischer Datenverarbeitung leicht mit anderen Daten verknüpft werden und damit bereits relevant sein. Daraus folgt, dass jedes Datum für sich betrachtet bereits schützenswert ist und immer hinterfragt werden muss, ob eine Erhebung tatsächlich (personenbezogen) notwendig ist.

Datensicherheit

Während Datenschutz regelt, wann und welche Daten gesammelt und verarbeitet werden, bezieht sich Datensicherheit auf die Daten, welche nach dem Datenschutz erhoben wurden. Technische Schutzmaßnahmen zur Vermeidung von Manipulierung und Datenverlust sowie Gewährleistung von Vertraulichkeit bezeichnen wir als Datensicherheit.

Techniken zur Sicherheit sind vielen in unserer Branche geläufig5: symmetrische und asymmetrische Kryptographieverfahren, Demilitarisierte Zonen mit Firewalls, VPN zu Schnittstellenpartnern für Zugriff auf zu schützende System, wechselnde Passwörter6 deren Komplexität geprüft und gefordert wird, Schlüsselanhänger mit wechselnder PIN, UUID-Verwendung bei Serialisierung von Klassen damit niemand die Implementierung auf Clientseite beliebig austauschen kann, uvm. Auch organisatorische Aspekte die zur Sicherheit beitragen sollte man nicht unterschätzen, z.B. darf ein Sachbearbeiter Teile eines Passwortes sehen? Man denke an das Szenario in der Einleitung.

Aber alle diese Techniken sind lediglich so sicher, wie wir es erlauben. Nur durch die durchdachte Kopplung der Verfahren können wir sicherstellen, dass Schutzmechanismen nicht ausgehebelt werden. Eine kleine Anekdote: in einem europäischen Nachbarland war bei Bankgeschäften im Internet das TAN-Verfahren nicht eingeführt, weil man um die Akzeptanz der Nutzer fürchtete. Lange Zeit galt es als sicher genug, das man sich mit der Kontonummer und einer PIN anmelden musste und nach drei Fehlversuchen das Konto gesperrt wurde. Es ist schließlich unwahrscheinlich, dass man bei drei Versuchen die richtige Nummer rät. Denkt man kurz darüber nach, wird man vielleicht eine andere Missbrauchsmöglichkeit finden. Warum nicht einfach die PIN einmal zufällig bestimmen, und einfach alle Kontonummern ausprobieren, bis man eine findet, welche diese PIN hat? D.h. pro Konto ein Versuch, und höchstwahrscheinlich am Ende mindestens ein Konto auf das man vollen Zugriff hat.

Rechtliches

Durch die internationalen Gegebenheiten des Internets entstehen rechtliche Kollisionen, da inhaltliche Kontrolle der Medien bisher ein Reservat nationaler und kultureller Besonderheiten war. Dennoch: das Internet ist zweifelsohne kein rechtfreier Raum. Betrachten wir die in Frage kommenden Gesetze:


Der BTX-Staatsvertrag (für Bildschirmtext) schließt bewegte Bilder aus und scheidet daher für die Multimediawelt namens Internet aus, das Fermeldeanlagengesetz wurde mit dem Telekommunikationsgesetz aufgehoben. Letzteres gilt für den „technischen Vorgang des Aussendens, Übermittelns und Empfangens von Nachrichten jeglicher Art in der Form von Zeichen, Sprache, Bildern oder Tönen mittels Telekommunikationsanlagen“ und ist im weitesten Sinne auf Online-Dienste anwendbar. Es fordert angemessene technische Sicherheit zum Schutz von personenbezogenen Daten, führt aber die Art und Weise nicht aus. Generell erlaubt es die Erhebung von Daten zur betrieblichen Nutzung, nicht aber darüber hinaus. Die Telekommunikations-Dienstunternehmen-Datenschutzverordnung von 1996 zählt nicht für Online-Dienste sondern nur für lizenzpflichtige Telekommunikationsdienste und hat somit keinen Belang für das Internet. Das Presserecht gilt lediglich für (nichtelektronische) Druckwerke, und das Rundfunkrecht widerspricht dem Gedanken des Sendens von Informationen bei Abruf im Internet, da es vorsieht, dass Daten öffentlich stets übermittelt werden, unabhängig davon ob jemand sie empfangen möchte.


Das Informations- und Kommunikationsdienste-Gesetz (IuKDG) regelt die Verantwortlichkeit von Providern für eigene und fremde Inhalte, klärt die Anwendbarkeit digitaler Signaturen, fordert Pseudonymisierung und beinhaltet wie das Bundesdatenschutzgesetz den Schutz personenbezogener Daten.


Das Bundesdatenschutzgesetz (BDSG) und die Landesdatenschutzgesetze sind unsere Hauptquelle für die juristischen Grundlagen, auf denen unsere Arbeit mit Daten basiert. Im Einzelfall ist sicherlich die Beratung durch Juristen zu empfehlen, grob beschrieben gibt es allerdings einige Grundprinzipien, an die man sich laut diesen Gesetzen halten muss:

  • Im Allgemeinen ist die Erhebung, Verarbeitung und Nutzung personenbezogener Daten nicht erlaubt

  • Ausnahme: eine Rechtsgrundlage liegt vor, d.h. ein Gesetz erlaubt die Datenverarbeitung in dem spezifischen Kontext

  • Ausnahme: der Betroffene stimmt ausdrücklich der Erhebung zu, oder der Betroffene hat die Daten selbst offenkundig öffentlich gemacht

  • Weitere Ausnahme: §13 Abs. 2 ff BDSG (für uns nicht so interessant)

  • Datenvermeidung und Datensparsamkeit wird gefordert, so dass wir nur erforderliche und so wenig wie möglich Daten erheben dürfen und dazu angeleitet sind Daten anonymisiert zu speichern. Die Sicherheit der Daten muss gewährleistet sein.

Die genannten Gesetze beziehen sich auf personenbezogene Daten natürlicher Personen. Auch wenn der Name der Person selbst nicht gespeichert wird, liegt unter Umständen keine Anonymisierung vor, wenn sie bestimmbar ist. Dazu muss nur ein Kriterium gespeichert sein, dass auf die Person schließen lässt (Telefonnummer, Personalnummer, etc.).

Bei den meisten unserer Projekten bedeutet dies, wir müssen evtl. Betroffene parallel zur Dateneingabe darum bitte die Einwilligung zum Umgang mit seinen Daten zu geben. Dabei reicht es nicht mehr, eine Checkbox auf einer Internetseite vorzusehen, die per Standard vorgewählt ist. Außerdem sieht das Gesetz vor, dass auf den Daten angewendete Verfahren vom jeweiligen Datenschutzbeauftragten geprüft werden. Sollte ein solcher nicht vorhanden sein, muss man sich beim Landesdatenschutzbeauftragen melden. Gern wird dies belächelt, aber im Ernst: jedes private (also nicht-öffentliche) Stelle, und damit jedes Unternehmen, muss ab 10 Personen, die ständig per elektronischer Datenverarbeitung mit personenbezogenen Daten arbeiten, einen Datenschutzbeauftragten haben. Ab 20 Mitarbeitern sogar wenn die Daten nur manuell bearbeitet werden.

Jeder Betroffene hat das Recht, Auskunft zu erhalten, welche personenbezogenen Daten über ihn erhoben wurden, woher die Daten stammen und zu welchem Zweck sie persistent gehalten werden. Er kann verlangen, dass Daten über ihn korrigiert werden, sie nicht an dritte weitergegeben werden, sie gelöscht oder gesperrt werden (letzteres z.B. wenn eine Löschung wegen gesetzlicher Aufbewahrungsfristen nicht erfolgen kann). Reagiert ein Unternehmen nicht (z.B. wenn man sich in Folge eintreffender Werbeanschreiben meldet, und die Auskunft über die Herkunft der Quelle und die Löschung verlangt), so kann man es durch einen Rechtsanwalt Abmahnen lassen.

Firmen mit Sitz im Ausland können Daten in Deutschland erheben und fallen nicht unter die deutschen Gesetze, sondern müssen sich an die Bestimmungen des Landes halten, in dem sie ihren Sitz haben. Falls jedoch Niederlassungen in Deutschland existieren, gilt auch für sie das BDSG.

Eine Ausnahme zu den Datenschutzgesetzen bilden übrigens die katholischen und evangelischen Kirchen. Noch aus den Zeiten der Weimarer Republik können sie nach dem kirchlichen Selbstbestimmungsrecht eigene Rechtsordnungen für sich festlegen, was sie bezüglich Datenschutz und Datensicherheit getan haben. Diese Regelungen stehen in ihrer Anordnung über den kirchlichen Datenschutz (KDO) der römisch-katholischen Kirchen und dem Datenschutzgesetz der Evangelischen Kirchen in Deutschland (DSG-EKD). Nach diesen Verordnungen werden viele personenbezogene Daten erhoben, z.b. von Patienten in einem katholischen Krankenhaus, Eltern die kirchliche Beratungsstellen aufsuchen, Pflegebedürftigen die von kirchlichen Stellen versorgt werden. Auch haben die Kirchen eigene Datenschutzbeauftragte, die nur dem kirchlichen Recht und dem für die Kirchen verbindlichen staatlichen Recht untergeordnet sind.7

Widersprüche

Leider geschieht in der heutigen Zeit auch in Deutschland eine Entwicklung, in der der Staat selbst, der uns zwar durch die Datenschutzgesetze vor Unternehmen schützt, immer mehr darauf besteht, dass er Zugriff auf unsere Daten erhalten kann. Daher sind bereits einige der sieben Grundprinzipien verletzt, die Herbert Damker und Günter Müller 1997 in ihrem Artikel gefordert haben: Vertraulichkeit, Anonymität, Pseudonymität, Unbeobachtbarkeit, Unverkettbarkeit (abgerufene Seiten nicht miteinander in Beziehung bringen), Unabstreitbarkeit (z.B. durch digitale Signaturen) und Übertragungsintegrität. Denn seit dem 1.1.2008 gilt in Deutschland das „Gesetz zur Neuregelung der Telekommunikationsüberwachung [...]“ und damit die sogenannte Vorratsdatenspericherung.

Das Gesetz wird bereits angefechtet, da die Vermutung besteht, dass es gegen das Grundgesetz verstößt. Es verpflichtet Telekommunikationsanbieter und Internetprovider alle Verkehrsdaten für mindestens sechs Monate zur eventuellen Strafverfolgung zu speichern. Verkehrsdaten sind hier Telefonverbindungen, Verbindungsaufbau mit dem Internet (Inhalt noch nicht), E-Mail-Verkehr (u.a. Sender, Empfänger inklusive IPs, Zeitstempel, nicht der Inhalt), Fax und SMS (dabei auch der Standort durch verwendete Mobilfunkzelle). Es bedeutet nicht, dass die Justiz Kriminelle im Visier hat, und die dann gezielt überwacht werden, sondern es bedeutet von jedem (auch der Leser) werden alle Verkehrsdaten immer gespeichert. Unwichtig, ob man jemals das Gesetz übertreten hat. Das heißt, das soziale Netz eines jeden wird sichtbar, und wir haben somit die erste Stufe einer Telekommunikationsüberwachung. Demnächst gelten wir dann vielleicht als potentiell verdächtig, weil wir mit jemanden (den wir vielleicht nur bzgl. einer Internet-Versteigerung anschreiben mussten) in eMail-Verkehr gestanden haben und geraten in ein Strafverfahren. Da bei eMails der Inhalt und Betreff nicht gespeichert wird, weiß ja niemand, das die eMail harmlos war. Durch Analysen der Kommunikationbeziehungen können leicht soziale Netze entdeckt werden, und wer garantiert uns, dass wir nicht in einigen Jahren zu den politischen Gegnern der dann vorhandenen Regierung zählen und die angefallenen Daten gegen uns genutzt werden. Vorratsdatenspeicherung widerspricht dem Erforderlichkeitsgrundsatz, dem Informantenschutz für Journalisten, der Schweigepflicht von Rechtsanwälten und Ärzten und dem Beichtgeheimnis. Ich bin nicht der Meinung, dass unter dem Deckmantel der Strafverfolgung und der Terrorbekämpfung jeder Bundesbürger ausspioniert und protokolliert werden sollte. Genau dies passiert aber seit dem 1. Januar 2008. Bislang war ich immer froh, in einem Land zu leben, in dem solche Zustände nicht herrschen.

Die kriminellen können solche Gesetze leichter ertragen, als der normale Bürger. Denn ein Krimineller, welcher eine Straftat plant (z.B. Betrug durch Verkäufe im Internet) kann einen öffentlichen Internetzugang nutzen, etc. Eine abschreckende Wirkung durch Vorratsspeicherung konnte bislang statistisch auch in anderen Staaten nicht nachgewiesen werden, ebenso ist die Zahl der Strafdaten, die wegen fehlender Daten nicht aufgeklärt werden konnte verschwindend gering (siehe Studie des Max-Planck-Institutes zur Vorratsdatenspeicherung 2007 und Studie des Bundeskriminalamtes von 2005). Auch keine der letzten Terroranschläge wäre durch Vorratsdatenspeicherung verhindert worden. Dagegen ist das Mißbrauchs- und Irrtumsrisiko erschreckend hoch.

Meiner Meinung nach ist Datenschutz und Datensicherheit und die damit gekoppelten Datenschutzgesetze die wichtigsten Schutzmechanismen für die Freiheit eines jeden einzelnen Menschen. Die Bedeutung des Datenschutzes und der Datensicherheit wird mit fortschreitender Entwicklung immer wichtiger, weil Daten die wir heute für unkritisch halten vielleicht bereits in naher Zukunft sehr effizient mit anderen in Zusammenhang gebracht und ausgewertet werden können. Identitätsdiebstahl, meist per Internet eingeleitet, geschieht bereits heute und endet häufig mit hohen Rechnungen für die Opfer, die kaum nachweisen können, Waren nicht bestellt zu haben. Oder im Zuge einer Recherche für die Universität oder sogar durch belangloses Surfen landet man in einem Internetforum, in dem kritische Äußerungen in Bezug auf Terrorismus und Bombenattentate ausgetauscht werden, und dank der neuen Speicherung der Daten auf Vorrat landen wir später in einer Rasterfahndung, weil unsere IP Rückschlüsse auf unseren Besuch der Seite hinterlassen hat. Sicherlich gibt es hier die Denkweise, dass man nicht zufällig auf einer solchen Seite landet. Mir ist genau dies aber erst kürzlich passiert, als ich lediglich im Internet nach den Bedeutungen von Vornamen gesucht habe. Man sollte nicht vergessen, Kriminelle finden Wege um ihre Daten zu schützen, Terroristen können ausgebildet werden eMails verschlüsselt zu versenden, selbst Fingerabdrücke am Flughafen sind leicht zu fälschen, aber der normale Bürger hat meist nicht genug technisches Wissen um sich zu schützen. Benutzt ein Terrorist daher unseren Fingerabdruck, den er sich an vielen Geldautomaten besorgen kann, können wir im Nachhinein evtl. mit einer Straftat in Zusammenhang gebracht werden. Wir müssen vorsichtig sein, was wir preisgeben. Vor allem als Verantwortliche für den Umgang mit Daten anderer. Daher sind wir in unserer täglichen Projektarbeit gefordert den Schutz und die Sicherheit zu gewährleisten und mit Daten verantwortungsvoll umzugehen.

Literatur

DuD Datenschutz und Datensicherheit, Fachzeitung, siehe http://www.dud.de

Wikipedia: http://de.wikipedia.org/wiki/Datenschutz, http://de.wikipedia.org/wiki/Datensicherheit, http://de.wikipedia.org/wiki/Vorratsdatenspeicherung

Bundesdatenschutzgesetz, Landesdatenschutzgesetzte

Anordnung über den kirchlichen Datenschutz (KDO)

Datenschutzgesetz der Evangelischen Kirchen in Deutschland (DSG-EKD)

Damker, Herbert; Müller, Günter (1997): Verbraucherschutz im Internet. In: Datenschutz und Datensicherheit 21 (1997). S. 24-29.

Reif, Holger (1995): Netz ohne Angst. Sicherheitsrisiken des Internets. In: c’t 9/95. S. 174.

Kauffels, Dr. Franz-Joachim (1998): Sichere Transaktionen – Standards und Verfahren für digitalen Handel. In: Gateway April 1998. S. 68-72.

http://www.vorratsdatenspeicherung.de

1Zumindest so weit er es durchschauen kann. Oft tut er das – meist Jahre zu spät.

2Ja, das soll es auch geben.*

* Zur Not mit dem Hinweis, dass alles Besprochene nur zu wissenschaftlichen Zwecken dient.

3Und damit hat er schonmal Recht, denn auch das soll es geben.

4So sicher wie "wie lautet der Mädchenname Ihrer Mutter" oder "In welchem Ort sind Sie geboren"... Wer denkt, die dazu gehörigen Antworten sind geheim, braucht seine Haustür gar nicht erst abzuschließen.

5Ich hoffe dies inständig^^

6Was ich übrigens hasse... und was meist bei Usern dazu führt, dass hinten eine Nummer am Passwort hochgezählt wird oder es auf einem Zettel am Bildschirm hängt. Somit ist der Sinn direkt in Frage gestellt.

7Allerdings: wer kann der Kirche nicht vertrauen, hat sie doch schon seit 1215 n. Chr. das Seelsorge- und Beichtgeheimnis im Kirchenrecht aufgenommen und damit wahrscheinlich schon vor allen anderen an Datenschutz gedacht. Ob die Intention dahinter die richtige war, naja, wer weiß.