Über dieses Blog...
Tipps und Tricks, aber auch Kritik - breit gefächert von Technik bis hin zum Design, manchmal (oder immer öfter) auch Politik.
Momentaner Fokus: Android/Java, CalDAV, Windows 7 benutzbar machen
Feeds
Interessant gefunden? Mitlesen? Vollständige Beiträge per Feed.
Zur Weiterverarbeitung oder zum Einbauen für Ihre Homepage: CSV, JavaScript
Tag-Cloud
Durchsuchen
Kategorien
Archiv
| Mo | Di | Mi | Do | Fr | Sa | So |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 |
Java und die Abwärtskompatibilität
Von e7 am 08.02.2009, 20:40 in der Kategorie Niederschmetternde Erkenntnisse mit den Tags buggy implementation abstrus garbage collector konstruktor schrott java programmierung. Kompletten Eintrag zeigen
Dass ältere Programme mit neueren Dateien Probleme haben, ist ja nichts neues; und jede Programmversion bringt häufig eigene Dateiformate mit. Bestes Beispiel sind Photoshop, MS Office und andere. Dann gibt's noch das Phänomen, dass neue Programme die Dateien ihrer Vorgänger nicht mehr lesen können — im Regelfall kennt man das von Word, das sogar bei gleicher Version auf unterschiedlichen Rechnern Probleme gibt.
Nun gibt es ja auch dieses tolle Java. Gibt sich als fortschrittlich, als ziemlich sauber, objektorientiert, und was weiß ich nicht alles. Plattformkompatibel soll es sein, und auch Abwärtskompatiblität hat es sich auf die Fahnen geschrieben. Sprich: Programmcode, den man ursprünglich mal mit 1.4 (oder ähnlich) entwickelt hat, sollte auch durch den aktuellen 1.6-er Compiler laufen. Nun ergibt sich allerdings folgendes Problem:
Test.java:14: cannot find symbol
symbol : constructor A()
location: class A
public B() {
^
1 error
Was ist hier passiert? Ein Blick auf den Code lässt uns rätseln, wenn wir nicht wissen, was hier klammheimlich (wurde sicher irgendwo angekündigt, aber wer liest das schon…) irgendwo in 1.6 eingeschmuggelt wurde:
public class Test {
public static void main(String args[]) {
B b = new B();
}
}
class A {
public A(int a) {
System.out.println(„Hallo“);
}
}
class B extends A {
public B() {
System.out.println(„Neu“);
}
}
Der Javacompiler scheint also das explizite Weglassen (oder unabsichtliche Vergessen) von super(); automatisch nachholen zu wollen. Dumm nur, dass in diesem Fall kein Konstruktor A() existiert, sondern nur A(int). Da der Compiler keine Zahlen erfindet und andererseits (hier) keinen Default-Konstruktor anlegt, muss das logischerweise zu einem Fehler führen.
Und schon ist die Abwärtskompatibilität im Eimer. Aber was macht das schon — wer mit Java bastelt, muss sich sowieso an einiges gewöhnen. Vom Swing-Kaugummi rede ich jetzt gar nicht, das gibt sonst wieder böse Worte von den Java-Fans. Dass Java immer etwas anders implementiert ist als in anderen Sprachen, daran muss man sich auch gewöhnen. Bestes Beispiel hier: s.subString(1, 3). Das gibt nicht etwa drei Zeichen ab dem zweiten Zeichen des Strings beginnend (C++, VB, PHP, Perl, JavaScript (wobei substring() mit substr() von Java identisch ist), SQL) — sondern zwei Zeichen. Auch dass der Garbage Collector selbst nach dem Aufruf von System.gc() nur „möglicherweise“ läuft, kann man mit ein bisschen Mitdenken ausbügeln (Destruktor? Ach, nachher mal…) Dass array.length und string.length() unterschiedlich mit den Klammern dahinter umgehen, ist historisch bedingt. Dass Calendar.get(Calendar.DAY_OF_MONTH)) bei 1 beginnt und Calendar.get(Calendar.MONTH)) bei 0, muss man auch nur wissen, um es zu beachten. Und die Versionsnummern sind uns eh völlig wurscht.
Hatte ich schon mal erwähnt, dass ich Java mag? Nein? Ich weiß warum.
Die Softwareentwicklung...
Von e7 am 23.08.2008, 16:59 in der Kategorie Das tägliche Leben mit den Tags schäuble vds werbung datenschutz geschichte prügel fair olympia e7o.de sql programmierung software. Kompletten Eintrag zeigen
Die Softwareenticklung ist schon eine Wissenschaft für sich… nach und nach tauchen immer mehr Fehler im CMS auf: hier mal ein vergessener Datenbankeintrag, der zwar lokal vorhanden ist, ich aber nicht mit auf den Server übernommen habe — und somit keine JOIN-Abfragen in der Datenbank funktionieren (deshalb wurden auch keine Kommentare angezeigt), ganz neue Erkenntnisse mit den Umlauten in XML (man muss es mal gehört haben: XML an sich unterstützt nur ganz wenige Entities — mit ü und so hat man da keinen Erfolg), und die Tipparbeit, um die Funktionen allgemein ins Blog zu basteln… Programmieralltag pur :) Gepaart mit dem noch namenslosen Gesetz (Murphy's Law erstreckt sich glaube ich nicht so weit), dass man — wenn man eigentlich Ferien/Urlaub (oder bei den älteren Menschen Rente) hat, zu noch weniger Dingen kommt, weil der Terminkalender noch voller ist, schon ein echter Knochenjob :)
Da kann man durchaus schon mal ne Tracht Prügel verdienen, wie der Typ hier — immerhin war er ja auch weit geflogen (via TP). Aber Reiseerfahrung hat er, und Niederlagen musste er auch schon oft einstecken:
Wenn wir gleich schon mal dabei sind — andere haben ja durchaus auch so ihre Schläge verdient oder zumindest den Orden für's Blitzdenken. Heute bei Heise gelesen:
„Wenn wir die Verbraucher anders vor kriminellen Machenschaften nicht schützen können, müssen wir überlegen, ob wir den Handel mit persönlichen Daten generell verbieten“
Ach ne, welch Erkenntnis. Jeder, der zumindest ein bisschen nachdenken und sich mit der Sache beschäftigen würde, hätte dies gleich als erstes vorgeschlagen — das ist nämlich verbraucherfreundlich und zudem die einfachste Möglichkeit. Der Blitzdenker-Orden geht deshalb im Speziellen an Bundeswirtschaftsminister Michael Glos von der CSU. Im Rahmen dessen auch gleich noch ein Zitat aus dem Heise-Artikel:
Die Pläne von Innenminister Schäuble für ein zentrales Melderegister haben nach einem Bericht der „Neuen Osnabrücker Zeitung“ (Samstag) kaum noch Chancen.
Schön, wird doch immer besser. Dann gibt's nur noch so Kleinigkeiten wie die Fluggastdaten, Mautdaten, Steuer-ID und wie sie sich alle nennen mögen. Neulich im Netz gesehen und gespeichert (auf den Seiten des Arbeitskreis Vorratsdatenspeicherung konnte ich das Bild leider nicht wiederfinden) ein Werbebanner, den ich mir schon mal vormerke als Kandidat für die beste Idee des Jahres:
Aus diesem Anlass noch ein Hinweis an alle, die am 11. Oktober in Berlin oder Umgebung sein werden: „Freiheit statt Angst 2008“ — eine Demo, die sich lohnt.
Alle Nachrichten finden Sie im Archiv.
© 2001 - 2012 by e7o.de; powered by e7cms. XHTML Strict für gute Browser.