Java je moderan objektno orijentisan programski jezik koji se danas može pronaći bukvalno na svakom koraku. Kada surfujete Internetom, sadržaj koji pregledate je u najvećem broju slučajeva generisan upravo Javom. Dok igrate igrice na mobilnom telefonu, igrate na aplikaciji koja je pisana u Javi. Ukoliko vršite transfer novca preko Interneta, "smart kartica" koju koristite za identifikaciju je takođe iz arsenala ove tehnologije. Čak i robot pod nazivom "Mars Spirit Robot" koji se nadavno spustio na planetu Mars je u potpunosti bio kontrolisan sa Zemlje upravo korišćenjem Jave.
Java prati razvoj mrežnog programiranja i čini osnovu za mrežne servise, desktop i mobilne aplikacije i odgovara na najšire zahteve razvoja distribuiranih sistema.
Java tehnologija se prvi put pojavila 1995. godine, kada je kompanija Sun Microsystems pokušala da svetu predstavi koncept "napiši jednom, startuj bilo gde" koji je kasnije i postao glavni slogan Java programskog jezika. Mogućnosti koje je Java tada ponudila svojom nezavisnošću od platforme na kojoj se izvršava su ubrzo prerasle sva očekivanja.
Sun Microsystems, koji je 1982. godine zapošljavao samo 4 radnika je danas postao globalni gigant sa kancelarijama u preko 170 zemalja, sa vrednostima akcija preko 40 milijardi dolara i sa ogromnom bazom Java programera za koje se procenjuje da ih ima preko 5 miliona.
Java tehnologiju danas podržavaju sve vodeće IT kompanije kao sto su IBM, ORACLE, BEA, Macromedia, Nokia, Ericsson, SAP, Sony, itd.
Drugog januara ove godine kompanija Sun Microsystems javnosti je predstavila novu alfa verziju svoje Java platforme u standardnoj ediciji - J2SE 1.5 (radnog naziva Tigar).
Ubrzo posle toga izašla je i prva beta verzija, a u julu je Tigar dobio novi broj 5.0 (još uvek je u beta verziji). Po rečima ljudi iz Sun-a, na ovakav korak su se odlučili zbog najvećeg poboljsanja platforme i samog jezika u poslednjih deset godina tj. od prve zvanične verzije. Nama preostaje da pogledamo sta je to novo uz osvrt na poslednju zvaničnu verziju - 1.4.
Neka od obećanja koje nam dolaze od strane Sun-a, a vezano za novu verziju Jave, jesu usmerena ka povećanju pouzdanosti, dostupnosti, performantnosti i skalabilnosti Java aplikacija. Takođe, ogroman pomak je napravljen i u pojednostavljenju razvoja samih aplikacija čime se posao programera u mnogome olakšava. Najzad, Tigar verzija Jave je poseban akcenat stavila i na razvoj klijentskih desktop aplikacija za koje se smatralo da zaostaju za konkuretnim proizvodima kompanije Microsoft.
S obzirom da je lista novih mogućnosti povelika i daleko prevazilazi okvire ovog članka, navešćemo samo neke za koje smatramo da su najbitnije.
Meta podaci obezbeđuju mogućnost asociranja novih podataka pored već postojećih kao što su klase, interfejsi, metode i polja. Ti dodatni podaci se nazivaju anotacije ili meta podaci, i oni mogu biti pročitani od strane Java kompajlera ili drugih alata za rad sa Java bajtkodom. Takođe, anotacije se mogu smestiti u sam kompajlirani .class fajl i naknadno biti pročitani u toku procesa izvršavanja, korišćenjem Java Reflection API funkcija. Anotacije se u kodu prepoznaju po znaku @.
Na ovaj način se smanjuje vreme razvoja Java aplikacija jer se mnogi ponavljajući delovi koda izbacuju, a i integracija u druge alate (poput aplikativnih servera) se znatno olakšava.
Primer kako se anotacijama izbacuje kod koji se često ponavlja:
Nekad:public interface PingIF extends Remote {
public void ping() throws RemoteException;
}
public class Ping implements PingIF {
public void ping() {
// ...
}
}public class Ping {
public @remote void ping() {
// ...
}
}Razlika između primitivnih tipova i njihovih wrapper
objekata više ne postoji. Programeri mogu slobodno da zaborave na
primitivne tipove poput int, float, double i ostalih
jer sa uvođenjem Autoboxing-a automatska konverzija stupa na
scenu.
Razmotrimo deo koda koji sledi:
ArrayList brojevi = new ArrayList();
brojevi.add(115);Do verzije 5 ovakav kod se ne bi iskompajlirao jer metoda
add ArrayList-e očekuje Object za parametar. Ovo
je podrazumevalo pisanje dodatnog koda kako bi se prebrodila razlika
između primitivnih tipova i njihovih wrapper objekata, poput
sledećeg:
brojevi.add(new Integer(115));Novi kompajler automatski dodaje kod koji konvertuje integralnu
vrednost 115 u odgovarajući tip Integer, a to znači da
je prvi primer sa stanovišta Jave 5 u potpunosti ispravan. Proces je
poznat pod imenom Autoboxing.
Obrnut proces, automatsko konvertovanje objekta kao što je
Integer u primitivnu vrednost int, naziva se
Unboxing.
int broj = brojevi.get(0);
Nekada smo morali da koristimo odgovarajuću funkciju Integer objekta da bi dobili njegovu vrednost.
int broj = (brojevi.get(0)).intValue();Uvođenjem generičkih tipova, manipulacija kolekcijama
objekata je postala jednostavnija i sigurnija jer sad više ne stavljamo
generalne Object-e u kolekcije već konkretne tipove objekata.
Na ovaj način se izbegava konvertovanje, tj. ukoliko stavimo
String u niz tada samo String iz tog niza možemo dobiti
nazad. Ranije je sve pretvarano u Object tip pa se prilikom
vađenja podataka iz niza, svaki konvertovao u njemu odgovarajući
tip. Tada su se često javljale runtime greške - unesemo
String, a greškom ga potom konvertujemo u Integer. Sada to
više nije moguće, jer se takve greške uočavaju još prilikom
kompajliranja programa.
LinkedList stringList = new LinkedList(); // ubacujemo Object tipove
stringList.add("Casopis");
stringList.add("COM");// ubacujemo ono sto zelimo - String tipove
LinkedList<String> stringList = new LinkedList<String>();
stringList.add("Casopis");
stringList.add("COM");for petljePojednostavljena je sintaksa samih for petlji.
int array[] = {1, 2, 3, 4};
int sum = 0;
for (int e = 0; e < array.length(); e++)
sum += array[e];int array[] = {1, 2, 3, 4};
int sum = 0;
for (int e : array)
sum += e;Uvedena je mogućnost formatiranja ispisa sadržaja na standardni
izlaz (recimo ekran) korišćenjem printf funkcije - kao u
C programskom jeziku.
Nekad:
String user = "Pera";
int total = 30;
System.out.printf(user + " ima " + total + " godina\n");String user = "Pera";
int total = 30;
System.out.printf("%s ima %d godina\n", user, total);Ova novina u mnogome doprinosi čistijem izgledu samog koda, a samim tim i njegovoj većoj preglednosti.
Nekad:double x = 16.0, a = 2.2, b = 3.3;
System.out.println(Math.abs(x));
System.out.println(Math.sqrt(x));
System.out.println(Math.max(a, b));import static java.lang.Math.*;
...
double x = 16.0, a = 2.2, b = 3.3;
System.out.println(abs(x));
System.out.println(sqrt(x));
System.out.println(max(a, b));Poboljšanja su primetna i u delu platforme namenjenom izradi klijentskih aplikacija što se uglavnom odnosi na Swing.
Predstavljena su dva nova izgleda: Synth (skinnable look & feel) i Ocean (nova tema Metal Look & Feel-a).
U prethodnim verzijama Jave pravljenje novog izgleda zahtevalo je izvesnu programersku veštinu i poznavanje ekstenzibilne Look & Feel arhitekture. Synth u velikoj meri pojednostavljuje ovaj posao i čini ga dostupnim čak i neprogarmerima.
Jedno od prijatnih iznenadjenja je ugrađena podrška za štampanje u već odličnu JTable komponentu što bitno pojednostavljuje posao programera.
Sa stanovišta korišćenja radne memorije sve Swing komponente su optimizovane uvođenjem novih metoda koje omogućavaju eliminisanje dupliranog skladištenja minimalne, maksimalne i predefinisane veličine.
Rad na AWT-u iako primetan ostao je u okvirima otklanjanja nepravilnosti i propusta iz prethodnih verzija.
Doradom paralelnog skupljača đubreta (Garbage Collector-a) omogućeno je suptilnije rukovanje memorijom i eliminisana potreba za prosleđivanjem velikog broja komandnih argumenata pri definisanju željenih performansi aplikacije. To znači da će se JVM pobrinuti da uskladi količinu alocirane dinamičke memorije sa predefinisanim tj. željenim performansama.
Prvi put na raspolaganju imamo merač vremena visoke precizosti. Prvenstveno je namenjen merenju brzine izvršavanja delova Java programa. Osnovna jedinica ovog merača je nanosekunda. Bitno je napomenuti da osnovni interval ne treba mešati sa preciznošću ovog merača koja je zavisna od platforme i za Windows je oko jedne milisekunde.
Lista izmena je daleko duža od ovih nekoliko nabrojanih stavki. Svakako zanimljive novine predstavljaju i promene u enumeracijama, unapređena mogućnost dijagnostike, mogućnost monitoringa, varijabilni argumenti i još mnogo toga.
Programski jezik Java ulazi u novu eru svog postojanja i krupnim koracima se kreće napred. Točak inovacija koji Java pokreće više ne može da se zaustavi. Jednom rečju, ovo je sjajno vreme za biti Java programer.