Laufzeitmessung mit Java. Einfaches Profiling.

Oft ist es notwendig, die Laufzeit von Funktionen oder gnazen Codeblöcken zu messen. Manchmal reicht es vollkommen aus, zusätzliche log-Ausgaben anzulegen, um mithilfe von den Zeitsignaturen abschätzen zu können, in welchen Codestücken der Rechner am meisten verweilt. Aber was für längere Operationen von der Messgenauigkeit her durchaus in Ordnung ist, kann an Funktionen deren Laufzeit im Mikro- oder Millisekundenbereich liegt,  gar nicht angewendet werden, denn Logger, wie z.B. der Log4j besitzen ebenfalls einen Overhead, der u.U. nicht vernachlässigt weden darf: Jeder Aufruf einer Logging-Methoide, z.B. von log.info( ), dauert einige Millisekunden, die schlußendlich sich in der Summe bemerkbar machen. Die Frage lautet also: Wie kann man einfache Laufzeitmessungen genau genug durchführen? Das erkläre ich in diesem Artikel.

Weiterlesen

Veröffentlicht unter Best Practices, Java | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

JAR-Abhängigkeiten in Projekten Auflösen. Unbenutzte JARs finden.

Jeder kennt das: Java-Code eines Entwicklers übernommen, aber sogut wie keine Dokumentation über die für den Code benötigten JARs erhalten. Auch solche Situationen sind möglich:

  • …der lib-Ordner des Projekts ist voll mit Bibliotheken, deren Namen einem nicht in die Geheimnisse des Projektes eingeweihten Entwickler nichts sagen…
  • …oder man bekommt eine kilometerlange Liste von JARs, welche VIELLEICHT benötigt werden können…

Wie kann man nun die JAR-Archive finden, die für das Bauen des Projekts tatsächich benötigt werden?

Weiterlesen

Veröffentlicht unter Best Practices, Java | Verschlagwortet mit , , , , | Hinterlasse einen Kommentar

Java, Swing: Eigenes Model für JTable speichert Datenbank-IDs der Datensätze

Viele kennen folgendes Problem: Beim Klick auf einer Zeile der JTable soll die ID des entsprechenden Eintrags aus der Datenbank geladen und verwendet werden, um, zum Beispiel, den Vollständigen Datensatz in eine Form zu laden. Es besteht die Möglichkeit, die IDs in einer Tabellenspalte anzeigen zu lassen, um diese beim Klick durch die Methode getValueAt(row, col) aus der entsprechenden Zelle zu kopieren. Diese Lösung ist nicht ganz optimal und nicht besonders schön, denn es nicht immer nötig ist, die eigentliche ID für den Benutzer sichtbar zu machen.

Es besteht aber die Möglichkeit, das Model der Tabelle so zu programmieren, dass die ID zwar in der internen Datenstruktur (z.B. ein Object[][] Array) gespeichert wird, aber nicht in der GUI angezeigt wird.

Das Model könnte etwa so aussehen:

Um die an die mit der Maus selektierte Zeile zugewiesene ID aus der Tabelle bzw. dem Model zu holen, reicht dieser Code:

Veröffentlicht unter GUI Entwicklung, Java, Softwareentwicklung | Verschlagwortet mit , , | Hinterlasse einen Kommentar

JTable: Spaltenbreite automatisch optimal anpassen

Nach folgendem Code habe ich sehr lange gesucht. Die eigentliche Quelle (Forenbeitrag) ist leider nicht mehr erreichbar.

Veröffentlicht unter Allgemein | Verschlagwortet mit , , | Hinterlasse einen Kommentar

Keine Unterstützung von Swing Application Framework ab NetBeans 7.1

Nach dem Aktualisieren der IDE auf die Version 7.1 musste ich überraschend feststellen, dass das bekannte Framework nicht mehr offiziell unterstützt wird. Support älterer Projekte muss in Zukunft mit NetBeans 7.0.1 erfolgen. Die von Sun entwickelte Alternative heißt “Netbeans Platform”:

The NetBeans Platform is a broad Java framework on which you can base large desktop applications. NetBeans IDE itself is one of the hundreds of applications based on the NetBeans Platform. The NetBeans Platform contains APIs that simplify the handling of windows, actions, files, and many other things typical in applications.

Tutorials und Beschreibung findet man hier.

Die von der Entscheidung enttäuschte User-Community bittet Sun die Unterstützhung von SAF wieder einzuführen, da Migration von SAF auf NetBeans Plattform aus Kostengründen für die meisten Projekte unmöglich ist.

Veröffentlicht unter GUI Entwicklung, Java, Netbeans, Open Source, Softwareentwicklung | Hinterlasse einen Kommentar

ListSelectionListener spart mouseClicked-event

Wer sich dieses Beispiel anschaut, erfährt, wie man Reaktionen auf selection events auf einer JTable zentral verwalten kann.

Veröffentlicht unter GUI Entwicklung, Java | Hinterlasse einen Kommentar

Windows 7 64-Bit und ODBC Treiber für Access

Einige Tage lang durfte ich mich mit dem im Titel dieses Beitrags genannten Problem beschäftigen: Eine unter Windows 7 32-Bit entwickelte Anwendung wollte auf dem Windows 64-Bit System nicht starten.

Nachdem stundenlangen Googeln habe ich einige Tipps gesammelt, und unter Anderem auch den Tipp von Thomas Schiffler.

Eins kann man zu der vorgeschlagenen Lösung noch sagen: Man benötigt auch die x86 JRE und JDK im System, damit die unter “User DSN” eingetragene Datenquelle von eigener Software aus auch genutzt werden kann. Die JRE und JDK können von der Webseite von Sun runtergeladen werden. Nach der Installation müssen die Eigenschaften des Projekts / der IDE noch angepasst werden, damit die Entwicklungsumgebung von anderen JRE/JDK auch erfährt und das Programm damit ausführt. In den Einstellungen der Java Runtime Environment (über Control Panel von Windows 7 erreichbar) habe ich die zweite JRE eingetragen, wobei es für die IDE nicht notwendig ist.
Ich hoffe, dass diese Ergänzung einem oder anderen Kollegen noch helfen wird.

Veröffentlicht unter Java, Netbeans, Softwareentwicklung, Windows 7 | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Software „umbauen“

Ein KartenhausIn den Zeiten des Open Source und des allumfassenden Internets ist es üblich, dass eine Software an die Bedürfnisse des Kunden angepasst oder erweitert wird.
Aber ist es dann noch wirtschaftlich?

Weiterlesen

Veröffentlicht unter Open Source, Softwareentwicklung, Softwarelösungen | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Migration von IDE Netbeans v6.9.1 nach v7.0, beschädigte Formen

Seit ein paar Jahren verwende ich die Entwicklungsumgebung Netbeans von Sun (mittlerweile Oracle) und bin damit sehr zufrieden. Wer wenig Zeit für Programmierung von GUIs hat oder sich in das komplizierte SWING-Framework nicht einarbeiten kann, hat Möglichkeit den in die IDE eingebauten GUI-Builder zu verwenden und die Programmfenster damit bequem zu gestalten: So, wie man es mit Delphi oder .NET macht.

IDE wird von Oracle ständig weiterentwickelt, neue Versionen erscheinen regelmäßig und normalerweise gibt es keine Probleme mit der Migration von den mit der Vorgängerversion erstellten Projekten in die neue Umgebung.

Sollten Sie jedoch eine Meldung bekommen, dass die Form, die Sie gerade bearbeiten wollen, wegen Beschädigung von Definitionsdateien nur im “read-only”-Modus geöffnet werden kann, können Sie sich diesen zwei Artikeln bedienen:

Eintrag in der Wiki von Oracle zum Thema “FormGuardedBlockError”
Post im Netbeans Support Weblog: Regenerating .java file from a .form file

Die dort beschriebenen Methoden können Ihnen einige Stunden Ihrer kostbaren Arbeitszeit retten.

Veröffentlicht unter GUI Entwicklung, Java, Netbeans | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

CMS ist kein Baukastensystem…

…sondern ein Baumarkt, wo Werkzeuge und Baumaterielien in der Regel nichts kosten.

Wie man ein Haus eine Webseite baut, müssen Sie trotzdem wissen, und wenn Sie es nicht wissen, dann helfen wir Ihnen.

(als Antwort auf diese, für manche Kunden sehr typische, Aussage: “…Bitte kein CMS / Baukastensystem! Das kann doch jeder!”)

Veröffentlicht unter CMS, Drupal, Joomla!, Web | Verschlagwortet mit , , , | Hinterlasse einen Kommentar