The beakerx
object synchronizes values between languages, including JavaScript, Python, Groovy, Scala, and SQL. BeakerX's current implementation works with metaprogramming and serializing the objects to JSON, so it's not recommended for more than a few MB of data. Using Arrow and shared memory to remove that limitation is on the agenda, as is support in Java, Clojure, and Kotlin.
Start in Groovy:
beakerx.foo = "a groovy value"
Translate to JavaScript:
%%javascript
alert(beakerx.foo);
beakerx.bar = [23, 48, 7, "from JS"];
And back to Groovy:
beakerx.bar
Or Python:
%%python
from beakerx.object import beakerx
beakerx.bar
Or Scala:
%%scala
beakerx.bar
%%java
return NamespaceClient.getBeakerX().get("bar");
%%kotlin
beakerx["bar"]
%%python
import pandas as pd
beakerx.rates = pd.read_csv('../resources/data/interest-rates.csv')
beakerx.rates.values[0]