Java programski jezik - Wikipedia, slobodna enciklopedija

# Java programski jezik

### Sa Wikipedije, slobodne enciklopedije

  Za druga značenja pojma Java pogledajte čvor članak.

Java
Programska Paradigma: | Objektno Orijentirano Programiranje
Pojavio se: | 1990-te
Tvorac: | James Gosling i tim iz Sun Microsystems
Sistem tipovanja: | statični, strogi
Glavne implementacije: | razne
Dijalekti: |
Utjecali: | C++, Smalltalk, Objective-C
Utjecao na: | C#, J#, VJ#

Java je objektno-orjentirani programski jezik razvijen u timu predvođenim James Gosling-om u kompaniji Sun Microsystems početkom 1990-tih. Ideja je bila da se stvori programski jezik koji bi bio neovisan od operativnog sistema, baziran na C++-u, ali sa pojednostavljenom sintaksom, stabilnijim runtime sistemom i pojednostavljenom kontrolom memorije.

Java nema veze sa JavaScript-om, iako oba jezika koriste sličnu sintaksu baziranu na C sintaksi.

## [uredi] Historija

## [uredi] Filozofija

Pet osnovnih razloga za razvoj Jave su:

1. treba da koristi objektno-orijentacione metodologije
2. treba da se isti program izvršava na mnogim operativnim sistemima
3. treba da sadrži (built-in) podržku za računarske mreže
4. treba da izvrši programe sa (geografski) udaljenih servera sa sigurnošću
5. treba da bude jednostavan za upotrebu i da posudi korisne stvari od starijih objektivno-orijentisanih jezika, poput C++.

Da bi postigli mrežnu podršku i izvršavanje programa na udaljenim serverima, Java programeri ponekad moraju koristiti dodatke poput CORBA ili OSGi.

### [uredi] Objekt-Orijentacija

Osnovni koncept u Javi je klasa (en. class), tj. sav izvorni kod je napisan unutar klasa. U pravilu, svaka klasa je deklarirana unutar datoteke sa istim imenom i sufiksom .java. Ovo pravilo je donekle nametnuto kompajlerom koji zahtijeva da su imena klasa i datoteka ista (osim tkz. unutrašnjih klasa, en. inner classes). Osnovni tipovi u Javi, poput `int`, `boolean`, `byte` i sl. su takodjer predstavljeni u klasama (napomena: Reflection types) i imaju odgovarajuće klasne omote poput `java.lang.Integer`, `java.lang.Boolean` i `java.lang.Byte`.

### [uredi] Nezavisnost od Platforme (operativnog sistema)

Javin izvorni kod nije kompajliran u mašinski kod nego je pretvoren u tkz. bytecode koji zahtijeva posebno okruženje da bi se mogao izvršavati. To okruženje se u ovom slučaju zove Javina Virtualna Mašina (en. Java Virtual Machine ili JVM). Trenutno JVM podržava najrasprostranjenije operativne sisteme, mada ne sve. Ideja je da ako se kod napiše i kompajlira na jednoj platformi (npr. Mac OS X), taj isti bytecode se može izvršavati na svim ostalim platformama koje imaju JVM (npr. Microsoft Windows XP, Linux) bez potrebe za ponovnim kompajliranjem na toj platformi.

### [uredi] Automatsko Čišćenje Resursa (garbage collection)

U Javi, za razliku od npr. C++-a, memorija namjenjena objektu je automatski počišćena, tj. vraćena sistemu čim se taj objekat više ne koristi (za tog objekta kažemo da je van domašaja ili en. out of scope). To nije slučaj u C++-u gdje svaki objekat koji je stvoren mora biti ručno izbrisan koristeći uputu `delete` (ako se to ne uradi onda dođe do tkz. curenja memorije ili en. memory leak).

## [uredi] Sintaksa

Iako je Java nastala od C++, ali za razliku od C++, koji dozvoljava struktuirane kao i objektno-orjentirane principe, u Javi su objektno-orjentirani principi obavezni. Sve je u Javi objekat, a sav izvorni kod je pisan unutar klasa.

### [uredi] Vozdra Raja (Hello World) primjer

#### [uredi] Aplikacija

    // VozdraRaja.java
     public class VozdraRaja {
         public static void main(String[] args) {
             System.out.println("Vozdra raja! Nema vise Hello world!");
         }
     }

- Sve u Javi je uvijek upisano unutar klase, pa čak i glavna aplikacija.
- Konvencija za nazive Java datoteke je da imaju isto ime kao i klasa koju sadrže sa obaveznim sufiksom ".java".
- Kompajler će generirati class datoteku za svaku klasu definiranu u datoteci sa izvornim kodom. Ime generirane datoteke je ime klase sa .class sufiksom. Tako npr. za klasu `VozdraRaja` koja je deklarirana u datoteci `VozdraRaja.java`, kompajler će stvoriti class datoteku sa nazivom VozdraRaja.class. U slučaju nepoznate (anonimne) klase, generirana datoteka će imati ime klase koja sadrži nepoznatu klasu, zajedno sa simbolom $ i brojem. Npr. `VozdraRaja$1.class`.
- Klase koje pokreću program moraju imati metodu `main()`, tzv. glavnu metodu.
- Uputa `void` označava da metoda `main()` ne vraća ništa.
- `main()` metoda mora uzimati niz String objekata kao parametar. Obično se taj parametar imenuje `args`, međutim bilo koje dozvoljeno ime varijable se može koristiti kao parametar (npr. `argumenti`).
- Uputa `static` označava da je ova metoda statična tzv. metoda na nivou klase, umjesto uobičajenog nivoa objekta (instance). Glavna metoda mora biti označena `static`.
- Uputa `public` (javna) označava da se ta metoda može zvati iz koda u drugim klasama ili da se ta klasa može koristiti u drugim klasama izvan hierarhije te klase.
- Printing funkcija je standardni dio Jave, tj. `java.lang.System` definira javnu staticnu (public static) varijablu `out` koja je instanca (objekat) klase `java.io.PrintStream` i ima metodu `println(java.lang.String)` koja ispisuje informaciju na ekranu (tkz. standardni output).
- Java izvorni kod se kompajlira koristeći `javac` program, tj. pozivajući Java kompajler. Npr. da bi kompajlirali gore navedeni primjer u trenutačnom direktoriju

  UNIX, Linux i Mac OS X

    $ javac VozdraRaja.java

  Windows

    C:\> javac VozdraRaja.java

- Samostalni programi u Javi se izvršavaju tako da se Javinoj runtime (JRE) pripiše ime klase koja sadrži `main()` (glavnu) metodu koja se automatski poziva. Npr. gore spomenuti program se pokreće na sljedeći način (ako je VozdraRaja.java kompajliran u trenutnom direktoriju)

  UNIX, Linux i Mac OS X

    $ java -cp . VozdraRaja

  Windows

    C:\> java -cp . VozdraRaja

Ime klase koja sadrži glavnu metodu koja se pokreće može se također deklarisati u META-INF/MANIFEST.MF datoteci u Java arhivi, tj. JAR fajlu.

### [uredi] Applet

Java apleti (applets) su (obično mali) programi koji su uključeni unutar drugih aplikacija, obično web stranice prikazane (i izvršavane) unutar browser-a.

    // VozdraRaja.java applet
    import java.applet.Applet;
    import java.awt.Graphics;

    public class VozdraRaja extends Applet {
        public void paint(Graphics gc) {
            gc.drawString("Vozdra raja, nema Hello world!", 65, 95);
        }
    }

    <!-- VozdraRaja.html stranica što sadrži VozdraRaja applet -->
    <html>
      <head>
        <title>Vozdra Raja Applet Primjer</title>
      </head>
      <body>
        <applet code="VozdraRaja" width="200" height="200">
        </applet>
      </body>
    </html>

- Uputa `import` upućuje kompajler da uključi `java.applet.Applet` i `java.awt.Graphics` klase u kompilaciju. Koristeći `import` uputu programer može koristiti normalizirano (skraćeno) ime klase (npr. `Applet`) umjesto čitavog imena (npr. `java.applet.Applet`) u svom izvornom kodu.

- `VozdraRaja` klasa proširuje klasu `Applet`, tj. `Applet` daje osnovnu okosnicu aplikaciji za prikazivanje i kontrolu tokom rada apleta. `Applet` klasa je komponenta Abstract Windowing Toolkit (AWT), koji daje apletu mogućnost da se prikaže u korisnikovom grafičkom interfejsu (tj. GUI) i reaguje na GUI događaje (poput klika na dugme).

- `VozdraRaja` overrides (termin koji opisuje da metoda u ovoj klasi ima prednost nad roditeljskom klasom) `paint(Graphics)` metodu nasliđenu od `Container` super-klase koja, daje, tj. sadrži kod za prikazivanje apleta. Metoda `paint()` uzima `Graphics` objekat kao parametar koji sadrži grafički kontekst unutuar kojeg se prikazuje aplet. Tako npr. `paint()` poziva metodu `drawString(String, int, int)` unutar grafičkog kontexta da prikaže "Vozdra raja, nema Hello world!" počevši na piksel koordinatama 65 i 95 u apletovom prostoru.

- Aplet se stavlja u HTML dokument koristeći <applet> HTML elemenat (tj. tag). Također postoje tri atributa koji se mogu postaviti

  - `code="VozdraRaja"` - naznačuje ime klase koju treba izvrsiti
  - `width="200"` - znači širina, tj. širina apletovog prostora
  - `height="200"` - znači visina, tj. visina apletovog prostora

- Apleti se također mogu dodati HTML-u koristeći `object` ili `embeded` elemente (tj. tagove), mada podrška za ove element varira ovisno o internet pregledniku. [1][2])

## [uredi] Također pogledajte

- Primjer u Javi
- Programska paradigma
- Objektno orijentirano programiranje
- Full Java Tutorial

Preuzeto sa: "http://bs.wikipedia.org../../../j/a/v/Java_programski_jezik.html"

Kategorije: Programski jezici

##### Views

- Članak
- Razgovor
- Trenutna verzija

##### interakcija

- Pomoć
- Vrata zajednice
- Čaršija
- Novosti
- Dobrovoljni prilozi

##### Pretraga

##### Drugi jezici

- العربية
- Azərbaycan
- Žemaitėška
- Беларуская
- Беларуская (тарашкевіца)
- Български
- ᨅᨔ ᨕᨘᨁᨗ
- Català
- Mìng-dĕ̤ng-ngṳ̄
- Česky
- Dansk
- Deutsch
- Ελληνικά
- English
- Esperanto
- Español
- Eesti
- Euskara
- فارسی
- Suomi
- Français
- Galego
- עברית
- Hrvatski
- Magyar
- Interlingua
- Bahasa Indonesia
- Íslenska
- Italiano
- 日本語
- 한국어
- Lietuvių
- Latviešu
- Македонски
- മലയാളം
- Bahasa Melayu
- Nederlands
- ‪Norsk (nynorsk)‬
- ‪Norsk (bokmål)‬
- Polski
- Português
- Русский
- Simple English
- Slovenčina
- Slovenščina
- Shqip
- Српски / Srpski
- Svenska
- தமிழ்
- ไทย
- Tagalog
- Türkçe
- Українська
- Tiếng Việt
- 中文