© Swill Klitch/Shutterstock.com
String-Komprimierung in Java 9

In der Kürze liegt die Würze


In Java 6 wurde die Funktion eingeführt, ASCII-Zeichen mithilfe von byte[] statt char[] zu speichern. Dieses Feature wurde in Java 7 abgeschafft, kommt nun aber mit Version 9 wieder zurück. Allerdings ist diesmal eine Compaction-Funktion von vornherein verfügbar, und byte[] wird immer verwendet.

Derzeit bin ich damit beschäftigt, all die coolen neuen Features aus Java 8 und 9 in meinen Kurs über Java Design Patterns einzuarbeiten. Normalerweise betrachte ich mit meinen Seminarteilnehmern in diesem Kurs die zusammenhängenden Elemente aller Arten von Java-Themen, sodass die Teilnehmer viel mehr lernen, als sie es aus einem einzelnen Buch könnten. Sie sehen, wo im JDK Patterns benutzt werden. Sie lernen gute Designrichtlinien. Ich zeige ihnen die neuesten Funktionen aus Java 8, auch wenn sie noch an JDK 6 oder 7 gebunden sind. Wir gehen sogar kurz auf Threading ein. Es ist so ein Kurs, zu dem eine Firma einmal einige Mitarbeiter schickt, und dann nicht mehr aufhört, neue zu schicken. Genau deshalb ist er auch sechzehn Jahre, nachdem ich den ersten Entwurf geschrieben habe, immer noch so beliebt bei Unternehmen.

Das Flyweight Pattern, das aus einer eher befremdlich anmutenden Zusammenstellung von Klassen besteht, ist eins der besonders seltsamen Patterns. Es ist nicht wirklich ein Design Pattern, sondern eher, wie das Facade Pattern, ein notwendiges Übel, das man gerade wegen Design Patterns braucht. Lassen Sie mich das erklären. Gutes objektorientiertes Design führt zu hoch konfigurierbaren Systemen, die doppelten Code minimieren. Das ist gut, heißt aber auch, dass es manchmal sehr viel Arbeit braucht, nur um das System überhaupt zu nutzen. Facade hilft dabei, ein komplexes Subsystem leichter nutzbar zu machen. Warum ist es überhaupt so komplex? Normalerweise deshalb, weil wir zu viele Möglichkeiten haben, wie wir es benutzen können – dank einer großzügigen Verwendung von Design Patterns. Flyweight hat eine ähnliche Daseinsberechtigung. Gute objektorientierte Designs haben üblicherweise mehr Objekte als schlechte monolithische Designs, in denen alles ein Singleton ist. Das Flyweight Pattern versucht die Anzahl von Objekten zu verringern, indem es diese mehrfach nutzbar macht, was dann sehr gut funktioniert, wenn wir den intrinsischen Zustand stattdessen extrinsisch definieren.

Ich habe mit String-Deduplikation experimentiert, also das char[] innerhalb des Strings gegen ein gemeinsam genutztes char[] ausgetauscht, wenn mehrere Strings die gleichen Werte enth...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang