Parley! Mit Browser & Server in einer Sprache

JVM-Sprache Fantom: pragmatisch und plattformübergreifend [Pirates of the JVM]

Redaktion JAXenter

„Es ist besser, ihr beginnt damit an Fantom-Geschichten zu glauben, Pirates of the JVM, ihr steckt in einer drin!“ In den Wogen der Statischen See, unweit von Kotlin, liegt die Insel Fantom. Mit Fantom wollte Brian Frank ein „besseres Java“ schaffen – welchen Designansatz er dafür wählte und warum gerade diesen, erklärt er im Interview.

Der Name Fantom klingt nach Geistergeschichten, Seemannsgarn und Düsternis. Dabei sind diese negativ konnotierten Begriffe keinesfalls zutreffend für die Programmiersprache, deren Ziel es von Anfang an war, eine möglichst breite Palette an Kompatibilität zu verschiedenen Runtimes (JVM, .NET CLR, JavaScript) zur Verfügung zu stellen. Gerade Piraten des Internet of Things besuchen Fantom, dank der umfangreichen Möglichkeiten, die diese Insel zu bieten hat, gerne. Was Fantom sonst noch auszeichnet, legt Brian Frank dar.

Klick auf die Karte für die komplette Infografik

JAXenter: Was hat dich dazu bewogen, Fantom zu entwickeln? Welche Vorteile bietet Fantom, die andere Programmiersprachen nicht haben?

Brian Frank: Fantom wurde ursprünglich mit dem Ziel designed, ein „besseres Java“ zu entwickeln – und zwar zu jener Zeit als Java 1.5 gerade released war. Von Beginn an war Fantom darauf ausgelegt, mit mehreren Runtimes zu arbeiten: Java VM, .NET CLR und JavaScript im Browser (obwohl es der CLR-Support nie auf Produktionsqualität geschafft hat). Das vermutlich charakteristischste Feature von Fantom ist, dass die gesamte Runtime-Library von Anfang an so entworfen wurde, dass sie zwischen all den genannten Umgebungen portiert werden kann. Wenn man bspw. mit Strings, Uris, DateTimes, etc. arbeitet, funktionieren alle zu 100 Prozent identisch in der Java VM und im Browser.

Fantom unterstützt zudem ein starkes, Aktoren-basiertes Concurrency-Modell, bei dem die Unveränderbarkeit direkt ins Typensystem eingebaut wurde. Dieses Concurrency-Modell garantiert, dass ein veränderbarer Status nie zwischen Threads geteilt wird.

JAXenter: Kannst du die Kernprinzipien der Sprache darlegen?

Brian Frank: Die Richtlinie für Fantom war es, eine Sprache zu entwickeln, die von mit Java vertrauten Entwicklern leicht gelesen und geschrieben werden konnte, aber gleichzeitig First-Class-Support für Unveränderbarkeit und funktionale Programmierung bietet. Unser Hauptaugenmerk liegt seit je her auf einer eleganten und plattformübergreifenden Runtime-Library. Hier sind einige einfache Beispiele:

// create HTTP basic base64 authorization header
"${user}:${pass}".toBuf.toBase64

// read file, parse each line as an Integer
file.readAllLines.map |Str line->Int| { line.toInt }

// immutable class
const Point
{
  new make(Int x, Int y) { this.x = x; this.y = y }
  const Int x
  const Int y
}

JAXenter: Wie würde ein typisches Programm mit Fantom aussehen?

Brian Frank: Fantom sieht Java sehr ähnlich, wobei die Closure-Syntax eher eine Ruby-inspirierte Style-Syntax aufweist: "|arg1, arg2->return|". Wir haben zudem einige clevere Techniken entworfen, um Closures zur deklarativen Programmierung verwenden zu können. Hier ist ein Codesnippet, dass das DOM mit einem Hauch CSS-Styling manipuliert.

Elem("div")
{
  // manipulate CSS of this element
  it.style->border = "1px solid black"
  it.style->background = "#ddd"

  // add some child elements
  Elem("div") { it.text = "Hello world!" },
  Elem("div") { it.text = "Bit of DOM" },
}

JAXenter: Für welche Art von Anwendungen eignet sich Fantom besonders gut? Für welche eher weniger?

Brian Frank: Fantom ist eine perfekte Lösung für die Entwicklung von Web-Applikationen, bei denen eine einzelne Sprache sowohl server- als auch browserseitig eingesetzt werden soll. Fantom wurde bereits dafür genutzt, webbasierte Visualisierungstools, Webseiten, Datenbanken und embedded IoT-Anwendungen zu entwicklen. Es eignet sich für die gleichen Gebiete, für die sich Java eignet.

JAXenter: Wie ist der derzeitige Status Quo der Sprache?

Brian Frank: Die Sprache wird seit über einem Jahrzehnt in der Produktion eingesetzt. Die meisten aktuellen Entwicklungen betreffen die Runtime-Libraries.

JAXenter: Welche Pläne gibt es für die Zukunft von Fantom?

Brian Frank: Unser Plan für Fantom ist, dass es weiterhin eine pragmatische Sprache für plattformübergreifende (JVM und Browser) Entwicklung bleibt.

JAXenter: Wie steigt man am besten in die Arbeit mit Fantom ein?

Brian Frank: Besuchen Sie die Homepage der Sprache und erkunden Sie die vielseitige Dokumentationen und andere Ressourcen für den optimalen Einstieg.

Brian Frank ist Präsident und Gründer von SkyFoundry und entwickelte mit seinem Bruder Andy Frank die Programmiersprache Fantom.

Die Pirates of the JVM

Gehen wir auf Schatzsuche! In der Infografik „Pirates of the JVM“ verbirgt sich so manches Programmiersprachen-Juwel, das inspirierte Entwickler auf der Java-Plattform für sich entdecken werden. Doch sehen Sie selbst…

Piratenflagge via Shutterstock.com / katyam1983

Geschrieben von
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.