JJava 1.0-a6 released #101
andrus
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Happy to announce a new
a6milestone of DFLib JJava 1.0. JJava is a Java / JVM kernel for Jupyter. This is a pretty significant update primarily focused on the "kernel-as-platform" aspect. What we mean by "platform" is how JJava allows running custom extensions, helps with creation of custom distributions and even bespoke JVM-based kernels. Key improvements:Kernel modularity, lifecycle and flexible bootstrap
If you are planning to write your own special JVM Jupyter kernel or, maybe, build a custom distro of JJava with own collection of magics, it is now fairly simple to reuse JJava foundation libraries:
BaseKernelandJavaKernelwere refactored, separating kernel assembly logic into builders instead of hardcoding it in the constructor.%mavenmagic and friends) was moved into a submodule. JJava distro still bundles it of course, but your own custom assembly doesn't have to.JJAVA_vars is now done in the main class of the distro (outside the kernel). Downstream implementations can implement their own main, providing own configuration.onStartup()method in addition to the existingonShutdown(..), separating construction from startup. Not doing everything in constructor simplifies subclassing and testing.Extensions improvements
Extensionlifecycle. It was aligned with that of its kernel. In addition toinstall(..), there's now anuninstall(..)method called from the kernelonShutdown(..). Thus extensions are properly stopped at the end, allowing them to clear statics and such. This is very useful for testing.JJAVA_CLASSPATH). We fixed a bug that previously prevented this from happening.Extension.install(..)was serverly limited in what it could do, as it could only access the kernel classpath. So you'd resort tokernel.eval("...")calls to load something to a notebook. Now it can reference the full notebook classpath, so implementing complex logic is much easier.Magics as objects
LineMagicandCellMagicare interfaces. This makes managing them in the kernel and, more importantly, creating custom ones a much easier process. We rewrote all the built-in magics to follow the new contract and were able to get rid of tons of plumbing code.kernel().getMagicsRegistry().registerCellMagic("mymagic", MyMagic.class). You can do it in the notebook or anExtension.Logging
We fixed internal logging for better user experience:
Licensing
Instead of the original MIT, we changed the license to Apache 2.0. Very little practical consequences for the users (both licenses are very permissive), but we are more confortable and familiar with Apache and will continue using this license.
Deprecation, bug fixes
There are other bug fixes, as well as deprecations of redundant magics (
%jars,%addMavenDependency), as well as Ivy artifact syntax for%maven.Beta Was this translation helpful? Give feedback.
All reactions