Open-source project
MobiVM/robovm avatar
MobiVM/robovm

RoboVM: an ahead-of-time JVM compiler for iOS, macOS and Linux

Ahead of time compiler for JVM bytecode targetting iOS, Mac OSX and Linux

1,047 stars138 forksJavaLicense varies

At a glance

What is it?
MobiVM's RoboVM is an ahead-of-time compiler that turns Java bytecode into native binaries for iOS, macOS and Linux, forked from the last open-source release of the original project. It supports iOS 16 and Xcode 14, ships plugins for Eclipse and IntelliJ IDEA and a Gradle plugin, and is GPL2 except for the iOS runtime code, which is Apache 2.
Who is it for?
RoboVM suits a Java or Kotlin team that needs to ship a native iOS or macOS binary from JVM code and is prepared to work with a compiler that is a community fork of an older codebase. It is the wrong choice for a team that needs current Android tooling, since an ahead-of-time native compiler is a different thing from an app runtime, and a poor fit for a project whose licensing review will not accept a GPL2 core with an Apache 2 exception carved out only for the iOS runtime.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • MobiVM/robovm1,047 ★ · +1
Star history
Repository2026-10-212026-11-07
MobiVM/robovm1k1k

1 Stars in the last 17 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What RoboVM does: compile JVM bytecode to native code before it runs

RoboVM is an ahead-of-time compiler for Java bytecode, targeting Linux, Mac OS X and iOS, and the topics list adds Kotlin, which tells you the JVM ecosystem rather than Java alone is the target. The distinction from a JVM embedded on a device is the whole point of the design. An ahead-of-time compiler reads the bytecode, produces a native binary, and the result runs on the target without a virtual machine in the picture, which is what makes an iOS binary possible at all under Apple's platform rules. The primary language of the repository is Java, the homepage is mobivm.github.io, and the last push to the repository was on 2026-10-07, with the repository not archived. The consequence for a user is that what you ship is a native artifact, and the compilation step is a build step rather than something that happens on the device.

This is a fork of the last open-source release, not the commercial product

The README states plainly that this is a fork of the last open-source release of RoboVM, from the original robovm repository. That single sentence determines what you are evaluating. This repository starts from the last point at which the code was open. What you get is therefore a codebase of a particular vintage, maintained by a community, and not a feature-complete continuation of the original line. The published releases support that reading, with robovm-2.3.24 dated 2025-11-08, robovm-2.3.25 on 2026-06-23 and robovm-2.3.26 on 2026-08-11, so the 2.3 line has been kept moving with periodic patch releases. A team weighing this should read it as a maintained fork of a stable historical snapshot, and ask the maintainers directly what they intend to carry forward.

The iOS support baseline, and Interface Builder integration

The key features are stated in three bold claims, and the first is the one with the most practical weight. iOS 16 and XCode 14 are fully supported. Second, Interface Builder integration is available, with the details in a wiki article on the subject. Third, debugging support is finished and stable, with credit given to a named contributor. The Interface Builder point is worth pausing on, because it is the kind of feature that decides whether an iOS toolchain is usable in practice. A storyboard-based application cannot be built by a compiler that does not understand Interface Builder, so a compiler that does is a compiler that can build real iOS applications rather than only code-driven ones. The debugging claim matters for the same reason, since a native binary that cannot be debugged is a binary that will stall a team. The exact support matrix for newer Xcode versions is not stated in the README, so the wiki is where to check.

The tooling: IDE plugins and a Gradle plugin, in separate repositories

The Using RoboVM section points at three different places to get the tool working. There are pre-built plugins for Eclipse and IntelliJ IDEA, and for installation you are pointed at the homepage. For the Gradle plugin, you are pointed at the README in the plugins/gradle directory of the repository. The separation matters for a build setup, because the compiler and the build integration are versioned separately and a mismatch between them is the kind of problem that eats an afternoon. The repository layout shows how the pieces are arranged, with a compiler/ directory, a plugins/ directory, a dist/ directory, a pom.xml at the root, and build.sh, release.sh, setversion.sh and RELEASE.md as the build and release scripts. The pom.xml at the root is the Maven descriptor, which is a hint that the compiler is a JVM tool built with Maven rather than a Gradle one, and the wiki carries a Developer Guide and a Changelog alongside the website.

The licence is split, and the split is not even

The License section says to see the LICENSE files in the various sub directories, and then summarises: generally, RoboVM is GPL2, with the runtime code being Apache 2 for distribution on iOS. That sentence needs unpacking because it is the single most consequential legal fact about the project. The compiler itself, as GPL2, imposes copyleft on a derived work, and the exception is carved out narrowly, for the runtime code, and for a specific purpose, distribution on iOS. The iOS case is not arbitrary. Apple has historically restricted the terms on which GPL code could be distributed through the App Store, and a permissive licence on the runtime is the arrangement that makes an iOS distribution legally possible at all. For a team with a licensing review, the practical instruction is to read the LICENSE files in the sub directories rather than the summary, because which directory a file lands in determines its terms, and the summary cannot tell you that for a file you have not looked at.

What the community and the ecosystem around it look like

The README links a set of resources that describe the shape of the project. The website is at mobivm.github.io, the Developer Guide and the Changelog are in the wiki, and there is a link to RoboPods, a separate repository. That last one is the piece that determines whether the approach is practical for you. A native compiler for JVM bytecode can only compile what it can link, so the set of available native dependencies, the RoboPods, is the real constraint on which libraries your application can use. The other link is a developer blog by the contributor credited with the debugging work, which is a reasonable place to read about the state of the internals from someone working on them. The communication channel is a Gitter room, which is dated for a project with this much recent activity, and a team evaluating it should note that the community surface is small.

Where the project stands and what to check first

The visible facts are these. The last push was on 2026-10-07, the repository is not archived, and the three most recent releases are robovm-2.3.24 from 2025-11-08, robovm-2.3.25 from 2026-06-23 and robovm-2.3.26 from 2026-08-11. The stated supported baseline is iOS 16 and Xcode 14. The licences are GPL2 generally and Apache 2 for the iOS runtime code. The tooling is an Eclipse plugin, an IntelliJ IDEA plugin and a Gradle plugin. And the project is a fork of the last open-source release rather than the commercial continuation. Taken together, those facts point at a specific kind of project, a serious effort to keep a capable toolchain alive for people who need to ship native binaries from the JVM, maintained by a small group rather than a company, and strongest where its community has concentrated, which from the README is the iOS path and the debugging experience. A prospective user should verify the current Xcode support in the wiki, read the sub directory licences, and test the Gradle plugin against their own build before committing a project to it.

Editorial conclusion

RoboVM suits a Java or Kotlin team that needs to ship a native iOS or macOS binary from JVM code and is prepared to work with a compiler that is a community fork of an older codebase. It is the wrong choice for a team that needs current Android tooling, since an ahead-of-time native compiler is a different thing from an app runtime, and a poor fit for a project whose licensing review will not accept a GPL2 core with an Apache 2 exception carved out only for the iOS runtime. Before adopting it, read the LICENSE files in the various sub directories rather than the summary, and check the Developer Guide and the Gradle plugin README for the current supported toolchain versions, since the README names iOS 16 and Xcode 14 as the supported baseline.

Frequently asked questions

What is MobiVM's RoboVM?

It is an ahead-of-time compiler for Java bytecode targeting Linux, Mac OS X and iOS. Being ahead-of-time means it produces a native binary rather than shipping a virtual machine, which is what makes an iOS build possible. The topics list includes Kotlin alongside Java and JVM.

How is this RoboVM different from the original project?

This repository is a fork of the last open-source release of RoboVM, from the original robovm repository. It is a community-maintained continuation from that historical snapshot rather than a continuation of the commercial RoboVM line, with the 2.3 line receiving periodic patch releases.

What iOS and Xcode versions does RoboVM support?

The README states that iOS 16 and XCode 14 are fully supported. Interface Builder integration is also available, with details in a wiki article, and debugging support is described as finished and stable.

How do I use RoboVM with Gradle and with an IDE?

For Gradle you follow the README in the plugins/gradle repository directory. For the IDEs there are pre-built plugins for Eclipse and IntelliJ IDEA, and the homepage covers installation of those. The repository also has a Developer Guide and a Changelog in its wiki.

What license applies to RoboVM?

The README says to see the LICENSE files in the various sub directories, and summarises that RoboVM is generally GPL2, with the runtime code being Apache 2 for distribution on iOS. The per-directory files are the authoritative source for any particular component.

Official sources

  1. Issues
  2. MobiVM/robovm on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/mobivm-robovm.svg)](https://hysenlabs.com/projects/mobivm-robovm)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/mobivm-robovm.svg)](https://hysenlabs.com/projects/mobivm-robovm)

Was this useful?