Wann ist modellgetriebene Softwareentwicklung sinnvoll?

In diesem Artikel soll nach einer Einführung in das Thema der in Entwicklerkreisen etwas verrufenen modellgetriebenen Softwareentwicklung das Entwicklungsverfahren allgemein evaluiert werden.

Continue reading

Posted in MDSD | Tagged , , , , , , , | Leave a comment

Industrie 4.0 und cyberphysische Systeme

In diesem Artikel soll es um das Thema der Industrie 4.0 gehen. Es wird geklärt, worum es bei diesem Thema im Kern geht und warum es für Industrieunternehmen relevant ist, sich damit zu beschäftigten.

Im Laufe der Zeit gab es mehrere industrielle Revolutionen. Die erste begann im 18. Jahrhundert mit der Dampfmaschine. Anschließend folgte die Mechanisierung, welche ein weiteres Mal sämtliche industrielle Produktionsprozesse grundlegend veränderte und einen großen Einfluss auf das Leben der Menschen hatte. Die dritte Revolution fand statt, als elektronische Hilfsmittel und Datenverarbeitungssysteme im Zuge der Digitalisierung ihren Weg in die Produktion verwendet wurden.

Continue reading

Posted in Did you know? | Tagged , , , | Leave a comment

Aktorenmodell und Akka – Teil 3/3

Nachdem es im ersten Artikel dieser dreiteiligen Serie eine Einführung in das Aktorenmodell gab und der zweite Artikel eine genauere Einführung in Akka beinhaltet hat, geht es in diesem dritten Artikel um die Verwendung von Akka in Rechnerclustern.

Akka im Cluster

Hierfür werden die folgenden Dependencies für die Akka-Aktoren und für die Clusterfunktionalität benötigt:
Continue reading

Posted in Java Runtimes - VM, Appserver & Cloud | Tagged , , , , , | Leave a comment

Gradle 3.4

Mittlerweile ist es bereits 2 Wochen her, dass Gradle 3.4 veröffentlicht wurde. Es ist also höhste Zeit, sich mal die neuen Änderungen anzuschauen, insbesondere da diese viele Verbesserungen für lang laufende Builds enthalten.

Der inkrementelle Compiler wurde weiter verbessert und vom Gradle-Team für die produktive Benutzung freigegeben. Insbesondere für CI Server, wo bisher ein kompletter Build empfohlen war, kann dieses Feature nun benutzt werden, um Wartezeiten zu reduzieren. Gerade bei Multi-Module Builds kann durch das neue Feature der Compile Avoidance erheblich Zeit gespart werden. Hierbei wird analysiert, ob das ABI (Application Binary Interface) identisch ist, und sofern dieses zutrifft werden abhängige Module nicht neu kompiliert. Dieses trifft z. B. auf Namen von nicht public Methoden, Kommentare, private Felder und innere Klassen, sowie die Benennung von Jar-Dateien zu. Um Compile Avoidance für eigene Tasks zu verwenden, gibt es die neue Annotation @CompileClasspath, mit der ausgedrückt wird, dass ein Task nur laufen muss, wenn sich der Class Path geändert hat.

Meine persönliche Empfehlung ist, einmal am Tag einen kompletten Build-Vorgang durchzuführen, idealerweise mit komplett gelöschtem Workspace und gelöschten .gradle Caches. Somit wird sichergestellt, dass das jeweilige Projekt jederzeit unabhängig von der verwendeten Umgebung neu kompiliert werden kann und dass alle externen Abhängigkeiten weiterhin auflösbar sind.

Zudem neu hinzugekommen ist das JavaLibrary Plugin, welches darauf ausgelegt ist, eine bessere Abbildung von Java-Libraries in Gradle hinzubekommen. Im Wesentlichen fügt es bei den Dependencies die beiden Konfigurationen api und implementation hinzu, hiermit wird verhindert, dass implementation Abhängigkeiten in nachfolgenden Projekten gesehen werden. Bei dem normalen Java Plugin sind Abhängigkeiten in der compile-Konfiguration auch bei nachfolgenden Projekten im Class Path auffindbar. Dies ermöglicht zudem ein schnelleres Kompilieren, weil der Class Path erheblich reduziert wird. Hiermit wird weiterhin die Trennung zwischen runtime und compiletime verbessert, und im Zusammenhang mit dem neuen maven-publish Plugin werden auch pom’s generiert, die dies entsprechend ausdrücken.

Zudem gibt es noch eine Menge kleinerer Bugfixes und Änderungen, eine komplette Liste auf Englisch ist hier zu sehen. Alleine wegen des schnelleren Kompilierens empfehle ich jedem, einmal kurz zu evaluieren, ob ein Gradle Update möglich ist.

Posted in Build, config and deploy | Tagged , , , | Leave a comment

Java EE 8 soll Juli 2017 erscheinen

Java EE 8 wird laut Oracle voraussichtlich im Juli 2017 den Final Release Stand erreichen. Dies gab Specification Lead Linda DeMichiel letzte Woche auf der Java-EE Mailingliste bekannt. Damit würde die neue Spezifikation parallel zu Java 9 erscheinen. Ursprünglich bereits für Ende letzten Jahres geplant, wird Java EE 8 somit etwa acht Monate später fertig sein, nachdem mehrmals Verzögerungen angekündigt wurden.

Bei der neuen Enterprise Edition wird es sich um eine abgespeckte Version handeln, die letztendlich folgende neuen Features enthalten soll:

Wie seit einiger Zeit bekannt, haben es die Spezifikationen Management API 2.0, JMS 2.1 und MVC 1.0 nicht in die Java EE 8 geschafft.

Die fehlenden Spezifikationen sollen mit der Java EE 9 nachgezogen werden, die bereits im Jahr 2019 erscheinen soll.

Posted in Java EE | Tagged , , | Leave a comment

Was machen eigentlich Groovy und Grails?

In den letzten Jahren ist es ruhiger um Groovy und Grails geworden. Die Gründe dafür sind vielfältig. Einerseits sind beide Projekte mittlerweile über 10 Jahre alt. Die Welt ist aber nicht stehen geblieben und andere interessante Sprachen und Frameworks haben die Aufmerksamkeit in Fachmagazinen oder auf Konferenzen auf sich gelenkt. Hinzu kam eine scheinbar fehlende Mainstream-Tauglichkeit im Falle von Groovy (Stichwort dynamische Typisierung), wodurch ein Großteil der Java-Entwickler letztlich abgeschreckt wurde. Die vielen Vorteile von Groovy und Grails gingen da leider unter.

Vor zwei Jahren gab es zudem einen größeren Einschnitt, bei dem das Fortbestehen beider Projekte sogar auf der Kippe stand. Die bisherige Mutter Pivotal hatte im Januar 2015 angekündigt, sowohl Groovy als auch Grails nicht mehr zu unterstützen. Viele haben sich damals gefragt, wie und ob es überhaupt weitergeht. Dem Team rund um Groovy wurden zudem durch die Schließung der Codehaus-Plattform weitere Steine in den Weg gelegt. Aber dank einer starken Community und einer gewissen Reife haben sich beide Projekte durch diese Probleme nicht entmutigen lassen und konnten letztlich sogar gestärkt aus der Situation hervorgehen.
Continue reading

Posted in Groovy and Grails | Tagged , , , , , | 1 Comment

Guava 21 erschienen – Im Zeichen von Java 8

Googles beliebte Bibliothek Guava ist in Version 21.0 erschienen. Hauptaspekt dieses Releases sind Anpassungen für Java 8, insbesondere dessen Lambdas & Streams API.

Auszug der Neuerungen

  • Guavas Function, Predicate und Supplier Interfaces erweitern jetzt die gleichnamigen FunctionalInterfaces aus Java 8.
  • Die neuen Hilfsklassen Streams und MoreCollectors erleichtern den Umgang mit der Stream API.
  • Die Klasse Comparators baut auf Javas Comparator Interface (insbesondere auf den neuen Methoden aus Java 8) auf und ersetzt Guavas Ordering Klasse.

Kompatibilität

Zitat aus den Release Notes:

Important: Guava 21.0 requires Java 8. If you need Java 6, 7 or Android compatibility, use Guava 20.0 for now. Guava 22.0 and on will introduce a Java 6/Android compatible backport of Guava that includes all of the latest changes that don’t require Java 8.

Die vollständigen Release Notes sind hier zu finden.

Posted in Did you know?, Java and Quality | Tagged , , | Leave a comment