Die letzten Tage bleiben vor Joker, und ich wollte Habr wirklich kein gewöhnliches Interview bringen, sondern ein mächtiges Spiel. In letzter Zeit haben sich die Leute für Server auf Arm interessiert, und so kam es, dass wir echte Experten zu diesem Thema haben.
Alexander (
alexbel ) Belokrylov und Lesha Voitylov gründeten zusammen mit Grigory Labzovsky, der das Oracle-Entwicklungszentrum in St. Petersburg leitete, BellSoft vor etwas mehr als einem Jahr. Jetzt ist das Unternehmen erfolgreich tätig, entwickelt sich und hat in der Java-Welt bereits Berühmtheit erlangt.
Nach dem Volumen der Commits in OpenJDK im vergangenen Jahr belegten sie den fünften Platz, und jetzt liegen nur noch Oracle, Red Hat, SAP und Google vor:

Sie müssen verstehen, dass BellSoft nicht nur Arm ist:
- Liberica JDK 11 wurde veröffentlicht , Linux x86_64, Windows, Linux ARMv8, Linux ARMv7 (einschließlich Raspberry Pi) werden unterstützt. Builds werden für Mac und Solaris Sparc ausgelegt.
- Bilder für alle Architekturen werden im Docker Hub für Debian, CentOS, Alpine veröffentlicht. Das Bild für Alpine stammt aus der Lite-Version mit
--compress 2
daher deutlich kleiner als das übliche JDK.
In diesem Interview werden wir nur Arm berühren und den Rest für das nächste Mal verlassen.
Also heute in unserem virtuellen Studio:
Alexander Belokrylov
Lesha Voytylov
Oleg Chirukhin - Herausgeber der JUG.ru Group
Erzählen Sie uns mehr über das Unternehmen?
Das Unternehmen BellSoft ist in mehreren Bereichen tätig. Jeder weiß wahrscheinlich, dass Oracle in St. Petersburg über eine sehr ernsthafte Erfahrung auf niedrigem Niveau bei der Entwicklung von Java Runtime, bei der Entwicklung von Compilern und bei der Entwicklung von Oracle Cloud-Service-Systemen verfügt. Und dieses Know-how von Oracle wurde auf BellSoft migriert. Heute entwickelt unser Unternehmen die Java Runtime, wir sind ein aktiver OpenJDK-Mitarbeiter, wir entwickeln die gcc- und llvm-Compiler, wir werden zum Apache, Graal-Stack beitragen. Wir beschäftigen uns mit dem Aufbau von Big-Data-Analysesystemen und Empfehlungssystemen und haben ein kleines Projekt zum Thema IoT erstellt, um Daten von Geräten aus der realen Welt zu sammeln. Irgendwann haben wir festgestellt, dass Oracle die Veröffentlichung einer Java-Distribution für Arm-Plattformen eingestellt hat, und wir haben unsere eigene Distribution veröffentlicht, die Liberica JDK für Raspberry Pi heißt. Seitdem unterstützen wir es erfolgreich.
Schauen wir uns das genauer an. Was ist zum Beispiel ein Apache-Stack?
Wir haben begonnen, mit Hadoop einen Beitrag zur Apache Foundation zu leisten - vieles hängt mit bestimmten Teilen dieses Projekts zusammen. OpenJDK- und große Apache-Projekte sind zwar nicht direkt, aber stark miteinander verbunden.
Warum könnte das alles notwendig sein? Zum Beispiel können einige Klassen, die sie verlangsamen, übertaktet werden?
Ja, dies ist einer der Bereiche, an denen wir arbeiten - die Verbesserung der Produktivität. Zum Beispiel plattformspezifische Teile, deren Beschleunigung in OpenJDK dazu beitragen kann, Hadoop zu beschleunigen. Bei Interesse können wir darüber sprechen.
Wenn Sie Leistungsprobleme lösen, ist es sinnvoll, etwas in der Nähe zu sehen. Vielleicht gibt es irgendwo das gleiche Problem. Sie sehen sehr oft, dass Sie, nachdem Sie an einer Stelle korrigiert haben, an einigen Stellen korrigieren müssen, damit es im Allgemeinen besser wird. Manchmal (und sehr oft) wird die Leistungsoptimierung in Beiträge zu mehreren Projekten zerlegt. Wenn Sie beispielsweise die Leistung der checksum
verbessern möchten, sehen Sie sich ganz unten im Stapel an. Nehmen wir an, es ist Java. Wenn Sie etwas höher schauen, ist es Hadoop, Spark oder etwas anderes. Wenn Sie verstehen, wie Sie einen Ort verbessern können, können Sie normalerweise verstehen, wie Sie dies an einem anderen Ort tun. In diesem Fall ist es natürlich sinnvoll, sich auch dort zu verbessern.
Jeder weiß, dass du Liberica bist :-) Lass uns darüber reden.
Ja, wir sind Liberica JDK. Liberica begann mit der Tatsache, dass wir gesehen haben, dass es keinen Port für ARM32 gibt, und dies muss dringend getan werden, da der Raspberry Pi ohne Java 9 und Java 10 belassen wurde. Dies war im Jahr 2017, als Java 9 herauskam. Jetzt unterstützt Liberica JDK viele Architekturen und Betriebssysteme.
Es wurde klar, dass Oracle den Code für Arm nicht weiterentwickeln würde, und wir begannen, unsere Distribution aktiv zu verteilen und freizugeben, um diese Lücke zu schließen. Es wurde klar, dass die Leute es brauchen.
Also, jetzt gibt es mehrere Armverteilungen?
Ja, es gibt verschiedene Java-Distributionen für Arm, die unterschiedlich sind. Bei uns erhalten Sie tatsächlich das, was früher Teil des Oracle Port Distribution Kits war. Unsere Distribution verfügt über JavaFX, Geräteeingabe / -ausgabe und eine einbettbare API. Dies ist ein Paket, und alles funktioniert mit Modulen, beginnend mit JDK 9. Mit einem modularen System können Sie Runtime nach Ihren Wünschen erstellen. Wenn Sie möchten, können Sie eine kleine 16-Megabyte-Laufzeit erstellen. Wenn Sie weitere Funktionen aktivieren möchten, z. B. einen Webserver, müssen Sie etwa 32 Megabyte statischen Speicherplatz ausgeben. Sie können eine funktionierende Laufzeit für Ihre Bedürfnisse erhalten.
Soweit ich verstanden habe, haben wir über Armeeserver gesprochen. Um nicht zu sagen, dass wir sie massiv genutzt haben. Erzähl mir von dem Server? Existieren sie im wirklichen Leben überhaupt?
Diese Geschichte gibt es schon seit vielen Jahren. Der allererste Arm-Server wurde auf Basis der 32-Bit-ARMv7-Architektur erstellt. Es war eine furchtbar laute Box, die praktisch nicht funktionierte, weil das BIOS, Linux dort nicht funktionierte, alles nach ein paar Stunden verschwand. Die Firma, die es gegründet hat, Calxeda, hat im Laufe der Zeit geschlossen. Die Idee, eine alternative Architektur für Server zu entwickeln, wurde jedoch in die Gesellschaft gesät. Arm veröffentlichte schließlich eine neue Spezifikation für die ARMv8-Architektur, die sowohl 32- als auch 64-Bit unterstützt. Basierend auf der 64-Bit-Version dieser Spezifikation bauen jetzt mehrere Hersteller ihre Prozessorimplementierungen für Server. Zum Beispiel Ampere Computing, Cavium, das jetzt von Marvell gekauft wird, und Qualcomm. Und es gibt noch ein anderes Unternehmen - AMD hat vor einigen Jahren auch Server veröffentlicht, die auf der Arm-Architektur basieren. Meiner Meinung nach machen sie das immer noch.
Wenn Sie einen Buchstaben L aus Marvell entfernen, erhalten Sie Superhelden. Eine gute Möglichkeit, sich an die Namen all dieser Büros zu erinnern.
Die Superhelden dort sind eigentlich Cavium / Marvell, weil sie es geschafft haben, den produktivsten Chip mit bis zu 128 Threads auf einer CPU zusammenzubauen, und eine vergleichbare oder bessere Leistung mit Xeon Gold und Platinum. Sie können mehrere CPUs in einen Server einbauen, Sie erhalten eine monströse Sache mit schnellem Speicher, der für ernsthafte Aufgaben verwendet werden kann.
Wie wächst die Skalierbarkeitsgrenze für gängige Anwendungen? Wie viel CPU macht es Sinn, auf einem Server zu bleiben?
Es hängt alles davon ab, für welche Aufgabe Sie den Server erstellen möchten. Verschiedene Hersteller konzentrieren sich auf verschiedene Nischen, aber wenn wir über Cavium / Marvell sprechen, konzentrieren sie sich eindeutig auf die Computernische, in der Sie schnell eine große Datenmenge parallel kauen müssen. Sie konzentrieren sich nicht auf die extrem große Leistung eines einzelnen Threads (gleichzeitig ist es sehr gut), nämlich dass diese CPU im Allgemeinen eine hohe Leistung bei geringem Kostenverbrauch aufweist.
Warum Arm, nicht Intel? Wir haben wundervolle Intel-Server. Warum sollten wir uns etwas anderes einfallen lassen?
Es ist schwierig und einfach, diese Frage zu beantworten. Erstens ist ein heiliger Ort nicht leer. Wir sehen, dass AMD auch versucht, eine Art alternativen Intel für Serveranwendungen zu entwickeln. Und natürlich wird es immer ein alternatives Stück des Marktes von alternativen Herstellern geben.
Niemand will mit einem Monopolisten leben.
Sehr wahre Bemerkung. Alle Prozessorkonsumenten, und dies sind hauptsächlich Cloud-Anbieter, möchten die Möglichkeit einer Alternative. Damit Sie auswählen können, vergleichen Sie die Kosten mit den Kosten und wählen Sie für bestimmte Anwendungen eine rentablere Architektur.
Und was ist mit den Kosten? Wie viel teurer als Intel-Lösungen?
Schwere Frage. Erstens, wie Alexey sagte, sind die Hersteller genug. Es ist klar, dass Hersteller von Armprozessoren jetzt nicht miteinander konkurrieren, sondern mit jemand anderem. Sie besetzen leicht unterschiedliche Nischen. Wenn es sich bei Cavium um Hochleistungsrechner handelt, handelt es sich bei Qualcomm um Midrange-Server, bei Ampere entweder um Workstations oder um Low-End-Server.
Wenn ich mich richtig erinnere, liegt der Preis für die CPU selbst von Ampere Computing zwischen 600 und 900 US-Dollar, und sie konkurrieren mit Intel, einer CPU, die etwa 1.500 US-Dollar kostet. Cavium ist etwas teuer. Auch hier werden sie mit Intel konkurrieren, was deutlich teurer ist. Sie müssen verstehen, dass der Serverpreis nicht nur der Preis der CPU ist. Der Serverpreis ist auch Speicher, Festplatten, Support, Verbrauch. Wenn Sie beispielsweise mit einem Parameter gewinnen, sind die Kosten für die CPU in Ordnung, aber Sie sind nur wenig billiger. Wenn Sie auf zwei Arten gewinnen, zum Beispiel billiger sind und eine noch bessere Leistung bieten, werden sie Sie genauer betrachten. Und wenn Sie dies beispielsweise in drei Fällen auch mit weniger Stromverbrauch tun können, ist dies bereits eine Bewerbung um den Sieg.
Neben Eisen und seiner Unterstützung ist auch die Unterstützung von Software wichtig. Sie können nicht alles auf Arm ausführen, was Sie jetzt auf Intel drehen.
Natürlich. Ich muss sagen, dass das Arm-Ökosystem der Software weit fortgeschritten ist. Wenn es vor fünf Jahren Probleme gab, ein Stück Eisen zu heben, gibt es jetzt keine derartigen Probleme. Sie kommen einfach und alles funktioniert sofort für Sie. Alles, was Sie gewohnt sind, funktioniert - Linux, Docker, Kubernetes, Xen, Java, Hadoop, Spark, Kafka, alles.
Was ist mit Java? Sagen Sie uns, wie es funktioniert, wie es sich von dem „üblichen“ unterscheidet.
Nicht anders, das ist der Hauptvorteil. Es ist produktiv genug, um die Aufgaben zu bewältigen, die Java für Server zugewiesen sind. Sie übertragen Ihre Anwendung (ich hoffe, dass sie keinen nativen Teil enthält, andernfalls müssen Sie sie neu kompilieren) auf den Arm-Server, überprüfen die Leistung und freuen sich in den meisten Fällen. Kürzlich wurde ein Artikel veröffentlicht, in dem wir die Leistung des Arm-Servers mit dem Intel-Server vergleichen . Der Artikel erschien im Java Magazine.
Hat Oracle Sie im Wesentlichen in Ihrem eigenen Tagebuch werben lassen? Im Ernst.
Anscheinend gibt es eine Nachfrage. Es stellt sich heraus, dass Java Arm-Server für Java-Workloads recht gut funktionieren. Sie sind gleich oder sogar besser als Intels Gegenstücke.
Wer sollte Ihren Artikel lesen?
Testen Sie die neue Architektur für diejenigen, die sehen möchten, ob sie für ihre Lasten geeignet ist. Probieren Sie sowohl Java als auch dieselben Arm-Server aus. Wenn Sie die Arm Server Cloud in Google einbinden und mehrere Cloud-Anbieter erhalten, können Sie eine Karte in der Hand halten und ausprobieren, was Sie benötigen.
Ist Java dort bereits vorinstalliert?
Ja Plain OpenJDK.
Ist das reguläre OpenJDK und Ihre Liberica-Distribution dasselbe? Ich habe gesehen, dass es Ihre Verpflichtungen gibt - ist es oder etwas anderes?
Im Allgemeinen ist die Geschichte von Arm Ports und OpenJDK sehr interessant und reich verziert. Zunächst entwickelte Oracle den Arm-Port. Als Arm die ARMv8-Architektur veröffentlichte, wurde diesem Arm-Port ein zusätzlicher Port hinzugefügt, über den Java auf ARMv8 ausgeführt werden konnte. Parallel dazu arbeitete Red Hat auch in diese Richtung und vergoss seinen Port in OpenJDK für diese Architektur. So kam es, dass sich die Community auf den Red Hat-Port konzentrierte. Daher haben wir jetzt das Zubehör in OpenJDK für den ARM32-Port, das die Funktionalität des aarch64-Ports tatsächlich dupliziert hat - wir werden es in JDK 12 von dort entfernen. Auf diese Weise haben wir JEP 340.
Ich muss sagen, dass Oracle alle seine Errungenschaften aus eingebetteten Arm-Ports in OpenJDK gesteckt hat, bevor die Unterstützung eingestellt wurde. Jetzt sind alle Funktionen für Arm, die in Oracle erstellt wurden, integriert.
Dies ist logisch, da die Hersteller von Eisen und Hersteller von Spezifikationen in erster Linie daran interessiert sein sollten, dass das Software-Ökosystem an ihrer Hardware arbeitet und mit ihren Spezifikationen kompatibel ist. Dazu muss der Code offen sein.
Ich habe Infografiken gesehen, die auffällige Zahlen zeigen, dass eine bestimmte Firma BellSoft in St. Petersburg eine große Anzahl von Commits überflutet hat.
Ja, wir gehören zu den Top 5 der OpenJDK-Committer. Natürlich ist Oracle außer Konkurrenz, es gibt ungefähr 4.000 Commits pro Jahr.
Als nächstes kommen Red Hat, SAP, Google und BellSoft. Wir haben Google nicht ein bisschen erreicht. Und gleich nach uns ist IBM.
Wie viel Prozent Ihrer Mitarbeiter haben früher bei Oracle gearbeitet?
100 Prozent. BellSoft besteht aus ehemaligen Oracle-Mitarbeitern.
Dies ist ein unlauterer Wettbewerb, da Google nicht zu 100 Prozent aus Oracle-Mitarbeitern besteht. Was für Commits, sag es mir? Wie kann man einen solchen Erfolg erzielen? Wie komme ich in die Top 5 der Committer?
Wir arbeiten in verschiedene Richtungen. Die Hauptrichtung unserer Commits ist nun der ARM64-Port, der der gleiche Server-Port ist. Es ist interessant für Eisenproduzenten. Sie sind daran interessiert, dass Java schnell an ihrer Hardware arbeitet und mit den Belastungen fertig wird. Das zweite, was wir festschreiben, ist der ARM32-Port, den wir unterstützen. Dies ist der eingebettete Port. Das dritte Problem betrifft die Unterstützung, Korrektur und Verbesserung der Gesamtfunktionalität von Java.
Wir haben gerade über 64 Bit auf Servern gesprochen. Warum lebt der 32-Bit-Port noch?
Weil es in eingebettet verwendet wird.
Weil so viele Unternehmen eine CPU für die ARMv7-Architektur für eingebettete Anwendungen implementiert haben. Sie haben eine große Anzahl von Chips in ihren Lagern. Wenn mir der Speicher recht ist, dann ist ARM32 von der gesamten Vielfalt dieser Chips ARMv5, das beliebteste. Diese Architektur gibt es schon seit vielen Jahren, aber dennoch sind die CPUs recht billig, und die Hersteller erwägen immer noch, neue Geräte auf dieser Architektur zu erstellen.
Über welche Beträge sprechen wir, wenn wir über das Bauen sprechen? Kann ein gewöhnlicher Mensch etwas für sich selbst kaufen und experimentieren?
Die beliebteste ARM32-Plattform ist der Raspberry Pi, beginnend mit der zweiten Version - der zweiten und dritten Version - und all dies wird vom ARM32-Port unterstützt. Eine unserer Distributionen ist die für ARM32, die getestet wird und auf dem Raspberry Pi läuft. Wir sehen, dass dies die häufigste Plattform für ein breites Publikum ist, und veröffentlichen daher den Port speziell für den Raspberry Pi. Wir haben spezifischere Anschlüsse für hochspezialisiertes Eisen, aber das ist eine andere Geschichte.
Vielleicht müssen Sie nicht kaufen. Sie können sehen, was Sie in Ihrem Heimrouter haben. Es ist sehr wahrscheinlich, dass es so etwas gibt.
Wie viel sollten die Entwicklerfähigkeiten dort entsprechen?
Sie müssen ein Java-Entwickler sein.
Benötigen Sie knifflige Methoden, um das Gesetz von Kirchhoff zu kennen, um zu codieren?
Sie haben nur einen Computer, mit dem Sie sich über SSH verbinden können. Keine Notwendigkeit, es zu flashen. Sie nehmen eine microSD-Karte mit einem Linux-Image für den Raspberry Pi, legen sie ein und alles beginnt. Dies ist der Hauptvorteil des Raspberry Pi im Vergleich zu allen anderen Single-Board-Computern. Die Einfachheit seiner Konfiguration, ein funktionsfähiges System zu erhalten.
Und wie arbeite ich mit Sensoren? Wir machen das alles für externe Systeme, oder?
Der Raspberry Pi verfügt über ein GPIO-System und Pins, an die Sie alles anschließen können. An was normalerweise alle Enthusiasten alle Peripheriegeräte an den Raspberry Pi anschließen.
Wie sieht die API aus? Was muss geschrieben werden, wie "Hol mir eine Nummer vom Thermostat"?
Sie müssen das Thermostat-Datenblatt lesen und verstehen, was Register sind, wie sie initialisiert werden und wie sie konfiguriert werden. Wenn I2C, rufen Sie die Konfigurationsmethode auf und übergeben Sie dort alle Parameter. Dann sag ihm i2c.open und arbeite damit als Java-Objekt.
Ist es möglich, schöne Objektverpackungen um Thermostate zu schreiben, um in einem reinen Objektmodell zu arbeiten? Kann man das Datenblatt nicht mehr lesen, sondern mit einer Fassade schließen?
Es wäre schön, wenn der Hersteller dieses Sensors eine vorgefertigte Konfiguration erstellen würde, und wir als Java-Programmierer haben sie einfach genommen und verwendet. Die Bibliothek arbeitet mit einem Sensor, eine Bibliothek zum Arbeiten mit einem anderen Sensor. Eine solche Bibliothek oder etwas in der Nähe davon heißt Pi4J. Es entwickelt sich jetzt nicht so schnell wie in den Tagen, als Oracle Java Embedded verschoben hat, aber es ist immer noch nicht gestorben. Einige Updates erscheinen regelmäßig. Sie haben die Wahl: Arbeiten Sie entweder mit einem Objekt in OpenJDK - GPIO oder mit der Pi4J-Bibliothek.
Wenn ich ein Hardwarehersteller bin, weiß ich nichts über Java, aber ich möchte, dass Java-Programmierer es verwenden. An wen kann ich mich wenden? Um Sie zu kontaktieren? Oder gibt es Spezialisten, die das tun?
Ja, wir sind solche Spezialisten.
Bisher sind wir nicht weit gelaufen. Ich erinnere mich, dass Sie einige Ihrer JEPs hatten, richtig?
OpenJDK Version 11 enthält 17 JEPs. 14 wurde von Oracle, 1 - Google, 1 - Red Hat, 1 - BellSoft in Verbindung mit Cavium erstellt. Unser JEP ist eine Ansammlung von Java-Leistungsverbesserungen auf der ARM64-Plattform für bestimmte Workloads. JEP wird als Improve Aarch64 Intrinsics bezeichnet . Kurz gesagt, wir haben die Leistung von Operationen mit String, mit Arrays und ein bisschen mit Mathematik und Trigonometrie verbessert.
Was sind intrinsische Eigenschaften? Nicht jeder weiß es.
Wenn die virtuelle Maschine den Sinus berücksichtigt, kann sie anstelle der Ausführung des direkten Java-Codes eine bestimmte Architektur durch eine optimierte Assembler-Einfügung ersetzen.
Welcher ruft direkt den Prozessor auf, der den Sinusbefehl hat?
Welches wird es nach einem komplexen Algorithmus berechnen. Es gibt Intrinsics, die eine Art Assembler-Befehl aufrufen. Zum Beispiel Intrinsics, die mit der Berechnung von Prüfsummen verbunden sind. Solche Montageanleitungen gibt es für fast alle Architekturen. Es gibt komplexere Eigenheiten, wenn Sie viele Assembler-Seiten schreiben, um eine gute Leistungssteigerung zu erzielen.
Und Verschlüsselung, ist es in Hardware?
Ja, dies ist normalerweise ein Aufruf der vorhandenen Anweisungen eines bestimmten Prozessors. Manchmal - arbeiten Sie mit Erweiterungen an den Chips, an denen sie sich befinden.
Zurück zu Ihrem JEP: Wie kann man feststellen, welcher Code so heiß ist, dass er sich so lohnt?
Gute Frage. Als wir anfingen, etwas für ARM64-Plattformen zu optimieren, hatten wir außer perf nicht viele Tools. Ja, und er hat nicht überall gearbeitet. Es gab keine JFR-Implementierung für den ARM64-Port, Oracle hatte ihn zu diesem Zeitpunkt noch nicht in Open Source integriert. Verschiedene Tools zur Messung der Leistung, die wir früher verwendet haben, z. B. Async-Profiler, Ehrlicher-Profiler - sie funktionierten auch nicht für ARM64-Plattformen. Als erstes haben wir all diese Tools auf diese Architektur gebracht.
Warum nicht sofort arbeiten?
Weil es eine Art CPU-spezifischen Teil gibt.
Führen Sie diese Tools als Nächstes auf der Workload aus, die Sie optimieren möchten, schauen Sie lange auf den Bildschirm und versuchen Sie zu verstehen, welche Methoden dort heiß sind und welche Stellen in ihnen heiß sind. Es gibt einfache Fälle, in denen einige Assembler-Einfügungen für eine bestimmte Architektur nicht implementiert sind. In diesem Fall tritt ein Fallback im Java-Code auf. Allein durch die Implementierung dieser Assembler-Einsätze können Sie die Leistung steigern. Es gibt kompliziertere Stellen, an denen Sie verstehen müssen, welche neuen Assembler-Einfügungen Sie in Java für alle Architekturen erstellen müssen. So ein Job.
Sam Datensatz wo zu bekommen? Den gesamten Github entleeren und unter JIT ausführen?
Es ist klar, dass einige Benchmarks oder Workloads optimiert werden. Bekannte Benchmarks - SpecJBB, SpecJVM. Es gibt bestimmte Workloads, die bestimmte Kunden interessieren. Führen Sie einfach diese Workloads aus und sehen Sie sich Engpässe an.
Alle diese SpecJVMs sind sehr alte Tests, oder? Was ist mit neuen Lambdas, Bächen, großen Datteln?
Nichts. Es ist nicht da.
Und wo bekommt man es?
Neue Workloads.
Zum Beispiel Apachevsky Stapel?
Ja Hadoop TeraSort, . .
, ? , JEP.
, , . , , , . , , . , , . Panama, Intel.
, ? , , - ?
Math.sin
, Java- sin
.
- , sin
?
Ja , .
- , , ?
C2, .
- . , ?
.
, Linaro Connect OpenJDK ARM64. Linaro Foundation Arm-.
?
Arm, . .
?
. . Joker, .
!
, . floating point. , , , . — , . , , — . , .
. , , ?
Ja Arm … , — . , . - - , — . , , . , , . , Java- , .
, - , . ?
OpenJDK BellSoft.
, , ? ? Oracle, . JVM-?
, OpenJDK. ()
, 250 . ?
, 250 . .
— ? .
, . . , — . - .
, ?
.
?
. . , - , , . , , , . - . , . , , . , OpenJDK .
?
Mailing list. - mailing list, .
-?
Jira. OpenJDK Jira, , , .
Jira Jira, , ?
OpenJDK . , Jira.
? , , , , , Arm?
Arm, , , . shared-, , . , . .
, . , .
, . HotSpot, , , . , , - — .
- ?
Ja HotSpot tiers. smoke- . , , . , performance-, stress-.
. , , JDK, . JDK, . , ?
JDK, , JVM. JVM 4 : runtime, serviceability, garbage collector, compiler. - . , runtime. - out of order execution, , GC . , JIT, . community OpenJDK — JIT.
, , ?
, . , . . . , -, , .
? ? ? , , - ?
. , .
, , - , . .
. , OpenJDK Arm. , , IT. -, , Arm . , Arm, Arm , . , OpenJDK, Arm. , , . Arm Intel SPEC-. , . . !
, ?
, ?
, .
. . , ARM64? . , Arm .
.
— , , -, . ? - , Arm?
, .
?
Arm . . , , ? . .
, . , , , . - 10 , GPU - , . Cloud- . , , -. GPU, CPU. -, HTTP 404. , . , .
, - , ? - ?
. , . 30 ? . , . - , , . : 20% , 20%, — 10%, - . , Arm .
, Java, , . , , .
Arm , BellSoft — Arm, . OpenJDK, - . Liberica Liberica Arm 32 64, Liberica Linux (64 ), Windows Liberica Mac. Liberica Solaris Sparc. .
Liberica Mac? -.
? Oracle , … . ?
?
, Oracle. , Java- .
Java- .
, . , .
.
Ja -, support . - — , , Cloud-. , , - , .
, Oracle JDK , API. -XX:+UnlockCommercialFeatures
. , . , Oracle , .
, Oracle - Oracle, . . Java , .
, , OpenJDK . . BellSoft , , .
, , . . , , OpenJDK — .
!
. , — . - ?
. , , , . .
- OpenJDK.
. ?
Liberica, . Raspberi Pi, Linux-. , Java, -.
Joker, , BellSoft — .
. , , . , :-) Joker — .
, . !
. Joker 2018 «, ARM? , » . .