Meet Eta.

A powerful programming language to build concurrent & distributed systems on the JVM.

Getting Started




What is Eta?

Eta is a pure, lazy, strongly typed functional programming language on the JVM. It brings two big ecosystems, the JVM and Haskell, together. This allows you to harness the best of both ecosystems to build your applications quickly and effectively. Eta's concurrency support helps you to build highly scalable systems.

Why Eta?


Robust Interoperability

Eta has a strongly-typed Foreign Function Interface (FFI) that allows you to safely interoperate with Java.


Ultra Type Safety

Eta has global type inference, giving you a dynamic language experience, but with a strong typing hidden underneath.


Scalable Concurrency Support

Eta offers a wide range of strategies for handling concurrency including Software Transaction Memory (STM), MVars, and Fibers.

Let's Build
a Web Service!

Using the powerful and type-safe Servant web framework, we define our API as a type and the handler types for each endpoint are automatically generated and conversions happen automatically.

Run the server. Etlas will make sure the dependencies are properly included on the JVM classpath.

Consume your webservice using your browser or CURL. Want to dig in more? Check the full web service tutorial here.

Get Involved

Coming Soon


Package Index for Eta


Java FFI Bindings Generator

Eta on Android

Write Android Apps with Eta

Eta Fibers

Lightweight, Cooperative Threads

Twitter Feed

Conference Talks

Eta Fibers: Towards Better Concurrency on the JVM

FunctionalConf - 2017

Using Eta For What You Don’t Like Writing in Scala

flatMap Oslo - 2017

Frege vs Eta: Haskell on the Java Virtual Machine

JJUG CCC - 2017