Razlika između verzija stranice "Java (programski jezik)"

[nepregledana izmjena][nepregledana izmjena]
Uklonjeni sadržaj Dodani sadržaj
Zamjena sadržaja stranice sa '{popusi qrac...........i ti i java .skripteri'
m Poništene izmjene koje je napravio 109.228.89.208 (razgovor), vraćeno na zadnju verziju koju je sačuvao RedBot
Red 1:
{{Drugo značenje|Java}}
{popusi qrac...........i ti i java .skripteri
{{Infokutija programski jezik
|ime = Java
|logo = [[Datoteka:Java_logo.gif|100p]]
|paradigm = [[Objektno Orijentirano Programiranje]]
|godina = 1990-te
|dizajner = [[James Gosling]] i tim iz [[Sun Microsystems]]
|typing = statični, strogi
|implementacije = razne
|dijalekti =
|utjecali = [[C++]], [[Smalltalk]], [[Objective-C]]
|utjecao_na = [[C sharp|C#]], [[J sharp|J#]], [[Visual J sharp|VJ#]]
}}
'''Java''' je [[Objektno Orijentirano Programiranje|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 nezavisan od [[operativni sistem|operativnog sistema]], baziran na [[C++]]-u, ali sa pojednostavljenom sintaksom, stabilnijim ''runtime'' sistemom i pojednostavljenom kontrolom [[RAM|memorije]].
 
Java nema veze sa [[JavaScript]]-om, iako oba jezika koriste sličnu sintaksu baziranu na [[C]] sintaksi.
 
== Historija ==
 
== Filozofija ==
Pet osnovnih razloga za razvoj Jave su:
 
# treba da koristi [[Objektno Orijentirano Programiranje|objektno-orijentacione]] metodologije
# treba da se isti program izvršava na mnogim operativnim sistemima
# treba da sadrži (built-in) podržku za računarske mreže
# treba da izvrši programe sa (geografski) udaljenih servera sa sigurnošću
# 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]].
 
=== [[Objektno Orijentirano Programiranje|Objekt-Orijentacija]] ===
Osnovni koncept u Javi je klasa ([[Engleski jezik|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 [[kompajler]]om koji zahtijeva da su imena klasa i datoteka ista (osim tkz. '''unutrašnjih klasa''', [[Engleski jezik|en.]] ''inner classes'').
Osnovni tipovi u Javi, poput <code>int</code>, <code>boolean</code>, <code>byte</code> i sl. su takodjer predstavljeni u klasama (''napomena: Reflection types'') i imaju odgovarajuće klasne [[Wrapper|omote]] poput <code>java.lang.Integer</code>, <code>java.lang.Boolean</code> i <code>java.lang.Byte</code>.
 
=== Nezavisnost od Platforme ([[Operativni sistem|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]] ([[Engleski jezik|en.]] [[Java Virtual Machine]] ili [[JVM]]). Trenutno JVM podržava najrasprostranjenije [[Operativni sistem|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.
 
=== Automatsko Čišćenje Resursa (''garbage collection'') ===
U Javi, za razliku od npr. [[C++]]-a, memorija namjenjena [[Objekat (računari)|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 [[Engleski jezik|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 <code>delete</code> (ako se to ne uradi onda dođe do tkz. curenja memorije ili [[Engleski jezik|en.]] ''memory leak'').
 
== 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 (računari)|objekat]], a sav [[izvorni kod]] je pisan unutar [[Klasa (računari)|klasa]].
 
=== Vozdra Raja ([[Hello world program|Hello World]]) primjer ===
 
==== Aplikacija ====
<pre>
// VozdraRaja.java
public class VozdraRaja {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
</pre>
 
* 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 [[Izvorni kod|izvornim kodom]]. Ime generirane datoteke je ime klase sa .class sufiksom. Tako npr. za klasu <code>VozdraRaja</code> koja je deklarirana u datoteci <code>VozdraRaja.java</code>, 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. <code>VozdraRaja$1.class</code>.
* Klase koje pokreću program moraju imati metodu <code>main()</code>, tzv. '''glavnu''' metodu.
* Uputa <code>void</code> označava da metoda <code>main()</code> ne vraća ništa.
* <code>main()</code> metoda mora uzimati niz ''String'' objekata kao parametar. Obično se taj parametar imenuje <code>args</code>, međutim bilo koje dozvoljeno ime varijable se može koristiti kao parametar (npr. <code>argumenti</code>).
* Uputa <code>static</code> 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 <code>static</code>.
* Uputa <code>public</code> (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. <code>java.lang.System</code> definira javnu staticnu (public static) varijablu <code>out</code> koja je instanca (objekat) klase <code>java.io.PrintStream</code> i ima metodu <code>[http://java.sun.com/j2se/1.5.0/docs/api/java/io/PrintStream.html#println(java.lang.String) println(java.lang.String)]</code> koja ispisuje informaciju na ekranu (tkz. standardni output).
* Java [[izvorni kod]] se kompajlira koristeći <code>javac</code> program, tj. pozivajući Java kompajler. Npr. da bi kompajlirali gore navedeni primjer u trenutačnom direktoriju
:UNIX, Linux i Mac OS X
<pre>
$ javac VozdraRaja.java
</pre>
:Windows
<pre>
C:\> javac VozdraRaja.java
</pre>
* Samostalni programi u Javi se izvršavaju tako da se Javinoj runtime (JRE) pripiše ime klase koja sadrži <code>main()</code> (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
<pre>
$ java -cp . VozdraRaja
</pre>
:Windows
<pre>
C:\> java -cp . VozdraRaja
</pre>
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.
 
=== 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.
 
<pre>
// 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);
}
}
</pre>
<pre>
<!-- 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>
</pre>
 
* Uputa <code>import</code> upućuje kompajler da uključi [http://java.sun.com/j2se/1.5.0/docs/api/java/applet/Applet.html <code>java.applet.Applet</code>] i [http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Graphics.html <code>java.awt.Graphics</code>] [[Klasa (računari)|klase]] u kompilaciju. Koristeći <code>import</code> uputu programer može koristiti normalizirano (skraćeno) ime klase (npr. <code>Applet</code>) umjesto čitavog imena (npr. <code>java.applet.Applet</code>) u svom [[Izvorni kod|izvornom kodu]].
 
* <code>VozdraRaja</code> klasa proširuje klasu <code>Applet</code>, tj. <code>Applet</code> daje osnovnu okosnicu aplikaciji za prikazivanje i kontrolu tokom rada apleta. <code>Applet</code> klasa je komponenta ''Abstract Windowing Toolkit'' (AWT), koji daje apletu mogućnost da se prikaže u [[GUI|korisnikovom grafičkom interfejsu]] (tj. ''[[GUI]]'') i reaguje na GUI događaje (poput klika na dugme).
 
* <code>VozdraRaja</code> ''overrides'' (termin koji opisuje da metoda u '''ovoj''' klasi ima prednost nad roditeljskom klasom) <code>paint(Graphics)</code> metodu nasliđenu od <code>Container</code> ''super-klase'' koja, daje, tj. sadrži [[Izvorni kod|kod]] za prikazivanje apleta. Metoda <code>paint()</code> uzima <code>Graphics</code> objekat kao parametar koji sadrži grafički kontekst unutuar kojeg se prikazuje aplet. Tako npr. <code>paint()</code> poziva metodu <code>drawString(String, int, int)</code> 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 <nowiki><applet></nowiki> HTML elemenat (tj. tag). Također postoje tri atributa koji se mogu postaviti
:* <code>code="VozdraRaja"</code> - naznačuje ime klase koju treba izvrsiti
:* <code>width="200"</code> - znači '''širina''', tj. širina apletovog prostora
:* <code>height="200"</code> - znači '''visina''', tj. visina apletovog prostora
 
* Apleti se također mogu dodati HTML-u koristeći <code>object</code> ili <code>embeded</code> elemente (tj. tagove), mada podrška za ove element varira ovisno o [[Internet preglednik|internet pregledniku]]. [http://java.sun.com/docs/books/tutorial/deployment/applet/applettag.html][http://java.sun.com/docs/books/tutorial/deployment/applet/mixedbrowser.html])
 
== Također pogledajte ==
* [[Hello world program#Java programski jezik|Primjer u Javi]]
* [[Programska paradigma]]
* [[Objektno orijentirano programiranje]]
* [http://www.meshplex.org/wiki/Java/Introduction_to_Java Full Java Tutorial]
 
[[Kategorija:Programski jezici]]
 
{{Link FA|ml}}
 
[[ace:Java]]
[[af:Java (programmeertaal)]]
[[am:ጃቫ]]
[[ar:جافا (لغة برمجة)]]
[[az:Java]]
[[bat-smg:Java]]
[[be:Java]]
[[be-x-old:Java]]
[[bg:Java]]
[[bn:জাভা (প্রোগ্রামিং ভাষা)]]
[[bug:Java]]
[[ca:Java (llenguatge de programació)]]
[[cdo:Java]]
[[co:Java]]
[[cs:Java (programovací jazyk)]]
[[cv:Java (компьютер чĕлхи)]]
[[cy:Java (iaith rhaglennu)]]
[[da:Java (programmeringssprog)]]
[[de:Java (Programmiersprache)]]
[[el:Java]]
[[en:Java (programming language)]]
[[eo:Java (programlingvo)]]
[[es:Java (lenguaje de programación)]]
[[et:Java]]
[[eu:Java (programazio lengoaia)]]
[[fa:جاوا (زبان برنامه‌نویسی)]]
[[fi:Java]]
[[fr:Java (langage)]]
[[ga:Java]]
[[gl:Linguaxe Java]]
[[he:Java]]
[[hi:जावा प्रोग्रामिंग भाषा]]
[[hr:Java (programski jezik)]]
[[ht:Java]]
[[hu:Java (programozási nyelv)]]
[[hy:Ջավա (ծրագրավորման լեզու)]]
[[ia:Java (linguage de programmation)]]
[[id:Java]]
[[is:Java (forritunarmál)]]
[[it:Java (linguaggio)]]
[[ja:Java]]
[[ka:ჯავა (პროგრამირების ენა)]]
[[kaa:Java (programmalastırıw tili)]]
[[kk:Java]]
[[ko:자바 (프로그래밍 언어)]]
[[la:Java (lingua programmandi)]]
[[lij:Java (lenguazzo)]]
[[lt:Java (kalba)]]
[[lv:Java (valoda)]]
[[mk:Java (програмски јазик)]]
[[ml:ജാവ (പ്രോഗ്രാമിങ് ഭാഷ)]]
[[mn:Java (Программчлалын хэл)]]
[[mr:जावा (प्रोग्रॅमिंग भाषा)]]
[[ms:Java]]
[[my:Java (programming language)]]
[[nl:Java (programmeertaal)]]
[[nn:Programmeringsspråket Java]]
[[no:Java (programmeringsspråk)]]
[[pa:ਜਾਵਾ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ]]
[[pl:Java]]
[[pt:Java (linguagem de programação)]]
[[ro:Java (limbaj de programare)]]
[[ru:Java]]
[[sah:Java]]
[[sh:Java (programski jezik)]]
[[si:ජාවා (පරිගණක ක්‍රමලේඛන බස)]]
[[simple:Java (programming language)]]
[[sk:Java]]
[[sl:Programski jezik java]]
[[sq:Java (gjuhë programimi)]]
[[sr:Јава (програмски језик)]]
[[sv:Java (programspråk)]]
[[ta:ஜாவா நிரலாக்க மொழி]]
[[te:జావా]]
[[tg:Java]]
[[th:ภาษาจาวา]]
[[tl:Java (wikang pamprograma)]]
[[tr:Java (programlama dili)]]
[[uk:Java]]
[[uz:Java]]
[[vec:Java]]
[[vi:Java (ngôn ngữ lập trình)]]
[[war:Java (linggwahe hin pagprograma)]]
[[wuu:程序编制言话Java]]
[[zh:Java]]
[[zh-yue:Java程式語言]]