Hello ImageJ community!
On this beautiful first day of April, the ImageJ team at LOCI is delighted to announce a new project, ImageK, an update of ImageJ2 to the Kotlin programming language!
As some of you may know, Kotlin is very similar to Java, and can be compiled to Java bytecode in the same way that Java programs can, with full compatibility between Kotlin-based and Java-based libraries. Furthermore, we have successfully automated the process of translating the existing codebase entirely to Kotlin, so there is no significant disadvantage to migrate from Java, and in fact many advantages: Kotlin is more succinct and powerful than Java, with many lessons learned from the Java development community. And Kotlin is now mature enough that many new projects are now successfully written in Kotlin—see for example the scenery and sciview projects, which helped blaze the trail for the SciJava/ImageJ/Fiji community to move in this direction.
In the same vein, the Fiji project will become Fiki, with all plugins updated to Kotlin, and the foundational SciJava libraries will become SciKava. Over this week and next, we will be rebranding the GitHub repositories, registering new domains, and migrating code.
As part of this transition, we will be discontinuing support for existing script languages within ImageK and Fiki in favor of all scripts being written in Kotlin. This will go a long way toward unifying the community’s shared knowledge of scripting techniques, and allow for much easier sharing of code snippets across workflows. Those of you familiar with other scripting languages such as Jython or Groovy should find Kotlin easy to learn, sharing many facets of those languages, but with superior and more flexible syntax, and the coup de grace of Kotlin’s static type checker, which will make it much more tractable to implement full autocompletion support in the Script Editor. Even lovers of Clojure will find that Kotlin supports LISP syntax. And for fans of ImageJ macro, fear not: all existing macro functions will be ported to a new Kotlin-based standard library for ImageK, which will make
.ikm scripts 99.99% compatible syntactically with the old macro language, with most scripts running “out of the box” in the new Kotlin-based engine.
About the ImageK and Fiki logos: they will of course need to be updated accordingly, so we plan to announce a new logo contest for ImageK and Fiki soon. We look forward to the community’s ideas there.
We invite everyone to discuss the impact of this exciting development in this thread, particularly the myriad advantages the community will reap which are not already mentioned above. We realize some long-time Java programmers may be skeptical of Kotlin as a newer language, but we assure you that in 2021, thanks to Kotlin, the Java language (but not the JVM!) is dead, with Kotlin reigning supreme. And ImageK/Fiki will be stronger for it.
P.S. Another very promising project, GraalVM, is coming along nicely, but not quite ready for adoption by our community. We tentatively plan to rebrand everything again as ImageG and Figi when we switch to GraalVM some time in 2022 or 2023, depending on GraalVM’s development progress.
P.P.S. This April Fools joke is dedicated to Johannes Schindelin, co-founder of Fiji and its tireless maintainer for the first ~7 years of its existence.