Mine sisu juurde

Java

Allikas: Vikipeedia
See artikkel raagib programmeerimiskeelest. Saare kohta vaata artiklit Jaava, skriptikeele kohta loe JavaScript

Java
Faililaiend .java, .class, .jar, .jnlp
Paradigma imperatiivne,struktureeritud, objektorienteeritud (klassipohine)
Valjalaskeaeg 1995
Looja Sun Microsystems (James Gosling)
Arendaja Oracle Corporation
Viimane valjalase Java SE 25 (16.09.2025)
Tuupimine staatiline, tugev, turvaline, nominatiivne, manifesteeritud
Implementatsioonid mitmed
Dialektid Generic Java, Pizza
Mojutatud keeltest Ada 83, C++, C#, Delphi Object Pascal, Eiffel, Generic Java, Mesa, Modula-3, Objective-C, UCSD Pascal, Smalltalk
Mojutanud keeli Ada 2005, C#, Clojure, D, ECMAScript, Groovy, J#, PHP, Scala, JavaScript, Python, BeanShell
OS mitmeplatvormne
Litsents GNU GPL, Java Community Process
Veebileht Java veebileht

Java on platvormist soltumatu objektorienteeritud programmeerimiskeel.

Esimese Java versiooni avaldas Sun Microsystems 1995. aastal. 20. aprillil 2009 omandas Suni Oracle Corporation[1], kellest sai Java keele peamine arendaja. Programmeerimiskeele arengut koordineerib formaalselt Java Community Process (JCP), arendusotsused kinnitavad kaks Java kogukonna valitud esindajast koosnevat taitevkomiteed. Taitevkomiteede liikmed on suured ettevotted.

Java lahtekood (.java; java-failid) kompileeritakse baitkoodi (.class; class-failidesse), mida oskab kaivitada iga Java virtuaalmasin (JVM) soltumata platvormist. Tanapaeval sisaldab JVM reaalajalist kompilaatorit (JIT), mis programmi kaivitamisel kompileerib baitkoodi masinkoodiks ja tootab otse protsessoril, vajaduseta baitkoodi jooksvalt interpreteerida. Moned kompilaatorid (nagu GCJ ja GraalVM) voimaldavad Java lahtekoodi voi baitkoodi otse kaivitatavaks programmiks kompileerida. Leidub ka riistvara, mis suudab Java baitkoodi otse kaivitada.

Et kaivitada Java programme, laheb arvutis vaja JRE-d (Java kaivituskeskkonda), mille saab tasuta Oracle'i veebilehelt.

Java maskott Duke

Java projekti algatasid James Gosling, Mike Sheridan ja Patrick Naughton 1991. aastal.[2] Algul moeldi Javat kasutada interaktiivse televisiooni tarbeks, kuid tollase kaabeltelevisiooni jaoks olid sellised ideed liiga omast ajast ees.[3] Programmeerimiskeel pidi esialgu saama nimeks Oak tamme jargi, mis Goslingi kontori akna all kasvas. Hiljem kasutati ka nime Green ja lopuks voeti kasutusele nimi Java Jaava kohvi jargi, mida keele loojad vaidetavalt suurtes kogustes tarbisid.[4] Goslingi eesmark oli rakendada virtuaalmasinat ja luua keel, mille suntaks sarnaneks C/C++ omaga.[5]

Esimese versiooni, Java 1.0, avaldas Sun Microsystems 1995. aastal. Uue programmeerimiskeele reklaamimiseks kasutati looklauset "Kirjuta uks kord, kaivita igal pool" (inglise keeles write once, run anywhere ehk WORA), mis tahendas, et kord kirjutatud programmi saab ilma lisavaevata kasutada koigil populaarsetel platvormidel. Usna pea lisati suurematele veebibrauseritele voimalus kaitada Java rakendeid - aplette (applet) - ja Java muutus kiiresti populaarseks. Alates Java 2 valjalaskmisest (alul J2SE 1.2) voeti kasutusele eri konfiguratsioonid eri kasutajate jaoks: standardvaljalase, arirakendusetele orienteeritud versioon ja mobiilsete seadmete versioon. Alates 2006. aastast on kasutusel tahised Java SE, Java EE ja Java ME.

Sun Microsystems kontakteerus 1997. aastal standardiorganisatsiooniga ISO/IEC JTC1 ja hiljem Ecma Internationaliga, 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 lahtekoodiga tarkvarana GNU GPL litsentsi alusel. See protsess loppes 8. mail 2007, kui Sun oli kogu Java pohikoodi vabasse kasutusse andnud. Avaldamata jai vaike osa koodist, mille autorioigused ei kuulunud Sunile.[8]

Suni asepresident Rich Green utles, et Suni ideaalne roll Java arengul on nagu evangelistil.[9] 2009.-2010. aastal Suni omandanud Oracle utles, et nad haldavad Java tehnoloogiat ja toetavad Java kogukonda pidevalt.[viide?] Java tarkvara on kasutusel paljudes seadmetes sulearvutitest andmekeskusteni ja mangukonsoolidest teaduslike superarvutiteni. Igal aastal laaditakse Java keskkonda Java Runtime Environment alla 930 miljonit korda ja Javat kasutatakse 3 miljardis mobiiltelefonis.[10] James Gosling lahkus Oracle'ist 2. aprillil 2010.[11]

Vordlus teiste keeltega

[muuda | muuda lahteteksti]

Peamised Java eelised

[muuda | muuda lahteteksti]
  • Platvormist soltumatu ja suur levik serveritest kuni tanapaeva mobiilideni
  • Koikehaarav teekide kogu (mis on pohjalikult dokumenteeritud)
  • Automaatne maluhaldus
  • Automaatne kirjutatud koodi elektrooniline dokumenteerimine
  • Suur kasutajaskond
  • Hasti valja arenenud vaba tarkvara ja toostus

Siinkohal tuleb aru saada, et pea koik, mis on oeldud Java kohta, kehtib ka JVM-i kohta. Spetsiaalselt JVM-i jaoks on valja tootatud sellised keeled nagu Scala, Groovy ja Clojure. Kuid leidub ka teiste keelte kohendatud versioone, naiteks JRuby (Ruby), Jython (Python), Resin (PHP), Rhino (JavaScript) jne.

Kiiruse miinused

[muuda | muuda lahteteksti]
  • Massiivi elemendi juurdepaasu aeg on aeglasem kui programmeerimiskeeles C. See on tingitud asjaolust, et Java kontrollib massiivi piire ehk seda, kas maluaadress, mille poole soovitakse poorduda, uldse kuulub massiivi (valdib malulekke voimalust).
  • Kasutab rohkem malu kui programmeerimiskeel C. See on tingitud asjaolust, et Java voimaldab ulikiiret malu holmamist ja vabastamist.[viide?]
  • Programmi kaivitamine votab aega, eriti on seda tahele panna lihtprogrammide puhul, mille too aeg on alla 20 ms. See on tingitud asjaolust, et JVM tuleb tookorda seada.
  • Ei voimalda viitadel pohinevaid hakke ja arhitektuuripohist erifunktsionaalsust. [viide?]
  • Ei voimalda riistvaralist tuge vaid positiivsetele arvudele.[viide?]

Kiiruse plussid

[muuda | muuda lahteteksti]
  • Java on enamus programmeerimiskeeltest kiirem pea koigis aspektides. See on tingitud asjaolust, et Java kasutajaskond on ulisuur ning ta on kohanenud oma kasutajate oskuste jargi.[viide?]
  • Java loimeliste programmid, mis on sunkroonitud, on kiired ning nende kirjutamine ei pruugi olla aeganoudev protsess. See on tingitud asjaolust, et keele loomise ajal disainiti see sisse. Tanapaeva personaalarvutitel ja serveritel mis on mitmetuumalised loetakse selle tottu JRE-l pohinevad keeli koige kiiremateks.[viide?]
  • Malu holmamine ja vabastamine on ulikiire. See on tingitud asjaolust, kuidas maluhaldus on disainitud. [viide?]
  • Objekti loomine ja funktsionaalsuse poole poordumine on ulikiire. See on tingitud asjaolust, et keele loomise ajal disainiti see sisse, kuid ei lisatud hiljem, nagu C++ puhul.
  • Massiivi kopeerimine on ulikiire. See on tingitud asjaolust, et selleks on JVM arhitektuuripoolne assambler kasitsi optimeeritud.[viide?]
  • Staatiliste ja privaatsete meetodite poole poordumise aega peaaegu ei eksisteeri. See on tingitud asjaolust, et JIT on suuteline leidma ja eemaldama meetodi poole poordumise, kui see on voimalik (see ei ole voimalik vaid erijuhtudel). Kompileeritavate keelte puhul ei ole see voimalik.[viide?]

Java 2 Enterprise Edition on mitmekihiliste kommertslahenduste arendamiseks loodud raamistik. J2EE eesmark on lihtsustada ja standardiseerida suure koormustaluvusega (palju kasutajaid) ja keerulise ariloogikaga veebirakendusi. Selline veebirakendus peab olema voimeline tootama samaaegselt mitme serveri peal (klaster), peab toetama mitmekihilist arhitektuuri (kasutajaliides, ariloogika ja andmebaas) ning peab olema lihtne arendada ja hallata.

Programm "Hello World"

[muuda | muuda lahteteksti]

Javas kuuluvad meetodid klassi, ning klassi nimi maarab ka faili nime - mis antud juhul peab olema 'HelloWorld.java'. Javas eksisteerib nahtavus ja varjestamine, ning eksisteerivad tasemed on 'public', 'private', 'protected' ja 'ei midagi' ehk (package private). Meetod 'main' on erimeetod, mis kaivitatakse, kui antud klassi jooksutatakse kui rakendust. Tahtis on tahele panna, et meetodit kaitataks staatilises (static) kontekstis, st meetod on omane ja uhtne koigile klassi elementidele, kuid see tahendab ka, et tal pole juurdepaasuoigust elementidele, mis ei ole staatilised.

"Hello World" Javas:

public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}

Et staatiline meetod saaks klassi mittestaatilisi elemente ja meetodeid kasutada, peab klassist uue elemendi looma (Seda pole siiamaani tehtud. Pohjus on, et seda pole alati vaja ja staatiliste meetodite kutsumine on odav.). Lisaks 'System.out.println' tundub pikk, ning seda saab luhendada, kui importida Systeemi klassist staatiline element valjundvoog.

"Hello world" programm Javas, luues uue elemendi klassist:

import static java.lang.System.out;
public class HelloWorld {
public static void main(String args[]) { new HelloWorld(); }{
out.println("Hello World!");
}
}
\n20{{netiviide | url = http://www.java.com/en/about/| pealkiri = Learn About Java Technolog|valjaanne = java.com| vaadatud = 30. mail 2012| keel =Inglise keel }}\n21{{netiviide | url = http://nighthacks.com/roller/jag/entry/time_to_move_on | pealkiri = Time to move on... | autor = James Gosling | valjaanne = On a New Road | aeg = 9. aprill 2010 | vaadatud = 30. mail 2012 | keel = Inglise keel | arhiivimisaeg = 2010-11-05 | arhiivimisurl = https://web.archive.org/web/20101105031239/http://nighthacks .com/roller/jag/entry/time_to_move_on | url-olek = ei toota }}"}},"i":0}}]}">
\n20{{netiviide | url = http://www.java.com/en/about/| pealkiri = Learn About Java Technolog|valjaanne = java.com| vaadatud = 30. mail 2012| keel =Inglise keel }}\n21{{netiviide | url = http://nighthacks.com/roller/jag/entry/time_to_move_on | pealkiri = Time to move on... | autor = James Gosling | valjaanne = On a New Road | aeg = 9. aprill 2010 | vaadatud = 30. mail 2012 | keel = Inglise keel | arhiivimisaeg = 2010-11-05 | arhiivimisurl = https://web.archive.org/web/20101105031239/http://nighthacks .com/roller/jag/entry/time_to_move_on | url-olek = ei toota }}"}}">
  1. | Brian Caulfield (20. aprill 2009). "Oracle To Buy Sun". Forbes (Inglise keel). Vaadatud 30. mail 2012.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  2. | Jon Byous. "JAVA TECHNOLOGY: THE EARLY YEARS". Internet archive waybackmachine (Inglise keel). Sun Developer Network. Originaali arhiivikoopia seisuga 20. aprill 2005. Vaadatud 30. mail 2012.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  3. | "The History of Java Technology" (Inglise keel). Oracle Corporation. Vaadatud 30. mail 2012.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  4. | Java Kasutatud: 30. mai 2012
  5. | Heinz Kabutz (15. juuli 2003). "Once Upon an Oak ..." (Inglise keel). Artima Network. Vaadatud 30. mail 2012.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  6. | 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. mail 2012.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  7. | ""Java Community Process website" (Inglise keel). Jcp.org. Vaadatud 30. mail 2012.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  8. | China Martens (8. mai 2007). "JAVAONE: Sun - The bulk of Java is open sourced". itworld.com (Inglise keel). Originaali arhiivikoopia seisuga 29. september 2012. Vaadatud 30. mail 2012.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  9. | "Sun's Evolving Role as Java Evangelist" (Inglise keel). O'Reilly Media. 17. aprill 2002. Vaadatud 30. mail 2012.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  10. | "Learn About Java Technolog". java.com (Inglise keel). Vaadatud 30. mail 2012.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  11. | James Gosling (9. aprill 2010). "Time to move on..." On a New Road (Inglise keel). Originaali arhiivikoopia seisuga 5. november 2010. Vaadatud 30. mail 2012.{{netiviide}}: CS1 hooldus: tundmatu keel (link)

Valislingid

[muuda | muuda lahteteksti]

Arendajale

[muuda | muuda lahteteksti]