Java
![]() |
See artikkel räägib programmeerimiskeelest. Saare kohta vaata artiklit Jaava. |
![]() | Artikkel vajab vormindamist vastavalt Vikipeedia vormistusreeglitele. |
![]() | See artikkel ootab keeletoimetamist. |
Java | |
---|---|
Fail:Java logo.svg | |
Faililaiend | .java, .class, .jar, .jnlp |
Paradigma | imperatiivne,struktureeritud, objektorienteeritud (klassipõhine) |
Väljalaskeaeg | 1995 |
Looja | Sun Microsystems ( James Gosling) |
Arendaja | Oracle Corporation |
Viimane väljalase | Java SE 7 Update 7 (1.7.07) (30. august 2012) |
Tüüpimine | staatiline, tugev, turvaline, nominatiivne, manifesteeritud |
Implementatsioonid | mitmed |
Dialektid | Generic Java, Pizza |
Mõjutatud keeltest | Ada 83, C++, C#, Delphi Object Pascal, Eiffel, Generic Java, Mesa, Modula-3, Objective-C, UCSD Pascal, Smalltalk |
Mõjutanud keeli | Ada 2005, C#, Clojure, D, ECMAScript, Groovy, J#, PHP, Scala, JavaScript, Python, BeanShell |
OS | mitmeplatvormne |
Litsents | GNU GPL, Java Community Process |
Veebileht | java.sun.com |
Java on platvormist sõltumatu objektorienteeritud programmeerimiskeel.
Esimese Java versiooni avaldas Sun Microsystems 1995. aastal. 2009. aasta 20. aprillil omandas Suni Oracle Corporation[1], millest sai Java keele peamine arendaja. Programmeeriskeele arengut ohjab formaalselt Java Community Process (JCP), arendusotsused kinnitavad kaks Java kogukonna valitud esindajaist koosnevat täitevkomiteed. Täitevkomiteede liikmeteks on suured ettevõtted.
Java lähtekood (.java
failid) kompileeritakse baitkoodi (.class
failidesse), mida oskab käivitada iga Java virtuaalmasin (JVM) sõltumata platvormist. Tänapäeval sisaldab JVM reaalajalist kompilaatorit (JIT), mis programmi käivitamisel kompileerib baitkoodi masinkoodiks, mis töötab otse protsessoril ilma vajaduseta baitkoodi jooksvalt interpreteerida. Mõned kompilaatorid (nagu gcj) võimaldavad Java lähtekoodi või baitkoodi otse käivitatavaks programmiks kompileerida. Leidub ka riistvara, mis suudab Java baitkoodi otse käivitada.
Et käivitada Java programme, läheb arvutis vaja JRE-d (Java käivituskeskkonda), mille saab tasuta Oracle'i veebilehelt.
Ajalugu

Java projekti algatasid James Gosling, Mike Sheridan ja Patrick Naughton 1991. aastal.[2] Algselt mõeldi Javat kasutada interaktiivse televisiooni tarbeks, kuid tollase kaabeltelevisiooni jaoks olid sellised ideed liiga edasijõudnud.[3] Programmeerimiskeel pidi algselt saama nimeks Oak tammepuu järgi, mis Goslingi kontori akna all kasvas. Hiljem kasutati ka nime Green ja lõpuks võeti kasutusele nimi Java Jaava kohvi järgi, mida keele loojad väidetavalt suutes kogustes tarbisid.[4] Goslingi eesmärk oli rakendada virtuaalmasinat ja luua keel, mille süntaks sarnaneks C/C++ omaga.[5]
Esimese versiooni Java 1.0 avaldas Sun Microsystems 1995. aastal. Uue programmeerimiskeele reklaamimiseks kasutati lööklauset "Kirjuta üks kord, jooksuta igal pool" (inglise keeles "Write Once, Run Anywhere" ehk WORA), mis tähendas, et kord kirjutatud programmi saab ilma lisavaevata kasutada kõigil populaarsetel platvormidel. Üsna pea lisati suurematele veebilehitsejatele võimekus jooksutada Java rakendeid (applet) ja Java muutus kiiresti populaarseks. Alates Java 2 väljalaskmisest (algselt J2SE 1.2) võeti kasutusele erinevad konfiguratsioonid eri kasutajate jaoks: standardväljalase, ärirakendusetele orienteeritud versioon ja mobiilsetele seadmetele suunatud versioon. Alates 2006. aastast on kasutusele tähistused Java SE, Java EE ja Java ME.
Sun Microsystems kontakteerus 1997. aastal standardite organisatsiooniga ISO/IEC JTC1 ja hiljem Ecma International-iga, et kinnitada Java formaalne standard, kuid hiljem loobus sellest.[6] Javal on siiski olemas de facto standard, mida kontrollib Java Community Process.[7]
Sun avaldas 13. novembril 2006 suure osa Javast vaba- ja avatud lähtekoodiga tarkvarana GNU GPL litsentsi alusel. See potsess lõppes 8. mail 2007, kui Sun oli kogu Java põhikoodi vabasse kasutusse andnud. Avaldamata jäi väike osa koodist, mille autoriõigused ei kuulunud Sun-ile.[8]
Sun-i asepresident Rich Green ütles, et Sun-i ideaalne roll Java arengul on nagu "evangelistil".[9] Peale Sun-i omandamist Oracle poolt 2009-2010 on Oracle öelnud, et nende roll seisneb Java tehnoloogia haldamises ja Java kogukonna järjepidevas toetamises.[viide?] Java tarkvara on kasutusel paljudel erinevatel seadmetel sülearvutitest andmekeskusteni ja mängukonsoolidest teaduslike superarvutiteni. Igal aastal laetakse Java keskkonda (Java Runtime Environment) alla 930 miljonit korda ja Java jookseb 3 miljardil mobiiltelefonil.[10] James Gosling lahkus Oraclest 2. aprillil 2010.[11]
Võrdlus teiste keeltega
Peamised Java eelised
- Platvormist sõltumatu ja suur levik serveritest kuni tänapäeva mobiilideni
- Kõikehaarav teekide kogu (mis on põhjalikult dokumenteeritud)
- Automaatne mäluhaldus
- Automaatne kirjutatud koodi elektrooniline dokumenteerimine
- Suur kasutajaskond
- Hästi välja arenenud vaba tarkvara ja tööstus
Kiirus
Siinkohal tuleb aru saada, et pea kõik, mis on öeldud Java kohta, kehtib ka JVM'i kohta. Näited JVM'il eksisteerivatest keeltest, mis on selleks disainitud Scala, Groovy ja Conjure. Kuid leidub ka teiste keelte kohendatud versioone JRuby (Ruby), Jython (Python), Resin (PHP), Rhino (JavaScript), jne.
- kiirus
- Massiivi elemendi juurdepääsu aeg on aeglasem, kui Programmeerimiskeeles C. See on tingitud asjaolust, et Java teostab massiivi piiride kontrolli, ehk kas mäluaadress mille poole soovitakse pöörduda üldse kuulub massiivi (väldib mälulekke võimalust).
- Kasutab rohkem mälu, kui Programmeerimiskeeles C. See on tingitud asjaolust, et Java võimaldab ülikiiret mälu hõlmamist ja vabastamist.[viide?]
- Programmi käivitamine võtab aega, eriti on seda tähele panna lihtprogrammide puhul, mille töö aeg on alla 20 ms. See on tingitud asjaolust, et JVM tuleb töökorda seada.
- Ei võimalda viitadel põhinevaid häkke ja arhitektuuripõhist erifunktsionaalsust. [viide?]
- Ei võimalda riistvaralist tuge vaid positiivsetele arvudele.[viide?]
+ kiirus
- Java on enamus programmeerimiskeeltest kiirem pea kõigis aspektides. See on tingitud asjaolust, et Java kasutajaskond on ülisuur, ning ta on kohanenud oma kasutajate oskustele.[viide?]
- Java lõimeliste programmid, mis on sünkroniseeritud, on kiired, ning nende kirjutamine ei pruugi olla aeganõudev protsess. See on tingitud asjaolust, et keele loomise ajal disainiti see sisse. Tänapäeva personaalarvutitel ja serveritel mis on mitmetuumalised loetakse selle tõttu JRE'l põhinevad keeli kõige kiiremateks.[viide?]
- Mälu hõlmamine ja vabastamine on ülikiired. See on tingitud asjaolust, kuidas mäluhaldus on disainitud. [viide?]
- Objekti loomine ja funktsionaalsuse poole pöördumine on ülikiire. See on tingitud asjaolust, et keele loomise ajal disainiti see sissse, ning ei lisatud hiljem, nagu C++ puhul.
- Massiivi kopeerimine on ülikiire. See on tingitud asjaolust, et selleks on JVM arhidektuuripoolne assambler käsitsi optimeeritud.[viide?]
- Staatiliste ja privaatsete meetodite poole pöördumise aega peaaaegu ei eksisteeri. See on tingitud asjaolust, et JIT on suuteline leidma ja eemaldama meetodi poole pöördumise, kui see on võimalik (see ei ole võimalik vaid erijuhtudel). Kompilleeritavate keelte puhul ei ole see võimalik.[viide?]
Java 2 Enterpise Edition on mitemekihiliste kommertslahenduste arendamiseks loodud raamistik. J2EE eesmärk on lihtsustada ja standardiseerida suure koormustaluvusega (palju kasutajaid) ja keerulise äriloogikaga veebirakendusi. Selline veebirakendus peab olema võimeline töötama samaaegselt mitme serveri peal (klaster), peab toetama mitmekihilist aritektuuri (kasutajaliides, äriloogika ja andmebaas) ning peab olema lihtne arendada ja hallata.
Hello, world
Javas kuuluvad meetodid klassi, ning klassi nimi määrab ka faili nime - mis antud juhul peab olema 'HelloWorld.java
'. Javas eksisteerib nähtavus ja varjestamine, ning eksisteerivad tasemed on 'public
', 'private
', 'protected
' ja 'ei midagi
' ehk (package private
). Meetod 'main
' on erimeetod, mis käivitatakse, kui antud klassi jooksutatakse, kui rakendust. Äärmiselt tähtis on tähele panna, et meetod jooksutatakse staatilises (static
) kontekstis, st. meetod on omane ja ühtne kõigile klassi elementidele, kuid see tähendab ka, et tal pole juurdepääsuõigust elementidele, mis ei ole staatilised.
Hello world programm Javas:
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello, World!");
}
}
Selleks, et staatiline meetod saaks klassi mittestaatilisi elemente ja meetodeid kasutada, peab klassist uue elemendi looma (Seda pole siiamaani tehtud. Põhjus on, et seda pole alati vaja ja staatiliste meetodite kutsumine on odav.). Lisaks 'System.out.println
' tundub pikk, ning seda saab lühendada, kui importida Systeemi klassist staatiline element väljundvoog.
Hello world programm Javas, luues uus element klassist:
import static java.lang.System.out;
public class HelloWorld {
public static void main(String args[]) { new HelloWorld(); }{
out.println("Hello, World!");
}
}
Vaata ka
Viited
- ↑ Brian Caulfield (20. aprill 2009). "Oracle To Buy Sun". Forbes (Inglise keel). Vaadatud 30. mai 2012.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Jon Byous. "JAVA TECHNOLOGY: THE EARLY YEARS". Internet archive waybackmachine (Inglise keel). Sun Developer Network. Vaadatud 30. mai 2012.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "The History of Java Technology" (Inglise keel). Oracle Corporation. Vaadatud 30. mai 2012.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Java Kasutatud: 30. mai 2012
- ↑ Heinz Kabutz (15. juuli 2003). "Once Upon an Oak ..." (Inglise keel). Artima Network. Vaadatud 30. mai 2012.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Tineke M. Egyedi (2001). "Why JavaTM Was - Not - Standardized Twice" (PDF). Proceedings of the 34th Hawaii International Conference on System Sciences - 2001 (Inglise keel). Vaadatud 30. mai 2012.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ ""Java Community Process website" (Inglise keel). Jcp.org. Vaadatud 30. mai 2012.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ China Martens (8. mai 2007). "JAVAONE: Sun - The bulk of Java is open sourced". itworld.com (Inglise keel). Vaadatud 30. mai 2012.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Sun's Evolving Role as Java Evangelist" (Inglise keel). O'Reilly Media. 17. aprill 2002. Vaadatud 30. mai 2012.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Learn About Java Technolog". java.com (Inglise keel). Vaadatud 30. mai 2012.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ James Gosling (9. aprill 2010). "Time to move on..." On a New Road (Inglise keel). Vaadatud 30. mai 2012.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link)