Archive 2019

Common Patterns in JIT-generated Assembly Code

Veröffentlicht am 12. August 2019 ·  1 min read

Hier findet sich eine Sammlung einiger wiederkehrender Muster, die sich im vom JIT-Compiler generierten Code finden lassen. Die Liste ist keineswegs vollständig, und wird immer mal wieder aktualisiert. NullPointerException-Check test %rbp,%rbp je <label/line> test führt ein bitweises AND mit beiden Werten durch und setzt entsprechende Flags, relevant ist hierbei das ZERO-FLAG. Dieses wird genau dann gesetzt, wenn beide Werte 0 sind, in diesem Fall also, wenn %rbp (oder andere Register) 0 ist....


SCSS - !default

Veröffentlicht am 8. August 2019 ·  2 min read

Schreibt man scss-Bibliotheken oder wiederverwendbare Snippets, will man üblicherweise die Möglichkeit geben, Variablen zu ändern, um z.B. die Farbgebung zu beeinflussen. Importiert man andere Dateien und überschreibt danach die Variablen auf herkömmlichen Wege, hat diese keine Auswirkung: _library.scss // _library.scss $color: #000; body { background-color: $color; } style.scss // style.scss @import 'library'; $color: #222; css body { background-color: #000; } Die in _library.scss definierten Styles werden von dem nachträglichen Überschreiben der Variable nicht beeinflusst, stattdessen wird der in _library....


Volatile Variablen und Auswirkungen auf den generierten Assembler-Code

Veröffentlicht am 5. August 2019 ·  5 min read

In vielen Projekten gibt es die Notwendigkeit, zwei Threads miteinander zu synchronisieren. Zwei Threads sollen dabei gleichzeitig laufen, und ein Thread soll eine Schleife im anderen abbrechen können. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public class Main { public static void main(String[] args) throws InterruptedException { Worker worker = new Worker(); worker.start(); Thread.sleep(10_000); worker....


JavaFX unter Java 11 - mit JPMS und jlink

Veröffentlicht am 4. August 2019 ·  2 min read

Mit Java 9 wurde jlink eingeführt - damit lässt sich zusammen mit dem Modulsystem ein Anwendungsspezifisches JRE bauen. Anstatt ein instaliertes JRE vorauszusetzen und nur eine Jar auszuliefern, liefert man damit sowohl die Anwendung als auch die Laufzeitumgebung aus. Nutzen lässt sich dies auch zusammen mit JavaFX, insbesondere gibt es extra für JavaFX ein Maven-Plugin, um passende Laufzeitimages zu generieren. Maven Build einrichten Ausgangspunkt ist dafür das Projekt aus JavaFX unter Java 11 - Ohne JPMS....


JavaFX unter Java 11 - Ohne JPMS

Veröffentlicht am 24. June 2019 ·  3 min read

Mit der Einführung von Java 11 wurde JavaFX auch aus dem Orcale JDK entfernt. Seit dem wird JavaFX unabhängig vom JDK entwickelt, und muss entweder eigenständig auf dem System installiert oder als Abhängigkeit über z.B. Maven eingebunden werden. Abhängigkeiten über Maven einbinden Am einfachsten lässt sich JavaFX über Maven (oder vergleichbare Build-Tools wie gradle) einbinden, auf dem System selbst muss JavaFX dann nicht mehr installiert sein. Dazu fügt man die nötigen Teile einfach der pom....


Localized JavaFX-ComboBox

Veröffentlicht am 24. June 2019 ·  2 min read

Ein kleines Beispiel, wie man eine ComboBox mit JavaFX internationalisiert. Der Code soll dabei möglichst generisch sein, um Wiederverwendbarkeit zu ermöglichen. D.h., dass sowohl an den Item-Type als auch an die Umsetzung der Internationalisierung innerhalb des Programms keine besonderen Anforderungen gestellt werden. LocalizedCellFactory Im Folgenden sieht man die dafür nötige Umsetzung einer CellFactory: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import java....