Code, der Code schreibt

Rod Johnson enthüllt sein Geheimprojekt: Atomist – Microservices ohne Schmerzen

Melanie Feldmann

© Shutterstock.com / alice-photo

Schon lange brodelt es in der Gerüchteküche um das neue Projekt „Atomist“ des Spring-Erfinders Rod Johnson. Jetzt hat sich der Entwickler erstmals zu Wort gemeldet und erklärt, was Atomist eigentlich ist und kann. Es geht um Automatisierung und Code, der Code schreibt.

„Unsere Mission ist es, das Entwickeln von Microservices zu vereinfachen.“ So lautet der Slogan auf www.atomist.com, der Webseite Rod Johnsons gerade entstehenden Projektes. Wie genau dies allerdings vonstatten gehen soll, wird dort nicht weiter erklärt.

In einem Medium-Post hat Johnson nun den Schleier hinter seinem geheimnisvollen Projekt zumindest etwas gelüftet. Atomist soll dabei helfen, das Schreiben lästiger, mehrfach auftretender Code-Passagen zu automatisieren und über das gesamte (Microservices-)Projekt konsistent zu halten. Dabei sollen die Nachteile traditioneller Code-Generatoren überwunden werden.

Microservices enable teams and applications to scale better, which is very powerful. They can also create a lot of complexity, busywork, and team siloing. I’ve dedicated much of my life to improving developer productivity. Now I’m focused on taking the pain out of doing microservices, and really helping teams build better together.

Vom Code-Generator zu Atomist

Rod Johnson erklärt die Motivation hinter Atomist folgendermaßen: Um Entwickler von nervigem Copy and Paste zu befreien, kommen Code-Generatoren zum Einsatz. Diese verstecken die Komplexität einer Programmiersprache hinter viel Magie, sind aber eine Einbahnstraße. Denn bei der Generierung eines Projekts kann der Entwickler oft nur einige Basisparameter ändern, während der generierte Code nachträglich kaum mehr zu lesen und zu modifizieren ist. „Das muss besser gehen“, dachte sich Rod Johnson, und das Ergebnis ist Atomist.

Mit Atomist lassen sich Modellprojekte wie Templates als sogenannte Editoren anlegen. Diese Editoren können zum Beispiel den Code für das Hinzufügen eines Textfelds enthalten. Doch der Kern von Atomist ist mehr als einfaches Code-Einfügen. Atomist versteht das Projekt: „Editors must be able to parse and understand projects (both at a language and platform level), and make it easy to work with that understanding“, erläutert Johnson.

Editoren enthalten also nicht nur Code, sondern verstehen auch, welche Auswirkungen und Verbindungen der Code hat. Wenn etwa das Einfügen eines Textfelds Änderungen an mehreren Stellen im Projekt erfordert, weiß das der Editor und nimmt die Änderungen entsprechend vor. Im Gegensatz zu vielen traditionellen Code-Generatoren sollen die Änderungen eines Atomist-Editors dabei nicht von dem eines Entwicklers zu unterscheiden sein. Zudem lassen sich alle Änderungen im Repository nachvollziehen. Damit gibt es keinen versteckten, magischen Code.

A change made by an editor is indistinguishable from a change made by a developer. No magic markers as to what can and can’t be modified by hand; editors able to follow project style guidelines and produce clean diffs preserving formatting and comments. The aim is not to minimize the role of developers, but to make developers more powerful by scaling them up via a polite, invited, automated helper that follows their preferences.

Sehen Sie auch: Rod Johnson: The JVM – The Enterprise and beyond [Keynote JAX 2016]

Atomist arbeitet mit allen zusammen

Atomist soll weder spezifisch für eine Sprache noch für Plattformen oder Frameworks sein. Auch ist es egal, ob das Projekt in Atomist erstellt wurde oder per Hand gebaut ist – als Prämisse gilt: „Any project can be used as a template.“

Wenn ein Projekt jedoch bestimmten Konventionen folgt, ist es laut Johnson einfacher, solche von Atomist beschriebenen Editoren einzusetzen. So sind beispielweise Spring-Boot-Projekte besser für den Atomist-Ansatz geeignet als beliebige Java-Projekte. Mit den Atomist-Editoren kann man in der Kommandozeile arbeiten oder direkt in der IDE. Auch die Integration in Slack als Chatbot ist möglich.

Editors should be able to run anywhere. Any editor should be applicable locally via a command line or IDE, or in the cloud via a web form or ChatOps interaction, modifying a GitHub repo.

Die nächsten Schritte

So weit die ersten Erklärungsversuche zu Atomist, die zumindest andeuten, in welche Richtung Johnsons neues Baby zeigt. Johnson verspricht, dass sowohl die DSL für die Editoren als auch die Infrastruktur von Atomist bald Open Source gehen werden – dann dürfte sich der Schleifer noch etwas weiter lüften. Zurzeit arbeiten die Entwickler daran, umfassenden Support für Java und Spring Boot zu implementieren. Weitere Plattformen sollen folgen.

In seinem Blogpost geht Johnson mehr ins Detail und zeigt einige Code-Beispiele. Wer Atomist im Einsatz sehen will, dem sei dieses Video von Jessica Kerr empfohlen, die das Tool auf der elm-conf vorgestellt hat. Man muss elm nicht kennen, um zu verstehen, wie Atomist der Entwicklerin weiterhilft.

Verwandte Themen:

Geschrieben von
Melanie Feldmann
Melanie Feldmann
Melanie Feldmann ist seit 2015 Redakteurin beim Java Magazin und JAXenter. Sie hat Technikjournalismus an der Hochschule Bonn-Rhein-Sieg studiert. Ihre Themenschwerpunkte sind IoT und Industrie 4.0.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: