Die Finalisten der JAX Innovation Awards 2014

Frege – eine JVM-Sprache stellt sich vor

Hartmut Schlosser

Die JVM-Sprache Frege hat es in der Kategorie „Most Innovative Java Technology“ ins Finale der JAX Awards 2014 geschafft. Frege-Begründer Ingo Wechsung stellt uns das Projekt genauer vor und erläutert, welche Lücke es im JVM-Universum zu schließen gedenkt.

JAX Innovation Awards 2014

Bis zum 12. Mai können Sie noch am Community Voting teilnehmen! Einfach auf http://jax.de/awards2014/ gehen und mitvoten!

Die Finalisten sind:

Most Innovative Java Technology: Atmosphere Framework, Frege Language, Neo4j graph database, Spring Boot, Vert.x
Most Innovative Open Technology: Akka, Docker, NGINX, openHAB, RoboVM
Most Innovative Open Tech Business:CloudBees, Hazelcast, JFrog, Neo Technology, Ohloh

Stimmen Sie ab!

JAXenter: Glückwunsch – Frege ist im Finale der JAX Innovation Awards! Können Sie das Projekt kurz vorstellen?

Ingo Wechsung: Das Frege-Projekt schließt eine bislang noch verbliebene Lücke unter den JVM-Sprachen und bietet eine typsichere, rein funktionale Programmiersprache mit Bedarfsauswertung (non-strict evaluation) an.

Der Sprachumfang sowie das Typsystem entspricht dem von Haskell 2010 zuzüglich Typen höherer Ordnung (higher ranked types), wobei das FFI durch spezielle Sprachmittel zur Einbindung von Java-Klassen ersetzt wurde. Existierende JVM-Klassen und Interfaces kann der Frege-Programmierer als abstrakte Datentypen einbinden und deren Methoden als Funktionen nutzen. In der Tat hat Frege kein Laufzeitsystem im herkömmlichen Sinne, stattdessen wird bei Bedarf (z.B. IO, Nebenläufigkeit usw.) auf ein geeignetes Java API zurückgegriffen. Auch die elementaren Typen wie Int, String usw. sind von Java geborgt.

Nicht zuletzt wegen dieser Bindung an die bzw. Spezialisierung auf die JVM ergeben sich gegenüber Haskell einige Unterschiede, dennoch wurde das Ziel einer weitestgehenden Source-Kompatibilität mt Standard-Haskell erreicht.

Frege ist nach guter alter Wirth’scher Manier in Frege selbst geschrieben. Derzeit existieren Compiler samt Standardbibliothek, Interpreter (auch online), ein Eclipse-Plug-in und Tools für Test (via QuickCheck), Dokumentation, usw.

Es soll nicht verschwiegen werden, dass Frege ein Hobby-Projekt eines sehr kleinen Teams ist und bei weitem nicht in irgendeinem Sinne fertig oder gar „industriereif“. Weitere tatkräftige Unterstützer wären daher sehr willkommen.

JAXenter: Welche Probleme sollen mit Frege gelöst werden?

Ingo Wechsung: Zum einen das Problem, dass Haskell nicht im JVM-Umfeld zu haben ist und die Haskell Community aus Insidern verständlichen Gründen keine Anstalten in diese Richtung macht, obwohl die Frage immer wieder aufkommt. Hier hoffen wir, ein brauchbares Substitut geliefert zu haben, auch wenn wir der Entwicklung des GHC, wo geniale Menschen wie Simon Peyton Jones oder Edward Kmett tätig sind, zwangsläufig hinterherhinken müssen.

Zum anderen bieten wir eine Alternative für diejenigen, die mit „mostly functional programming“ nicht zufrieden sind, oder wie Erik Meijer der Auffassung sind, dass dies auf längere Sicht nicht funktionieren wird.

Zusammengefasst würde ich sagen, ist es weniger dieses oder jenes technische Problem, das Frege lösen will oder kann. Ich sehe es eher als eine Art „Grundlagenforschung“ bzw. als praktischen Beweis, dass rein funktionale Programmierung à la Haskell auf der JVM möglich ist (was oft in Zweifel gezogen wird). Implikationen für Frege selbst oder andere Projekte mit ähnlichen Zielen sind völlig offen und zeigen sich vielleicht erst in einigen Jahren.

JAXenter: Wer sind Ihre hauptsächlichen Nutzer?

Ingo Wechsung: Wenn ich das wüßte! Leider bekommt man oft nur indirektes Feedback via Anfragen auf stackoverflow, wenn etwas nicht klappt.

Ich vermute, dass die Nutzer sich in Universitäten befinden oder selbst Hobby-Programmierer sind. Ich vermute weiterhin, dass die (ernsthafte) Nutzung von Frege derzeit äußerst überschaubar ist. 🙂

JAXenter: Welche nächsten Ziele stehen auf Ihrer Roadmap?

Ingo Wechsung: Vier Punkte:

  • die kontinuierliche Weiterentwicklung der doch noch sehr lückenhaften Standardlibrary, bzw. der Aufbau einer Infrastruktur für eigenständige Pakete.
  • die konservative Weiterentwicklung der Sprache, etwa mit multi parameter type classes.
  • Eine größere Herausforderung bietet Java 8. Einerseits wollen wir Frege-Code unter JDK6 lauffähig halten (wir wissen, dass Leute mit Frege+Android experimentieren), zum anderen soll Frege auch mit Java 8 gut integriert werden. Hier wird in nächster Zeit einige Arbeit nötig werden.
  • Was wir auch brauchen, sind Tutorials, How-To usw. für Ein- und Umsteiger

JAXenter: Beim JAX Innovation Award werden offene Technologien ausgezeichnet. Warum denken Sie sind offene Technologien wichtig für eine innovative IT?

Ingo Wechsung: Aus demselben Grund, aus dem Wissenschaft offen sein muss, um überhaupt so genannt werden zu können. Kultur ist Ansammlung von Wissen, nicht eine Ansammlung von Patenten auf sogenanntes „geistiges Eigentum“. Letzteres ist ein politisches Konstrukt, erfunden um wirtschaftliche Monopole zu ermöglichen und mit staatlicher Gewalt durchzusetzen, die in einer freien Wirtschaft nicht lebensfähig wären.

Wenn jemand aus seinem Wissen und Können in einem marktwirtschaftlichen Umfeld Geld macht, dann trägt dies zum Fortschritt bei. Kann er das nicht, weil irgendein geistiger Eigentümer die Patentanwälte auf ihn hetzt, findet möglicher Fortschritt oder auch nur Produktion von nützlichen Dingen nicht statt.

JAXenter: Vielen Dank für dieses Interview!

Verwandte Themen:

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Content-Stratege, IT-Redakteur, Storyteller – als Online-Teamlead bei S&S Media ist Hartmut Schlosser immer auf der Suche nach der Geschichte hinter der News. SEO und KPIs isst er zum Frühstück. Satt machen ihn kreative Aktionen, die den Leser bewegen. @hschlosser
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: