OK, chyba nie wyraziłem się jasno...
Niewątpliwą zaletą chyba wszystkich technologii, które tutaj zostały wspomniane jest bezpośrednia (lub prawie bezpośrednia) przenośność kodu. Czyli np. w przypadku gry, jesteśmy w stanie wypuścić grę na różne platformy za pomocą kilku kliknięć - to jest niezaprzeczalna zaleta i o to nikt się chyba nie kłóci. Oczywiście, że wiele z tych narzędzi ma również zaletę w postaci wielokrotnie wyższej produktywności w jakimś, na ogół wąskim, zakresie.
Tylko użycie dowolnego z tych narzędzi to również pewne koszty - czyli dla przykładu możliwości wykorzystania jakiejś konkretnej funkcjonalności systemu. Nie znam możliwości AIR - bawiłem się tą technologią na początku jej istnienia, nie mniej wadą wszystkich praktycznie narzędzi programistycznych działających w oparciu o maszyny wirtualne, czy inne player'y (dotyczy to również Java) jest postawiona gdzieś granica - w zależności od narzędzia "czegoś" oferowanego przez system nie obsłużysz, lub zrobisz to w sposób makabrycznie niewygodny. Nie wiem co to jest w każdym z konkretnych przypadków i czy mur jest postawiony przed np. uruchomieniem innej aplikacji, wysłaniem maila, skorzystaniem z lokalizacji, sterowaniem jakąś diodą itd. Owszem, można liczyć na to, że jakaś dobra dusza napisze nam bibliotekę, która na konkretnym systemie pozwoli na w miarę wygodny dostęp do konkretnej funkcjonalności, ale jeżeli takiej biblioteki nie znajdziesz, to niestety, ale masz problem dużo większy niż pisząc w dedykowanym dla danej platformy języku programowania. Czyli od pisania kodu natywnego nie uciekniesz, możesz jedynie poszukać, czy ktoś już tego nie zrobił za ciebie. W dodatku te natywne funkcjonalności nie są jakieś czarnomagiczne - ot, wysłanie czegoś na facebooka, ustawienie alarm managera, puszczenie jakiegoś zadania w formie serwisu itd. - z tego się korzysta na co dzień i tym różnią się programy dla androida od aplikacji JME.
I co by ostatecznie podsumować - gdyby ten artykuł miał tytuł "Jak zacząć programować na urządzenia mobilne", "Jak zacząć szybko programować na Androida", "Jak pisać gry", to pisząc dzisiaj taki poradnik, zawarłbym w nim inną treść i nie upierał się przy "Java trzeba znać". A że pisałem to jakieś 2 lata temu i dotyczy on programowania na Androida aplikacji ogólnego zastosowania, to niestety, ale Java była i jest nadal pozycją obowiązkową, chyba, że ograniczamy się do np. programowania tego co da się zaprogramować przy użyciu języka X.