Something is strange in The State of Java

New Relics „The State of Java“: AdoptOpenJDK jagt Oracles JDK

Jean Kiltz

© Shutterstock/vchal

New Relic hat einen Bericht über die Verbreitung von Java veröffentlicht. Darin wurden die Daten mehrerer Millionen JVMs analysiert, deren Nutzung von Produkten des Unternehmens überwacht werden. In der Evaluation hat sich New Relic unter anderem die Frage gestellt, welche Java-Version am meisten genutzt wird.

New Relic ist eine Entwicklerfirma für Cloud-basierte Software, die sich vorwiegend mit Performancebeobachtung beschäftigt. Darüber erhält der Konzern auch die Daten, die er für den „The State of Java“-Report ausgewertet hat. Diese Informationen wurden anonymisiert und grobkörnig evaluiert. Anschließend wurden die Daten nach sensiblen Informationen ausgesiebt, die eventuelle Angreifer ausnutzen könnten.

New Relic möchte mit der Auswertung nach eigenem Verständnis einen positiven Beitrag zur Kommunikation über die Attraktivität von Java als Ganzes leisten. Es ist dabei zu beachten, dass New Relic Sponsor von AdoptOpenJDK ist und für dieses Projekt auch Unterstützung bei der Entwicklung liefert.

Der Tech-Konzern wollte für die Evaluation wissen, welche Java-Distribution von welchem Anbieter in der Produktion genutzt wird. Weiterhin ist New Relic den Fragen nachgegangen, welcher Garbage Collector verwendet wird und welche Größe die Heaps der Systeme haben.

Java-Version

Am meisten verbreitet ist offensichtlich immer noch Java 8: Es läuft auf insgesamt 84,4% der Systeme. New Relic hat diese Systeme noch einmal aufgeteilt in „current“, „lagging“ und „vulnerable“. So benutzten laut Auswertung 42 Prozent der Plattformen eine aktuelle, 38,6 Prozent eine veraltete und 3,8 Prozent eine Version mit enormen Sicherheitslücken. Zum Vergleich: Java 11 kommt auf 11,11%. Ausschlaggebend ist nach New Relic der Long-Time-Support, mit dem die Versionen 8 und 11 kommen. Die dazwischen liegenden Varianten kommen gerade einmal zusammen auf 0,6% und verfügen über keinen LTS. Selbst Java 7 hat noch einen Nutzeranteil von 2,5 Prozent. Eventuell liegt die immer noch weite Verbreitung von Java 8 aber auch an den technischen Kosten, die eine Umstellung auf Version 11 mit sich bringen würde.

Quelle: New Relic

Java-Anbieter

Der meist genutzte Anbieter für Java ist erwartungsgemäß Oracle. Fast drei Viertel der Systeme verwenden Distributionen von dem Tech-Unternehmen. Den zweiten Platz nimmt AdoptOpenJDK mit 7% ein. Laut New Relic steigt die Verbreitung aber von Monat zu Monat rasant an. (Diese Schlussfolgerung ziehen die Ersteller der Analyse aus historischen Daten. Diese sind aber nicht veröffentlicht worden, weil sie aufgrund des viel kleineren Datenpools nicht aussagekräftig seien.) Ein kleines Detail dazu: Plattformen, auf denen Anwendungen von AdoptOpenJDK genutzt werden, laufen zu einem Drittel mit Java 11. Das ist fast drei Mal so häufig wie im Durchschnitt. Die Nutzer scheinen also in Anbetracht, dass Java 8 Ende 2020 kostenpflichtig wird, allmählich umzusatteln.

Quelle: New Relic

Garbage Collector

Parallel kommt hier auf einen Marktanteil von 57,8%. Er wird allerdings auf Plattformen mit Java 11 nur kaum (0,2%) genutzt. Die allmähliche Umstellung auf die neueste Version mit LTS könnte hier also zu Verschiebungen führen.

G1 läuft auf jedem vierten System. Laut New Relic aber nur zu 12,6% auf Java-8-Plattformen. Auch der veraltete GC CMS (Concurrent Mark Sweep) wird noch von jedem Sechsten eingesetzt. Am häufigsten übrigens auf Java-8-Systemen (14,6%). Die Open-Source-Produkte Shenandoah und ZGC kommen zusammen auf einen Anteil von weniger als 0,05%.

Quelle: New Relic

Heap Size

Für diese Auswertung haben die Macher die 30 meist genutzten Heap Sizes aufgelistet. Am häufigsten werden Größen von 2048MB (8,8%) und 512MB (8,7%) verwendet – und zwar sowohl bei xms (minimale Größe) als auch bei xmx (maximale Größe). Die folgenden Angaben sind von den Server-Betreibern zur Verfügung gestellt worden und von New Relic identisch übernommen worden. Dadurch können sie manchmal etwas fragwürdig sein (z.B. die fehlende, vierte Ziffer bei „819MB“).

Die Auswertung der Heap Sizes hat die Macher am meisten überrascht:

Quelle: New Relic

Nur sehr wenige Systeme benutzen eine Heap Size über 10GB (1,5%). Es werden also eher kleine Formate genutzt. Im Gegensatz zu Heaps bei Algorithmen, bei denen die Tendenz zu immer immenseren Sizes geht. Dass rund jede dritte Plattform einen dynamischen Speicher benutzt, bei dem xms genauso groß wie xmx („pinned heap“) ist, verwundert die Herausgeber der Evaluation. Eine solche Beschränkung sei kontraproduktiv, da die JVMs bei plötzlichen Schwankungen im Traffic oder in den Anfrageraten nicht flexibel ihre Größe ändern können. Dementsprechend empfiehlt New Relic, Tests in den Runtimes mit geänderten Heap Sizes durchzuführen. So könne man abschätzen, ob ohne pinned heap nicht eine bessere Performance der Garbage Collector erreicht werden kann.

Die volle Evaluation ist bei New Relic zu finden. Bei der Auswertung sind auch noch ein paar lesenswerte Fun-Facts zusammengekommen, welche sich weit am Ende der Analyse befinden.

Geschrieben von
Kommentare

1
Hinterlasse einen Kommentar

avatar
4000
1 Kommentar Themen
0 Themen Antworten
0 Follower
 
Kommentar, auf das am meisten reagiert wurde
Beliebtestes Kommentar Thema
1 Kommentatoren
Jens Letzte Kommentartoren
  Subscribe  
Benachrichtige mich zu:
Jens
Gast
Jens

„Die Nutzer scheinen also in Anbetracht, dass Java 8 Ende 2020 kostenpflichtig wird, allmählich umzusatteln.“ Das stimmt einfach nicht und hat noch nie gestimmt. Oracle stellt seinen kostenlosen Support ein, das ist alles. AdoptOpenJDK und weitere bieten weiterhin eine kostenlose Java 8 Version an.

Jens