OpenJDK-ra vált az Android N
Hivatalosan is megerősítette a Google, az Android a következő verziótól fogva a szabad szoftveres Javára, az OpenJDK-ra áll át. A régen várt lépéssel végre fejlett képességeket kapnak az Android-fejlesztők is.
Elkezdte az OpenJDK-ra való átállást az Android fejlesztői csapata - vette észre a Hacker News egyik felhasználója az év végén. Az Android Git forráskezelőjében jelent meg november közepén az OpenJDK fájlok első importálása, ami az átállás első lépése. Az OpenJDK-ra való átállást a Google órákkal később hivatalosan is elismerte a Venture Beatnek, ezzel kész tényként kezelhető, hogy az Android különutassága (a Javát tekintve) gyakorlatilag befejeződött.
Miért érdekes ez?
Az Android alatt a Google saját fejlesztésű, nem-teljes Java-implementációja dolgozik. A nyelv ugyan Java, az alap könyvtárakat azonban a cég alternatív verziókra cserélte. Ezek API-szinten kompatibilisek a hivatalos, Sun/Oracle-féle Java-szabvánnyal, egészen pontosan annak 1.6-os verziójával. A probléma: ez a nyelv 2006-os állapotát tükrözi. Azóta (hosszú szünet után) 2011-ben kijött a Java SE 7 és tavaly márciusban a Java SE 8 is, ráadásul a Java 9 is egy éven belül érkezik, miközben az Android-fejlesztők még mindig az 1.6-os (vagy simán 6-os) kiadással kénytelenek együtt élni - a téma a Budapest Mobile fejlesztői csoportban is rendszeresen felbukkan.
Az androidos Java alapjait egyébként az Apache Harmony projektje adta, amelynek célja egy, a Suntól független, szabványos Java implementáció létrehozása volt. A projekt kudarcot vallott (változatos licencelési problémák miatt) és 2011-ben az Apache teljesen le is állította a Harmony fejlesztését. Ez egyúttal a Harmony-alapú Android SDK-t is kényszerpályára küldte, a Google-re maradt a saját fork karbantartásának felelőssége és feladata, amit a cég finoman szólva is vonakodva végzett el.
Az Android SDK egyre súlyosabb lemaradása azt jelentette, hogy a fejlesztőknek nem állnak rendelkezésre a modernebb Java korszerű megoldásai, például a Java 8 Lambda kifejezései. Ezeket független fejlesztők igyekeztek backportolni az Androidhoz (itt például az egészen kiforrott RetroLambda projekt), a merészebbek pedig egyenesen Java-alternatívát fejlesztettek, mint a Kotlin. Az "egységsugarú" fejlesztőnek (vagy azoknak, akik nem akartak még több külső könyvtárat és megoldást bevonni) ez nem adott kielégítő választ a problémára, az Android Java-alapjai reménytelenül elavultak.
Az OpenJDK a Java SE referenciaimplementációja, ennek megfelelően első perctől támogat minden technológiát, amelyet a nyelv új kiadása bevezet. Így az OpenJDK jelenlegi, 8-as kiadása értelemszerűen a Java SE 8-nak, a soron következő 9-es pedig a Java SE 9-nek felel majd meg, az Android-fejlesztők így rögtön a legfrissebb implementációnak örvendhetnek, ami szó szerint 10 éves ugrás lesz fejlődésben.
Machine recruiting: nem biztos, hogy szeretni fogod Az AI visszafordíthatatlanul beépült a toborzás folyamatába.
Ugyan az OpenJDK általános célú Java-implementáció, az Oracle még szeptember végén bejelentette, hogy készül egy új, mobilos projekt az OpenJDK alatt, amely kimondatlanul is az androidos integráció egyik alapját jelentheti majd, de készül belőle iOS-es és Windows 10-es port is, ami egy értékes keresztplatformos technológiát hozhat. A tervek szerint az OpenJDK Mobile alapját az API egy részhalmaza, a compact2 profil adja majd. Hogy pontosan hogyan viszonyul ez a projekt a Google-döntéshez, egyelőre nem világos, de várhatóan a Google I/O-n minden kiderül majd.
Miért léphetett a Google?
Ennél is fontosabb érv lehetett azonban az Oracle által indított szerzői jogi per a Google-féle Java-implementáció ellen. A szoftveróriás szerint ugyanis a Java API-t szerzői jogok védik, amelyeket a Google a saját implementációval megsértett. A per végére idén júniusban került pont, ekkor utasította el az utolsó fellebbezési kérelmet az amerikai Legfelsőbb Bíróság, ezzel helyben hagyta a korábbi ítéletet, miszerint az API-t a tulajdonképpeni implementációtól függetlenül szerzői jog védi. Ezzel az Oracle nagyot nyert, várhatóan jelentős kártérítésre számíthat a Google részéről, a Google pedig kényszerhelyzetbe került: vagy licenceli a Java API-t az Oracle-től a saját implementációjához, vagy áttér az Oracle-féle, szabványos, licencelt, szabad szoftveres implementációra.
A Google végül ez utóbbi mellett döntött, a hivatalos bejelentés szerint az Android következő kiadásától, a betűrendben N-ként azonosított verziótól fogva a rendszer alatt már az OpenJDK dolgozik. Ezzel a lépéssel a Google elvben nagyot veszített, a platform jelentős részét képező programozási nyelv fölött immár az Oracle "uralkodik", utóbbi cég szabhatja meg a fejlődés irányát. A veszteség azonban azért csak elvi, mert ezt a mozgási lehetőséget a Google korábban sem használta ki, a saját Java-implementációt az évek során nem bővítette izgalmas új lehetőségekkel (helyette egész máshol koncentrálta az innovációs potenciált).
A döntéssel tehát az Oracle ismét a Java-világ egyeduralkodója lett, annak ellenére, hogy a Google operációs rendszere gyakorlatilag a legnagyobb Java-alapú platform ma a világon. Az OpenJDK egyébként nem az Oracle kizárólagos projektje, annak fejlesztésében részt vesz például a (pont a Harmony projekttől átcsábított) IBM, a Microsoft, a saját Java-projektjének befejezése után az Apple, illetve az SAP is. Az OpenJDK-hoz a Google már korábban is járult hozzá saját kóddal, nem elképzelhetetlen, hogy a projekt vezetésében csendben a Google-nek is jut majd hely, cserébe a kompromisszum megkötéséért.
Maradtak kérdések
A fejlesztők számára persze az átállás legalább annyi kérdést nyit ki, mint ahányat megválaszol. Az új, OpenJDK-alapú Android esetében mi lesz például néhány Google-fejlesztés sorsa. A saját implementáció ugyanis nem standard Java bájtkóddal dolgozik, hanem egy egyedi formátumot használ, amely a saját fejlesztésű Dalvik JIT (illetve Android 5.0 óta) az ART AOT motoron fut. Elképzelhető, hogy ez a megközelítés az OpenJDK-váltás után is marad, az ördög persze a részletekben rejlik majd.
A cikk elkészítésében közreműködött Orosz Gábor, a Budapest Mobile fejlesztői Facebook-csoport alapítója, szabadúszó fejlesztő.