<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Michael Hönnig</title><link>https://michael.hoennig.de/de/</link><description>Recent content on Michael Hönnig</description><generator>Hugo -- gohugo.io</generator><language>de-DE</language><copyright>© 2026 Michael Hönnig</copyright><lastBuildDate>Sat, 05 Sep 2026 17:00:00 +0200</lastBuildDate><atom:link href="https://michael.hoennig.de/de/index.xml" rel="self" type="application/rss+xml"/><item><title>Von JBake nach Hugo: eine Website-Migration, geplant mit Werkbaum</title><link>https://michael.hoennig.de/de/blog/2026/2026-09-05-website-migration-planned-with-werkbaum/</link><pubDate>Sat, 05 Sep 2026 17:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2026/2026-09-05-website-migration-planned-with-werkbaum/</guid><description>Diese Website lief jahrelang auf einem sehr alten JBake-Fork und ist jetzt auf Hugo umgezogen: 73 Artikel in zwei Sprachen, alte URLs, Audio, Admonitions. Umgesetzt mit einem AI-Agenten, gesteuert über einen &lt;code&gt;Werkbaum&lt;/code&gt;. Der Artikel beschreibt den Ablauf und warum sich &lt;code&gt;Werkbaum&lt;/code&gt; als Planungswerkzeug gerade für Agentic AI bewährt hat.</description></item><item><title>Eigene Projekte</title><link>https://michael.hoennig.de/de/own-projects/</link><pubDate>Sat, 05 Sep 2026 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/own-projects/</guid><description>Einige aktuelle Beispiele, mit Vibe Engineering entwickelt: Werkator, Werkbaum, Werkdock und die Vibe-Engineering-Simulation.</description></item><item><title>SQL or CSS — Which Is the Better Language?</title><link>https://michael.hoennig.de/de/blog/2026/2026-09-01-sql-or-css-which-is-the-better-language/</link><pubDate>Tue, 01 Sep 2026 08:47:02 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2026/2026-09-01-sql-or-css-which-is-the-better-language/</guid><description>SQL und CSS sind beide deklarative Sprachen. Warum schreiben viele Backend-Entwickler mühelos komplexe SQL-Abfragen, verzweifeln aber an CSS? Ein Vergleich von Lokalität, versteckten Abhängigkeiten und der Frage, wie deklarativ beide Sprachen wirklich sind.</description></item><item><title>Kompetenzprofil</title><link>https://michael.hoennig.de/de/skills/</link><pubDate>Thu, 30 Jul 2026 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/skills/</guid><description>&lt;h2 class="relative group"&gt;Technische Kompetenzen&#10; &lt;div id="technische-kompetenzen" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#technische-kompetenzen" aria-label="Anker"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&lt;h3 class="relative group"&gt;JVM Technologien&#10; &lt;div id="jvm-technologien" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#jvm-technologien" aria-label="Anker"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Java, Kotlin&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;JavaEE: EJB3, CDI, JMS, JPA&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;SpringBoot, SpringFramework&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;JUnit, Mockito, Arquillian&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h3 class="relative group"&gt;Datenbanken&#10; &lt;div id="datenbanken" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#datenbanken" aria-label="Anker"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Oracle&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;PostgreSQL, pl/pgSQL&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;AWS DynamoDB&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h3 class="relative group"&gt;Security / IAM&#10; &lt;div id="security--iam" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#security--iam" aria-label="Anker"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;RBAC / ReBAC (Relationship-Based Access Control)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h3 class="relative group"&gt;AI-gestützte Entwicklung&#10; &lt;div id="ai-gestützte-entwicklung" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#ai-gest%c3%bctzte-entwicklung" aria-label="Anker"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Einsatz von Agentic AI in der Softwareentwicklung („Vibe Engineering“: AI-gestützte Softwareentwicklung mit Engineering-Disziplin, in Abgrenzung zu „Vibe Coding“)&lt;/p&gt;</description></item><item><title>Profil</title><link>https://michael.hoennig.de/de/profile/</link><pubDate>Thu, 30 Jul 2026 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/profile/</guid><description>Senior Software-Entwickler, Backend-Fokus: Java, Kotlin, Spring Boot, PostgreSQL, ReBAC, Agentic AI in der Softwareentwicklung. Kurzprofil, Kompetenzprofil und Projekthistorie.</description></item><item><title>Warum Secrets-Manager wichtig sind – und was ich darüber gelernt habe</title><link>https://michael.hoennig.de/de/blog/2025/2025-11-13-why-secrets-management-and-how-does-it-work/</link><pubDate>Thu, 13 Nov 2025 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/de/blog/2025/2025-11-13-why-secrets-management-and-how-does-it-work/</guid><description>Seitdem ich, vor langer Zeit, mit dem Konzept Secrets-Manager in Kontakt gekommen bin, hatte ich ehrlich gesagt immer nur eine vage Vorstellung davon, was für einen Vorteil diese eigentlich bieten, wo doch das System, welches ein Secret abfragen darf, sich dafür bereits authentifizieren muss. Wie genau autorisiert sich also z.B. ein Webserver gegenüber einem Secrets-Manager, um dort Datenbank-Zugangsdaten abzurufen, und …</description></item><item><title>Datenschutzerklärung</title><link>https://michael.hoennig.de/de/datenschutzerklaerung/</link><pubDate>Sun, 03 Nov 2024 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/de/datenschutzerklaerung/</guid><description>(An English translation for informational purposes can be found here.)</description></item><item><title>Gehaltsäquivalent als Angestellter (ANÜ) im Vergleich für Freelancer</title><link>https://michael.hoennig.de/de/blog/2020/2020-11-30-gehaltsaequivalent-anue-angestellter-im-vergleich-fuer-freelancer/</link><pubDate>Mon, 30 Nov 2020 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/de/blog/2020/2020-11-30-gehaltsaequivalent-anue-angestellter-im-vergleich-fuer-freelancer/</guid><description>Immer mehr Konzerne gehen aufgrund der Rechtsunsicherheit im Bezug auf rückwirkende Sozialversicherungspflicht keine Verträge mehr mit Freelancern ein, sondern beschäftigen externe Mitarbeiter nur noch über Arbeitnehmerüberlassung (ANÜ). Hier stelle ich einen Ansatz zur Berechnung eines Gehaltsäquivalents auf Basis eines Stundensatzes vor.</description></item><item><title>Kundenprojekte</title><link>https://michael.hoennig.de/de/projects/</link><pubDate>Sat, 10 Oct 2020 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/projects/</guid><description>Für konkrete Projektangebote erhalten Sie mein vollständiges Profil gerne auf Anfrage.</description></item><item><title>Impressum</title><link>https://michael.hoennig.de/de/imprint/</link><pubDate>Sun, 29 Apr 2018 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/imprint/</guid><description>Michael Hönnig Bürgermeister-Bolt-Straße 50 D-26424 Hage</description></item><item><title>agil skalieren nach Maß</title><link>https://michael.hoennig.de/de/blog/2014/2014-05-20-agil-skalieren-nach-mass/</link><pubDate>Tue, 20 May 2014 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2014/2014-05-20-agil-skalieren-nach-mass/</guid><description>Projekte mit bis zu 400 Software-Entwicklern oder gar ganze Unternehmen agil zu führen, das könne nur mit gut durchdachten Organisationsframeworks wie z.B. SAFe [1] gelingen. Dies mag für ängstliche Organisationen durchaus ein gangbarer Weg sein, doch für mutige und innovative Organisationen hat uns Stefan Rook, Berater und Geschäftsführer unseres Gastgebers it-agile [2], aufgezeigt, wie es auch ganz alleine mit agilen …</description></item><item><title>Der Fall #Facebook/#WhatsApp und wie ein sicherer Messenger aussähe</title><link>https://michael.hoennig.de/de/blog/2014/2014-02-21-sichere-messenger-apps/</link><pubDate>Fri, 21 Feb 2014 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/de/blog/2014/2014-02-21-sichere-messenger-apps/</guid><description>Da kauft Facebook WhatsApp und viele wechseln zum angeblich sicheren Threema. Doch ist Threema wirklich sicherer? Und wie sähe ein wirklich sicher Messenger aus?</description></item><item><title>SEMAT (Software Engineering Method and Theory)</title><link>https://michael.hoennig.de/de/blog/2013/2013-08-21-semat/</link><pubDate>Wed, 21 Aug 2013 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2013/2013-08-21-semat/</guid><description>Kurzbericht von einem Abendvortrag bei OOSE zu Praktiken, Mustern und Methoden zur Analyse, zum Vergleich, zur Lehre sowie wissenschaftlichen Untersuchung des Software-Engineerings.</description></item><item><title>Oracle SQL Developer und Datums-Spalten mit Uhrzeit-Darstellung</title><link>https://michael.hoennig.de/de/blog/2013/2013-05-10-oracle-sql-developer-und-datums-spalten-mit-uhrzeit-darstellung/</link><pubDate>Fri, 10 May 2013 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2013/2013-05-10-oracle-sql-developer-und-datums-spalten-mit-uhrzeit-darstellung/</guid><description>Wie man im Oracle SQL Developer DATE Spalten mit Uhrzeit anzeigen kann.</description></item><item><title>Tücken der Bean Validation (JSR#303) in JPA 2.0</title><link>https://michael.hoennig.de/de/blog/2013/2013-05-08-bean-validation-in-jpa2-0/</link><pubDate>Wed, 08 May 2013 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2013/2013-05-08-bean-validation-in-jpa2-0/</guid><description>Über einen kleinen aber wesentlichen Unterschied zwischen &lt;em&gt;Hibernate&lt;/em&gt; und &lt;em&gt;EclipseLink&lt;/em&gt; bei der Validierung neuer Entitäten.</description></item><item><title>Wie Akzeptanzkritieren beim Schätzen helfen</title><link>https://michael.hoennig.de/de/blog/2011/2011-07-28-wie-akzeptanzkritieren-beim-schatzen-helfen/</link><pubDate>Thu, 28 Jul 2011 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2011/2011-07-28-wie-akzeptanzkritieren-beim-schatzen-helfen/</guid><description>Eine übliche Situation für einen Software-Entwickler: Es sollen drei Felder in ein Formular eingebaut werden. So etwas kann doch nicht lange dauern! Drei Felder, das schreibt man doch eben mal zwischendurch hin! Länger als 20min darf man für so etwas doch als Entwickler nicht brauchen, oder?</description></item><item><title>Stellenanzeige, wenn Ärzte Software-Entwickler wären</title><link>https://michael.hoennig.de/de/blog/2011/2011-07-18-stellenanzeige-wenn-arzte-software-entwickler-waren/</link><pubDate>Mon, 18 Jul 2011 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2011/2011-07-18-stellenanzeige-wenn-arzte-software-entwickler-waren/</guid><description>Da ich für ab Mitte August ein neues Projekt suche, studiere ich wieder intensiv Projekt- und Stellenangebote. Viele Projekt- und Stellenangebote lesen sich dabei, würde man sie auf eine Arztstelle übertragen in etwa so:</description></item><item><title>4.-6. April: TDD Workshop und advanced TDD Seminar in Hamburg</title><link>https://michael.hoennig.de/de/blog/2011/2011-02-16-4-6-april-tdd-workshop-und-advanced-tdd-seminar-in-hamburg/</link><pubDate>Wed, 16 Feb 2011 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/de/blog/2011/2011-02-16-4-6-april-tdd-workshop-und-advanced-tdd-seminar-in-hamburg/</guid><description>Anfang April findet in Hamburg ein eintägiger Workshop zu TDD unter meiner Moderation und im Anschluss ein zweitägiges Seminar advanced TDD mit Johannes Link (u.a. Autor von &amp;ldquo;Softwaretests mit JUnit&amp;rdquo;) statt.</description></item><item><title>HTTP Proxy durch einen Reverse SSH Tunnel</title><link>https://michael.hoennig.de/de/blog/2010/2010-08-19-http-proxy-durch-einen-reverse-ssh-tunnel/</link><pubDate>Thu, 19 Aug 2010 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2010/2010-08-19-http-proxy-durch-einen-reverse-ssh-tunnel/</guid><description>Ich stand gerade vor dem Problem, von einem (virtualisierten) Linux System (hiddenhost) aus, HTTP im Internet nutzen zu müssen, obwohl von diesem System aus kein Verbindungsaufba nach außen möglich ist, sehr wohl allerdings eine Intranet-SSH-Verbindung zu diesem System. Doch auch dieses Problem hat eine Lösung:</description></item><item><title>Linux trotz grub Fehlermeldung "kernel must be loaded before booting" manuell booten</title><link>https://michael.hoennig.de/de/blog/2010/2010-07-19-linux-trotz-grub-fehlermeldung-kernel-must-be-loaded-before-booting-manuell-booten/</link><pubDate>Mon, 19 Jul 2010 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2010/2010-07-19-linux-trotz-grub-fehlermeldung-kernel-must-be-loaded-before-booting-manuell-booten/</guid><description>Wenn man einen Datenträger nicht auf einem anderen als dem Zielsystem bootfähig gemacht hat, passiert es oft, dass beim booten auf dem Zielsystem die folgende Fehlermeldung erscheint: kernel must be loaded before booting.</description></item><item><title>Mutationstests für JUnit-Tests</title><link>https://michael.hoennig.de/de/blog/2010/2010-05-23-mutationstests-fur-junit-tests/</link><pubDate>Sun, 23 May 2010 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2010/2010-05-23-mutationstests-fur-junit-tests/</guid><description>Unit-Tests sind in den meisten Java-Projekten schon selbstverständlich. Doch womit testet man eigentlich seine Unit-Tests? Die Code-Coverage alleine ist kein guter Maßstab, besagt diese doch noch nichts über die Wahrscheinlichkeit aus, mit der fehlerhafte Ergebnisse erkannt werden. Sollen doch sogar schon Unit-Tests ganz ohne Asserts geschrieben worden sein! Die Unzulänglichkeit von Unit-Tests kann mit so genannten Mutationstests aufgedeckt werden. Einige …</description></item><item><title>(Linux) sudo: unable to change to runas uid: Resource temporarily unavailable</title><link>https://michael.hoennig.de/de/blog/2010/2010-04-28-linux-sudo-unable-to-change-to-runas-uid-resource-temporarily-unavailable/</link><pubDate>Wed, 28 Apr 2010 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2010/2010-04-28-linux-sudo-unable-to-change-to-runas-uid-resource-temporarily-unavailable/</guid><description>Auf einem Kundenserver hatte ich vor kurzem das Problem, kein sudo zum User postgres machen zu können.</description></item><item><title>JSF: java.lang.IllegalArgumentException: "" at UIComponentBase.findComponent()</title><link>https://michael.hoennig.de/de/blog/2010/2010-04-27-jsf-java-lang-illegalargumentexception-at-uicomponentbase-findcomponent/</link><pubDate>Tue, 27 Apr 2010 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2010/2010-04-27-jsf-java-lang-illegalargumentexception-at-uicomponentbase-findcomponent/</guid><description>Nachdem ich einen XHTML Codeblock von einer Seite auf eine andere verschoben hatte, gab es plötzlich die folgende Exception in meiner JSF (MyFaces+Tomahawk+RichFaces) Anwendung:</description></item><item><title>Linux: Serielle Schnittstelle durch TCP tunneln</title><link>https://michael.hoennig.de/de/blog/2010/2010-01-25-linux-serielle-schnittstelle-durch-tcp-tunneln/</link><pubDate>Mon, 25 Jan 2010 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/de/blog/2010/2010-01-25-linux-serielle-schnittstelle-durch-tcp-tunneln/</guid><description>Das UNIX-Programm socat ist ein mächtiges Werkzeug, mit dem Daten zwischen verschiedensten Protokollen umgesetzt werden können. In diesem Beispiel, um zwei serielle Schnittstelle über einen TCP-Tunnel zu verbinden.</description></item><item><title>mathematischer Funktions-Parser mit BeanShell</title><link>https://michael.hoennig.de/de/blog/2009/2009-11-17-mathematischer-funktions-parser-mit-beanshell/</link><pubDate>Tue, 17 Nov 2009 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-11-17-mathematischer-funktions-parser-mit-beanshell/</guid><description>Oft kommt man in Projekten in die Verlegenheit, Benutzer-definierte mathematische Funktionen zu berechnen, z.B. für einen Funktionsplotter. Solches lässt sich ohne große Umstände mit BeanShell erledigen:</description></item><item><title>Java Swing: Fensterhintergrund blinken</title><link>https://michael.hoennig.de/de/blog/2009/2009-11-11-java-swing-fensterhintergrund-blinken/</link><pubDate>Wed, 11 Nov 2009 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-11-11-java-swing-fensterhintergrund-blinken/</guid><description>Zur Visualisierung von Ereignissen, z.B. Warnungen - oder in meinem aktuellen Projekt zur Anzeige eines sich wiederholenden, zeitgesteuerten Ereignisses - kann man den Hintergrund von Java-Swing Fenstern ganz einfach kurz aufblinken lassen:</description></item><item><title>Wachstums­beschleunigungsgesetz</title><link>https://michael.hoennig.de/de/blog/2009/2009-11-09-wachstumsbeschleunigungsgesetz/</link><pubDate>Mon, 09 Nov 2009 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-11-09-wachstumsbeschleunigungsgesetz/</guid><description>Unsere neue Bundesregierung bringt ein Wachstumsbeschleunigungsgesetz auf den Weg, das im Kern aus Steuererleichterungen besteht.</description></item><item><title>Gedanken zur Geldtheorie und zum Gleichgewichtszinsniveau</title><link>https://michael.hoennig.de/de/blog/2009/2009-09-30-gedanken-zur-geldtheorie-und-zum-gleichgewichtszinsniveau/</link><pubDate>Wed, 30 Sep 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-09-30-gedanken-zur-geldtheorie-und-zum-gleichgewichtszinsniveau/</guid><description>Unter Systemkritik versteht man meist die kommunistische, die also das System „Marktwirtschaft“ kritisiert. In diesem Text möchte ich mit einigen lose zusammenhängenden Gedanken aufzeigen, an welcher Stelle unser System gerade nicht Marktwirtschaftlich ist, und eben durch eine fehlende Marktfreiheit unsoziale Tendenzen hat.</description></item><item><title>Buchempfehlung und -Rezension: Clean Code von Robert C. Martin</title><link>https://michael.hoennig.de/de/blog/2009/2009-09-03-buchempfehlung-und-rezension-clean-code-von-robert-c-martin/</link><pubDate>Thu, 03 Sep 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-09-03-buchempfehlung-und-rezension-clean-code-von-robert-c-martin/</guid><description>Meiner Meinung nach sollte das Buch Pflichtlektüre eines jeden Programmierers sein, gleich nachdem man Programmieren an sich gelernt hat! Aber auch für erfahrene Programmierer bietet das Buch eine gute Zusammenfassung vieler Prinzipien und Praktiken, teils als Erinnerung, teils als neue Einsichten. Sicherlich ist es nicht nur produktiver, sonst macht auch viel mehr Spaß, mit Kollegen zusammen zu arbeiten, die dieses …</description></item><item><title>Java in Echtzeitsystemen</title><link>https://michael.hoennig.de/de/blog/2009/2009-08-24-java-und-echtzeitsysteme/</link><pubDate>Mon, 24 Aug 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-08-24-java-und-echtzeitsysteme/</guid><description>Ein Echtzeitsystem garantiert, innerhalb einer definierten Zeit auf Signale oder Zustandswechsel zu reagieren. Ob diese Maximalzeit nun Mikrosekunden, Millisekunden, Sekunden oder gar Minuten sind, ist irrelevant. Doch kann man in Java-Programmen eine solche Maximalzeit garantieren?</description></item><item><title>Absoluter Nanosekunden-Zeitstempel in Java</title><link>https://michael.hoennig.de/de/blog/2009/2009-08-21-absoluter-nanosekunden-zeitstempel-in-java/</link><pubDate>Fri, 21 Aug 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-08-21-absoluter-nanosekunden-zeitstempel-in-java/</guid><description>Während meiner aktuellen Arbeit an einem Programm mit weichen Realtime-Bedingungen (soft real-time system) kam ich in die Verlegenheit, wissen zu müssen, wie viel Zeit zwischen dem Auftreten eines Interrupts in einem Linux-Kernel-Modul und seiner Verarbeitung im Java-Programm vergangen ist, weil das Ergebnis eines Zyklus, der über 200ms benötigte, verworfen werden müssen. Java bietet aber nur einen absoluten Zeitstempel in Millisekunden …</description></item><item><title>Meine Top-Eclipse-Plugins</title><link>https://michael.hoennig.de/de/blog/2009/2009-08-15-meine-top-eclipse-plugins/</link><pubDate>Sat, 15 Aug 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-08-15-meine-top-eclipse-plugins/</guid><description>Gerade bin ich dabei das Eclipse auf meinem derzeit recht selten verwendete Homeoffice-Computer auf Galileo (Eclipse 3.5) zu bringen. Da das Upgrade eines solchen Versionssprung wohl erst ab der 3.5 auf höhere Versionen gehen soll, fällt also mal wieder das Nachinstallieren aller Plugins an. Einige davon hatte ich in anderen Blog-Artikeln erwähnt, doch hier mal alle aktuellen Lieblings-Plugins zusammen:</description></item><item><title>Maven: Versionsnummer aus pom.xml und Build-Zeitstempel mit Java auslesen</title><link>https://michael.hoennig.de/de/blog/2009/2009-08-12-maven-versionsnummer-aus-pom-xml-und-build-zeitstempel-mit-java-auslesen/</link><pubDate>Wed, 12 Aug 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-08-12-maven-versionsnummer-aus-pom-xml-und-build-zeitstempel-mit-java-auslesen/</guid><description>Bei Verwendung von Maven ist die Ziel-Versionsnummer des eigenen Programms in der pom.xml festgelegt. Selbstverständlich kann man auch aus dem Programm heraus mit Java darauf zugreifen, denn Maven erzeugt eine pom.properties Datei unterhalb von META-INF, in der u.a. die Versionsnummer und der Zeitstempel des Build steht:</description></item><item><title>Performance: Viele kurze Methoden vs. wenige lange Methoden</title><link>https://michael.hoennig.de/de/blog/2009/2009-08-11-performance-viele-kurze-methoden-vs-wenige-lange-methoden/</link><pubDate>Tue, 11 Aug 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-08-11-performance-viele-kurze-methoden-vs-wenige-lange-methoden/</guid><description>Viele Experten empfehlen, besser viele kurze Methoden zu programmieren als wenige lange Methoden. Dieselbe Regel kann auch aus anderen Empfehlungen abgeleitet werden. So führen z..B das Prinzip One level of abstraction und das Single Responsibility Principle zu kurzen Methoden. Und auch die Empfehlung, dass die im Quellcode verwendeten Bezeichner, also auch Methodennamen, ihr Subjekt ausreichend dokumentieren sollten, läuft auf kurze …</description></item><item><title>Der Nokia-Test: Scrum oder nicht Scrum?</title><link>https://michael.hoennig.de/de/blog/2009/2009-08-09-der-nokia-test-scrum-oder-nicht-scrum/</link><pubDate>Sun, 09 Aug 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-08-09-der-nokia-test-scrum-oder-nicht-scrum/</guid><description>Scrum ist ein agiles Projektmanagement-System in dessen Zentrum der mit der eingesetzten Arbeitsleistung geschaffene Geschäftswert steht. Sicherlich sind auch einzelne Elemente aus Scrum oft hilfreich, doch so nützlich eine Klingel und eine Handbremse sein mögen, machen selbst eine Klingel und eine Handbremse zusammen noch kein Fahrrad. Um festzustellen, ob ein Team wirklich nach Scrum arbeitet oder nicht, gibt es den …</description></item><item><title>Clean Code Developer (CCD)</title><link>https://michael.hoennig.de/de/blog/2009/2009-08-08-clean-code-developer-ccd/</link><pubDate>Sat, 08 Aug 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-08-08-clean-code-developer-ccd/</guid><description>Clean Code Developer (CCD) ist eine Initiative, die es sich zum Ziel gesetzt hat, Prinzipien und Praktiken aufzustellen, die zu besserer Software führen sollen. Die beiden Initiatoren kommen aus der .NET Welt kommen. Die CCD Initiative öffnet sich jedoch immer mehr, und die Prinzipien und Praktiken sind auch zumindest für alle objektorientierten Programmiersprachen gültig. Lediglich die Tools sind logischerweise weitestgehend …</description></item><item><title>Einzel-Pin-Steuerung der parallelen Schnittstelle mit Java</title><link>https://michael.hoennig.de/de/blog/2009/2009-07-28-einzel-pin-steuerung-der-parallelen-schnittstelle-mit-java/</link><pubDate>Tue, 28 Jul 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-07-28-einzel-pin-steuerung-der-parallelen-schnittstelle-mit-java/</guid><description>Um es gleich vorweg zu sagen: Einzel-Pin-Steuerung in Java ist nicht sinnvoll möglich, da solche Funktionalität in einen Betriebssystem-Kernel gehört. Auf vielen modernen Betriebssystemen ist ein solcher Zugriff auch gar möglich bzw. spätestens das Interrupt-Handling dem Kernel vorbehalten. Der Lösungsweg soll daher auch genau auf diesem Wege erfolgen, also in Form eines Character-Device-Treibers für Linux 2.6.x. Dieser wird dann von …</description></item><item><title>Unit-Tests mit Mockito Mocks</title><link>https://michael.hoennig.de/de/blog/2009/2009-07-28-unit-tests-mit-mockito-mocks/</link><pubDate>Tue, 28 Jul 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-07-28-unit-tests-mit-mockito-mocks/</guid><description>In Unit-Tests werden immer wieder sogenannte Mock-Objekte benötigt, um zum vereinfachte Versionen der Objekte zu haben, mit dem der Test-Kandidat kommuniziert. Diese müssen aber zum einen sinnvoll auf Methoden-Aufrufe reagieren, so dass der Test-Kandidat überhaupt funktionieren kann. Und zum anderen muss teilweise geprüft werden, ob der Test-Kandidat an diesen Objekten bestimmte Methoden mit bestimmten Parametern gerufen hat.</description></item><item><title>Wenn Jemmy bei clickMouse() in invokeAndWait() hängt</title><link>https://michael.hoennig.de/de/blog/2009/2009-07-28-wenn-jemmy-bei-clickmouse-in-invokeandwait-hangt/</link><pubDate>Tue, 28 Jul 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-07-28-wenn-jemmy-bei-clickmouse-in-invokeandwait-hangt/</guid><description>Jemmy ist ein hervorragendes Werkzeug zur Unterstützung von Unit-Tests von Swing-basierten-Anwendungen. Doch durch einen neuen Test, hing ein zuvor durchlaufender Testfall plötzlich tief unter JButtonOperator.clickMouse(), genau genommen in Queue.invokeAndWait().</description></item><item><title>Aktuellen Stack-Frame ermitteln</title><link>https://michael.hoennig.de/de/blog/2009/2009-07-22-aktuellen-stack-frame-ermitteln/</link><pubDate>Wed, 22 Jul 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-07-22-aktuellen-stack-frame-ermitteln/</guid><description>Der aktuelle Stacktrace kann in Java ganz einfach mit Thread.currentThread().getStackTrace(); ermittelt werden. Doch darin enthalten ist dann auch die Methode getStackTrace() selbst.</description></item><item><title>UNIX Tools (grep, diff etc.) in Java</title><link>https://michael.hoennig.de/de/blog/2009/2009-07-22-unix-tools-grep-diff-etc-in-java/</link><pubDate>Wed, 22 Jul 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-07-22-unix-tools-grep-diff-etc-in-java/</guid><description>Wer Perl- und bash-Scripte nach Java umschreiben soll, hat sich sicherlich dabei eine in Java implementierte Sammlung von UNIX-Tools wie grep, diff etc. gewünscht. Fündig wird man unter &lt;a href="https://www.java2s.com" target="_blank" rel="noreferrer"&gt;www.java2s.com&lt;/a&gt;.</description></item><item><title>Magisches Programmende beim Debuggen von Java Threads mit Eclipse</title><link>https://michael.hoennig.de/de/blog/2009/2009-07-21-magisches-programmende-beim-debuggen-von-java-threads-mit-eclipse/</link><pubDate>Tue, 21 Jul 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-07-21-magisches-programmende-beim-debuggen-von-java-threads-mit-eclipse/</guid><description>Gerade traf mich beim Debuggen ein seltsames Verhalten meines Java-Programms unter Eclipse. Die Anwendung ist multithreaded und der wichtigste Thread wurde trotz Breakpoint auf erster Zeile in der run()-Methode oft gar nicht erst betreten, bzw. die Anwendung terminierte während Eclipse auf dieser Zeile angehalten hatte. Kein System.exit() meiner Anwendung wurde dabei durchlaufen.</description></item><item><title>Code-Coverage von JUnit Tests mit Eclipse und Maven</title><link>https://michael.hoennig.de/de/blog/2009/2009-07-15-code-coverage-von-junit-tests-mit-eclipse-und-maven/</link><pubDate>Wed, 15 Jul 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-07-15-code-coverage-von-junit-tests-mit-eclipse-und-maven/</guid><description>Meistens benutze ich für die Messung der Code-Coverage von Tests EclEMMA, da dieses als Eclipse-Plugin die Code-Coverage direkt in Eclipse anzeigt.</description></item><item><title>Europäische Zentralbank pumpt 440 Mrd. Euro in die Märkte</title><link>https://michael.hoennig.de/de/blog/2009/2009-06-26-europaische-zentralbank-pumpt-440-mrd-euro-in-die-markte/</link><pubDate>Fri, 26 Jun 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-06-26-europaische-zentralbank-pumpt-440-mrd-euro-in-die-markte/</guid><description>Wie der Spiegel am 24. Juni berichtete pumpt die Europäische Zentralbank mehr als 440 Milliarden Euro in den Markt. Und zwar für 1% Zinsen und Laufzeiten bis zu einem Jahr. Trotzdem geben die Finanzinstitute kaum Kredite an Firmen weiter. Kann ein Zins von 1% noch zu hoch sein?</description></item><item><title>ursprüngliche Ursache von Exceptions</title><link>https://michael.hoennig.de/de/blog/2009/2009-06-18-ursprungliche-ursache-von-exceptions/</link><pubDate>Thu, 18 Jun 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-06-18-ursprungliche-ursache-von-exceptions/</guid><description>Fast täglich, meist beim Debuggen, aber auch für Logfiles, muss ein Java-Entwickler die ursprüngliche Ursache einer Exception herausfinden. So nützt einem die Meldung Can&amp;rsquo;t commit because the transaction is in aborted state, die ein Applikationsserver z.B. nach der Verletzung eines Datenbank-Constraints liefern würde, recht wenig, doch das tief darin verborgene SQLSTATE[23505] ERROR: duplicate key violates unique constraint &amp;hellip; gibt schon …</description></item><item><title>Was bedeuten 0% Inflation?</title><link>https://michael.hoennig.de/de/blog/2009/2009-05-27-was-0-inflation-bedeutet/</link><pubDate>Wed, 27 May 2009 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2009/2009-05-27-was-0-inflation-bedeutet/</guid><description>Wie Spiegel.de berichtet, sank die Inflationsrate im Mai 2009 auf 0%. D.h. zum einen, im Schnitt bleiben die Preise stabil. Doch was die wenigsten bedenken, bedeutet es auch, dass der Realzinssatz auf Geldbasis (Bargeld und Guthaben bei der EZB) damit ebenfalls 0% beträgt - und das wiederum hat unangenehme Auswirkungen.</description></item><item><title>JSF Controller ohne getter/setter</title><link>https://michael.hoennig.de/de/blog/2008/2008-08-07-jsf-controller-ohne-gettersetter/</link><pubDate>Thu, 07 Aug 2008 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2008/2008-08-07-jsf-controller-ohne-gettersetter/</guid><description>Die JavaBeans Spezifikation erlaubt public Member-Variable direkt als Properties zu verwenden, oder eben alternativ public getter/setter Methoden. Die JSF EL (JavaServer Faces Expression Language) aber akzeptiert ausschließlich getter/setter Methoden. Getter/setter Methoden werden jedoch zunehmend als Anti-Pattern gesehen, eine Diskussion hierzu findet sich im Blog von Adam Bien.</description></item><item><title>generierte Webservice-Klassen im Client Serializable machen</title><link>https://michael.hoennig.de/de/blog/2008/2008-07-16-generierte-webservice-klassen-im-client-serializable-machen/</link><pubDate>Wed, 16 Jul 2008 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2008/2008-07-16-generierte-webservice-klassen-im-client-serializable-machen/</guid><description>Mein laufendes Projekt ist ein Client für vorgegebene Webservices. Aus der WSDL-Datei werden durch eine Konfiguration in der pom.xml über das wsimport Kommando des Maven2-Plugins org.codehaus.mojo:jaxws-maven-plugin mit xjc Java-Klassen generiert. Nun ergab sich die Notwendigkeit, diese Klassen Serializable zu machen. Nach einer kurzen Recherche kam ich auf die folgende Lösung:</description></item><item><title>Resource-Bundles automatisch von UTF-8 nach Quoted-ASCII konvertieren</title><link>https://michael.hoennig.de/de/blog/2008/2008-07-02-resource-bundles-automatisch-von-utf-8-nach-quoted-ascii-konvertieren/</link><pubDate>Wed, 02 Jul 2008 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2008/2008-07-02-resource-bundles-automatisch-von-utf-8-nach-quoted-ascii-konvertieren/</guid><description>Java Resource-Bundles (i.d.R. .properties) müssen in ISO-8859-1 bzw. Quoted-ASCII erstellt sein. XML- und Java-Dateien dahin gegen hält man heute meist in UTF-8. In einem Projekt, in dem jeder Entwickler mit einer grafischen Entwicklungsumgebung arbeitet, die man so konfigurieren kann, dass jeweils der richtige Zeichensatz verwendet wird, ist das kein Problem.</description></item><item><title>JSF mit Spring Webflow: Buttons ohne Funktion</title><link>https://michael.hoennig.de/de/blog/2008/2008-06-28-jsf-mit-spring-webflow-buttons-ohne-funktion/</link><pubDate>Sat, 28 Jun 2008 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/de/blog/2008/2008-06-28-jsf-mit-spring-webflow-buttons-ohne-funktion/</guid><description>Vor einigen Tagen bemerkte ich in einer neuen Applikation mit JSF und Spring Webflow, dass die Umlaute in den Formularen falsch übertragen wurden. Bei reinen JSF-Applikationen hatte ich dahingegen mit der Kodierung noch nie Probleme.</description></item></channel></rss>