Java

Ajalugu

Java projekti algatasid James Gosling, Mike Sheridan ja Patrick Naughton 1991. aastal. Algselt mõeldi Javat kasutada interaktiivse televisiooni tarbeks, kuid tollase kaabeltelevisiooni jaoks olid sellised ideed liiga omast ajast ees. 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 suurtes kogustes tarbisid. Goslingi eesmärk oli rakendada virtuaalmasinat ja luua keel, mille süntaks sarnaneks C/C++ omaga.
Esimese versiooni Java 1.0 avaldas Sun Microsystems 1995. aastal. Uue programmeerimiskeele reklaamimiseks kasutati lööklauset "Kirjuta üks kord, käita 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 veebibrauseritele võimalus käitada Java rakendeid – aplette (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 kasutusel tähised Java SE, Java EE ja Java ME.
Sun Microsystems kontakteerus 1997. aastal standardite organisatsiooniga ISO/IEC JTC1 ja hiljem Ecma Internationaliga, et kinnitada Java formaalne standard, kuid hiljem loobus sellest. Javal on siiski olemas de facto standard, mida kontrollib Java Community Process.
Sun avaldas 13. novembril 2006 suure osa Javast vaba ja avatud lähtekoodiga tarkvarana GNU GPL litsentsi alusel. See protsess 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 Sunile.
Suni asepresident Rich Green ütles, et Suni ideaalne roll Java arengul on nagu "evangelistil". Pärast Suni omandamist Oracle'i poolt 2009–2010 on Oracle öelnud, et nende roll seisneb Java tehnoloogia haldamises ja Java kogukonna järjepidevas toetamises. Java tarkvara on kasutusel paljudes eri liiki seadmetes sülearvutitest andmekeskusteni ja mängukonsoolidest teaduslike superarvutiteni. Igal aastal laaditakse Java keskkonda (Java Runtime Environment) alla 930 miljonit korda ja Javat kasutatakse 3 miljardis mobiiltelefonis. James Gosling lahkus Oracle'ist 2. aprillil 2010.

Kiirus

Siinkohal tuleb aru saada, et pea kõik, mis on öeldud Java kohta, kehtib ka JVM-i kohta. Spetsiaalselt JVM-i jaoks on välja töötatud sellised keeled nagu Scala, Groovy ja Conjure. Kuid leidub ka teiste keelte kohendatud versioone, näiteks JRuby (Ruby), Jython (Python), Resin (PHP), Rhino (JavaScript) jne.

J2EE

Java 2 Enterpise Edition on mitmekihiliste 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 arhitektuuri (kasutajaliides, äriloogika ja andmebaas) ning peab olema lihtne arendada ja hallata.

Programm "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 meetodit käitatakse 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!");
}}
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 uue elemendi klassist:
import static java.lang.System.out;public class HelloWorld {
public static void main(String args[]) { new HelloWorld(); }{
out.println("Hello World!");
}}