OpenShift Pods mittels Java starten

Um in der OpenShift dynamisch neue Kubernetes Objekte zu erzeugen, kann der Java Client für Kubernetes und OpenShift 3 von fabric8.io verwendet werden. Dieser Client nutzt die REST API der Kubernetes/OpenShift Plattform, um verschiedene Aktionen auszuführen.

Wir verwenden den Kubernetes Client beispielsweise, um in der OpenShift neue Pods zu starten und nach der Berechnung diese wieder zu beenden. Wir haben uns ganz bewusst für den Kubernetes und nicht für den OpenShift Client entschieden. So sind wir plattformunabhängig und können auf andere Kubernetes Plattformen wechseln, ohne unsere Implementierung ändern zu müssen (Open-Closed Prinzip).

Beispiel

Zu Beginn erstellen wir einen Kubernetes Client. Dafür wird die Kubernetes URL der Plattform benötigt:

Mit dem Client starten wir jetzt einen neuen Pod:

Damit auf den soeben erstellten Pod zugegriffen werden kann, legen wir jetzt noch ein Service an:

Wenn der Pod nicht mehr benötigt wird, wird zuerst der Service wieder gelöscht:

Und danach den Pod:

Fazit

Der Client ist sehr mächtig. Er bietet die Möglichkeit eine Kubernetes Plattform dynamisch mittels Java zu orchestrieren. Wenn man sich mit Kubernetes auskennt, wird man keine Probleme bei der Anwendung des Java Clients haben.

Versucht es doch einfach selber.

Rest in peace Oracle JRE & JavaFX – long live OpenJDK & OpenJFX

Rest in peace Oracle JRE & JavaFX

September the 25th was not only Release Day of Oracle JDK11, it was also funeral day for Oracle’s JRE and JavaFX. Almost silently, Oracle approached one more step further to remove Java from our desktops. ;-)

So, just before the end of 2018, I think it’s not too late to say:

„Goodbye Oracle’s JRE and JavaFX bundles. It was a pleasure working with you folks.“  

What happened?

Oracle JDK Migration Guide provides some Significant Changes in JDK 11 Release:

Mehr

Zip Slip – Gefahr beim Entpacken von Zipdateien mit Java

Das Security-Team von Snyk hat eine Schwachstelle entdeckt und veröffentlicht, die das Entpacken von Zipdateien mit Java betrifft. Die „Zip Slip“ getaufte Verwundbarkeit sowie Möglichkeiten zur Ausnutzung derselben sind auf der Seite Zip Slip Vulnerability beschrieben.

Betroffen sind vor allem Webanwendungen die es Nutzern erlauben, gepackte Dateien (zip, rar, jar, 7zip etc.) hochzuladenEntwickler solcher Anwendungen sollten unbedingt prüfen ob ihr Code betroffen ist!

Mehr

Local Variable Type Inference in Java 10

Die Local Variable Type Inference ist sicherlich das Feature für das Java 10 bekannt ist – ähnlich wie Generics bei Java 5, oder Lambdas und Streams bei Java 8.

Java 10 ist nun auch schon wieder über einen Monat alt. Höchste Zeit also, um sich das wohl bedeutendste Feature des Releases mal ein wenig näher anzuschauen.Mehr

Embedded Databases – Weniger ist manchmal mehr

In einem Kundenprojekt haben wir uns nach einer Technologie zum lokalen Speichern von Daten umgesehen. Unter anderem haben wir dabei einige Embedded-Speicherlösungen analysiert. Die Ergebnisse unserer Recherche möchten wir in diesem Blogbeitrag aufzeigen.

Mehr

Mapping von Exceptions in Spring Boot

Oftmals müssen unchecked Exceptions aus dem Service-Layer einer Applikation in z.B. entsprechende HTTP-Fehlercodes konvertiert werden. Spring Boot bietet hierfür eine elegante Möglichkeit über die Annotation @ExceptionHandler an.

Beispiel

Es sollen alle ConstraintViolation-Fehler im Zusammenhang mit der Bean Validation API automatisch in 400er HTTP-Responses gemappt werden.

Hierzu erstellt man einfach einen neuen ControllerAdvice mit einer ExceptionHandler-Methode, die das Mapping beschreibt:

Möchte man noch weitere Exceptions mappen, kann man dies einfach durch Hinzufügen weiterer ExceptionHandler-Methoden in der ExceptionMapper-Klasse erreichen.

 

 

Liferay Theme mit nodeJS, Yeoman und Gulp

Seit kurzem können nun Liferay Themes auch mit den bekannten Tools von Frontendentwicklern erstellt werden. Die Community hat ein npm package erstellt, das nun Themes ab Version 6.2  erstellen kann. Zusätzlich muss Gulp und Yeoman installiert werden.

Theme Struktur anlegen mit Yeoman

Liferay Theme Yeoman

Es werden alle benötigten Infos via Yeoman abgefragt. (Version, Templatesprache, Freemarker, Velocity, Autodeploy Ordner, usw.)

Build und Installation via Gulp

Nach erfolgreicher Anlage der Theme Standard Struktur kann das Theme via Gulp auf dem konfigurierten Liferay Server deployed werden.

Liferay Theme Gulp Deployment

Letzeres ist vor allem für einen definierten Staging Prozess für die einzelnen Umgebungen (Development, Test, Integration, Produktion) interessant, da je nach Umgebung das Staging in der generierten liferay-them.json angepasst werden kann.

Fazit

Das Beste beim Erstellen eines Themes via Gulp, Yeoman und NodeJs ist die Build Geschwindigkeit. Diese ist wesentlich schneller als der herkömmliche Buildprozess mittels Maven oder Ant. Jeder Frontendentwickler kann mit den ihm bekannten Tools arbeiten. Weitere bekannte Frontendtools, wie z.B. bower können über die bekannten Wege eingebunden werden. Zusätzliche Präprozessoren, wie z.B. SASS können ebenfalls in den gulp Buildprozess integriert werden.

JDK 8 Massive Open and Online Course: Lambdas and Streams Introduction – Videomaterial auf Youtube

JDK 8 MOOC Lambdas & StreamsNeulich haben einige Kollegen und ich an dem JDK 8 Massive Open and Online Course von Oracle teilgenommen um die neuen Java 8 Sprachfeatures Lambdas und Streams zu verinnerlichen. So wie es aussieht war eine Teilnahme jedoch nur in dem begrenzten Zeitraum möglich. Das Video-Material findet sich jedoch mittlerweile auch auf Youtube.

Zu dem Thema Lambda und Streams sind auch folgende Artikel interessant:

 

Parametrisierte Tests mit JUnit

Vor langer Zeit habe ich einmal nach einer Möglichkeit gesucht JUnit Tests mit Parametern aufzurufen zu können. Damals hatte ich nichts dazu gefunden. Mittlerweile gibt es aber offenbar eine Möglichkeit – wenngleich noch etwas rudimentär (es gibt Erweiterungen für JUnit die da deutlich weiter gehen). Unter folgender URL findet sich ein Beispiel zu Parametrisierten Tests:

https://github.com/junit-team/junit/wiki/Parameterized-tests

Wer einen Test mit allen möglichen Kombinationen der Parameter aufrufen lassen will kann sich JUnit Theories ansehen https://github.com/junit-team/junit4/wiki/Theories (allerdings scheint dies noch experimentell zu sein).

"Java ist raus aus den Kinderschuhen"

Eine Welt ohne Java? – Das ist für doubleSlash-Mitbegründer Oliver Belikan nicht vorstellbar. Ganz im Gegenteil: doubleSlash hat bei der Entwicklung der objektorientierten Programmiersprache selbst einen entscheidenden Anteil geleistet und sich von Anfang an in der Entwicklercommunity engagiert. Die objektorientierte Programmiersprache ist heute nicht nur bei Software und Webanwendungen, sondern auch bei uns ein fester Bestandteil bei der Softwareentwicklung in Kundenprojekten und bei der eigenen Produktentwicklung. So steckt die Java-Technologie beispielsweise im Postfinder oder dem BMW-Produktkonfigurator. Im Interview berichtet Oliver Belikan von Java-Erfahrungen aus der Praxis und wirft einen Blick in die Zukunft.

Mehr