Gležnas Java standarto daigelis (1998.01.21)

„Microsoft“,  DEC, „Intel“ ir „Compaq“ firmų kreipimasis dėl „Java“ standarto sukūrimo susilaukia ir entuziastingo pritarimo ir skeptikų balsų. Pirmiausia, ar galite surasti pasaulyje kitas firmas, mažiau atviras nei šios? „Windows“ ir VMS terpės niekad nebuvo standartų taikinyje, „Intel“, kaip luistų gamintoja, iki šiol buvo gana atvira, tačiau jos su „Pentium II“ - ir ji užtrenkė duris konkurentams (žr. atskirą straipsnelį), o „Compaq“ nors ir sukūrė daugiau technologijų nei kiti PK gamintojai, bet nė vienos jų nepavadinsi atvira. Bet net sustojęs laikrodis dukart per parą parodo teisingą laiką, - tad geriau pažiūrėkim realybei į akis ir šio ketverto motyvus.

Kodėl Internetas yra platesnis už „Unix“ pasaulį? Todėl, kad bet kurioje vietoje esi vienodai priklausomas nuo Interneto. Kaip vystysis „Java“ - kaip Internetas ar kaip „Unix“? Manau, kad kaip Internetas. Josios ateitis tebėra šviesi, tačiau iki šiol vis dar neišsipildė jos rožinė svajonė: „parašyti programą vienąkart - vykdyti ją visur“. Tuntai mažų skirtumų kuriant "virtualias“ mašinas drasko jos viltis tarsi rudens vėjas voratinklius. Jau ir „Sun“ prakalbo, kad „Microsoft" pažeidė licencijos sąlygas. Bet kas svarbiau - keli šimtai tūkstančių „Java“ naudotojų ar keliasdešimt milijonų „Windows“ vartotojų?

Atsiradus standartui nieko nelaimės nei „Sun“, nei „Microsoft“. Kalbama, kad „Microsoft“ pasivogs „Java“. Ir tikrai - jau bando. Jau ne metai, kaip „raudonųjų pasaulis“ tvirtina: „Java tėra kalba - tai ne platforma“. Skamba tarsi sakytų: „Internetas tėra tinklas - tai ne platforma“. Standartai neapsaugos nei „Sun“, nei kitų - ir neužkirs kelio „Java“ patobulinimams. Pasirinkti turės vartotojai.

Ar standartai stabdo progresą. Be abejo, - bet tik tiek, kiek žiūrėjimas į žemėlapį trukdo užlipti į Evarestą. Net daugiau, standarta neiškasa griovio konkurencijai. Prisiminkim IBM patirtį, kai ši firma „Token Ring" technologiją pasiūlymas IEEE 802 komitetui nesutrukdė „Ethernet“ su jos 802 variantu išmesti IBM iš rinkos.

Iki šiol joks operacinių sistemų kūrėjas nebandė savo produkto įtvirtinti standartu. Bet ir niekas iki šiol (išskyrus p-code) netvirtino, kad jie sukūrė universalią platformą. O tokie žodžiai reikalauja šiek tiek daugiau, nei vien pardavimo. Dabar ir „Sun“, ir „Microsoft“ skersakiuoja vieni į kitus, bandydami įvesti faktinius standartus. Kurio jų akys mažiau žvairos?

Javos sukaktuvės  (2025.07.14)

2025 m. „Java“ kalbai sukako 30-mt metų – apie ją paskelbta „SunWorld '95“ susirinkime 1995 m. gegužės 23 d. - kaip, derinyje su „HotJava“ naršykle, esančią universaliausia OS internetinei bendruomenei (tiesą sakant, „Java 1.0“ buvo galima parsisiųsti jau nuo 1994 m.) Tačiau šiandien „Java“ laikoma labiau darbiniu arkliu verslo programų srityje nei kalba internetui (šioje dažnai painiojama su „JavaScript“, bendro teturinčia tik panašų pavadinimą).

„Java“ koncepcija buvo kalba, kuria parašytos programos veiktų bet kokioje terpėje – ir tai atsispindėjo jos moto: „Parašyk kartą, vykdyk visur!“ (WORA). Ji „Sun Microsystems“ buvo kuriama kodiniu „Green“ pavadinimo projekte. Kaip aparatinės įrangos gamintoja, „Sun“ norėjo būti pasiruošusi naujos kartos plataus vartojimo elektronikos įrenginiams (kaip televizoriai, išmanūs skrudintuvai ir pan.) - t.y tam, ką šiandien vadintume „daiktų internetu“ (IoT). Komandai vadovavo James Gosling’as, Mike Sheridan’as1) ir Patrick Naughton’as2, jautę, kad visiškai naujos ir nuo platformos nepriklausomos kalbos, galinčios veikti bet kuriame įrenginyje nepriklausomai nuo jo aparatinės įrangos. Java

Jie paėmė C sintaksę ir papildė virtualios mašinos idėja: pačią C++ atmetė dėl to, kad joje lengva pridaryti klaidų, nėra „šiukšlių surinkimo“ ir t.t. Pradžioje kalbą pavadino „Oak“ (Ąžuolas), nes toks medis augo už Goslingo biuro lango. Tačiau paaiškėjo, kad toks prekės ženklas jau užregistruotas. Buvo renkamasi kiti pavadinimai - DNA, „Silk“ ar „Lyric“, bet buvo pasirinkta „Java“ – tikriausiai todėl, kad komanda programuodama gėrė daug kavos. Pradžioje šios kalbos niekam nereikėjo (bet ir kiekvienos kalbos pradžia būna sunki, nors, regis, „Java“ tada buvo ir labai nemėgstama). Bet „Java“ siejimas su kava labiausiai padėjo jos populiarumui.

Maždaug tuo pat metu Brendan Eich’as3) sukūrė „Netscape“ naršyklėje veikiančią kalbą, kuria pavadino „Mocha“ – tačiau tai nebuvo pakankamai orientuota į kavą, todėl kalba buvo pervadinta į „JavaScript“ (nors ji, kaip minėta, visai nesusijusi su „Java“). Bet ir „Java“ įsibrovė į naršyklę per įskiepius (applets), tad pirmąkart programuotojai galėjo tinklalapiuose naudoti grafinius žaidimus – ir netgi kurį laiką tai buvo vienintele galimybe ką nors įspūdinga parodyti www puslapyje.
Čia kviečiu paskaityti apie pirmąjį „Java“ įskiepį Lietuvoje >>>>>

Tačiau likimo ironija – dabar tokie įskiepiai laikomi blogiausiu dalyku, kokiu tik gali būti pasaulyje, ir naršyklės atsisakė juos palaikyti – tad naršyklėse „Java“ yra beveik mirusi. O už naršyklių ribos „Java“ nebuvo labai populiari išskyrus kelias išimtis – daugiausia todėl, kad jai nepavyko gero GUI. Pirmoji buvo AWK, neatrodžiusi gerai, o šią pakeitė „Swing“ (šią teko pačiam gerą dešimtį metų savo darbinės veiklos pabaigoje teko labai aktyviai naudoti). Vėliau pasirodė „Java FX“, kurią, ko gero, mažai kas suprato ir naudojo.

Padidėjęs susidomėjimas „Java“ kliento pusėje leido jai išplisti į serverio pusę bei verslo programų sritį. Tuo metu „Java“ buvo vienintelė populiari objektinė kalba, kuri atrodė pakankamai „rimta“ šiai užduočiai atlikti (nors nebuvo vienintele, žadėjusia WORA). Tačiau didžiausiu jos trūkumu buvo lėtumas.

Proveržis įvyko su J2EE, pateikusia programų serverio idėją – leidusią kurti serverinę kliento-serverio tipo programų dalį. Šios idėjos aptarnavimui buvo sukurti aplikacijų serveriai: „Tomcat“, „Jetty“, „JBoss“, „Geronimo“, „GlassFish“ ir kt. Ji su serveriniais įrankiais pasirodė gana anksti, dar 1999 m. - tuo metu „Microsoft“ turėjo tik seną (gerą) klasikinį ASP (labai panašų į JSP) – su šiuo prieš tai irgi „masyviai“ dirbau kokius 20 m. (ir daug puikių sistemų buvo su juo sukurta!) Ir tik 2002 m. šviesą išvydo .NET.

Tai galiausiai leido gauti tokių stambių kompanijų kaip IBM palaikymą – ne todėl, kad „Java“ labai gera ir inovatyvi, o todėl, kad nieko geresnio tuo metu nebuvo (C# pasirodė, kaip ir .Net, 2002 m. ir buvo „privatizuota“, o VB buvo puiki (dėl to ją ir naudojau kartu su ASP), tačiau kėlė „žaisliuko“, tinkančio mėgėjams, įvaizdį; C++ turėjo sudėtingos ir „sunkios“ kalbos reputaciją, o tuo metu jau egzistavusi „Python“ buvo mažai naudojama, o ir šiandien kai kurių tebelaikoma entuziastų kalba, mažai tinkama rimtai verslo programinei įrangai).

Net ir po 30 metų „Java“ vis dar neturi patikimo konkurento bankininkystės ir finansų srityje, - ir tai nuostabu po tiek laiko. Kitose srityse „Python“ jau užėmė dalį „Java“ imperijos, ją pranokdamas kaip bendrosios paskirties kalba ir kalba, plačiausiai naudojama švietime. Nuo „Java“ pasirodymo buvo sukurta daug kitų kalbų, veikiančių JVM („Clojure“, „Groovy“, „Scala“, „Kotlin“ ir kt.) tačiau nė viena neišstūmė „Java“ iš jos pozicijos.

Bet į kur „Java“ eina dabar?

Ko labiausiai bijo įmonės, nepaisant technologijų sparčios pažangos? Jos bijo „Java“ atnaujinimų. Joms nepaprastai svarbus yra stabilumas ir galimybė toliau naudoti sistemas, kurios veikia jau 20 m. ir ilgiau. Kitas aspektas yra tai, kad programinė įranga dažnai renkamasi dėl dėl teikiamos pagalbos ir konsultacijų (pvz., įmonės renkasi „Oracle“ DB, nepaisant stiprios konkurencijos, tame tarpe ir iš atvirųjų DB pusės, bei nepopuliarumo tarp programuotojų). Tas pats ir dėl „Java“.

Bet kam įmonės naudoja „Java“? Didžiausios skaičiavimų apkrovos dabar debesijoje – ir apie 2/3 organizacijų, naudojančių „Java“ „debesyse“ teigia, kad apie 50% jų sąnaudų susiję su būtent su „Java“. Tad „Java“ optimizacija ten būtų galimybė sumažinti sąnaudas neprarandant produktyvumo. Tam yra nemažai bandymų, ypač JVM startavimo laiko sutrumpinimui, nes būtent JVM tam labai reiklios, nes klasių inicializacijas suryja daug laiko. Šioje srityje yra keletas bandymų (be „GrallVM“ ir „Spring Native“), pvz., „OpenJDK Leyden“ ir kt.

„Java“ didžiausiu priešu dirbtinio intelekto srityje išlieka „Python“. Vis tik apklausos rodo, kad 50% organizacijų toje srityje naudoja „Java“ – tuo rodikliu aplenkdamos tiek „Python“, tiek „JavaScript“. Taip yra dėl bibliotekų, tarp kurių „JavaML“ lieka populiariausia.


Siekiama supaprastinti Java (2025.05.15)

Visiškam pradedančiajam „Java“ gali būti baugi, nes reikia naudoti kažką, kas jam dar visiškai neaišku. Jei „Python“ „Labas, pasauli“ programa atrodo tiesiog taip:

print ("Labas, pasauli!")

tai „Java“ tenka prirašyti „tonas“ papildomo kodo:

public class LabasPasauli {
    public static void main(String[] args) {
        System.out.println("Labas, pasauli!");
    }
}

O argi nebuvo galima parašyti tiesiog System.out.println("Labas, pasauli!");?
Taip yra todėl, kad kalbų paskirtis skiriasi. „Java“ skirta dideliems projektams, kuriuose tenka rasti būdus tvarkytis su didelės apimties programomis. Vis tik JEP512 (JDK Enhancement Proposal) siūloma supaprastinti „Java“ – ir jei tasai pasiūlymas bus įgyvendintas, „Labas, pasauli!“ atrodytų taip:

void main() {
    IO.println("Hello, World!");
}

Tai jau beveik tiek paprasta, kiek tai paprasta yra C ar C++!


1) Maikas Šeridanas (<>I>Mike Sheridan) - amerikiečių kompiuterininkas, vienas „Java“ kūrėjų, vėliau buvęs „Persona“ projekto, kūrusio sprendimus smulkaus verslo ir personaliniams serveriams. 1998 m. tapo „Novell“ viceprezidentu.

2) Patrikas Notonas (Patrick Naughton, g. 1965 m.) - amerikiečių programinės įrangos kūrėjas, vienas iš „Java“ kūrėjų. „Sun“ kompanijoje 1994 m. vasarą po tris dienas trukusių svarstymų, buvo nuspręsta orientuoti „Java“ kaip www skirtą platformą. Jis parašė smulkią naršyklę, pavadintą „WebRunner“, vėliau pervadintą į „HotJava“. Tačiau tais pat metas jis paliko „Sun“, pereidamas į „Starwave“ (tada priklausiusią P. Alenui), kad „Java“ kalba kurtų serverinius taikymus. 1998 m. sujungus „Starwave“ su „InfoSeek“, tapo šios vice prezidentu, tačiau po suėmimo už sekso su nepilnamete siekimo 1999-ais iš jos atleistas (jo gynybos taktika vėliau imta vadinta „fantazijų gynyba“, išpopuliarėjusi tarp pedofilų).

3) Brendanas Eichas (Brendan Eich, g. 1961 m.) - amerikiečių kompiuterininkas, vadovas technologijų srityje. Sukūrė „JavaScript“ kalbą (pradžioje vadintą „Mocha“, vėliau pervardintą į „LiveScript“, ir tik tada į „JavaScript“). Kartu jis su suprojektavo „SpiderMonkey“ vykdytoją, užtikrinantį „JavaScript“ vykdymą „Netscape Navigator“ naršyklėje. Nuo 1995 m. dirbo „Netscape“ kompanijoje, kur dalyvavo kuriant „Mozilla“ naršyklę – ir iki 2014 m. buvo „Mozilla Co“ CTO. 2012 m. dalyvavo kuriant „Rust“ kalbą. Pasitraukė iš „Mozilla Co“ dėl kritikos, kad palaikė draudimą vienos lyties asmenų santuokoms. Vėliau užėmė CEO pareigas „Brave Software“ firmoje, 2016 m. išleidusioje atviro kodo „Brave“ naršyklę, blokuojančią reklamas.

Vartiklis nr.22
Tiesiog - Java
Komponentų karas
Ar eis žmonės "Pas Juozapą"?
Kas ten žiūri į mano miegamąjį?
Naršyklių karai ir FireFox krizė
Windows NT: Viskas iš pradžių?
Daugiakalbė paieška
Nuotraukytę atminčiai?
Ar priimsi i lizdelį?
Kam tai ne programa?
Vartiklis