Die Zukunft von Java - eine persönliche Einschätzung

Über dem Ja­va-Him­mel hän­gen mo­men­tan fins­te­re Wol­ken; man­che pro­gnos­ti­zie­ren gar den bal­di­gen Un­ter­gang der Spra­che in der Be­deu­tungs­lo­sig­keit, an­de­re Ana­lys­ten wie bei­spiels­wei­se Red­Monk zeich­nen ein deut­lich op­ti­mis­ti­sche­res Bild. Da ich mo­men­tan be­ruf­lich in der Ja­va-Welt tätig bin, mache ich mir na­tür­lich auch meine Ge­dan­ken - und letz­te­rer Ar­ti­kel hat mich dazu ge­bracht, sel­bigs­te hier auf­zu­schrei­ben.

Kurz zum Hin­ter­grund: Spä­tes­tens seit dem Kauf von Sun durch Ora­cle ste­hen die Zei­chen auf Sturm. Ora­cle hat sich mei­ner Mei­nung nach wie ein Ele­fant im Por­zel­lan­la­den der Com­mu­ni­ty be­nom­men; das gilt so­wohl für Ja­va-Pro­jek­te (wie ge­ra­de jüngst beim Ver­würf­nis Hud­son vs. Jenk­ins), aber auch für nicht-Ja­va-Pro­gram­me wie Open­Of­fice vs. Li­bre­Of­fice. Auch die Ent­wick­lung der Spra­che selbst ist - ge­lin­de ge­sagt - im Um­bruch: Mit der Über­nah­me von Sun ver­lie­ßen ei­ni­ge Ko­ry­phä­en wie Ja­va-Er­fin­der James Gos­ling ihren neuen Chef, und im De­zem­ber kehr­te die Apa­che-Foun­da­ti­on dem Java Com­mu­ni­ty Pro­cess (JCP) den Rü­cken - aus Pro­test gegen Ora­cles Herr­schaft nach Guts­her­ren­art. Ge­ra­de über letz­te­res schlu­gen die Wel­len hoch, und man­che Ana­lys­ten sehen hier­mit den JCP end­gül­tig am Ende.

Die Kri­tik am JCP - dem Gre­mi­um, wel­ches die Spra­che und ihre Bi­blio­the­ken spe­zi­fi­ziert - ist aber nicht neu: Seit lan­gem wird eine feh­len­de wirk­li­che Com­mu­ni­ty-In­te­gra­ti­on und ein sehr trä­ges Vor­wärts­kom­men kri­ti­siert: Blickt man auf die Spe­zi­fi­ka­ti­on von Java 7 und Java 8, so darf man auf lang ge­wünsch­te Fea­tures wie Clo­sures noch bis (min­des­tens) Ende 2012 war­ten - Fea­tures, die in vie­len an­de­ren Spra­chen seit lan­gem Stan­dard sind. Hier wurde Java in vie­len Punk­ten von an­de­ren Spra­chen wie C# (oder gar PHP!) rechts über­holt.

Wie geht es nun mit Java wei­ter? Ich teile die Mei­nung von Red­Monk, daß Java si­cher­lich nicht von heute auf mor­gen ver­schwin­den wird - zu viele große Play­er sit­zen fest im Ja­va-Sat­tel. IBM hat sich mit Ora­cle be­reits stra­te­gisch ar­ran­giert; was aus dem ju­ris­ti­schen Ge­plän­kel zwi­schen Ora­cle und Goog­le wird, bleibt ab­zu­war­ten. Je­den­falls ist Googles An­dro­id eine eben­falls nicht zu ver­nach­läs­si­gen­de Größe für den Grad der Be­deu­tung der Spra­che Java.

Was ich je­doch nicht glau­be ist, daß es sang- und klang­los wei­ter­geht wie bis­her - auch wenn die Gra­fi­ken der Ana­ly­se von Red­Monk dies ver­mu­ten las­sen könn­ten, spie­geln diese Zah­len doch nur den Zu­stand vor dem Apa­che-JCP-Be­ben wie­der. Au­ßer­dem ar­gu­men­tiert Red­Monk selbst, daß es einen dra­ma­ti­schen Un­ter­schied zwi­schen dem, was eine Firma an Tech­no­lo­gi­en tat­säch­lich ein­setzt und dem, was die IT-Ent­schei­der den­ken, was sich im Ein­satz be­fin­det - und die Stel­len­an­zei­gen, wel­che Red­Monk in ihrer Sta­tis­tik an­führt, wer­den ty­pi­scher­wei­se auf In­itia­ti­ve der Ent­schei­der, und nicht der Tech­ni­ker hin ge­schrie­ben.

Mei­ner Mei­nung nach muß man zwei Dinge von­ein­an­der ge­trennt be­trach­ten: Zum einen die Spra­che Java selbst, zum an­de­ren die Java Vir­tu­al Ma­chi­ne (JVM). Der Spra­che Java merkt man ihr Alter von 15 Jah­ren und das träge Vor­an­kom­men des JCP deut­lich an. Um die­sem De­fi­zit zu be­geg­nen, ent­wi­ckeln sich aber schon seit ei­ni­gen Jah­ren al­ter­na­ti­ve Spra­chen (bzw. Com­pi­ler), wel­che eben­falls Byte­code für die JVM er­zeu­gen: Als Bei­spiel seien hier Scala, Groo­vy und Clo­ju­re sowie die JVM-Ad­ap­tio­nen Jy­thon (Py­thon), JRuby (Ruby) und Er­jang (Er­lang) ge­nannt. Der Vor­teil sol­cher Spra­chen: Sie alle kön­nen auf den (ex­trem reich­hal­ti­gen) Fun­dus an Ja­va-Bi­blio­the­ken zu­rück­grei­fen und sind somit "ab­wärts­kom­pa­ti­bel"; in vie­len Fäl­len ist sogar ein weit­ge­hen­der Aus­tausch von Klas­sen und Ob­jek­ten un­ter­ein­an­der mög­lich (bei­spiels­wei­se kann man in Groo­vy nicht nur auf Ja­va-Bi­blio­the­ken zu­grei­fen, son­dern auch um­ge­kehrt in Ja­va-Code Groo­vy-Klas­sen ver­wen­den, als wären diese in Java ge­schrie­ben). Diese Kom­pa­ti­bi­li­tät macht auch ihren Ein­satz "unter dem Radar" der obe­ren Ent­schei­der ein­fach.

Es herrscht also eine po­ly­glot­te Viel­falt an mo­der­nen Spra­chen auf der JVM. Egal, ob der Ur­sprung die­ser Spra­chen reine Ex­pe­ri­men­tier­freu­de oder die Un­zu­frie­den­heit mit der Spra­che Java an sich war - das lang­sa­me­re Vor­an­kom­men und die Un­si­cher­hei­ten, die durch Ora­cles Ver­hal­ten ent­stan­den sind, geben ihnen wei­ter Rü­cken­wind. Damit hat die Spra­che Java neben der Kon­kur­renz durch al­ter­na­ti­ve Spra­chen wie C# auch deut­li­che "in-hou­se"-Kon­kur­renz.

Ich nehme des­halb an, daß die Be­deu­tung von al­ter­na­ti­ven Spra­chen auf der JVM wei­ter deut­lich zu­neh­men wird; es dürf­te für Java schwie­rig wer­den, den im Laufe der letz­ten Jahre ver­lo­re­nen Boden wie­der gut­zu­ma­chen. Die JVM als grund­le­gen­de Run­ti­me hin­ge­gen dürf­te Be­stand haben; nicht zu­letzt die Ab­stim­mung zwi­schen Ora­cle und IBM (wel­che einen der be­kann­tes­ten Just-in-Ti­me-Com­pi­ler für die JVM ent­wi­ckelt) dürf­te hier eine so­li­de Basis bil­den.

Zu guter Letzt noch ein wenig Kaf­fee­satz­le­sen und hef­ti­ges Mut­ma­ßen (ich bin kein Ja­va-Byte­code-Ex­per­te, des­we­gen ist dies hier nur Bauch­ge­fühl): Auch für den Fall, daß es zu ir­gend­wel­chen Pa­tent­kla­gen von Ora­cle gegen ein Open­sour­ce-JVM-Pro­jekt käme, gäbe es Aus­we­ge: Die JVM ist schlie­ß­lich nicht die ein­zi­ge exis­ten­te vir­tu­el­le Ma­schi­ne. Die ent­spre­chen­den Com­pi­ler mü­ß­ten "nur" an­de­ren Byte­code ge­ne­rie­ren - was na­tür­lich Ent­wick­lungs­auf­wand wäre, aber durch­aus im Be­reich des Mög­li­chen lie­gen dürf­te. Daß man auch an­de­re vir­tu­el­le Ma­schi­nen ein­set­zen kann, be­weist bei­spiels­wei­se Googles An­dro­id mit der Dal­vik En­gi­ne.

Mein per­sön­li­ches Fazit: Die Ja­va-Welt wird si­cher nicht schlag­ar­tig ob­so­let oder zum "Pfle­ge­fall" wie man­che Co­bol-An­wen­dun­gen aus der IT-Stein­zeit. Die Spra­che Java hat aber star­ke, ab­wärts­kom­pa­ti­ble Kon­kur­renz - ich halte die Chan­ce für re­la­tiv hoch, daß die Spra­che in den nächs­ten Jah­ren an Stel­len­wert ver­liert und vom Platz­hirsch zum "Par Inter Pares" oder gar zur Le­ga­cy-Spra­che ab­steigt. Wer heute neu in die Ja­va-Welt ein­steigt, muß auch ein Au­gen­merk auf New­co­mer wie Groo­vy oder Scala legen.