Java (programski jezik)

Izvor: Hrvatska internetska enciklopedija
Inačica 399910 od 21. prosinca 2021. u 03:25 koju je unio WikiSysop (razgovor | doprinosi) (Bot: Automatski unos stranica)
(razl) ←Starija inačica | vidi trenutačnu inačicu (razl) | Novija inačica→ (razl)
Skoči na:orijentacija, traži

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

Vista-xmag.pngPodrobniji članak o temi: "Hello, World!"
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

Vanjske poveznice