iPhone a podpora Javy či Flashe … hm…

O tom, že by iPhone měl podporovat Flash i Javu se v minulých pár dnech mluvilo. A když už jsem se pustil do iphonování, tak dokončím i tohle, ostatně po přečtení článku Jirky Macicha mi přišlo, že ne každý pochopil pointu Javy v mobilních telefonech.

Vzpomínejme: pointa Javy měla kdysi být v tom, že seberete kód z jednoho počítače a on poběží na jiné mašině i v případě, že operační systém nedodala ta samá firma. Byla to vznešená idea, která oslovila i vývojáře pro desktop, než se ukázalo, že start Java Virtual Machine starajícího se o „interpretaci“ spouštěného programu, vytíží systém běžného tehdejšího počítače na dost dlouho na to, aby uživatele bavilo čekat. Chystané „office“ like balíky, které měly v Javě pokořit nativní Office na Windows, odpískal Corel/Wordpress i IBM a bylo po žížalkách. Pamatuju si je, byly hezké, ale víte, co je komické? Neuměly o mnoho více, než dnešní Google Docs a jim podobné aplikace. Ani nebyly hezčí. A už vůbec ne rychlejší.

Java tím nevychcípala na úbytě, jak se dalo čekat, ale ubytovala se na serverech a v hájemství firemních serverových aplikací, kde vývojáři ocenili objektivitu jazyka v době, kdy jiné jazyky pro vývoj serverových a webových aplikací objektovosti moc nehověly. Tím by bylo kouzlení s Javou zavřeno nebýt toho, že Sunu se podařilo protlačit ji do mobilních telefonů. Tam byla situace poněkud odlišná: vzletné heslo „writte once, run many“ sice na mobilech taky nefungovalo ani náhodou (model od modelu se všechno musí dodneška opravovat a testovat), jenže na mobily jiný obecně použitelný jazyk nebyl. A kdo chtěl dělat aplikace na mobily, jinou šanci neměl, bez ohledu na to, že pro každý nový mobil se musela aplikace trochu upravit a znovu přetestovat. Portace her mezi mobily je dodneška opruz pro každého vývojáře a slušně žijí firmičky nabízející dálkový přístup na osmset různých mobilních telefonů pro testování aplikací. Pronájem strojového času v tomto případě žije – a slušně.

V případě iPhone je situace opět odlišná. iPhone je počítač s telefonem, ne naopak. Místo toho, abyste používali limitovanou a nevalně rychlou Javu, máte k dispozici Objective C s Cocoa frameworkem, což je brutální rozdíl v pohodlí, rychlosti i přístupu k systémovým zdrojům. Stojí za to zmínit, že Java v mobilech (tedy J2ME) má řadu omezení a například až MIDP 2.0 umí zprostředkovat Java aplikaci přístup do telefonního adresáře atd. Securiti issues.

To je důvod, proč J2ME do iPhone je zajímavé pro fanoušky a bájezpytce, těžko ale pro realisticky uvažující vývojáře. Herní firmy sáhnou po nativním jazyku, který jim nabídne výkon i přístup k iPhone features jako multi-touch, grafickou akceleraci nebo náklonoměr. Myšlenka, že by stačilo vzít dnešní mobilní hry a „překompilovat je“ na J2ME v iPhone, je mylná: nestačilo, bude na tom hromada práce. Zhruba stejně, jako vzít hry z Mac OS X a „překompilovat“ je na Mac OS v iPhone. Je to hezká manažersko-novinářská myšlenka, která se skvěle vyjímá v powerpoint presentaci nebo kritickém článku, ale jak dorazí z boardmeetingu do programátorských slují v suterénu dané vývojářské společnosti, začnou se ozývat slova jak nad rybníčkem Brčálníkem.

Posledním důvodem jsou podmínky pro SDK: program vyvinutý na iPhone SDK nesmí spouštět jiné kódy, což mimo jiné zamezuje oficiální distribuci různých programovacích jazyků i software umožňujícímu instalovat pluginy. Neoficiálně to jde: na iPhone běží Ruby, Perl a další krasavci, ale to mluvíme o světlé zóně Jailbreaku. Takže suchým vývojem přes SDK to nepůjde, Sun by se musel dohodnout a Apple v tom smysl nevidí. Dlužno dodat, že v tom se s Apple shoduji: přínos J2ME pro iPhone vidím jako nulový. Rozebráno anglicky třeba zde.

Flash

S Flashem je to jiná káva. Flash by se v iPhone užil, protože je to přirozené krmivo pro řadu webových kouzel. Není to tak dávno, co se začalo šuškat o tom, že by ho iPhone přeci jen mohl dostat, ale ven se dostalo prohlášení Steve Jobse, že Flash v iPhone nebude. Důvodem má být problém s výkonem: implementovat celý Flash, na to výkon iPhone nestačí a dávat tam Flash Lite zase nemá smysl, protože ten stále podporuje málokdo a sada funkcí je příliš oškubaná na to, aby to k něčemu bylo. Pravda je, že ve Flash Lite videa Streamu nepřehrajete (proto taky mám privátní iPhone verzi), ale to jen tak na okraj, to asi Stevemu na srdci neleželo. Mně už by více.

Je otázkou, nakolik Steve kecá. iPhone má procesor 400 MHz, paměti hafo, rozebírají třeba zde, zda to stačí. To vede skupinky spekulantů k domněnce, že Apple využívá tanečky kolem Flash/iPhone k tomu, že tlačí na ústupky ve věci PDF. Jaké přesně, mi není známo, sám tomu nedávám zase tak vysokou pravděpodobnost, že by šlo o PDF se mi nezdá. Ale že by v něčem Apple tlačil, to se zase stát může, Adobe mu ostatně před dvěmi lety slušně podtrhla stoličku, když Jobsovi vzkázala, že kvůli tomu, že on se rozhodl přejít u Macků na Intel procesory, nebude přeci Adobe vydávat žádnou zvláštní verzi svých software a že si bude muset Apple počkat na běžná release. Adopci Intel Macků to zpomalilo o více jak rok, protože pro designery je Adobe Photoshop/Ilustrator klíčovou záležitostí. Že by to Steve Jobs vracel přes iPhony, se mi zdá příliš laciné, ale teorie samozřejmě bují.

Soudil bych ovšem smířlivě, že v tomto případě jde o peníze: Apple z toho nevidí přínos pro sebe, což může znamenat také to, že v tom nevidí přínos pro zákazníky. Pravdou je, že ve Flashi jsou na webu zhusta hlavně reklamy a těch mi na iPhone líto není. Zahraniční aplikace rychle přispěchaly s iPhone verzí, Youtube videa jsou v H.264 na iPhone viditelná a komu jsem už demonstroval kvalitativní rozdíl mezi mobilním videem, videokvalitou podporovanou v rámci Flashe a H.264 optimalizovaného pro iPhone, mi jistě dá za pravdu, že v případě iPhone má optimalizovaná verze co dát světu.

Vše výše uvedené ale nic nemění na tom, že spolu s ostatními iPhonisty želím nemožnosti bez doprošování se u Apple vyvinout Skype (ten dnešní webový iPhone mi moc nevoní) a některé další utilitky, které by vysely jako procesy stále.

Po Flashi se mi zasteskne místy, po J2ME vůbec. Sorry Sune.

Jak se vám líbil článek?
1 Star2 Stars3 Stars4 Stars5 Stars (hlasováno , průměr: 4,83)
Loading...

19 komentářů

  • Překlad MIDP aplikací pro iPhone by asi nebyl pracnější než to udělat znovu, ale kdo by si takovou aplikaci koupil? Prostým překladem a bez využití multitouch displaye a akcelerometru to bude nanic. Takže souhlas – java je tady nanic. Navíc mi není jasné jak by na tom portu Sun vydělal. Většinu co dělá do javy, tak dělá proto, že se mu to nějak vrací.
    A flash? Kromě videa, pár banerů a několika flex aplikací je nepotřebný. A je nějaký důvod, proč Stream nemůže podpořit video v H264 jako youtube ? 🙂

  • Moc zajímavé čtení, děkuju!

    Nevím, jestli bych si jako uživatel iPhone nepřipadal jako rukojmí. Apple to má pod palcem skutečně dokonale. Software na mém telefonu za tři tisíce nechávám plně na dodavateli, u „počítače s telefonem“ by mi to možná už vadilo.

    Jsem fanda otevřených řešení. Z krátkodobého hlediska Apple využil všech výhod uzavřenosti, z dlouhodobého hlediska bych měl raději Androida.

  • Jedine co mi prijde na Java pro iPhone možná zajimave je nasledujici:
    iPhone obsahuje dle wikipedie ARM procesor ARM1176JZ a tento ARM (jako i spousta novych jinych ARM procesoru) umožňuje přímo vykonávat instrukce Java bytecode v HW via rozhraní Jazelle DBX (Direct Bytecode eXecution) . Dozvěděl jsem se to nedávno a celkem mne to překvapilo.

    Takže pokud tomu dobře rozumím tak aplikace napsané v Java bytecode jsou pak přímo prováděné v HW (resp. cca 95% kodu je implementováno v HW, zbytek je emulován SW). Což mi přijde zajímavé. Záleží ovšem jak by se k tomu postavil SUN (asi by to celé SW emuloval a na HW se vykašlal)

  • y/i – vysely?

  • …které by vysely jako procesy stále

    Tady už jsme myslím za hranicí srozumitelnosti. Jedno špatné íčko a je to jiné slovo 🙂

  • Měl jsem pocit, že pan Macich pouze kopíruje texty cizích webů a myšlenkové pochody zase přebírá jen od pana Hulána (právě např. články o iPhone či úplně směšné o ICQ), – tendenční, bez jediné špetky čehokoli zajímavého. Já díky za váš článek :). J.

  • On hlavně iPhone (alespoň v US) ukousl takový kus trhu, že je nějaká interoperabilita vůbec nemusí pálit. Apple na ni ostatně kašlal odjakživa. Fakticky jsou dnes smartphony ve stejné pozici, v které byly kdysi domácí osmibity. Důležité je kolik to má barviček, jak to hraje, a jak se na tom píše a develuje. Co tam běhá za OS je naprosto volný, důležitý je jenom aby bylo slušný a dostupný SDK.

  • když už jsme u těch i/y : Securiti

  • zde: Ze by paralela s Commodore 64? 😉

  • No mne stačí zabrúsiť na nejaký brutálnejší Flash web na mojom MacBooku, pozrieť sa na teplotu procesora a otáčky ventilátora a hneď mi je jasné prečo nieje Flash pre iPhone. Veď by batéria za hodinu chcípla.

  • mac: Vida, a já mám zkušenosti přesně opačné. Syn má „na destrukci“ starý NTB (Celeron na 400MHz s Windows), a hraje na tom různé hry pro děti, jak nativní, tak flashové. A větrák se roztáčí jen u těch nativních. Jsou to většinou různé 2D skládačky, a Flash to UI zřejmě dělá líp- překresluje jen když je třeba, jinak furt spí. U nativní win32 aplikace stačí něco dragnout myší, zůstat na místě a držet tlačítko, a větrák s hned roztočí.

  • Ad Java: podle TheRegister JesusPhone Javu bude mit (cituje primo VP Sunu, Erica Kleina). Ono namastit nejaky konektor do informacniho systemu v Jave je preci jenom jednodusi, nez to mastit v C++.

  • Abych doplnil svuj predchozi komentar: Ten user agreement je tu kvuli security, jak pan Zandl pise. Tyka se to hlavne malych ISV, kteri by mohli pri spousteni stahovaneho kodu neco zkopat diky spatne napsanym vlastnim aplikacim.

    Na druhou stranu Sun, jako monopol sveho druhu, ma dle meho ciste soukromeho nazoru trzni paky na to, aby Javu na iPhone protlacil.

  • a co takhle dát aspon něco dostupnhé ve verzi pro iphone.

    Na Flash se vážně nedá na Macách dívat!!

  • Uff, takhle tendencni (napsal bych to i drsnejc) clanek uz jsem dlouho necetl. Jestli umi procesor vykonavat instrukce JVM nativne, od C se uz nelisi (garbage collector se zacina v C++ prosazovat cim dal vic, kdyz vidi, ze to je lepsi nez normalni MM) — akorat je to lip navrzeny (vyjimky jsou opravdu pouzitelne, streamy a dalsi).

    Plac nad pomalosti Javy — vite, ze Java uz je ve vyssi verzi nez 1.1? Mne porad pripada, ze si mnoho lidi precetlo recenzi 1.1ky, a pak pise takovehle clanky.

    Jsem zklaman, driv jsem Marigolda moc rad cetl.

  • >Plac nad pomalosti Javy — vite, ze Java uz je ve vyssi verzi nez 1.1? Mne porad
    >pripada, ze si mnoho lidi precetlo recenzi 1.1ky, a pak pise takovehle clanky.

    Mno jo – az se ukaze nejaka slusne rychla apliakce napsane v Jave, tak treba lide nad pomalosti Javy nebudou plakat.

  • Vy znate jenom pomaly? Ktery?
    Ja pouzivam treba jajuk pro prehravani hudby. Ma vsechny vlastnosti, ktery od takovyho softu cekam.
    Co se tyce telefonu: http://code.google.com/android/kb/general.html. Myslite, ze jsou panove od googlu hlupaci, aby pouzivali neco TAK pomaleho?
    Prosim, jmenujte ty pomale aplikace. Pokud chcete plakat nad Netbeans, srovnavejte s obdobne velkym softem v C++. Treba C++Builder 6 byl rozhodne VYRAZNE pomalejsi.

  • Tedy – nemuzu rict, ze by start Javy treba na Symbian s80 byl desive rychly, ale vetsina aplikaci, ktere pouzivam (a nejsou puvodni) je Javova (GMail, Opera, Jabber klient). Pochybuju, ze by je nekdy nekdo napsal nativne pro s80 … Takze z meho pohledu je Java na chytrem telefonu fantasticka vec.

    Stejne tak na desktopu (a tady me doba nez nabehne JVM vazne netrapi) – plus je vyborne, kdyz muzete preskocit mezi Linuxem a Windows a porad muzete pouzit to same.

  • souhlasim s poslednimi par prispevky. java rozhodne ano. uz davno neplati pomalost javy. navic s prichodem JSR-231 (Java Bindings for OpenGL) se da v jave delat i 3d grafika na profesionalni urovni. zkuste si vygooglovat „jake2“. to je port hry quake 2 do javy. v poslednich verzich java opengl implementaci je java kod dokonce RYCHLEJSI nez original (!!!), diky cemuz se odpurcum javy a jejich argumentum s „pomalosti“ mohu opravdu vysmat. pro mobilni telefony a ruzne polo-pc je tu opengl es, taktez podporovane javou

    dalsi vec me ale velmi zarazi a nuti me se zamyslet nad tim, zda autor clanku vubec nekdy neco napsal pro mobilni javu. jake problemy s prechody mezi telefony? jake re-compilace? jste normalni? vzdyt to cele podleha standartum .. uff