abc Programski jezik Java
Teorijska priprema - Karakteristike Jave

Može se navesti mnogo karakteristika Jave. One su takođe poznate i kao “java buzzwords”. Sljedeće karakteristike Jave su jednostavne i lake za razumijevanje:

  1. Jednostavnost
  2. Objektna orijentisanost
  3. Platformna nezavisnost
  4. Sigurnost
  5. Robustnost
  6. Arhitekturna neutralnost
  7. Prenosivost
  8. Dinamičnost
  9. Interpretiranost
  10. Visoke performanse
  11. Višenitnost (Multithread)
  12. Distribuiranost

Jednostavnost
Prema kompaniji Sun, jezik Java je jednostavan zato što:

  • ima sintaksu koja je zasnovana na C++ (pa je za programere lakše da ga nauče nakon C++).
  • je uklonio mnogo zbunjujućih i/ili rijetko korištenih karakteristika napr. eksplicitne pointere, preopterećenje operatora itd.
  • nema potrebe za uklanjanjem nereferenciranih objekata jer sadrži tzv. Automatsko sakupljanje smeća (Automatic Garbage Collection).

Objektna orijentisanost
Objektna orijentisanost znači da se softver organizuje kao kombinacija različitih tipova objekata koji uključuju i podatke i ponašanje.
Objektno-orijentisano programiranje (OOP) je metodologija koja pojednostavljuje razvoj i održavanje softvera tako što obezbjeđuje određena pravila.
Osnovni koncepti OOP su:

  1. Objekt
  2. Klasa
  3. Nasljeđivanje
  4. Polimorfizam
  5. Apstrakcija
  6. Enkapsulacija

Platformna nezavisnost
Platforma je hardversko ili softversko okruženje u kojem program radi. Dakle, postoje dva tipa platformi: softverski zasnovane i hardverski zasnovane. Java obezbjeđuje softverski zasnovanu platformu. Java platforma se razlikuje od većine drugih platformi u smislu da je to softverski zasnovana platforma koja radi na drugim hardverski zasnovanim platformama. Ona ima dve komponente:

  1. Runtime okruženje
  2. API (Application Programming Interface)

Java kod se može pokrenuti na različitim platformama napr. Windows, Linux, Sun Solaris, Mac/OS itd. Java kod se prvo kompajlira, a onda konvertuje u tzv. bytecode. Ovaj bytecode je platformno nezavisan kod i može se pokrenuti na različitim platformama. Ovaj princip se naziva Write Once Run Anywhere (WORA), tj. napiši jednom pokreni svuda.


Slika 1.

Sigurnost
Java je sigurna zato što:

  • nema eksplicitnih pointera
  • programi se pokreću unutar tzv. “vreće s pijeskom u virtualnoj mašini” (Virtual Machine Sandbox)


Slika 2.

  • Classloader – poboljšava sigurnost razdvajajući paket za klase lokalnog fajl sistema od onih koje su uvezene iz mrežnih izvora.
  • Bytecode Verifikator – provjerava fragmente koda na ilegalni kod koji može narušiti pristupna prava objektima.
  • Security Manager – određuje kojim resursima klasa može pristupiti, napr. čitanje i pisanje po lokalnom disku.

Ove sigurnosti obezbjeđuje jezik Java. Neke sigurnosti se takođe mogu obezbijediti preko aplikacionog developera kroz SSL, JAAS, kriptografiju itd.

Robustnost


Robustan jednostavno znači snažan. Java koristi snažno upravljanje memorijom. Odsustvom pointera izbjegavaju se sigurnosni problemi. U Javi postoji automatsko sakupljanje otpadaka (garbage collection). Takođe, u Javi postoje mehanizmi rukovanja izuzecima (exception handling) i provjere tipa (type checking). Sve ove stavke čine Javu robustnom.

Arhitekturna neutralnost


Nema karakteristika zavisnih od implementacije napr. veličina primitivnih tipova je utvrđena.

Prenosivost
Moguće je prenijeti Java bytecode na bilo koju platformu.

Visoke performanse
Java je brža od tradicionalne interpretacije pošto je bytecode "blizak" izvornom kodu, ali ipak je nešto sporija od kompajliranih jezika (napr. C++).

Distribuiranost
Moguće je kreirati distribuirane aplikacije u Javi. RMI i EJB se koriste za kreiranje distribuiranih aplikacija. Moguće je pristupati fajlovima pozivanjem metoda iz bilo koje mašine na internetu.

Višenitnost (Multi-threading)
Nit (thread) je poput zasebnog programa koji se izvršava konkurentno. Moguće je pisati Java programe koji rade na mnogim zadacima odjednom tako što se definišu višestruke niti. Glavna prednost višenitnosti (multi-threadinga) je da on dijeli istu memoriju. Niti su važne za multimediju, Web aplikacije itd.

Istorijat Jave    <    Index    >    Poređenje C++ i Jave