
Viele Java-Entwickler kennen
Stephen Chin . Jemand hat seine Sendungen von Java-Ereignissen gesehen, jemand - seine Interviews mit anderen berühmten Javisten und jemand - berichtet über Java auf dem Raspberry Pi. Aber was ist es, auf Twitter zeigt er
@steveonjava - das heißt sogar mit einem Benutzernamen, wie sehr sein Leben dieser Sprache gewidmet ist.
Bis vor kurzem arbeitete er bei Oracle und ist jetzt zu JFrog gewechselt. Es mag unerwartet klingen: Oracle verlassen, wenn Ihr Leben Java ist? Der zweite Name ist aber auch den russischen Javisten bekannt, in vielerlei Hinsicht dank
Baruh Joguch Sadogursky , der dort arbeitet.
Bald werden russische Entwickler Stephen und Baruch auf der
Joker- Konferenz persönlich sehen können, aber bisher hat Stephen uns über eine Vielzahl von Dingen erzählt, zum Beispiel:
- Was genau macht er jetzt?
- Wie ist es für einen Entwickler richtiger, Manager zu werden?
- Wie groß kann man einen Cluster von Raspberry Pi machen (und warum)?
- Ist JavaFX am Leben?
- Wie ist ein Motorrad für einen Java-Aktivisten nützlich?
Oleg Chirukhin: JFrog beschäftigt sich mit CI / CD und anderen, aber russischen Javis ist besonders bekannt, dass Barukh dort arbeitet. Du kennst ihn wahrscheinlich, oder?
Stephen: Ja, er und ich sind gute Freunde. Ich kannte ihn vor dem Hut!
Oleg: Sie sind jetzt "Senior Director of Developer Relations", und Baruchs Position wird als "Head of Developer Advocacy" bezeichnet. Was genau steckt dahinter?
Steven: DevRel ist eine ganze Reihe verschiedener Aktivitäten. Dazu gehören Entwickleranwälte - Leute wie ich und Baruch sprechen auf Konferenzen mit Präsentationen. Dies sind auch Veranstaltungen für Entwickler, Kommunikation mit Personen auf Konferenzen, Erstellung von Inhalten für Entwickler usw. Im Allgemeinen bin ich jetzt auch mit all dem verbunden, und wir werden die Aktivitäten in der Arbeit mit der Gemeinschaft verstärken.
Oleg: Nach Ihrem LinkedIn-Profil zu urteilen, haben Sie eine sehr interessante Karriere. Zuerst haben Sie einen Bachelor-Abschluss in Informatik gemacht, dann waren Sie drei Jahre im Management, dann ein Jahr - Programmieren, dann wieder Management. Warum hatten Sie in Ihrer Karriere solche Zickzacklinien? Wie vernünftig ist es für einen Junior im Allgemeinen, sein Tätigkeitsfeld so oft zu wechseln?
Stephen: Es ist ziemlich vernünftig, so sollte jeder eine Karriere beginnen! * lacht *
Ich würde sagen, eine der häufigsten Schwierigkeiten für Menschen, die ihr technisches Fachgebiet gut kennen, ist, dass Karrierewachstum am einfachsten zu erreichen ist, wenn man Manager wird. Wenn Sie sich jedoch lange Zeit mit Management beschäftigen, entwickeln sich Ihre Fähigkeiten, Ihr Verständnis für Technologie und allgemein das, was Sie als Führungskraft wertvoll macht, nicht mehr weiter. Daher bin ich überzeugt, dass wir die Technologie nicht aufgeben dürfen. Weiter etwas erschaffen, weiter studieren, sich weiterentwickeln. Für eine Karriere ist dies nur das Wichtigste.
Nehmen Sie bei Bedarf eine Führungsposition ein und helfen Sie Kollegen beim Wachstum - das ist großartig, das freut mich. Aber dann kremple ich wieder die Ärmel hoch und mache etwas Bestimmtes. Ich denke, es ist wichtig, nicht zu vergessen, dass dies Ihre Hauptkompetenz als Entwickler ist.
Oleg: Ist es einfach, die Fähigkeiten eines Managers und eines Programmierers in einer Person zu kombinieren?
Immerhin sind dies sehr unterschiedliche Bereiche.
Stephen: Ja, aber ich beschäftige mich nur mit Management in Bereichen, die ich selbst verstehe. Ich weiß, wie man Code schreibt, wie man testet, wie man agile Methoden anwendet, weil ich das alles selbst gelernt habe. Darüber hinaus bin ich seit einigen Jahren in der Interessenvertretung von Entwicklern tätig, sodass ich auch in diesem Bereich über Kenntnisse verfüge.
Ich denke, dass die meisten Manager den produktivsten Teil ihrer Karriere haben, wenn sie als Experten auf einem bestimmten Gebiet ihr Team organisieren und zu seiner Effektivität beitragen. Und dann werden sie zu typischen mittleren Managern befördert, was nicht viel bringt. Daher glaube ich, dass es für den Erfolg notwendig ist, sich nicht von dem zu entfernen, in dem Sie ursprünglich gut sind.
Oleg: Sie hatten einmal eine Position als Chef Agile Methodologist. Ich habe sogar Angst vorzuschlagen, was dies bedeuten soll.
Stephen: Nun, wir hatten alle Fehler in unserem Leben! * lacht *
Ab einem bestimmten Punkt funktionierten agile Methoden und die DevOps-Infrastruktur für mich sehr gut. Ich fing an, nicht nur meinem Team, sondern auch anderen Teams im Unternehmen zu helfen, und begann auch bei der Planung großer Releases zu helfen. Dann habe ich sogar ein Tool in Java für ähnliche geschrieben. Das Unternehmen begann, es zu verwenden, im Laufe der Zeit entwickelte es sich und dank dessen konnten wir aus der Hölle der Excel-Tabellen ausbrechen (wenn Sie sich darin befinden, wissen Sie, was für ein schrecklicher Ort es ist).
Dennoch ist die Arbeit mit Methoden für mich nicht so interessant wie Technologien. Deshalb bin ich am Ende wieder zu früheren Angelegenheiten zurückgekehrt.
Oleg: Ich weiß, dass Sie viel mit JavaFX gearbeitet haben. Was hat Sie anfangs zu dieser Technologie gebracht?
Steven: Das ist eine ziemlich interessante Geschichte. Noch bevor JavaFX 1.0 herauskam, arbeitete ich an einem Desktop-Widget-Framework. Ich habe Joshua Marinacci von Sun, der zu dieser Zeit als Java-Evangelist arbeitete, einen Prototyp dieses Frameworks geschickt. Persönlich kannte ich ihn nicht, obwohl ich ihn respektierte, also erwartete ich keine Antwort. Aber er antwortete, sagte, dass ihm die Idee gefallen habe, und schlug vor, JavaFX auszuprobieren, was zu diesem Zeitpunkt völlig außer Sichtweite war. Ich hatte drei Tage frei (wegen der Feiertage) und während dieser drei Tage schrieb ich mein Framework auf JavaFX neu, woraufhin Joshua das Ergebnis erneut sendete.
Im Allgemeinen begann auf diese Weise meine Bekanntschaft mit JavaFX und mein WidgetFX erschien. Ich denke, Sie wissen, dass in der Geschichte dieses Tools nicht alles reibungslos verlief, aber jetzt finde ich es absurd, AWT oder Swing zum Schreiben von Desktop-Tools in Java zu verwenden.
Oleg: Ich stimme vollkommen zu. Es stimmt, IntelliJ IDEA verwendet immer noch Swing.
Stephen: Nun, IDEA selbst wurde in den frühen 2000ern gegründet. Natürlich gibt es Leute, die große Anwendungen mit einer großen Anzahl von Java2D-Legacy unterstützen, und in diesem Fall müssen Sie sich natürlich nicht entscheiden. Aber für neue Tools ist es meiner Meinung nach wild, das Toolkit zu verwenden, das mehr als 20 Jahre alt ist.
Oleg: Was erwartet JavaFX in Zukunft? Immerhin ist sie jetzt nicht mehr Teil des JDK.
Stephen: Nun, JavaFX bleibt Teil des OpenJDK-Projekts. Es wurde aus der Oracle-Assembly entfernt, aber diese Assembly ist noch immer kommerziell, sodass der Verlust gering ist. Was kann ich sagen - verwenden Sie die JavaFX-Builds von Gluon. Übrigens sind sie auch an mobilem JavaFX beteiligt. Im Allgemeinen tun sie viele wichtige Dinge für das Ökosystem.
Oleg: Und was ist jetzt mit JavaFX-Projekten wie Ihrem WidgetFX?
Stephen: Insbesondere wird an WidgetFX nicht mehr gearbeitet, aber es gibt andere Projekte, die von der Community unterstützt werden. Im Allgemeinen ist das JavaFX-Ökosystem lebendig. Es gibt viele Fälle, in denen JavaFX unverzichtbar ist und es Ihnen ermöglicht, Dinge zu schreiben, die in JavaScript schwer zu reproduzieren sind.
Oleg: Hast du ein Nighthacking-Projekt - kannst du uns davon erzählen?
Stephen: Noch bevor ich bei Oracle anfing, habe ich eine große Reihe von Interviews unter dem allgemeinen Namen Nighthacking gestartet. Ich nahm einen Rucksack mit Ausrüstung, kam zur Konferenz und nahm Interviews auf Video auf, ähnlich denen, die Sie mir gerade abnehmen.
Ich habe verschiedene Dienste genutzt, um sie im Internet zu veröffentlichen, aber am Ende habe ich mich für Periscope entschieden, was Chris Thalinger mir vorgeschlagen hat. Dies ist eine großartige Plattform, um Interviews zu veröffentlichen und Menschen dabei zu helfen, neue Technologien kennenzulernen.
Außerdem hatten Baruch und ich die Idee, ein Programm in einem ähnlichen Format zum Thema DevOps zu erstellen. Wir planen, es auf Ihrer Joker-Konferenz zu starten. Es heißt DevOps Speakeasy.
Oleg: Das wäre toll. Soweit ich weiß, sind Sie mit einem anderen bekannten Java-Entwickler, Sebastian Dashner, auf einem Motorrad gefahren?
Stephen: Ja, wir sind um die ganze Welt gereist, wir waren in Europa, in Japan. Auf den ersten Blick scheint ein Motorrad ein seltsames Transportmittel zu sein, aber wenn Sie in zwei Wochen zehn verschiedene Benutzergruppen in verschiedenen Städten besuchen müssen, wie wir es in Japan getan haben, ist das Motorrad sehr effektiv.
Oleg: Da Sie viele Java-Benutzergruppen auf der ganzen Welt gesehen haben - gibt es kulturelle Unterschiede zwischen Gruppen in verschiedenen Teilen der Welt?
Steven: Ich denke, es gibt mehr Ähnlichkeiten als Unterschiede. Meistens existieren diese Gruppen auf Kosten der Geeks selbst, die sie organisieren, dh sie funktionieren auf freiwilliger Basis. Als ich selbst eine Benutzergruppe in der San Francisco Bay leitete, empfand ich dies als einen Weg, anderen zu helfen, so wie sie mir in meiner Zeit geholfen haben. Benutzergruppen ermöglichen es Ihnen, Wissen zu teilen, ich gehe wirklich gerne in ihnen spazieren, der Geist der Gemeinschaft pulsiert in ihnen. Für Entwickleranwälte ist es am besten, Benutzergruppen zu erstellen.
Oleg: Du hast viele Videos über Robotik, Raspberry Pi und mehr. Machst du das professionell oder ist es eher ein Hobby?
Steven: Ich habe angefangen, an Robotik zu arbeiten, weil wir bei Oracle Java-Projekte für den Raspberry Pi und andere eingebettete Plattformen hatten. Und dann habe ich gesehen, dass es für Raspberry Pi sehr praktisch ist, Kindern das Programmieren beizubringen. Und ich habe viel getan und Seminare für Kinder auf verschiedenen Konferenzen abgehalten. Früher hat mir meine Tochter bei diesen Seminaren geholfen, jetzt führt sie selbst die gleichen Seminare durch. Es verbindet eingebaute Sensoren (wie Lichtsensoren, Beschleunigungsmesser) mit dem Raspberry Pi, zeigt sehr einfache Codebeispiele mit diesen Sensoren und lehrt so Kinder. Dank dieser Lektionen könnte in Zukunft eine neue Generation von Programmierern auftauchen, deren Interesse an Code sehr früh aufkam.
Oleg: Vielleicht spielt sie eines Tages bei Joker. Ist der Raspberry Pi immer noch die beste Robotikplattform? Sie sagen, dass neue Versionen sehr stark überhitzen, erinnert sich an die Tweets von Alexei Shipilev. Obwohl es beängstigend ist, sich vorzustellen, unter welche Lasten Shipilev sie setzt, erzählen Sie uns etwas über den „normalen“ Gebrauch.
Stephen: Für diejenigen, die sich als Hobby mit diesem Geschäft beschäftigen, ist der Vorteil des Raspberry Pi, dass das System sehr einfach zu heben ist: Stecken Sie es in einen USB-Anschluss, stecken Sie eine normale SD-Karte ein, es dauert eine halbe Stunde, um alles zu erledigen. Wie ich bereits sagte, arbeitete ich bei Oracle in einem Team, das sich mit kommerziellen eingebetteten Systemen befasste - obwohl ich selbst an der Interessenvertretung von Entwicklern beteiligt war, gab es viele Leute um mich herum, die verschiedene eingebettete Plattformen testeten und einrichteten. Um die einfachsten Dinge auf einem kommerziellen System auszuführen, dauerte es mehrere Wochen.
Plattformen, die für die Entwicklung und nicht für die Produktion konzipiert sind, funktionieren in vielen Bereichen nicht und erfordern zusätzliche Tests. Es treten verschiedene Probleme auf, z. B. gibt es möglicherweise keine Treiber für die Anzeige, einige Funktionen funktionieren möglicherweise nicht, die Plattformen selbst funktionieren häufig nicht (wenn es sich um Prototypen handelt). Und im Allgemeinen sind die Leute an diesen Zustand gewöhnt: Wenn Sie eine neue Plattform haben, müssen Sie ungefähr einen Monat damit verbringen, daran zu arbeiten.
Mit den gleichen Technologien hat die Raspberry Pi Foundation in Großbritannien eine Plattform geschaffen, die in der Bildung einfach zu verwenden ist, einfach, effizient und mit einem großartigen Ökosystem ausgestattet ist. Insbesondere ist es gut für diejenigen, die in ihrer Freizeit ein einfaches Projekt machen wollen - übrigens habe ich ein
Buch über Java und Raspberry Pi geschrieben.
Raspberry Pi beseitigt den größten Teil der Unsicherheit, die dem Benutzer anderer eingebetteter Plattformen offensteht, und damit müssen keine Komponenten für die Plattform selbst entwickelt werden. Auf dem Raspberry Pi können Sie also Ihre kleinen Projekte in Ihrer Freizeit erledigen, es muss nicht professionell gemacht werden.
Oleg: Hat sich die Roboterseite des Raspberry Pi im Laufe der Jahre verändert? Ich habe dies nicht absichtlich getan, aber soweit ich weiß, verfügt Java standardmäßig über GPIO. Gibt es Frameworks oder bieten die Hardwarehersteller selbst Unterstützung?
Steven: Es gibt viele von der Community finanzierte Projekte wie Robo4J: Es ist eine Robotikplattform in IOT, die auf dem Raspberry Pi basiert. Ein weiteres großartiges Projekt mit GPIO-Zugang ist der Pi4J. Es verwendet dieselbe C-Bibliothek wie alle anderen, WiringPi, bietet jedoch eine sehr effiziente Java-Shell mit hervorragender Leistung.
Ich habe Low-Level-GPIO-Umfragen durchgeführt, um analoge Pins zu simulieren. Normalerweise ist dies in Raspberry Pi sehr schwierig, da es sich nicht um ein Echtzeitbetriebssystem handelt. Der Java-Wrapper fügt Pausen für die JIT-Kompilierung und dergleichen hinzu. Mit Hilfe der Low-Level-Pie4J-Bibliothek konnte ich den analogen Abstandssensor auf dem Controller in Java verwenden. Im Allgemeinen können Sie mit Raspberry Pi viele interessante Dinge direkt von Java aus erledigen. Außerdem gibt es in C, Python und anderen natürlich ein großes Ökosystem.
Oleg: Ich habe gesehen, dass Leute Cluster aus Raspberry Pi erstellen. Hat dies eine praktische Bedeutung?
Steven: Auf Oracle Code One wird es bald eine Präsentation des Projekts geben, an dem ich teilgenommen habe. Dies ist ein Cluster von 1024 Raspberry Pi.
Wie Sie wissen, ist es nicht schwierig, einen Cluster von 10 oder 20 Pi zusammenzustellen, obwohl dies ziemlich lange dauern wird. Wenn der Cluster mehr als 1000 Pi hat, gibt es Probleme mit dem Stromverbrauch, dem Laden von einer SD-Karte oder über das Netzwerk mit der richtigen Netzwerktopologie und -infrastruktur - die Nachricht zwischen den Netzwerkknoten sollte nicht zu einem Engpass bei den Berechnungen werden. Darüber hinaus ist das Kühlen einer solchen Menge Pi in einem Raum keine triviale Aufgabe. Aber wenn wir all diese Schwierigkeiten überwinden, wird es der größte Raspberry Pi-Cluster der Welt sein. Übrigens wird es in Form einer blauen Telefonzelle der britischen Polizei sein - wie Sie selbst wissen, was für eine Science-Fiction-Fernsehserie. Ich hoffe, wir haben die Urheberrechte von niemandem verletzt.
Ein Cluster dieser Art ist wie eine Spielzeugbahn mit Zügen, simuliert aber gleichzeitig ein vollwertiges Eisenbahnnetz. Nach diesem Modell kann ein echter Zug niemals passieren, und die gleiche Geschichte hier: Ein Cluster mit 1024 Raspberry Pi ist nicht leistungsfähiger als eine moderne GPU mit mehreren hundert Kernen, aber dieser Cluster ist nützlich, um das Verhalten großer Systeme zu simulieren. Darüber hinaus eignet es sich hervorragend für einige sehr stark parallelisierte Aufgaben. Sehr oft wird die Netzwerk- oder Lese- und Schreibgeschwindigkeit von SD-Karten jedoch zu einem Engpass. Und für komplexe Algorithmen sind genau diese Dinge echte Einschränkungen.
Oleg: Ja, und dieser Cluster kann als Trainingsmodell verwendet werden. Sie können versuchen, mithilfe von Kubernetes, Docker und einigen JFrog-Produkten etwas bereitzustellen.
Stephen: Warum nicht! * lacht *
Oleg: Sie sind ein ehemaliger Mitarbeiter von Oracle und arbeiten seit langer Zeit mit Java. Wie sehen Sie die Zukunft der Sprache? Vielleicht ist es für GraalVM, Valhalla oder so?
Stephen: Mit den Java-Releases werden in naher Zukunft viele interessante Technologien auftauchen. Die wichtigsten beiden, eine davon haben Sie bereits genannt, ist GraalVM. Dies ist die Compiler-Infrastruktur der nächsten Generation. Wir sprechen über einen in Java und für Java geschriebenen Compiler, der mit mehreren Sprachen arbeiten kann und der viel einfacher zu optimieren ist als normaler HotSpot. Ich denke, auf lange Sicht wird dieser Compiler andere JVM-Compiler übertreffen und ein wichtiger Bestandteil der Java-Architektur werden.
Ein wesentlicher Vorteil von GraalVM ist die AOT-Kompilierung. Es ist besonders nützlich für mobile und eingebettete Geräte. Der Code wird im Voraus kompiliert, die Binärdatei wird auf dem Gerät bereitgestellt, und die Startzeit und der erforderliche Speicher sind mit dem Code in C, Go und anderen Sprachen vergleichbar. Darüber hinaus ermöglicht die AOT-Kompilierung eine wesentlich effizientere Arbeit mit Microservices oder serverlosen Architekturen, bei denen viele Prozesse gleichzeitig auf mehreren Servern oder in verschiedenen Threads auf demselben Computer ausgeführt werden. Bei Bedarf können Sie für jeden Docker-Container oder jede virtuelle Umgebung eine separate JVM ausführen. Im Allgemeinen ist GraalVM für Dinge wie Serverless in Java heute fast unverzichtbar geworden.
Eine weitere interessante neue Technologie, an der das JVM-Team arbeitet, ist Fibers. Mit ihnen können Sie Java-Anwendungen auf herkömmliche Weise mit Threads erstellen, haben jedoch gleichzeitig die gleiche Leistung, als ob Sie ein asynchrones Framework verwenden würden, z. B. Vert.x, Node.js oder ein anderes.
Bei der Programmierung gibt es immer einen Widerspruch: Einerseits die Notwendigkeit, die Codeleistung zu optimieren, andererseits den Wunsch, klaren und leicht zu wartenden Code zu schreiben. Ein System mit Threads ist leichter zu lesen und leichter nach Fehlern zu suchen. Mit asynchronen Systemen können Sie zusätzliche Leistung aus dem Code herausholen, da jeder Thread in vollem Umfang genutzt wird, da Anforderungen innerhalb eines Prozesses abgerufen werden. Um diesen Vorteil zu realisieren, muss jedoch das Programmiermodell geändert werden. Das System ist dann schwieriger zu warten. Fibers ermöglicht das Schreiben von Code mit Threads, bietet jedoch gleichzeitig die Leistung eines asynchronen Frameworks.
Oleg: Tatsächlich wurden in OpenJDK bereits einige Änderungen vorgenommen, um sich auf das Kommen von Loom vorzubereiten. Beispiel: In
JEP 353: Implementieren Sie die Legacy Socket-API erneut .
Stephen: Soweit ich weiß, wird die Basisinfrastruktur für Fibers and Loom implementiert, aber sie steht Benutzern nicht offen, da Entwickler nicht möchten, dass Benutzer direkt mit ihnen arbeiten. Jetzt arbeiten wir an einer API für Fasern.
Oleg: Verwenden Sie die neuesten Versionen von Java?
Steven: Natürlich habe ich immer die neueste Version. Wie sonst? Es stimmt, ich schreibe gerade keinen Produktionscode. Wenn Sie mit Prototypen arbeiten oder neue Bibliotheken und Frameworks erkunden, gibt es keinen Grund, die neueste Version von OpenJDK nicht zu verwenden. Wenn die Arbeit mit dem System in der Produktion geht, kann es schwierig sein, schnell auf die neueste Version zu wechseln.
Große Unternehmen haben es am schwersten, die Grenze zu Java 9 zu überschreiten. Dann gab es Modularität und viele andere Änderungen. Oft sind viele der Frameworks und Technologien, von denen das Projekt abhängt, noch nicht auf Java 9 und höher migriert, was auch den Übergang schwierig macht. Wenn diese Zeile übergeben wird, ist es viel einfacher, sie weiter zu aktualisieren, da die nächsten Versionen (10, 11, 12 und, wenn ich nichts verwechselt habe, bald 13) ziemlich ähnlich sind. In Bezug auf die Kompatibilität ist die größte Änderung die Modularität.
Oleg: Und Java Enterprise verlassen.
Stephen: Ja.
Oleg: Können Sie zum Schluss noch etwas über Ihren neuen Bericht erzählen, mit dem Sie zu uns bei Joker kommen?
Stephen: Wenn Sie viel mit Rednern sprechen, folgen Sie den Anwendungen, die auf der Konferenz vorgestellt werden, und im Allgemeinen können Sie anhand von Branchentrends sehen, wie viel Hype immer um neue Technologien steigt, ob es sich um Chat-Bots, Serverless, maschinelles Lernen oder künstliche Intelligenz handelt oder irgendetwas anderes. Die Leute sind wegen ihrer Neuheit immer sehr aufgeregt über solche Dinge. Sie möchten immer so schnell wie möglich alles über sie herausfinden.
Es ist jedoch oft schwierig festzustellen, ob hinter diesem Hype wirklich wichtige Durchbrüche stecken oder ob es außer dem Hype nichts gibt. In
meinem Vortrag bei Joker möchte ich das klären. , , , , . , , .
Joker. - , — , . — , , DevOps Speakeasy. , -.
: . , , . , — -! , -.