De som bryr sig om Javaplattformens framtid ser med spänning fram mot 27 juli då version 9 av grundplattformen Java SE ska presenteras, se faktaruta. Den största nyheten blir en ny arkitektur för att organisera Javaapplikationer, vilket kallas modularisering. Den nya arkitekturen är sedan länge känd under arbetsnamnet ”Project Jigsaw”.

Nu höjs starka röster om att den här lösningen är fel väg att gå för att bygga avancerade serverapplikationer med Java, baserade på standarden Java EE. Det är framför allt Red Hat och IBM som är viktiga namn i Javavärlden som har invändningar.

Red Hats chefsarkitekt Scott Stark talar i ett evighetslångt blogginlägg (uppemot 60 000 tecken) om varför Project Jigsaw är en dålig idé. Lite sent kan tyckas, med tanke på att Java SE 9 snart presenteras och han har haft åtskilliga år på sig att framföra kritik.

Läs också: Förseningar präglade den stora Java-konferensen

Scott Stark får medhåll av bland annat IBM:s Tim Ellison, med titeln Senior Technical Staff Member, som berättar att IBM kommer att rösta nej till ett förslag om hur den nya modulariseringen ska implementeras i bland annat nästa version av server-Java (Java EE), se faktaruta.

Vad handlar det här om?

Project Jigsaw innebär i korthet att applikationer kan göras mindre, eftersom delar av Javaplattformen som inte behövs i en applikation inte behöver inkluderas. Det här är viktigt inte minst i iot-sammanhang, med enheter med små resurser i form av till exempel processorkraft och minne.

Men den nya modulariseringen innebär mer än så. Mycket mer. Det handlar till exempel om att bakåtkompatibilitet kommer att brytas i vissa fall och att vissa äldre delar av Javaplattformen kommer att fasas ut. Man är helt enkelt tvungen att bryta med synder från det förgångna för att kunna röja upp i plattformen. Belöningen ska bli bättre arkitektur, förbättrad säkerhet, samt mer slimmade och mindre komplexa applikationer.

Att bryta bakåtkompatibilitet är en öm punkt bland Javautvecklare. Speciellt bland dem som utvecklar avancerade företagsapplikationer som körs på servrar.

Nu har vi kommit till pudelns kärna. Red Hats Scott Stark, IBM:s Tim Ellison, med flera, menar att modulariseringen i Java SE 9 inte kommer att fungera i Java EE 9 som förväntas bli presenterat sent nästa år.

Så här skriver Scott Stark: ”Begränsningarna i Jigsaw kommer nästan säkert att innebära att Java EE 9 inte kommer att kunna baseras på Jigsaw. Det skulle krävas att Java EE-leverantörer fullständigt slänger ut kompatibilitet, interoperabilitet och paritet med äldre Java EE-versioner vad gäller funktionalitet”.

Här är en kort sammanfattning av Scott Starks kritik:

  • Om Java EE 9 inte baseras på Java SE 9 (Jigsaw) kommer vi att få se en tvådelad Javavärld. Java EE-utvecklare kommer att fortsätta jobba som de alltid gjort. Att döma av historien är fragmentisering aldrig positivt vad gäller it-plattformar.
  • Om det finns två grenar av Javaplattformar ökar riskerna för problem med kompatibilitet, integration och säkerhet.
  • Java EE-utvecklare riskerar att inte få ta del av flera års arbete med att modernisera Javaplattformen, med avsikten att förbättra arkitekturen. De blir fast i det förgångna. Java EE kan till slut bli ”det nya Cobol”.
  • Det finns risk för en storskalig strid som kommer att få bråket mellan Oracle och Google om Java på Android att framstå som en skärmytsling. Det här kan bli fallet om Oracle står på sig och försöker införa Jigsaw i Java EE 9 mot starka intressenters vilja.

Daniel Deogun som är senior Javautvecklare på svenska konsultföretaget Omegapoint nämner ett exempel på ett tekniskt problem med införandet av den nya modulariseringen i Java EE:

Daniel Deogun
Daniel Deogun.

– En del ramverk laddas dynamiskt och då antar jag att de måste deklareras. Man måste reda ut hur det ska fungera med dynamisk laddning av moduler och det är problematiskt i sig, säger Daniel Deogun.

Läs också: Oracle anpassar server-Java till verkligheten – storsatsar på Rest och Json

Det här är bara ett exempel på hur det kan bli problem med kod för existerande Java EE-applikationer. Det kan tyckas som om det inte är så viktigt, men om det finns många problem på detaljnivå så blir det sammantaget jobbigt att säkerställa att gammal kod fungerar på en ny version av Java EE-plattformen.

I praktiken kan man konstatera att Oracle helt enkelt inte kan, och inte vill, backa vad gäller Jigsaw. Frågan är vilket genomslag den nya arkitekturen får. Oracle vill garanterat, till varje pris, undvika att ha dubblerade arkitekturer, som Jigsaw i Java SE 9 och inte Jigsaw i Java EE 9, med allt vad det medför av dyrt och krångligt underhåll. Oracle vill inte heller att den nya modulariseringen bara blir en ”feature” för iot-tillämpningar.

Daniel Sawano som är senior utvecklare och arkitekt på Avanza Bank har funderat på vad som händer med Javaplattformen:

– Att den här diskussionen förs offentligt visar att det är stora motsättningar. Det är intressant att det till stor del handlar om ideologiska motsättningar, säger Daniel Sawano.

Daniel Sawano
Daniel Sawano.

– Om den nya lösningen för modularisering inte kommer att användas i Java EE så innebär det att många utvecklare inte får ta del av det arbete som har gjorts med att förbättra arkitekturen, fortsätter Daniel Sawano.

Han framför också en del allmänna invändningar mot den nya modulariseringen:

– Vi får se vilken påverkan den nya modulariseringen får. För inbäddad utveckling blir den extremt användbar, för att krympa storleken på program. Men enterpriseutvecklare kanske inte kommer att märka av den, säger han.

Det är garanterat inte vad Oracle vill höra. Man har satsat enorma mängder arbete och prestige på den nya modulariseringen och vill så klart att den ska få en genomgripande effekt på all slags Javautveckling.

Det tycks som att Oracle står inför ett olösligt problem, ett pussel som det finns för många bitar till.

Fakta

27 juli ska Java Development Kit (JDK) 9 lanseras. Det är Oracles implementation av standarden Java SE 9.
Omröstningar om hur Javaplattformen ska utformas sköts av Java Community Process (JCP), organisationen som bestämmer över Java.