Java (wikang pamprograma)

Ang **Java** ay isang mataas-na-antas, pangkalahatang-gamit, ligtas para sa memorya (o *memory-safe*),  wikang pamprograma na nakatuon sa mga bagay (o *object-oriented*). Nilayon nito na hayaan ang mga tagapagprograma o *programmer* na *magsulat ng isang beses, at tumakbo kahit saan* (*write once, run anywhere* o WORA), ibig sabihin na ang pinagsama-samang kodigo o *code* ng Java ay maaaring tumakbo sa lahat ng mga *platform* (o plataporma) na sumusuporta sa Java nang hindi na kailangang muling mag-*compile* o magsama. Ang mga aplikasyon ng Java ay karaniwang pinagsama-sama sa *bytecode* na maaaring tumakbo sa anumang Java virtual machine (JVM) anuman ang pinagbabatayan na arkitektura ng kompyuter. Ang *syntax* ng Java ay katulad ng C at C++, subalit may mas kaunting mga pasilidad sa mababang antas kaysa sa alinman sa mga ito. Ang Java runtime ay nagbibigay ng mga dinamiko na kakayahan (tulad ng repleksyon at *runtime code modification* o pagbabago ng kodigo sa pagtakbo nito) na karaniwang hindi makikita sa tradisyonal na pinagsama-samang mga wika.

Nakamit ng Java ang katanyagan sa ilang sandali pagkatapos ng paglabas nito, at naging isang sikat na wikang pamprograma o *programming language* mula noon. Ang Java ang pangatlo sa pinakasikat na wikang pamprograma magmula noong 2022 ayon sa GitHub. Bagama't malawak pa rin ang pagiging sikat, nagkaroon ng unti-unting pagbaba sa paggamit ng Java nitong mga nakaraang taon kasama ang iba pang mga wika na gumagamit ng JVM na nagiging popular.

Ang Java ay dinisenyo ni James Gosling sa Sun Microsystems. Nilabas ito noong Mayo 1995 bilang isang pangunahing bahagi ng plataporma ng Java ng Sun. Ang orihinal at reperensyang pagpapatupad ng Java compiler, virtual machine, at *class library* ay inilabas ng Sun sa ilalim ng mga lisensyang pagmamay-ari. Noong Mayo 2007, bilang pagsunod sa mga pagtutukoy ng Proseso ng Komunidad ng Java, muling binigyan ng lisensya ng Sun ang karamihan sa mga teknolohiyang Java nito sa ilalim ng lisensyang GPL-2.0 lamang. Ang Oracle, na bumili ng Sun noong 2010, ay nag-aalok ng sarili nitong HotSpot Java Virtual Machine. Gayunpaman, ang opisyal na reperensyang pagpapatupad ay ang OpenJDK JVM, na isang sopwer na bukas na nilalaman na ginagamit ng karamihan sa mga *developer* o tagagawa at ang *default* o pangunahin na JVM para sa halos lahat ng mga distribusyon ng Linux.

## Kasaysayan 
thumb| Si Duke, ang maskot ng Java
thumb| Si James Gosling, ang lumikha ng Java, noong 2008
Pinasimulan nina James Gosling, Mike Sheridan, at Patrick Naughton ang proyekto sa wikang pamprograma na Java noong Hunyo 1991.  Orihinal na idinisenyo ang Java para sa telebisyong interaktibo, subalit ito ay masyadong masulong para sa industriya ng telebisyong dihital na kaybol noong panahong iyon. Ang wikang pamprograma ay unang tinawag na *Oak* pagkatapos ng isang punong robles na nakatayo sa labas ng opisina ni Gosling. Nang maglaon, ang proyekto ay tinawag na *Green* at sa wakas ay pinalitan ng pangalan na *Java*, mula sa kapeng Java, isang uri ng kape mula sa Indonesya. Dinisenyo ni Gosling ang Java gamit ang isang istilong C / C++ na *syntax* na pamilyar sa mga tagapagprograma ng sistema at aplikasyon.

Inilabas ng Sun Microsystems ang unang pampublikong pagpapatupad bilang Java 1.0 noong 1996. Nangako ito ng tampok na *magsulat ng isang beses, at tumakbo kahit saan* (*write once, run anywhere* o WORA), na nagbibigay ng walang bayad na *run-time* sa mga sikat na plataporma. Medyo ligtas at nagtatampok ng pagsasaayos ng seguridad, pinapayagan nito ang mga paghihigpit sa *network*- at *file*-*access*. Hindi nagtagal, isinama ng mga pangunahing web browser ang kakayahang magpatakbo ng mga Java applet sa loob ng mga pahinang web, at mabilis na naging popular ang Java. Ang Java 1.0 compiler ay muling isinulat sa Java ni Arthur van Hoff upang mahigpit na sumunod sa Java 1.0 na espesipikasyon ng wika. Sa pagdating ng Java 2 (inilabas sa simula bilang J2SE 1.2 noong Disyembre 19981999), ang mga bagong bersyon ay nagkaroon ng maraming konpigurasyon na binuo para sa iba't ibang uri ng mga plataporma. Kasama sa J2EE ang mga teknolohiya at API para sa mga aplikasyong pang-negosyo na karaniwang tumatakbo sa mga *environment* ng server, habang ang J2ME ay nagtatampok ng mga API na napabuti para sa mga aplikasyong *mobile*. Ang *desktop* na bersyon ay pinalitan ng pangalan na J2SE. Noong 2006, para sa mga layunin ng pamimili, pinalitan ng Sun ang mga bagong bersyon ng J2 bilang *Java EE*, *Java ME*, at *Java SE*, ayon sa pagkakabanggit.

Noong 1997, nilapitan ng Sun Microsystems ang organisasyong pampamantayan na ISO/IEC JTC 1 at kalaunan ang Ecma International para gawing pormal ang Java, subalit hindi nagtagal ay umatras ito sa proseso. Ang Java ay nananatiling *de facto* na pamantayan, na kinokontrol sa pamamagitan ng *Java Community Process* o Proseso ng Komunidad ng Java. Sa isang pagkakataon, ginawa ng Sun ang karamihan sa mga pagpapatupad nito sa Java na magagamit nang walang bayad, sa kabila ng kanilang status ng pagmamay-ari ng *software*. Nakabuo ang Sun ng kita mula sa Java sa pamamagitan ng pagbebenta ng mga lisensya para sa mga espesyal na produkto gaya ng Java Enterprise System.

Noong Nobyembre 13, 2006, inilabas ng Sun ang karamihan sa Java virtual machine (JVM) nito bilang *free and open-source software* (FOSS, malaya at bukas na kodigong sopwer), sa ilalim ng mga tuntunin ng lisensyang GPL-2.0 lamang. Noong Mayo 8, 2007, natapos ng Sun ang proseso, na ginagawang makukuha ang lahat ng pangunahing *code* o kodigo ng JVM nito sa ilalim ng mga tuntunin ng malayang software / distribusyong bukas na kodigo, bukod sa maliit na bahagi ng *code* kung saan hindi hawak ng Sun ang karapatang-ari.

Ang bise-presidente ng Sun na si Rich Green ay nagsabi na ang perpektong tungkulin ni Sun patungkol sa Java ay bilang isang *ebanghelista*. Kasunod ng pagkuha ng Oracle Corporation ng Sun Microsystems noong 2009–10, inilarawan ng Oracle ang sarili nito bilang tagapangasiwa ng teknolohiya ng Java na may walang humpay na pangako sa pagpapaunlad ng komunidad ng pakikilahok at pagiging transparente.

### Mga prinsipyo 
Mayroong limang pangunahing layunin sa paglikha ng wikang Java: 

# Dapat itong simple, *object-oriented* (nakatuon sa mga bagay), at pamilyar.
# Dapat itong maging matatag at ligtas.
# Dapat itong nyutral sa arkitektura at may portabilidad.
# Dapat itong isagawa nang may mataas na pagganap.
# Dapat itong *interpreted*, *threaded*, at *dynamic*.

## Mga pananda 
## Mga sanggunian 
Kategorya:Wikang pangkompyuter