Kada netko kaže “Java”, vrlo vjerojatno pomislite na programski jezik Java. No, Java je mnogo više od programskog jezika. To je i softverska platforma koja vam omogućuje pokretanje aplikacija baziranih na Javi i pokretanje appleta unutar web preglenika. No, nije sve ni tako idealno…
Zasigurno ste se mnogo puta susreli sa Javom i ako nemate nikakve veze sa programiranjem. Vjerojatno onda kada ste prvi puta instalirali web preglednik ili kada ste ju morali iz nekog razloga ažurirati. Ponavljamo, ako nemate veze sa programiranjem, tada vrlo vjerojatno niste dublje ulazili u priču oko Jave niti vas je zanimalo zašto morate imati Javu na svom računalu. Bitno je bilo da sve radi, da je Java ažurirana i da vam se pri svakom pokretanju računala ne pojavi prozor sa obavijesti kako imate staru verziju iste i kako biste mogli imati sigurnosnih problema. Ako vas zanima zašto vam treba java, za što se koristi i slično, na pravom ste mjestu.
Piše: Boris Plavljanić
Što je Java?
Krenimo od osnova. Java je moderan programski jezik koji se koristi u praksi i jedan je od najpopularnijih jezika na svijetu. Baziran je na klasama, odnosno objektima pa ga možemo svrstati u objektno-orijentirane programske jezike. Prvotno je napravljen sa jednim ciljem, a to je da sa što manje dodataka, omogući programerima razvoj aplikacija, ali bilo koje vrste. Java je programski jezik u kojem možete isprogramirati gotovo sve. Usudili bi se reći da je u C# najkompletniji jezik na svijetu. I prije nego počnete spominjati Python, Mathematicu, C, C++ i slične jezike, sjetite se da su oni ograničeni. Možda su brži od Jave, u određenim poljima su svakako i lakši za korištenje, no Java ima najširi spektar mogućnosti i definitivno je programski jezik koji je programerima broj jedan. Ako ne vjerujete nama, proguglajte statistiku pa ćete vidjeti. Od četiri programera na svijetu, jedan programira u ovom jeziku. Samo jedna napomena – nemojte Javu miješati sa JavaScriptom. To su dvije odvojene tehnologije, odnosno dva različita jezika sa različitim funkcijama.
Vratimo se na Javu. Javu programeri koriste i za izradu raznih appleta (manjih aplikacija) koje vi pokrećete na računalu ili u web pregledniku i velika je šansa da Javu imate instaliranu na računalu. Ako ju nemate, onda ste primjetili da vam, recimo, web preglednik ne radi dobro i da vas stalno upozorava da skinete Java plugin ili Java Development Kit (JDK) da bi sve radilo kako treba. Mi vam preporučujemo da to učinite. Javu možete instalirati na svim operativnim sustavima što nas vodi do slijedeće točke. Java je „cross-platform“ i jedna od najvećih prednosti Jave je što se na svim računalima isto koristi. Točnije, samo jednom možete napisati kôd, a možete ga pokrenuti na bilo kojem softveru i hardveru, uz minimalne preduvjete. To možete zahvaljujući Java bytecodeu. Java se ne kompajlira na najnižoj razini (u strojnom jeziku), nego u bytecodeu, ali pri tome na računalu morate imati instaliranu Javu s kojom dolazi Java VM (Virtual Machine) i Java Runtime Environment (JRE). Ti detalji vam nisu previše bitni trenutačno, ali želimo da vidite da je Java svestran jezik koji se pokreće na gotovo svim uređajima u svijetu. Za par godina ćemo ga vrlo vjerojatno imati i u ostalim kućanskim aparatima. Šalimo se, no Java je toliko otvorena da nas to ne bi previše začudilo.
Cilj same Jave (iza koje stoji velika kompanija Oracle koja je Javu kupila od Sun Microsystemsa) je prilagoditi se svim mogućim uređajima te postati najkorištenija tehnologija na svijetu. To i nije veliki problem jer već sada pokreću preko milijardu uređaja na svijetu, a brojka je svakim danom sve veća i veća.
Naravno, to ima i svojih negativnih strana. Java je prilično spora, odnosno samo kompajliranje i pokretanje kôda je mnogo sporije nego kod nekih konkurentskih jezika i tehnologija, ali to je cijena koju morate platiti kada imate još jedan sloj kod kompajliranja (op.a. to je ona virtualna mašina koju smo spomenuli maloprije). Programerima ta brzina i nije toliko presudna kod samog programiranja, no korisnicima jest kod korištenja aplikacija, ali o tome nekom drugom prilikom.
Java – Softverska platforma
Osim što je Java programski jezik, odnosno alat za programiranje, Java je i set nekoliko računalnih softverskih paketa i specifikacija koji zajedno omogućuju korisnicima pokretanje aplikacija zasnovanih na Javi. Platforma, kao i jezik, nije vezana uz jedan operativni sustav ili specifične hardverske komponente. Javu možemo podijeliti na 4 implementacije, odnosno verzije:
– Java Card – Tehnologija koja omogućava malim aplikacijama baziranim na Javi da se pokrenu prilično sigurno (ovaj pojam uzmite s rezervom) na uređajima sa malo memorije i procesorske snage
– Java ME (Micro edition) – Set nekoliko specifičnih profila (ili „libraryja“) za uređaje sa limitiranom memorijom, kapacitetom napajanja, procesorskom snagom … Ona se koristi za razvoj aplikacija za mobilne uređaje, PDA uređaje, pametne televizore, printere …
– Java SE (Standard Edition) – Za razvoj generalnih aplikacija na računalima, serverima i sličnim uređajima
– Java EE (Enterprise Edition) – To je Java SE plus veliki broj dodanih API-ja za razvoj klijent-server aplikacija sa nekoliko razina funkcioniranja
Svaka ova edicija u sebi sadrži java Runtime Environment, Just-in-time (JIT) kompajler, JDK …
Zašto vam sve ovo pričamo? Želimo da shvatite koliko je Java zapravo moćan jezik i u prošlosti niste mogli bez Jave. Danas? Danas je situacija nešto drugačija. Danas dolaze neke nove tehnologije i Java nije bitna, odnosno može se i bez nje.
Mogu li bez Jave?
Odgovor na ovo pitanje nije jednostavan, odnosno ne možemo na njega odgovoriti sa „da“ ili „ne“. Zapravo, ne još. Java je jedna od onih tehnologija koja je došla u pravo vrijeme i svi su je koristili. Danas ju možete naći instaliranu na velikoj većini računala. Ako je vjerovati statistici na stranici statowl, onda oko 70% korisnika ima Javu. Većinom ju imaju instaliranu zbog web preglednika koji su zahtijevali da imate Java plugin u web pregledniku jer je to bio jedini način da pokrenete applete koji su se nalazili na web stranicama. Rekli smo već da ju korisnici instaliraju onda kada shvate da ne mogu nešto vidjeti na web stranici na koju su došli i pritom instaliraju plugin koji im nedostaje. U ovom slučaju je to Java. No, situacija danas je nešto drugačija. Prema stranici W3Techs, samo 4 posto web stranica koriste Javu sa serverske strane, sa samo 0.2 posto web stranica zahtjeva od klijenata da ju imaju instaliranu. Od tih sitnih posto stranica koji zahtijevaju Javu, 80% web stranica ne treba Javu za onu osnovnu funkcionalnost. Stoga, ako mislite da je Java krucijalan plugin koji morate imati na računalu, grdno se varate.
I sada dolazimo do jednog pitanja koje ćete si vrlo vjerojatno postaviti, a to je – kakve veze da li imam ili nemam instaliranu Javu? U čemu je problem ako je instalirana, a ne koristim ju? Pa odgovor je u ovom slučaju vrlo jednostavan – riječ je o sigurnosti.
Java i sigurnosni propusti
Jeste li se ikada pitali zašto tako često možete vidjeti obavijest da ažurirate Javu? Mnogi drugi pluginove dobivaju jednu ili dvije nadogradnje godišnje, dok se Java stalno nadograđuje. Pošto se ne radi o novim mogućnostima, ostaje samo jedno objašnjenje – gašenje vatre. U punom smislu te riječi. U listopadu prošle godine je bila jedna od najvećih nadogradnji Jave unazad godinu ili dvije. Java October 2013 Critical patch Update (CPU) je donio 127 zakrpa u jednoj nadogradnji od čega je 50 bilo kako bi se spriječila udaljena kontrola računala, dok ih je 12 bilo kritičnih preko kojih su hakeri mogli dobiti potpunu kontrolu nad cijelim operativnim sustavom. No to nije sve – većina problema se događa na klijentskoj strani, a ne serverskoj. Što znači da nisu pogođeni serveri i web stranice koje koriste Javu, nego korisnici koji bi trebali pristupati tom sadržaju na Internetu. S druge strane, Oracle tvrdi da je sve u redu i pod kontrolom. Nažalost, realnost je drugačija i Oracle očito ima velikih problema i ne može spriječiti sigurnosne rupe koje dolaze sa njihovim proizvodom. Pomalo ironično jer Java Runtime „prisiljava“ aplikacije da se vrte u „sandboxu“ – dijelu memorije koji je osiguran i kojem se ne može pristupiti. Dok je u „sandbox modu“, program/aplikacija ne može učiniti određene radnje dok mu korisnik ne da dopuštenje. Zato začuđuje toliko propusta koje Java ima. Možda je jedan od razloga to što aplikacija bazirana na Javi ipak komunicira sa određenim datotekama koji su van ‘sandboxa’ i tu nastaju potencijalni problemi. Rješenje – onemogućavanje ili brisanje Jave sa računala.
Na ovu temu su nekoliko riječi rekli i stručnjaci za sigurnost. Pogotovo nakon što su velike kompanije kao što su Microsoft, Apple, Facebook i Twitter imali problema zbog Jave. Zamislite kada jedan mali applet od par MB uspije dovesti u pitanje sigurnost jednog takvog IT diva. Znači da nešto nije u redu. Za sada Oracle uspijeva ugasiti vatru, no stručnjaci su složni – ne još dugo. Kako je Java kompromitirala velike kompanije? U veljači su određeni inženjeri iz spomenutih kompanija imali zaražene laptope sa malwareom koji je otvorio „rupu“ u sustavu i postojala je realna šansa da netko od hakera dobije potpuni pristup i kontrolu nad tim računalima. Točnije, nad velikim brojem računala ali i na tim određenim laptopima koje su inženjeri koristili. Stručnjaci za sigurnost kažu da bi Oracle možda trebao malo bolje revidirati svoj kôd koji pušta u produkciju, te imati interni mehanizam koji će riješavati ovakve sigurnosne probleme. Odnosno, morali bi imati mehanizam koji će probati „probiti“ svaki njihov kôd, a to će postići tako da zaposle hakere koji će se s time baviti. Na to su ljudi raznih profila upozoravali Sun, a i Oracle tokom godina, no pitanje je što se po tom pitanju poduzelo. Ako imaju mehanizme koji bi trebali otklanjati sigurnosne probleme, onda im je mehanizam jako loš. Ako nemaju – onda ignoriraju stuku i stručnjake koji im samo žele pomoći. Realno gledajući, svima je u interesu da se spomenuti problemi riješe.
Uklanjanje Jave
Kao što smo rekli, teško je reći nekome da instalira ili ukloni Javu sa svog računala. Ako programirate u Javi, onda nema šanse da maknete Javu. Najbolje rješenje u tom slučaju je korištenje Linuxa i programiranje na tom operativnom sustavu. Šanse da „preživite“ su vam veće iako je Java cross-platform tehnologija i propusti se mogu iskoristiti i na jednom i na drugom operativnom sustavu.
No, ako vam je Java nepotrebna, tj. Ne sjećate se kad ste ju zadnji puta trebali ili posjećujete web stranice koje ne koriste Javu, slobodno ju uklonite. Uklonite ju sa računala i uklonite pluginove za web preglednike. To je jedini način da budete potpuno sigurni kako nitko ne može iskoristiti rupe koje je Java napravila. Mnogi misle da im ništa neće biti ako imaju Javu ili ako imaju instaliranu stariju verziju, pa kasnije požale. Zato je naš savjet – uklonite ili u krajnjem slučaju onemogućite Javu dok ju ne trebate. Kad ju zatrebate, upalite ju, no svakako ju opet ugasite kasnije.
Kako onemogućiti ili izbrisati Javu?
Ako ju želite izbrisati sa računala, odite u Control Panel, nađite instalirane aplikacije, potražite Javu i uklonite ju. Ako imate više stavki, uklonite ih sve. Nakon toga resetirajte računalo i provjerite da ste sve uklonili. Također, napravite detaljnu pretragu računala i uklonite sve datoteke koje imaju ikakve veze sa Javom, a ostale su i nakon što ste ju uklonili. Nakon toga bi bilo korisno sa aplikacijom kao što je CCleaner očistiti računalo i registry. Osim na računalu, Javu treba ukloniti i iz web preglenika. Tu ste najranjiviji i najlakše je dobiti kontrolu nad računalom preko web preglednika. Kad-tad ćete posjetiti neku web stranicu i imati ćete upaljenu Javu, a stranica će vas preko Jave „zaraziti“. Kako ju ukloniti iz preglednika?
– Google Chrome – U URL traku upišite „chrome://plugins“ (bez navodnika) i stisnite . Locirajte sve instance Jave i kliknite disable ili delete.
– Mozilla Firefox – U URL traku upišite „about:addons“ (također bez navodnika), stisnite i napravite isto ko i za Chrome.
– Opera – Postupak je isti kao i za prethodna dva web preglednika, samo što u URL traku morate upisati „opera:plugins“.
– Internet Explorer – Uklanjanje Jave iz IE je malo kompliciranije jer IE ne dolazi sa sustavom za modificiranje pluginova. Morati ćete ručno u registryju promijeniti određenu vrijednost kako bi onemogućili Javu.
Stisnite kombinaciju tipku . To nam otvara Registry Editor. Locirajte HKEY_CURRENT_USERSoftwareMicrosoftCurrentVersionInternet Settingsones3 i promijenite vrijednost ključa iz 1C00 u 0. Resetirajte računalo i to je to.
Problemi sa kompatibilnošću
U zadnje vrijeme postoji jako puno problema sa kompatibilnošću, a jedan od razloga je mnogo verzija Jave na računalima diljem svijeta, a često te verzije nisu kompatibilne. Odnosno, Java je kompatibilna, no kada se promijeni jedan mali segment Jave, postoji šansa da to smeta jednoj od prijašnjih verzija. I onda nastanu komplikacije. Sve je povezano sa sigurnošću, kao što smo rekli, i izmjene su vrlo česte, pa je jedno od rješenja da svi uvijek imaju istu verziju Jave. Naravno, to je teško za očekivati, no tokom ožujka bi trebala doći Java 8 (1.8), i svi će biti na istoj razini nakon ažuriranja i nadamo se da će biti malo drugačije nego sa verzijom 7.
Ako u Hrvatskoj radite sa nekom od FINA-inih aplikacija, onda ste zasigurno naletjeli na problem sa Javom. Najsvježiji primjer je aplikacija ePorezna i to kod korištenja alata za: potpisivanje obrazaca, dostavu datoteke obrasca JOPPD, te kod JOPPD – Aplikacije za pretvorbu TXT -> XML. Prilikom pokretanja jednog od alata dobijete greške, a nakon što stisnete „Continue“ ili „OK“, ne možete koristiti alate.
Ti problemi se pojavljuju nakon ažuriranja jave na korisničkom računalu na verziju 1.7 Update 51. Nova verzija Jave ima ugrađena nova sigurnosna pravila koja onemogućuju pokretanje programskih komponenti unutar sustava ePorezna.
Sustav ePorezna za navedene funkcije koristi Java komponente koje su digitalno potpisane uporabom certifikata koje izdaje nacionalni CA (Fina RDC). Digitalni potpis Java komponenti osnovno je preduvjer za sigurno korištenje te osigurava autentičnost programskog koda koji se izvršava unutar sustava. Koponente koje koristi sustav ePorezna potpisane su certifikatom e-servis.porezna-uprava.hr sa određenim otiskom. Nova verzija Jave zahtjeva da certifikat izdavatelja bude postavljen u Java postavkama kao izdavatelj kojemu se vjeruje kod pristupa aplikacijama putem SSL protokola, te za izvršavanje programskih komponenti koje su digitalno potpisane certifikatima koje potpisuje taj izdavatelj.
Rješenje problema je slijedeće. Za uspješno izvršavanje modula unutar aplikacije ePorezna potrebno je na korisničkom računalu dodati korijenski (engl. Root) certifikat nacionalnog izdavatelja certifikata u slijedeće java popise: Secure Site Ca i Signer CA.