Java je otevřená…
Společnost Sun Microsystems vydala Javu jako open source už více než před rokem. Měla k tomu v podstatě dva hlavní důvody. Jednak se tímto krokem chtěla více „skamarádit“ s open-source komunitou, chtěla ale také získat nové vývojáře, nápady a opravy pro svůj přední produkt.
Pod licencí GNU GPL je však vydána pouze Java Standard Edition. Otevřená Java je k dispozici pod názvem OpenJDK a licence GNU GPL verze 2 byla doplněna o Classpath doložku. Ta umožňuje proti knihovnám linkovat také kód vydaný pod jinými licencemi. Technicky je tak licence podobná GNU LGPL.
… ale ne úplně
Sun však vymyslel velmi chytrou taktiku, která mu umožňuje stále Javu kontrolovat. To byl během úvah o otevření asi největší problém. Totiž jak si stále udržet kontrolu a vydělávat i nadále na prodeji komerčních licencí.
Sun na to šel velmi šalamounsky a mobilní Javu vydal bez Classpath doložky. To znamená, že ji sice můžete využít, ale svůj kód musíte vydat také pod GNU GPL, protože je přímo založen na Java knihovnách. Využívá se při tom chytře virální podoba licence, která „infikuje“ i závislý kód.
Tímto chytrým krokem Sun způsobil dvě věci: V očích komunity je to jistě skvělý tah a vývojáři se zaradovali, že mají konečně vysněné kódy po ruce. Na druhou stranu to ale pro Sun znamená zajištění příjmů do budoucna. Komerční firmy (třeba výrobci mobilů) si raději zaplatí za jinou komerční licenci, aby mohly vyvíjet uzavřený software. Sun tak má nakonec jak nakloněné lidi z komunity, tak i peníze a kontrolu nad Javou.
Sun také jistým způsobem podpořil také projekt Harmony, který implementuje vlastní Javu pod licencí Apache. Harmony dostal od Sunu licenci na testovací nástroj TCK, který umožnil certifikovat Harmony jako plně kompatibilní prostředí.
Chytrý Google na scéně
Google nedávno oznámil, že připravuje vlastní platformu pro mobilní telefony. Ta bude založena na Linuxu a ponese název Android. To už víme, ale zajímavé je, že Android bude obsahovat mobilní Javu, vydanou pod licencí Apache License v2.
To samozřejmě zvedlo velkou vlnu zájmů a všichni (zřejmě včetně vás) se teď ptají: Jak je vůbec možné, že Sun licencoval něco takového? Vždyť to může velmi vážně ohrozit suverenitu jeho mobilní Javy na trhu. Odpověď je jednoduchá, ale o to víc překvapivá: Sun to nebyl.
Google si totiž pomohl sám a vtipně prokličkoval mezi licencemi Sunu, aniž by potřeboval jeho požehnání. Odpovědí na originální mobilní Javu je něco, čemu Google říká jednoduše Dalvik. Podle všeho to zřejmě bude nová noční můra společnosti Sun.
Java nejava
Dalvik je virtuální stroj, velmi podobný kolegům jako Java nebo .NET. Vytvořil jej však Google a uvolnil jeho zdrojový kód, aniž by se při tom musel někoho ptát. Otázkou sice je, co s tím Sun udělá a jak budou vypadat žaloby, které podá (pokud to udělá), ale v tuto chvíli je Dalvik venku a je k dispozici všem.
Celý trik však spočívá v tom, jak Dalvik funguje. Technicky vzato je plně kompatibilní s Javou, ale používá vlastní bytekód. Google ale netvrdí, že se jedná o Javu, nýbrž o jeho vlastní řešení. To, že je kompatibilní s Javou, je takový „bonus navíc“, který je ale přes nenápadný postoj Google naprosto zásadní.
Google tedy používá vlastní engine a k němu přidal knihovny ze zmíněného svobodného projektu Harmony. Tím zcela obešel licence Sunu, protože nepoužil žádný z jeho kódů. Nakonec tak může výsledek vydat pod licencí Apache, která uživatele nesvazuje svou virovostí.
Kompatibilita prostředí Java a Dalvik je zajištěna přímou konverzí bytekódu. Pokud chcete upravit program pro Dalvik, nejprve použijete klasický kompilátor Javy a vytvoříte binárku. Tu poté s pomocí Googlem dodávaného nástroje DX převedete do nového bytekódu. Program změní soubory .class
a .jar
na nové s příponou .dex
. Výsledek už poběží na Androidu.
Z toho samozřejmě plyne několik zásadních výhod: Při vývoji pracujete s klasickou Javou včetně všech dostupných nástrojů a vyvíjíte, jak jste zvyklí. K samotné transformaci ale vůbec nepotřebujete zdrojové kódy a převést tak můžete i uzavřené projekty.
V důsledku tak vlastně Google vytvořil vlastní implementaci Javy, která ovšem z právního a technického hlediska vůbec Javou není a už vůbec není závislou na původním produktu firmy Sun. Nepodléhá tak žádným licenčním ujednáním stejnojmenné firmy. Převod programů je navíc natolik jednoduchý a bezproblémový, že nepředstavuje významnou překážku v nasazení.
Co na to Sun?
Veselé však na celé věci je, že Sun může jen nečinně přihlížet a sledovat, jak mu někdo bere vítr z plachet. Mohl by této situaci teoreticky předejít, pokud by měl patent na standardní Java knihovnu, ale on jej nemá. I tak je ovšem otázka, jak by jej byl schopen aplikovat proti něčemu, co vlastně ani s jeho programem (tedy onou knihovnou) není kompatibilní, natož aby jej někdo vykrádal.
Je samozřejmě možné, že se firma obrátí na soud s tím, že Google zneužil jejího intelektuálního vlastnictví. To je ale běh na dlouhou trať a v tuto chvíli je dost těžké odhadnout, jaká je jeho šance na úspěch.
Sun má totiž stále ještě možnost napadnout koncové uživatele Dalviku. Licence Apache totiž umožňuje licencovat intelektuální vlastnictví a poskytnout jej dalším uživatelům, ale licenci lze aplikovat jen na to IP, které vlastníte. Takže by mohl Sun teoreticky postupně obcházet uživatele (výrobce telefonů) a chtít po nich platbu za licence.
Ve výsledku však Sunu vznikla velmi silná konkurence, kterou nemá jak ovládat a která zároveň nahrává do karet výrobcům mobilních zařízení. Ti si totiž mohou říci „mám platit Sunu za komerční licenci nebo sáhnout po Dalviku, který umí totéž a zadarmo“. Zřejmě si to proto nenechá líbit.
Google přechytračil Sun
Ať už se Sun zachová jakkoliv, je zřejmé, že Google převezl licenčně Sun a vytvořil odvozený produkt, který vlastně zároveň odvozený není a ani není možné prokázat jeho přímou kompatibilitu. Dalvik má proto jistě šanci na úspěch a mohl by tak Sunu odlákat určitou skupinu platících uživatelů. Je navíc názorně vidět, že i svoboda může být svobodnější.
Článek vychází z anglického originálu, jehož autorem je Stefano Mazzocchi.