Java W 2008 roku Sun Microsystems zapowiedziało prace nad JVM dla iPhone’a/iPoda touch, opartą na Java ME. Komentatorzy wskazywali jednak na ograniczenia w umowie iPhone Developer Agreement, które mogły utrudnić uruchamianie środowisk wykonawczych i pobieranie kodu z zewnętrznych źródeł bez współpracy Apple. Doniesienia prasowe opisywały też rozmowy Apple–Sun dotyczące tej kwestii. W tym okresie wskazywano również na możliwość sprzętowego wsparcia wykonania Javy () na procesorze iPhone’a.
W praktyce kluczową barierą było to, że Apple wymagało dystrybucji aplikacji przez App Store i utrzymywało zasady ograniczające „uruchamianie” dodatkowego kodu w aplikacjach. W 2010 r. szeroko komentowano postanowienia licencyjne/wytyczne w rodzaju: brak możliwości pobierania/instalowania wykonywalnego kodu oraz bardzo ograniczone wyjątki dla kodu interpretowanego (w tym wyjątek dla WebKit/JavaScript). Zamiast systemowej/„oficjalnej” JVM na iOS pojawiły się narzędzia, które pozwalały pisać w językach JVM, ale finalnie budowały natywną aplikację (bez JIT i bez pobierania bajtkodu w trakcie działania). Przykładem był RoboVM – kompilator AOT bajtkodu JVM do kodu maszynowego (z użyciem LLVM), opisywany jako zgodny z wymaganiami Apple.