Java (forritunarmál)

Úr Wikipediu, frjálsa alfræðiritinu
(Tilvísað frá Forritunarmálið Java)
Stökkva á: flakk, leita

Java er hlutbundið forritunarmál, þróað í upphafi 10. áratugs 20. aldar af James Gosling hjá Sun Microsystems. Java var kynnt almenningi árið 1995, og síðan þá hefur það náð töluverðum vinsældum. Málið færði margar gamlar hugmyndir í almenna notkun, svosem hreina hlutbundna forritun, ruslasöfnun og að fylgst er með að ekki sé skrifað út fyrir mörk vigurs, ásamt ýmsum öðrum öryggisráðstöfunum.

Rithátturinn (e. syntax) í Java er að miklu leyti fenginn úr C++, en er einfaldari. Ólíkt C++, sem var klúðurslegt á mörgum sviðum varðandi hlutbundna forritun, vegna þess að það var byggt á C,

Klasasafnið sem fylgir Java þykir vera yfirgripsmikið og fullkomið.

Java er hannað til að vera óháð vélbúnaði og stýrikerfi. Þegar Java forrit er þýtt, verður til millibils kóði (bitakóði) sem er túlkaður af Java vél þegar hann er keyrður. Öll stýrikerfi sem styðja Java, það er að segja hafa Java-vél, geta keyrt þessi forrit. Java-vélin sér um að breyta bitakóðanum í skipanir sem stýrikerfið og vélbúnaðurinn skilur. Þetta mikilvæga atriði gerir Java mögulegt að keyra á mörgum stýrikerfum og er ein ástæðan fyrir vinsældum Java á Internetinu. Í dag eru m.a. til Java vélar fyrir Microsoft Windows, Linux, Mac OS og Solaris stýrikerfi auk þess sem margir nýir farsímar hafa innbyggða Java vél.

Java er ekki skylt forritunarmálinu JavaScript, nema að hafa svipað nafn og rithátt.

Java er vinsælt til að skrifa hugbúnað sem keyrir á vefþjóni, þá oft með tækni sem nefnist Java Servlets og Java Server Pages.

Hlutbundin forritun[breyta]

Fyrsta hönnunarforsenda Java er hlutbundin forritun. Í henni er gegnumgangandi hugmynd að hanna hugbúnað á þann veg að tengja vel saman fyrir hverja tegund gagna, hvaða aðgerðir er hægt að framkvæma á þesskonar gögn. Slík eining er kölluð hlutur. Klasi er skilgreining á gagnategund, ásamt aðgerðum sem hægt er að beita á þesskonar gögn. Klasi er skilgreining, og síðan getur forrit búið til marga hluti af því tagi sem klasinn skilgreinir. Hægt er að hugsa um hlut sem afmarkaða einingu sem hefur hegðun (aðferðir) og ástand (gögn). Meginreglan er að skipta forritinu niður í einingar sem eru hannaðar á þann veg að breyting í einum klasa hafi sem minnst áhrif á aðra hluta forritsins. Þannig er auðveldara að smíða stór kerfi.

Annað markmið hlutbundinnar forritunar er að þróa almenna klasa sem er hægt að endurnýta í mörgum hugbúnaðarverkefnum. Þannig er hægt að byggja kerfi fljótar án þess að þurfa að skrifa allt frá grunni. Það telst mikill kostur að klasi sem hefur verið notaður í mörgum verkefnum er búinn að ganga í gegnum miklar prófanir og lagfæringar. Þó hefur endurnýting klasa ekki náð þeim árangri sem ætlast var til í upphafi. Vandamálið er að erfiðara er að smíða almennan klasa heldur en sérhæfðan, og oft veit forritarinn ekki af þeim klösum sem eru til, þannig að hann getur ekki endurnýtt þá.

Ásamt klösum leyfir Java manni að skilgreina skil (e. interface) sem virkar eins og samkomulag milli forritarans sem skrifar klasa og forritarans sem notar klasann, þó að þeir séu stundum einn og sami forritarinn. Einn kosturinn við þetta er að margir klasar geta uppfyllt sömu skil, og þá getur forritari skipt á milli þeirra og notað þá sitt á hvað, án þess að þurfa að gera miklar breytingar á kóðanum sem notar klasann.

Sjálfvirk ruslasöfnun[breyta]

Einn af göllunum við forritunarmál á borð við C++ er fyrirhöfnin sem fylgir því að forritarinn þarf sjálfur að sjá um minnismeðhöndlun. Hann þarf að taka frá minni til að búa til nýja hluti og skila minninu þegar ekki er þörf á hlutnum lengur. Ef forritarinn gleymir að skila minninu, þá getur það leitt til minnisleka, þ.e.a.s forritið þarf alltaf að taka frá meira og meira minni, og hrynur hugsanlega að lokum. Forritið hrynur einnig ef forritarinn reynir að skila minni sem hann er þegar búinn að skila.

Þessi vandamál eru ekki fyrir hendi í Java, vegna þess að Java notar sjálfvirka ruslasöfnun. Minni í hrúgu er tekið frá þegar forritarinn býr til nýja hluti og forritið getur geymt tilvísun sem bendir á nýja hlutinn. Þegar engar tilvísanir eru eftir í hlutinn, þá er ekki lengur hægt að nota hann, og því er óhætt að skila minninu sem hluturinn tekur. Minnislekar geta þó komið upp ef forritið geymir áfram tilvísun á hlut sem ekki er þörf á lengur, en það er mun auðveldara vandamál en vandræðin í C++. Þetta sparar forritaranum mikla vinnu og kemur í veg fyrir margar hugbúnaðarvillur.

Halló heimur í Java[breyta]

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Halló, heimur!");
    }
}

Þetta forrit prentar út eftirfarandi texta þegar það hefur verið þýtt og keyrt:

Halló, heimur!