Googles new “Jack and Jill” Android compilers

Ryan Daws is a senior editor at TechForge Media with over a decade of experience in crafting compelling narratives and making complex topics accessible. His articles and interviews with industry leaders have earned him recognition as a key influencer by organisations like Onalytica. Under his leadership, publications have been praised by analyst firms such as Forrester for their excellence and performance. Connect with him on X (@gadget_ry) or Mastodon (@gadgetry@techhub.social)


With a brand-new Android release, it’s only natural we’ll see some updates to the development tools as well. As found by Saikoa, the latest Android SDK contains two new build tools called ‘Jack’ and ‘Jill’ after the nursery rhyme characters. The twosome aim to replace the less-catchy existing ‘javac’ and ‘dex’ compilers…

Google’s decision for creating two new compilers could be due to the ongoing dispute with Oracle over the use of Java

Mountain View hasn’t yet detailed what these changes will mean for developers, but it seems to be part of an ongoing process to cut-down on compile times and optimise Android development. As of Android Lollipop, Google has also switched-on the ART runtime to replace Dalvik by default to cut execution times of apps on the platform.

The current method is a two-step process whereby javac converts the source code into Java bytecode, and then dex is responsible for turning that into Dalvik bytecode so that it can be run on Android. Lafortune is one of the developers behind ProGuard – which is a tool that can optimise and obfuscate the output in-between these steps (as below…) 

In the actual build, Jill adds a new pre-processing and caching step which “shields” Jack from standard .class Java bytecode, where needed, and convert it into .jayce intermediate bytecode instead. Jack then takes the Java source code, and the .jayce bytecode, and converts it into Dalvik bytecode… 

This means Jack can compile source code directly to Dalvik and speed-up the process. Where a Java bytecode library is required, Jill will be called to convert it to .jayce first before passing it on to Jack. The advantage here is that Jill will only need to be called once to compile when a library is updated or added and the output can be cached for future usage.

Aside from cutting-down times and optimising the process, it is thought that Google’s decision for creating two new compilers could be due to the ongoing dispute with Oracle over the use of Java as Android’s primary development language. Removing Java bytecode – almost entirely – means Oracle would have less of an argument against Google.

Why do you think Google is building new Android compilers? Let us know in the comments.

View Comments
Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *