Apple nie pozwala instalować na swoich produktach mobilnych aplikacji korzystających z wirtualnych maszyn bądź podobnych rozwiązań. Oficjalnie tłumaczy to troską o wygodę i dobro konsumenta, lecz według komentatorów chodzi jedynie o pełną kontrolę nad platformą. Dlatego urządzenia takie jak iPhone nie posiadają Flasha, Javy ani innych wirtualnych środowisk uruchomieniowych. Jednak ekipie z Novella, zajmującej się rozwojem Mono, udało się obejść ograniczenia narzucane przez Apple.
Joseph Hill z Novella w rozmowie z Edem Brunette opowiada, w jaki sposób jego zespół stworzył rozwiązanie pozwalające uruchamiać na iPhone (i iPad) programy napisane dla platformy Mono:
Ed: Dlaczego Apple umożliwia użycie technologii .NET za pomocą MonoTouch, podczas gdy wyklucza użycie Javy na iPhone/iPad?
Joseph: Java (i inne środowiska uruchomieniowe) są wykluczone z platformy iPhone, ponieważ [napisana w niej – przyp. tłum.] aplikacja nie może uruchamiać kodu z zapisywalnej pamięci. Maszyny wirtualne – takie jak Java czy .NET – generują natywny kod z bytecode’u w locie, a następnie go wykonują; jednakże, z różnych względów, jądro iPhone’a nie pozwoli na uruchomienie tego kodu. Technologia Ahead-Of-Time (AOT), dostępna w Mono, omija ten problem generując cały natywny kod – który aplikacja miałaby generować w locie – przed jej uruchomieniem, dzięki czemu uruchamiana na iPhone aplikacja jest w 100% natywna.
Dalej omawiane są ograniczenia w dostępie do bibliotek Mono i mechanizmów .NET z poziomu MonoTouch, a także dostępne narzędzia, pozwalające tworzyć aplikacje w tej technologii. Wywiad kończy się konkluzją Eda:
Miejmy nadzieję pewnego dnia ujrzymy więcej podobnych obejść dla języków takich jak Java czy Lua, bądź być może Apple po prostu ustąpi i zniesie ograniczenia. Programiści powinni mieć możliwość dobrania jak najlepszych narzędzi według ich własnych potrzeb i doświadczenia, a nie arbitralnych zasad ustalonych w Cupertino.
Dodaj komentarz