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 , , , , , | Leave a 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

Docker Secrets – Passwörter in Containern

Passwörter und Docker, das war bisher eine eher schwierige Geschichte. Eigentlich sollten diese weder im Source Code, noch im Dockerfile direkt angeben werden. Klar, sie sind dort lesbar abgelegt. Doch wie dann?

Seit Docker 1.13 unterstützt der Docker Swarm Mode sogenannte Secrets. Was sind Secrets? Vereinfacht gesagt, Binärblobs, die von Docker auf dem Raft Log gespeichert werden.
Continue reading

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

Aktorenmodell und Akka – Teil 2/3

Dies ist der zweite Teil einer dreiteiligen Artikelserie zum Aktorenmodell und Akka. Während im ersten Teil eine grundlegende Einführung in das Aktorenmodell gegeben wurde, behandelt dieser zweite Artikel die Einführung in Akka allgemein, sowie einige Codebeispiele mit Akka in Java. Im dritten Artikel wird es um das Clustering mit Akka gehen.

Akka

Akka ist ein Opensource Toolkit für die JVM und stellt eine Implementierung des Aktorenmodells dar. Es ist komplett in Scala geschrieben und ein Versuch, Features aus der Programmiersprache Erlang in die JVM-Umgebung zu bringen. Seit Scala 2.10 ist Akka auch in der Scala-Standardbibliothek enthalten. Außerdem ist Akka Teil der reaktiven Lightbend Plattform. Natürlich kann man mit Akka eine verteilte Anwendung nach dem Aktorenmodell mit begrenztem Aufwand auf mehrere Maschinen skalieren.

Ein interessanter Fakt ist, dass das kürzlich auf diesem Blog vorgestellte Apache Spark auf Akka basiert.

Continue reading

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

Java Code Qualität verbessern

Im Bereich der statischen Quellcodeanalyse gibt es einige Tools, welche auf unterschiedlichste Aufgaben spezialisiert sind. Ziele dieser Tools sind, Fehler zu finden, die Lesbarkeit des Codes zu verbessern und die Qualität des Quellcodes allgemein zu erhöhen. Heute werden wir uns einige dieser Tools ansehen.
Nachdem es im letzten Artikel um Findbugs und sinnvolle Alternativen dazu ging, geht es hier um Ergänzungen, welche die Qualität des Programmcodes weiter verbessern können. Dazu werden wir exemplarisch PMD und Checkstyle vorstellen.

Continue reading

Posted in Java and Quality | Tagged , , , , | Leave a comment

Findbugs ist tot, lang lebe Findbugs

Um potenzielle Fehler und Stolperfallen im Programmcode zu identifizieren, gibt es das Tool Findbugs. Es analysiert den Java-Bytecode und findet dabei Codestellen, an welchen potenziell Probleme auftreten können. Beispiele dafür sind inkonsistente equals()-hashCode()-Methoden, unsichere Casts, mögliche Stack Overflows, möglicherweise auftretende, aber nicht beachtete Exceptions, etc.

Continue reading

Posted in Java and Quality | Tagged , , , | 1 Comment

Aktorenmodell und Akka Teil 1/3

Heutzutage ist die Nachfrage nach äußerst skalierbaren, aber trotzdem zuverlässigen und fehlertoleranten Systemen so hoch wie nie.

Daher möchten wir im ersten Teil dieser dreiteiligen Serie eine Einführung in das Aktorenmodell geben. Im zweiten Teil der Serie wird es dann eine Einführung in das Aktorframework Akka geben. Akka ist im Übrigen eine Implementierung des Aktorenmodells auf Basis der JVM, welches mit begrenztem Aufwand das Verteilen einer Anwendung auf mehrere Systeme ermöglicht. Da es nur einen begrenzten Sinn hat, ein verteiltes System auf nur einer Maschine laufen zu lassen, wird der dritte Teil das Clustering mit Akka behandeln.
Continue reading

Posted in Java Runtimes - VM, Appserver & Cloud | Tagged , , , , , , | 1 Comment