Wie man DAO-Code vermeidet

Gregor Ottmann | Mai 30, 2006 on 8:38 am | In Know-How | 1 Comment

Ein System, fünf Dienste, 1000 DAOs. Hach, wie ich saubere Architekturen mit ordentlicher Datenzugriffsschicht liebe! Was könnte schöner sein, als sich die reichlich bemessene Zeit mit dem Schreiben nahezu identischer Data Access Objects zu vetreiben?

Nun, mir fallen da in etwa so viele Alternativen ein, wie es derartige Objekte in einem größeren System gibt. Deshalb war ich auch so angetan von dem Artikel über die Verwendung von Java Generics zur Vermeidung unnötiger DAO-Code-Redundanz, den mir CSpeldrich geschickt hat. Als ich dann noch meine Lieblingsspielzeuge, Spring und Hibernate, im Text gefunden habe, war ich vollends beglückt - und das solltet Ihr auch sein, liebe Leser: Wenn Ihr das alles schön befolgt, habt Ihr in Zukunft nämlich viel mehr Zeit, mein wunderbares Blog zu lesen.

Wie Überstunden die Qualität killen

Gregor Ottmann | Mai 29, 2006 on 9:50 am | In Vermischtes | No Comments

Arbeit ist, wie wir alle wissen, beliebig skalierbar. Wenn ein Entwickler in 8 Stunden 3000 Zeilen guten Code schreibt, wird er logischerweise in 24 Stunden 9000 Zeilen Code ausspucken und somit die Realisierungszeit des Gesamtprojekts auf 33% der ursprünglichen Schätzung drücken. Wann er in der Zwischenzeit schlafen soll, kann der Mensch ja von den 9 Frauen in Erfahrung bringen, die durch gute Teamarbeit ein Kind innerhalb eines Monats produzieren.

Klar, das ist Quatsch. Aber wie sieht es denn nun tatsächlich mit der Effektivität von Überstunden aus? Wie mies wird unser Code, wenn wir ihn mitten in der Nacht schreiben? Kann man von ausreichendem Sozialkontakt sprechen, wenn man jeden Morgen mit dem Zeitungsboten redet, der zufällig zur selben Zeit vor der Haustür steht wie man selbst?

Definitive Antworten habe ich gerade nicht zu bieten, aber immerhin einen interessanten Artikel über die Auswirkungen von Überstunden auf die Qualität des Codes, den OBlume mir geschickt hat. Lesen kann man den dann ja morgens um 2, kurz bevor man zusammenpackt und heimgeht. ;)

Die Roadmap für IDEA 6

Gregor Ottmann | Mai 24, 2006 on 10:21 am | In Aktuelles, IDEA | No Comments

Ja, ich weiß… Viele von Euch verwenden Eclipse und finden das total super. Ist ja auch OK, wir müssen nicht immer einer Meinug sein, liebe Leser. Ich persönlich stehe dazu, dass ich Eclipse einfach nicht ausstehen kann, so rein subjektiv gesehen. Ich mag IDEA, und ich kenne nur wenige Bezahlprodukte, die ich den kostenlosen Konkurrenten so bedingungslos vorziehen würde.

(Für den ersten Absatz sollte die Marketingabteilung von IntelliJ mir eigentlich Geld bezahlen.)

Während ich also IDEA schon in der aktuellen Version 5 nahezu perfekt finde, bin ich natürlich trotzdem sehr gespannt darauf, wie es weitergeht. Falls es noch mehr Freunde dieses Produkts geben sollte, die sich vor Neugier verzehren, kann ich diesen helfen, und zwar mit dem Link zur Roadmap für die Entwicklung von IDEA 6, den mir die freundlichen Vertriebler von IntelliJ beim letzten Lizenzkauf mitgeschickt haben. Ich bin begeistert, ich kann’s kaum erwarten, ich brauche ein Upgrade-Budget!

Schicke File-Uploads mit AJAX

Gregor Ottmann | Mai 22, 2006 on 9:37 am | In Tools | No Comments

File-Uploads sehen in den meisten Webapplikationen nicht so richtig toll aus - besonders dann, wenn mehr als eine Datei gleichzeitig auf den Server geschubst werden soll. Sehr viel hübscher als mit den Standard-Inputs geht das mit dem AJAX-Fileuploader-Script von Steven Miles, der allerdings auch seine Tücken hat: Er braucht nämlich PHP und PERL auf dem Server, was gerade bei Java-Webanwendungen durchaus eher eine unpraktische Einschränkung ist. Könnte das bitte mal jemand auf Spring portieren?

Appliances, Appliances!

Gregor Ottmann | Mai 19, 2006 on 9:03 am | In Tools, Vermischtes | No Comments

Ich liebe den VMWare-Player - mit dem kostenlosen Ding kann ich mir quasi jeden Mist auf den Rechner werfen, ohne mir dabei mein System komplett zu zerlegen. Ich muss zugeben, sehr schnell ein Fan virtueller Maschinen geworden zu sein, als die VMWare-Leute den Player freigegeben haben.

Dumm ist nur eins: Man braucht ein mit einer “richtigen” VMWare erstelltes Image, damit man mit dem Player etwas tun kann. Das klingt erstmal nach einer ziemlich harten Beschränkung, ist aber inzwischen keine mehr. Wie ich nämlich von PRogalinski erfahren habe, kann man sich mittlerweile bei VMWare alle möglichen nützlich vorkonfigurierten “Appliances” als Images runterladen - von der Oracle-Datenbank bis zum BEA-Weblogic-Server ist eigentlich alles dabei, was das Entwicklerherz begehrt. Ich bin entzückt und werfe schonmal die Downloads an…

AJAX von Google - schwarze Magie mal anders

Gregor Ottmann | Mai 18, 2006 on 8:36 am | In Know-How, Tools | No Comments

Mal gut, dass es im 17. Jahrhundert weder Google noch das Internet gab… Wenn man damals das freie Google-Framework für Java-basierte AJAX-Applikationen benutzt hätte, wäre es einem nämlich ganz warm ums Herz geworden. OK, erstmal um die Füße, so ein Scheiterhaufen brennt schließlich von unten nach oben.

Nachdem MHenze mich gestern auf jenes Toolkit aufmerksam gemacht hatte und kurz beschrieben hat, was es so tut, hatte ich nämlich erstmal die Vermutung, dass mein geschätzter Kollege vielleicht während der Arbeitszeit Drogen nehmen könnte. Wie anders sollte ich mir eine Aussage wie “ja, also, das kompiliert richtiges Java nach JavaScript und dann, äh, funktioniert das halt und so” auch erklären? Höchstens noch damit, dass er mit dem Satan… Ich wollte nicht drüber nachdenken, ganz ehrlich.

Heute morgen war ich dann mutig und habe recherchiert, d.h. mich selbst zum Ziel der Inquisition gemacht - und siehe da: Das gibt es wirklich, es ist gut dokumentiert und scheint tatsächlich zu funktionieren. Ich muss zugeben, dass Google mir ernsthaft Angst macht, aber das Framework werde ich trotzdem unbedingt mal ausprobieren müssen…

Von Word zu PDF mit OpenOffice und Java

Gregor Ottmann | Mai 17, 2006 on 7:24 am | In Tools | No Comments

Manchmal können Kundenanforderungen ganz schön hart sein - beispielsweise dann, wenn eine Website per Upload hinterlegte Office-Dokumente automatisch in PDF-Files verwandeln soll. Egal wie hart die Anforderung aber auch sein mag, man will sie natürlich nicht einfach abschmettern, was man im Word-nach-PDF-Fall allerdings doch zähneknirschend zu tun gewillt ist, weil es halt doch ein ziemliches Horrorfeature ist.

Nun, man kann abschmettern - muss man aber nicht. Sofern man genug Kontrolle über den Zielrechner hat, um das nicht gerade kleine OpenOffice-Paket zu installieren, kann man die leidige Konvertierungsfrage mit dem Tool “JOOReports” beantworten, das die entsprechenden Funktionen von OpenOffice für Java-Programme zugänglich macht. Der Kunde strahlt, der Rubel rollt - was will man mehr? 

Subversion aus Java heraus nutzen

Gregor Ottmann | Mai 12, 2006 on 9:12 am | In Know-How | No Comments

Für viele Firmen kommt irgendwann der Zeitpunkt, an dem sich im Produktportfolio mehr oder weniger geplant ein mehr oder weniger mächtiges CMS findet - es scheint ein natürlicher Evolutionsvorgang zu sein, dass die Verwaltungsfrontends, die man immer wieder schreibt, früher oder später zu einem derartigen Werkzeug mutieren. Sofern das Produkt nicht irgendwann in der Versenkung verschwindet, steht der Hauptentwickler früher oder später vor der Herausforderung, das Tool um Mechanismen zur sauberen Versionierung von Inhalten zu erweitern, und das artet oft in wilde Datenbankerweiterungen und Architekturbrüche aus.

Um derartige Probleme zu vermeiden, gibt es viele Mittel - und eines davon ist die Ablage der versionierten Daten in einem der gängigen Versionkontrollsysteme. Im Grunde ist die Idee naheliegend, nur muss man halt erstmal drauf kommen. Nachdem die Idee freudig angenommen wurde, gilt es dann nur noch, herauszufinden, wie man sowas im Detail umsetzen könnte, und genau an diesem Punkt haben Leser des SKYTEC-Entwicklerblogs mal wieder einen gewissen Vorsprung.

Ich habe nämlich einen sehr interessanten Artikel über die Verwendung von Subversion aus Java-Servercode heraus gefunden, den ich jedem ans Herz legen möchte, der sich mit der Versionierung von Daten befassen muss. Die schönste Arbeitszeit ist halt doch die, die man sich gespart hat, weil man auf bestehende Werkzeuge zurückgreifen konnte, statt das Rad mal wieder neu zu erfinden…

Threads entwirren mit java.util.concurrent

Gregor Ottmann | Mai 9, 2006 on 11:32 am | In Know-How | No Comments

Der schon lange in Java enthaltene Support für die Synchronisierung von Threads ist eine ziemlich multifunktionale Sache: Man kann damit nicht nur Threads synchronisieren, sondern auch durch eine dezente Graubleichung Entwicklerhaare auf eine nachfolgende Färbungsaktion vorbereiten. Fürwahr, “ein nützliches Framework dies ist”, wie mein Freund Yoda es ausdrücken würde.

Nicht jeder von uns ist aber mit seiner natürlichen Haarfarbe unzufrieden, und so wird es manchen sehr erfreut haben, als mit dem JDK 1.5 das Package java.util.concurrent das Licht der Welt erblickte, welches so manche Erleichterung für den vom Multithreading an sich sowieso schon hinreichend verwirrten Java-User enthält. Schade nur, dass man ohne ein gewisses Grundwissen nicht unbedingt einen leichten Einstieg in die hier gebotenen Funktionen findet.

Für genau diesen Einstieg ist das sehr interessante Paper über Funktion und Anwendung des Concurrency-Frameworks von Java 5, das OBlume gefunden und gemeldet hat, sehr schön geeignet. Dort wird man nicht nur über die Grundlagen der Materie und die Anwendung der Hilfsmittel aufgeklärt, nein, man erfährt auch etwas darüber, wie es mit der Performance aussieht. Man möchte sich fast fragen, warum so ein Text nicht in der API-Dokumentation des Packages enthalten oder verlinkt ist, aber die Antwort lautet wohl so, wie man es bei Sun schon fast erwartet: Weil es zu einfach wäre und Entwickler Herausforderungen bekanntlich schätzen.

Die Klasse im statischen Kontext

Gregor Ottmann | Mai 8, 2006 on 8:06 am | In Know-How | 1 Comment

Die aktuelle Java-Klasse rauszufinden, wenn man in einem nicht-statischen Kontext unterwegs ist, ist keine Kunst - schließlich gibt es ja “this.getClass()”. Was macht man aber, wenn es “this” nicht gibt?

Ganz einfach: Man benutzt den lustigen Trick für die Klassenbestimmung in statischen Kontexten, von dem mir OBlume berichtet hat. Netter Hack, gefällt mir.

Nächste Seite »

Entries and comments feeds. Valid XHTML and CSS. ^Top^

xml :RSS2-Feed