Tölvumál - 01.07.1996, Side 33
Júlí 1996
Java
Eftir Þorstein Kristinsson
Inngangur
Þegar ný forritunarmál koma
fram á sjónarsviðið er viðbúið að
maður spyrji sjálfan sig hvort það
sé virkilega þörf fyrir enn eitt for-
ritunarmálið. Er ekki til eitthvað
annað forritunarmál sem gerir ná-
kvæmlega það sama? Þetta er það
sem ég spurði sjálfan mig þegar
ég heyrði fyrst minnst á Java. Til
að byrja með var ég mjög vantrú-
aður á þetta nýja, frábæra forrit-
unarmál sem allir kepptust um að
lofa í hástert. Til að byrja með virt-
ist þetta vera einfalt mál sem allir
áttu að geta notað til að hressa upp
á heimasíðurnar sínar. Þegar ég sá
að forskriftin var ekki ósvipuð
C++ fóru að renna á mig tvær
grímur. Eftir að hafa eytt ári í að
komast inn í C++ var ég varla
farinn að geta gert nokkuð af viti í
því og óaði mig við þeirri vinnu
sem færi í að læra Java ef það væri
eitthvað svipað. Raunin varð önn-
ur. í byrjun þessa árs kom tæki-
færið til að taka áskoruninni. Sem
lokaverkefni í Tölvuháskólanum
ætluðum við félagarnir að skrifa
fullvaxið forrit í Java sem átti að
vera hægt að keyra jafnt í Win-
dows95 sem og Solaris stýrikerf-
um yfir Internetið. Við eyddum
drjúgum tíma í að hanna forritið
og við notuðumst við hlutbundnar
aðferðir. Raunar er Java mjög hlut-
bundið forritunarmál enda rák-
umst við á það að ýmsar óhlut-
bundnar venjur er einfaldlega ekki
hægt að útfæra í Java. Færslur, eða
„struct“, í C++ eru ekki til, það er
aðeins hægt að búa til klasa. Það
kann að hljóma fáránlegt í fyrstu
er í raun gott dæmi um fullkomna
hlutbyndingu. Þegar maður er einu
sinni búinn að læra C++ er mjög
létt að skipta yfir í Java. Raunar
er svo miklu þægilegra að skrifa
forrit í Java að allur tíminn fer í
að forrita en ekki í að berjast við
umhverfið eins og maður lendir
ósjaldan í, t.d. í Visual C++. Það
ber þó að taka fram að þeir sem
eru lítið inn í C++ og hlutbundnum
hugsunarhætti munu mjög líklega
lenda í vandræðum með Java.
Engir bendar?
Þegar Java kom fram á sjónar-
sviðið var öllum gert ljóst að það
yrðu engir bendar notaðir. Þetta
gripu allir alvöru C++ forritarar á
lofti og töldu þar með að Java væri
handónýtt. En þeir höfðu rangt
fyrir sér. Þó svo að tagið bendir sé
hvergi sjáanlegt þá er hugmynda-
fræðin öll til staðar. Það er ekki
hægt að búa til tilvik af klasa nema
að hafa fyrst búið til handfang á
klasann. Handfangið má benda á
klasann sjálfan eða einhvern þann
klasa sem hann erfir frá. Hand-
föngin eru mjög meðfærileg, það
er hægt að senda þau sem færi-
breytur, það er hægt að láta þau
benda á nýja hluti, tvö handföng
geta bent á sama hlutinn o.s.frv.
En hvað með fylki? Er ekki nauð-
synlegt að nota benda á þau? Nei,
ekkert frekar. Fylkjaaðgerðir eru
mjög handhægar og öll meðhöndl-
un á fylkjum fylgja sömu reglum
og meðhöndlun á hlutum. Fyrst er
búið til handfang á fylkið og svo
er búið til tilvik af því. Ef það
hljómar fráhrindandandi þá er það
mun einfaldara en það hljómar. Þar
fyrir utan er einn mjög stór kostur
við meðhöndlun á hlutum og
fylkjum í Java en það er innbyggð
ruslatæming. Allir hlutir og öll
fylki sem enginn bendir er á, er eytt
sjálfvirkt.
Stýrikerfisóháð
Java er stýrikerfisóháð. Það
táknar að allir geta keyrt Java for-
rit sama hvaða stýrikerfi er notað.
Eins og er eru öll Java forrit túlkuð
og dregur það nokkuð úr vinnslu-
hraða þeirra. Það kemur þó ekki
mikið að sök þar sem meginuppi-
staða flestra Java forrita er ýmist
samskipti við notendur í gegnum
grafísk notendaskil eða netsam-
skipti. Skipta má Java forritum í
tvo flokka. Annars vegar venjuleg
forrit sem geta gert allt það sem
venjuleg forrit geta og hins vegar
svokölluð Applet sem eru keyrð frá
Html-síðum. Appletin verður að
keyra frá vefrýni eins og t.d. Net-
scape. Appletið keyrir í sýndarvél
og getur ekki á nokkurn hátt haft
bein samskipti við tölvuna sem það
keyrir á. Hver sem er getur sett til-
vísun á Applet á heimasíðuna sína
og ómögulegt að vita fyrirfram
hvað það gerir. Þess vegna hafa
verið settar mjög strangar öryggis-
kröfur fyrir Applet. Þeim er t.d.
bannað að hafa samskipti við disk
notandans og einungis er leyfilegt
að hafa samskipti við þann server
Tölvumál - 33