Jevgeni Kabanov and Sten Suitsev, from ZeroTurnaround, Talk about JRebel for Android
After announcing the first stable release of JRebel for Android, InfoQ reached out to Jevgeni Kabanov, founder and CEO of ZeroTurnaround, and Sten Suitsev, Product Manager of JRebel for Android, to find out more about what lead to the creation of this product and what might be coming next in their pipeline.
InfoQ: Why did you decide to create JRebel for Android?
Jevgeni Kabanov: We weigh opportunities and alternatives carefully for every large investment at ZeroTurnaround. In this case the decisive factors were that there was a big and well understood problem in the market and that we could reuse our existing and unique technology to solve that problem.
Sten Suitsev: That’s true. We realised that the JRebel Legacy core, the solution for reloading Java classes that we have been using for 9 years, could be reused when creating JRebel for Android. Needless to say, there was a lot of work that was specific to dealing with Android technology, but the fact that we didn't need to start completely from scratch made a big difference when approaching the project.
InfoQ: What was the hardest technical challenge to develop JRebel for Android?
Sten Suitsev: We came across technical challenges on a daily basis, although one of the most substantial ones was making our “Apply changes” or runtime updates scalable over differently sized projects. On one side this meant being able to apply changes without having to go through the entire repackage and redeploy cycle, which we fixed with the JRebel for Android Agent. On the other side, we wanted big projects to update as fast as small ones, which created the need to apply changes incrementally; Android tooling was never built to support incremental updates or installs, so a few areas of pain included incremental java compilation and Android resource packaging.
InfoQ: After Android, what's next for JRebel? Are you planning to support any other Android flavours like Android TV, Android Wear or Android Auto?
Jevgeni Kabanov: It’s important to mention here that JRebel and JRebel for Android are different products, each with their own roadmaps.
Sten Suitsev: Indeed. Although there’s some additional code reuse outside the aforementioned core, the objectives that we are pursuing with each of product are different. Most of the JRebel for Android product work is concerned with Android-specific features, like incremental builds and fast device sync. JRebel for Java is concerned chiefly with improving the integrations with the Java ecosystem and bettering the support for Docker, virtual machines and cloud.
Jevgeni Kabanov: Having said that, and even though Android TV, Wear and Auto are not officially supported by JRebel for Android, they do share much of the same technology stack as phone and tablet applications. So, in short, they might even work already! We’d love to hear user feedback about it, if users have given it a go.
In the long term, we are considering bringing the idea of faster redeployments to other platforms like .Net and iOS. However both would require developing the JRebel core from scratch rather than reusing large parts of our existing codebase as we've done with JRebel for Android. As a result this would be a much larger undertaking to support.
InfoQ: JRebel for Android is currently available for Android Studio, are you planning to support other IDEs in the near future?
Sten Suitsev: Our core JRebel product has full support for a wide range of IDEs. Our intention to go beyond Android Studio support for JRebel for Android is similar. In fact, IntelliJ IDEA support has already been requested by many users. We are decoupling our logic from the Android Studio plugin and pushing it into our Gradle plugin which will allow us to provide IntelliJ IDEA support as well. It’s prioritised and coming soon.
InfoQ: If the logic is moved to the Gradle plugin, does that mean developers will be able to use JRebel for Android from the command line?
Sten Suitsev: Not at this point. It’s a possibility for the future though.
InfoQ: On the other hand, some Android Studio users still choose Maven as their build tool, will they still be able to benefit from JRebel for Android?
Sten Suitsev: Not at this time. We have had a few requests by Maven users but for the moment we are not looking into expanding to other build systems beyond Gradle.
InfoQ: JRebel for Android supports Kotlin, can you tell us about what lead you to this decision? Have you considered supporting other languages?
Sten Suitsev: To be honest, it wasn’t a hard decision as we mostly operate at a bytecode level. This means we can support all JVM languages that are compatible with Dalvik and ART. In fact, if you really wanted to, you could even try using Scala and Groovy as well provided there is Gradle integration. Perhaps we’ll leave that as a challenge for the really enthusiastic readers!
InfoQ: How do you think the adoption of OpenJDK is going to change Android development? Will you have to make any adjustments to JRebel for Android?
Jevgeni Kabanov: I hope it will mean that Android developers start to get faster updates for Java. From our point of view, it does not affect the way we work as we’ve already learnt a lot about how JRebel integrates with the latest Java version, as we have supported it for some time now. We just need to make use of that knowledge in our JRebel for Android team.
Jevgeni Kabanov is the Founder and CEO of ZeroTurnaround. Jevgeni has a PhD in Computer Science from the University of Tartu and has contributed to multiple scientific publications, patents and open source projects. Jevgeni has received multiple awards, including Order of White Star, and the 5th Class from Estonian Republic.
Sten Suitsev is the JRebel for Android Product Manager. He started out as a mobile developer for Android during his studies at Tartu University. Following that, he took on the product owner role in various iOS, Android and Windows Phone projects. In his free time he can be found fishing or playing football.