A Netflix új, modulokra épülő parancssori eszközöket mutatott be Javahoz
A Netflix bemutatta a ja és a hozzá kapcsolódó eszközök előzetesét, amelyek a Java modulrendszerére építve kínálnak modernebb parancssori fejlesztési környezetet. A megoldásokat úgy tervezték, hogy a kódoló ügynökök könnyebben megtalálják a függőségeket, a dokumentációt és a forrásokat.
- A Netflix előzetesként bemutatta a ja Java-eszközcsaládot.
- A rendszer a Java Module Systemre épül, és különálló parancssori eszközöket fog össze.
- A jig a modulverziók feloldását, a fordítást és a Maven-kapcsolatot kezeli.
- A jist a kódoló ügynökök forrás- és szimbólumkeresését segíti.
- A modulfüggőségek integritását tartós hashértékek ellenőrzik.
A modulleíró válhat a projekt központi leírásává
A Netflix Technology Blog szeptember 18-án ismertetett bejelentése szerint a ja eszközcsalád a Java Module System képességeire épít. A vállalat elképzelése szerint a modulleíró nem pusztán a projekt egyik adata lehet, hanem a projekt teljes leírását is tartalmazhatja.
A függőségek verziói a requires direktívák mellett szerepelhetnek, a modul metaadatai pedig dokumentációs címkékkel egészíthetők ki. A parancssori felület a Netflix szerint más programozási nyelvekben megszokott kényelmi megoldásokat hozza el a Java modulok létrehozásához és használatához.
Négy különálló eszköz alkotja a rendszert
A ja maga a parancssori kezelést és az eszközök összehangolását biztosítja, az egyes funkciók mögött különálló programok dolgoznak. A jig feladata a modulverziók feloldása, a fordítás és az összeállítás, továbbá kapcsolatot teremt a Maven-tárolókkal. Modulproxyként és közzétételi eszközként is használható.
A jfmt a Java programozási nyelv kódolási konvenciói alapján formázza a forráskódot. A jist forrásismerő szimbólumkeresést kínál, grep-szerű felülettel, így a kódoló ügynökök indexelés, LSP vagy MCP nélkül is hozzáférhetnek az osztályfájlokhoz és a hozzájuk tartozó forrásokhoz. A jdocserver helyben böngészhető API-dokumentációt szolgáltat.
Az eszközök a platform eszközfelderítési és futtatási képességeit használják, és a Netflix szándéka szerint a szabványos eszközökkel együtt telepíthetők a JDK-ba. A ja a modulrendszer beállításai alapján oldja fel az egyes parancsok argumentumait, így a forrásútvonalas moduloktól a jdeps, a jlink és a jshell használatáig biztosít átmenetet.
A Maven Central és a biztonság is központi szerepet kap
A Netflix egy, a Maven Central 1000 legnépszerűbb csomagját vizsgáló felmérésre hivatkozik. Eszerint 232 csomag rendelkezett kifejezett moduldefinícióval, 248 automatikus modulnevet adott meg, 520 pedig nem tartalmazott Java-modulnevet. Ezért a modulokra épülő eszközöknek a meglévő tárolók modulneveinek feloldására is megoldást kell kínálniuk.
A jig ehhez a Maven-csoportazonosítók ellenőrizhető, fordított DNS-neveire és a modul teljes nevére épülő kanonikus koordinátákat használ. A vállalat szerint ezekkel a név- és helymeghatározási szabályokkal a meglévő csomagok többsége már a modul neve és verziója alapján felfedezhető.
A ja a futtatási hozzáféréseket is modulmetaadatként kezelné. Az alkalmazásnak továbbra is kifejezetten engedélyeznie kell az adott keretrendszer hozzáféréseit, például a végleges mezők módosítását. A feloldott bináris függőségek hashértékei a module-info.hash fájlba kerülnek, a későbbi feloldás pedig ellenőrzi ezeket, és elutasítja a megváltozott csomagot. A Netflix az annotációfeldolgozást is kifejezett kódgenerálási lépésként kezeli, így a generált források láthatóvá válnak a kódellenőrzésben.
A Netflix szerint minden Java-projektnek modulárisnak kellene lennie, függetlenül a használt buildeszköztől. A ja és eszközei előzetes kiadásként érhetők el, a használat megkezdéséhez a vállalat telepítési útmutatót kínál.
Netflix Technology Blog: Leave the Class Path in the Rearview Mirror

