SG.hu

30 éves a Java, és még mindig van benne erő

A Java programozási nyelv első nyilvános kiadása 30 éve mutatta meg, hogy lehetséges a Write Once, Run Anywhere, azaz a megírt programokat bárhol futtatni, és egyben megmutatta a fejlesztőknek, hogy van élet a C-n és a C++-on túl is.

Az eredetileg "Oak"-nak nevezett Javát az 1990-es évek elején James Gosling tervezte a Sun Microsystemsnél. A digitális eszközökre tervezett nyelv fókusza hamarosan egy másik, akkoriban meglehetősen újnak számító platformra, a világhálóra helyeződött át. A nyelv némi hasonlóságot mutat a C és a C++ nyelvvel, és elméletileg bármilyen Java virtuális gépen (JVM) futtatható. A szándék az volt, hogy a programozók számára lehetővé tegye a WORA (Write Once Run Anywhere) használatát, bár a JVM implementációk közötti finom különbségek miatt ez az álom nem mindig vált valóra.

A nyelv azonban hamarosan hatalmas népszerűségre tett szert, és gyorsan sok vállalat gerincévé vált. A Microsoft gyorsan elkészítette saját változatát, a Visual J++-t, amely bár megfelelt a Java nyelvi specifikációjának, nem ment át a Sun Microsystems megfelelőségi tesztjein, és a Sun 1999-ben be perelte miatta Redmondot. 2000-ben a J++-t kivették a Visual Studio-ból, és nem sokkal később fel is hagytak a fejlesztésével.

A Java népszerűsége a megjelenése után egyre nőtt, és csak az utóbbi években kezdtek a fejlesztők egyéb alternatívák után nézni. A Stack Overflow 2024-es felmérésében a nyelv a Top 10 tagja, megelőzve a C#-ot, a C++-t és a C-t. A népszerűség enyhe csökkenése a TIOBE Indexben is megfigyelhető, ahol a nyelv egykor az első helyen állt, de most a negyedik helyen szerepel. A TIOBE szerint a Python messze a legnépszerűbb nyelv, de 2015-ben, azaz még 20 évvel születése után is a Javát tartották az év nyelvének.


Brian Fox, a Sonatype társalapítója és technológiai igazgatója elmondta: "A Java túlélte a trendeket, a rivális nyelveket és a változó paradigmákat. Az appletektől és szervletektől a mikroszolgáltatásokig és a felhő-natív architektúrákig a Java úgy fejlődött, hogy közben ismerős maradt. Kikövezte az utat a nyílt forráskódnak a vállalatokba való bejutáshoz. És vitathatatlan, hogy a vállalatok soha nem néztek vissza."

A Java-kódok puszta mennyisége, amely ma sok vállalat alapját képezi azt jelenti, hogy a Java-ismeretek iránti igény még akkor is megmarad, ha a programozási divatok jönnek és mennek. Az általános elterjedtsége, a hosszú élettartama és számos back-office rendszerben való jelenléte kapcsán egyes mérnököknek a COBOL juthat eszébe, de 30 évvel ezelőtt kortársaihoz képest modern, friss levegőt jelentett, és a hordozhatóság ígérete csábító volt. Az elmúlt 30 év azonban nem volt teljesen sima ügy. "A Java egy olyan történet, amely többről szól, mint a kód. Ez a történet a bizalomról szól, amelyet a megbízhatóság, a gondoskodás és a közös szabványok évtizedeivel érdemeltünk ki. De ez a bizalom nem garantált." - véli Fox.

Amikor az Oracle 2010-ben felvásárolta a Sun-t, a Java is vele együtt érkezett. Bár a Sun JVM implementációjának nagy része nyílt forráskódúvá vált, az Oracle egy évtizeden belül elkezdett licencdíjat kérni azért, ami korábban ingyenes volt. Majd a cég 2023-ban módosította az előfizetési modell licencfeltételeit, ami a vállalkozásoknak komoly többletköltséget jelentett. Az év elején egy kutatás azt hozta ki, hogy tíz Java-felhasználóból csak egy szándékozik az Oracle-nél maradni.

A platform konstans jelenléte azonban azt is magával hozta, hogy az Oracle Java mellett léteznek alternatívák, és a nyelv népszerűségét az úgynevezett "ragadozó licencelési taktikák" sem csökkentik. A Java 30 év alatt egy újonnan induló nyelvből olyanná vált, amelyre a vállalatok komolyan támaszkodnak. Ugyan nem rendelkezik a mai mesterséges intelligencia-alkalmazások által megkövetelt csillogó csecsebecsékkel, de továbbra is a modern szoftverfejlesztés alapját képezi. A virágzó ökoszisztéma és a rajongók hatalmas közössége azt jelenti, hogy a Java a negyedik évtizedébe lépve is több, mint releváns marad.

Hozzászólások

A témához csak regisztrált és bejelentkezett látogatók szólhatnak hozzá!
Bejelentkezéshez klikk ide
(Regisztráció a fórum nyitóoldalán)
  • kvp #6
    "aki nem vette a fáradtságot hogy megtanulja a 100x komplexebb és jobb C++-t"

    Mindent (is) hasznalok, igy c++-ot, java-t es python-t is (c-t es python-t meg mikrovezerlon is), de a c++ meg mindig nem volt kepes elerni a java alapszintu tudasat, mert ahhoz alapjaiban kellene atirni a mukodeset es erre egyszeruen nem hajlando a szabvanyugyi testulet.

    Ellenben c-ben (es persze igy c++)-ban is meg lehet irni mindent amit a java tud, csak nem kotelezo a hasznalatuk, igy ha valaki hibazik, akkor serul a rendszer integritasa. Gondolok itt pointer-ek, tombok, stb. hibas hasznalata altal okozott memoria integritas serulesekre. Ezt mar az objective c is kepes volt kikuszobolni, de a c# is megoldotta valahogy, a java pedig tervezesi szinten szuntette meg. Amiota van nativ binarisra forditott java, azota egyszeruen nincs olyan feladat amit erdemesebb c++-ban programozni java helyett. Es akkor meg ott vannak a c++-os "szabvany" konyvtarak, amikbol tobb egymast uto is van es ezek is evente valtoznak, ugyanakkor ezek mar tervezesi szinten sem kepesek kezelni egy garbage collector-os biztonsagos memoriakezelot ami utolag kerulne hozzaadasra. Amit egyebkent meg a c is gond nelkul tud fogadni. (mivel a nyelvnek maganak nincs runtime resze)

    A c++ tulsagosan c-s maradt ahhoz, hogy a java-val egy szintem lehessen es tulsagosan sok run time komponenst es "szabvany" konyvtarat kapott ahhoz, hogy kozvetlenul kulso kod nelkul a nyers "vason" futtathato legyen. Egy nyelvnek vagy resze a teljes futtatasi kornyezet, szoftveres memoriavedelemmel es ha kell szemetgyujtessel egyutt vagy ha ez hianyzik, akkor ne legyen runtime komponense, hanem ennek funkcioit bizza az aktualis operacios rendszerre. A c++ valahol a ket szek kozott a pad alatt ul ebben a tekintetben. A java es a python a teljesen menedzselt vedett kornyezetek jo peldai, mig a c a futtatasi kornyezet nelkuli, gyakorlatilag hardver programozasra keszult nyelv. A c++ egyik celra sem jo teljes mertekben es ha minden runtime komponenst eldobunk a c++-bol, akkor gyakorlatilag egy kiterjesztett szintaxisu c-ve valik, mig ha minden extra feature-t be akarunk rakni (dinamikus reflexio, garbage collector, stb.), akkor szinte az osszes c++-os szabvany konyvtar kuka es szinte a 0-rol kellene ujra felepiteni a programozasi kornyezetet.

    Ezert nepszeru a java es a python alkalmazasfejlesztesre es ezert irjak meg mindig c-ben az alacsonyszintu (hardverkozeli) kodokat. De az elozo hozzaszolasban meg sem emlitettem a c++-t, csak a c/java/python harmast hasonlitottam ossze.
  • Borg18754 #5
    Te valami butthurt C fejlesztő lehetsz aki nem vette a fáradtságot hogy megtanulja a 100x komplexebb és jobb C++-t, ezért inkább leszólod. Régen valóban nerm volt ilyen jó a C++, de a modern változata fényévekkel a C előtt jár már.
  • kvp #4
    A c 1972 ota letezik, azaz 54 eve. A java kb. fele olyan idos es a java vm is c-ben van irva, mint ahogy a legtobb operacios rendszer is. Mindket nyelvnek nagy elonye, hogy mukodnek es nem modositgatjak oket olyan gyorsan, hogy ne lehetne egyszer megtanulni es onnantol hasznalni oket. A java gyakorlatilag a c leszarmazottja lett, amit a felig kitalalt es azota foltozgatott c++ nem volt kepes elerni.

    A python egy script nyelv, mig a java eleve lefordithatora lett tervezve (jvm-re vagy barmilyen nativ binarisra), ezert a java teljesitmenye nativ kodra forditva kb. ugyanolyan mint egy kulon megirt dinamikus ellenorzeseket es szemetgyujtot futtato c-s kode. Ezt egyetlen script nyelv sem tudja.

    A python nepszeruseget az adja, hogy konnyu hozza stabil kodot irni, ezert sok kutatasi projectben hasznaltak, igy nagyon sok olyan dolgot tamogat library-k segitsegevel amit a java nem. A java elonye, hogy sok ceges projectben hasznaltak, igy sok olyan dolgot tamogat library-k segitsegevel amit a python nem. Alapvetoen mindkettot c-ben irtak es a motorhaztetok alatt legalul c-s kodok vannak.

    MI-s kodok eseten egyebkent a python c-ben irt matematikai szoftverkonyvtarakat hasznal, csak a feladatok leirasahoz hasznaljak a python-t, igy a teljesitmeny tenylegesen az also c-s kodok teljesitmenyetol fugg. MI gyorsito hardverek eseten is c-s kod van a hardver es a java vagy a python magas szintu felulete kozott.

    Nem veletlen, hogy elobb utobb ha valaki eleg melyre as, akkor c-s kodot talal es mivel c alkotja az operacios rendszerek es a forditasi kornyezetek alap kodjat, ezert szinte minden platformon a c-t rakjak eloszor ossze mukodore. Nem valoszinu, hogy ez mostanaban megvaltozna amig emberek fejlesztik a hardvereket es az alapszintu szoftvereket. (MI eseten barmilyen absztrakt emberek altal nem olvashato szimbolikus nyelv hasznalhato ami kepes kozvetlen binaris generalasra, ehhez legkozelebb talan a gcc fordito belso RTL fai vannak)
  • Sequoyah #3
    Az AI meg elegge kiserleti fazisban van, es a Python erre alkalmasabb.

    De az AI integracios Java frameworkok gyorsan veszik at a funckiokat a Python-tol, szoval az nagyvallalati AI integracioban valoszinuleg marad a Java.
  • Kryon #2
    A Python most a gépi tanulás miatt lett olyan felkapott. Ott jellemzően azt használják.
  • kjhun #1
    Ha már, a különféle programozási nyelvekről szó van... Arról se feledkezzünk meg, hogy egy adott nyelven írt program, mennyi erőforrást és időt zabál meg, a kevésbé falánk társaihoz képest!

    Egy kis olvasnivaló: ITT

    A Python eléggé hátul kullog.
    Utoljára szerkesztette: kjhun, 2025.05.27. 20:55:00