Java je objektno orijentirani programski jezik koji su razvili James Gosling, Patrick Naughton i drugi inženjeri u tvrtci Sun Microsystems. Razvoj je počeo 1991., kao dio projekta Green, a objavljen je u studenom 1995.
Tvrtka Sun posjeduje trademark na ime Java, ali samo okruženje je moguće bez plaćanja skinuti sa Sunovih internet poslužitelja.
Velika prednost u odnosu na većinu dotadašnjih programskih jezika je to što se programi pisani u Javi mogu izvoditi bez preinaka na svim operativnim sustavima za koje postoji JVM (Java Virtual Machine), dok je klasične programe pisane primjerice u C-u potrebno prilagođavati platformi(Operacijskom sustavu) na kojem se izvode.
Time i bogatim skupom klasa za rad s mrežnim komunikacijama u jednom trenutku je Java bila najbolji izbor za široku lepezu mogućih aplikacija. Microsoft je stoga razvio svoj C# i .NET platformu kao odgovor na open source alternative.
Java je jedan od najkorištenijih programskih jezika. Procjene i izvješća o broju korisnika kreću se od gotovo 7 do preko 10 milijuna.[1][2][3]
Na današnjem tržištu, Java se koristi široko i dosljedno tamo gdje preteže brzina razvoja programskog sustava nad zahtjevima do brzine rada programa. Iako inspirirana jezikom C, Java pruža bolji stupanj sigurnosti i pouzdanosti zahvaljujući VM-u i hermetički zatvorenom okolišu u kome svaki program operira: na Javi se brže razvija program s manje pogrešaka.
Upravo zbog toga je popularna za razvoj programa na mobilnim telefonima i kod financijskih kompanija. Javlja se kao osnovni jezik za programiranje Googleovog sustava Android.
Sintaksa jezika
Javina sintaksa je slična sintaksi C++-a. Sav kod se piše u klasama, a svaki podatak je objekt - uz iznimku primitivnih tipova podataka (cijeli i decimalni brojevi, boolean vrijednosti i znakovi).
Za razliku od C++-a, java ne podržava preopterećivanje operatora (ad-hoc polimorfizam). Također ne podržava višestruko nasljeđivanje klasa (ali dopušta višestruko nasljeđivanje sučelja). Uz dva tipa komentara korištena u C++-u (// ... za jednolinijski i /* ... */ za višelinijski kod), java uvodi i tzv. Javadoc komentare (/** ... */) koji dopuštaju pisanje dokumentacije za klase i metode.
Primjer Javadoc dokumentacije za klasu:
/**
* Objašnjenje koda klase
* može se protezati kroz više linija. *
* @author Ivan Horvat ** definira autora ove klase
* @version 1.0 ** definira inačicu ovog koda
* @since 2014-03-31 ** broj inačice u kojoj je prvi put
* ** uvedena ova funkcionalnost
*/
Javadoc dokumentacija za metode ima još niz dodatnih parametara, na primjer:
/**
* Kao primjer ćemo koristiti metodu koja prima dva broja
* i vraća njihov zbroj
* @param brojA Ovo je prvi parametar metode
* @param brojB Ovo je drugi parametar metode
* @return int Metoda vraća cjelobrojni zbroj dva broja
* @exception IOException iznimka pri unosu vrijednosti koje nisu brojevi
* @see IOException ** poveznica na stranicu o iznimci
*/
Neki programi mogu automatski generirati dokumentaciju za program iz Javadoc komentara.
Primjer "Hello world!" programa
public class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // ispisuje string u konzolu
}
}
Datoteke izvornog koda moraju biti imenovane prema javnoj klasi koju sadrže, uz ekstenziju .java (u našem slučaju HelloWorldApp.java). Ta će se datoteka kompajlirati u bytecode ekstenzije .class, što će dopustiti pokretanje koda. Moguće je imati samo jednu javnu (public) klasu u datoteci. Sve klase koje nisu javne mogu biti spremljene u bilo kojoj .java datoteci, no kompajlirat će se po jedna .class datoteka za svaku klasu, istog imena kao i klasa. Anonimne klase dobit će spojeni naziv njihove roditeljske klase, znaka $ i cijelog broja.
Modifikatori razine pristupa
Svaka klasa i njezine metode (funkcije u klasi) imaju definirane razine pristupa, koje ograničavaju tko ih sve smije pozvati i tko ima pristup njihovim varijablama (u primjeru ključna riječ public.
Klasa | Paket | Naslijeđena klasa
(isti paket) |
Naslijeđena klasa
(drugi paket) |
Ostalo | |
---|---|---|---|---|---|
public | ima pristup | ima pristup | ima pristup | ima pristup | ima pristup |
protected | ima pristup | ima pristup | ima pristup | ima pristup | - |
nema modifikator | ima pristup | ima pristup | ima pristup | - | - |
private | ima pristup | - | - | - | - |
Klase zadano trebaju biti vezane za objekte (klasa definira tip objekta), i samo se putem objekta mogu pozvati varijable i metode neke klase, na primjer:
public class mojaKlasa {
int x = 5;
public static void main(String[] args) {
mojaKlasa mojObjekt = new mojaKlasa();
System.out.println(mojaKlasa.x); //pogrešno
System.out.println(mojObjekt.x); //ispravno - ispisuje 5
}
}
Ključna riječ static ispred klase označava da se ta klasa ne treba instancirati, odn. ne treba biti vezana za objekt kako bi se pozvala:
public static class mojaKlasa { //statička klasa
static int x = 5; //statička varijabla
public static void main(String[] args) {
System.out.println(mojaKlasa.x); //ovo je sada u redu
}
}
Statičke metode ne mogu pristupiti ni jednom članu klase koji također nije statičan.
Ključna riječ void označava da funkcija na koncu izvođenja ne vraća nikakvu vrijednost onome tko ju je pozvao. Ako Java program prestaje raditi uslijed greške, mora eksplicitno pozvati System.exit( int ), gdje je int cijeli broj, kako bi mogao vratiti broj pogreške (obično se broj 0 uzima kao završetak bez pogreške).
Funkcija naziva main je točka ulaska u program. Funkcija mora primati niz (polje) stringova (string je niz znakova), u slučaju da se funkcija pokreće uz dodatne argumente, oni se spremaju u niz imena args.
Klasa System deklarira public static polje imena out. Out objekt je instanca klase PrintStream, koja pruža mnoge metode za ispis.
Izvori
- ↑ (en.) Plumbr.eu: How many Java developers are there in the world? July 18, 2012, by Priit Potter, pristupljeno 9. siječnja 2013.
- ↑ (en.) LangPop.com: Programming Language Popularity (Arhivirano 3. rujna 2018.), pristupljeno 9. siječnja 2013.
- ↑ (en.) TIOBE: Programming Community Index for January 2013, pristupljeno 9. siječnja 2013.