Johdatus Java-kieleen

Johdanto

Internetin ja erityisesti World Wide Webin nopea kehitys on tuonut mukanaan valtavan määrän uusia käsitteiä ja asioita. Yksi näistä on Sun Microsystemsin paljon huomiota saanut Java-kieli. Tässä dokumentissa on tarkoituksena tutustuttaa lukija Javaan : mikä se on, miten se syntyi, mitä sillä voi tehdä ja mitä sen käyttöön tarvitaan.

Java - mikä se on?

Java on yksinkertainen, oliopohjainen, arkkitehtuurista riippumaton, tehokas, verkko käyttöön soveltuva, tulkattava ohjelmointikieli. [1]

Javan yksinkertaisuudella tarkoitetaan sitä, että kieli on helppo oppia ja sillä on helppo tehdä ohjelmia. Syntaksiltaan Java muistuttaa C++-kieltä, joten C/C++ ohjelmoijat ovat Javan kanssa kuin kotonaan. Javasta on kuitenkin pyritty poistamaan C++:n huonoina tai vaikeina pidettyjä piirteitä.[2] Esim. muistin hallintaa on helpotettu C++:sta lisäämällä Javaan roskienkeruu, jolloin muistin vapauttaminen siirtyy ohjelmoijan harteilta järjestelmälle. Mahdollisuus osoittaa suoraan muistiin C- kielestä tutilla osoittimilla on poistettu, jolloin ohjelmista tulee turvallisempia ja toimintavarmempia - ei enää Segmentation Fault virheilmoituksia ja koneen kaatumisia. Javan yksinkertaisuudella on pyritty myös siihen, että Java ohjelmien koko säilyisi pienenä. Näin mahdollistetaan Java-ohjelmien käyttö myös pienissä sulautetuissa järjestelmissä ja internetissä hitaiden yhteyksien takana.

Javan olio-ominaisuudet ovat oleellisesti samat kuin C++:lla. Java ei siis ole "puhdas" oliokieli SmallTalkin tapaan vaan kuten C++:ssa perustietotyyppejä ei ole määritelty olioina. Java on kuitenkin C++:aa puhtaampi siinä mielessä, että Javassa kaikki funktiot ja muuttujat kuuluvat jollekin oliolle.

Java on arkkitehtuurista riippumaton ja helposti siirrettävä ohjelmointikieli.[1] Tämä tarkoittaa sitä, että sama Java-ohjelma voidaan periaatteessa ajaa suoraan missä tahansa Javaa tukevassa ympäristössä - kuten Sun sanoo iskulauseessaan : Write Once - Run Anywhere. Tämä on mahdollista, koska Java on tulkattava kieli. Java- kääntäjä ei tuota suoraan tiettyyn laitteistoon sopivaa konekieltä vaan ns. Java tavukoodia, jota tulkataan ajon aikana ajoympäristöön sopiviksi käskyiksi. Tavallaan Java-ohjelma siis pyörii virtuaalisessa ohjelmallisesti toteutetussa prosessorissa todellisen tietokoneen sisällä.

Täydellinen laitteistoriippumattomuus tuntuu kuitenkin uutisryhmien perusteella olevan saavuttamaton unelma. Perus Java pyörii kyllä jouhevasti jokaisella alustalla, mutta niin pyörii toisaalta myös ANSI C. Ongelmia aiheuttavat I/O-funktiot ja Javan käyttöliittymäkirjasto AWT, jotka on toteutettu eri laitteistoissa hieman eri tavoin. [5]

Java on tehokas ja verkkokäyttöön sopiva juuri yksinkertaisuutensa ja tulkattavuutensa ansiosta. Tulkattavuus luonnollisesti vähentää suoritusnopeutta, mutta verrattuna Basiciin tai johonkin muuhun tulkattavaan kieleen, Javan tavukoodin tulkkaaminen huomattavasti nopeampaa. Lisäksi yhä useammat nykyiset JavaVM eli edellä mainitun virtuaalisen prosessorin toteutukset kääntävät tavukoodia lennossa konekieleksi, jolloin suoritus nopeus paranee huomattavasti. Tehokkaaksi Javan tekee myös säikeiden tukeminen, joilla ohjelma voidaan jakaa yhtäaikaisesti suorituksessa oleviin osiin. Näin voidaan aikaavievät operaatiot jättää pyörimään taustalle ja tehdä samalla jotakin muuta. Verkkokäyttöön soveltuvaksi Javan tekee ohjelmien pieni koko ja etenkin Javan turvallisuus. JavaVM:n sisällä pyörivät ohjelmat ovat tavallaan omalla hiekkalaatikollaan, jolta ei ole pääsyä koneen muihin osiin. Verkkokäyttöä helpottaa myös Javan verkkokirjastot, joilla useiden TCP/IP protokollien (esim. HTTP) käyttö helpottuu huomattavasti.[1]

Javan lyhyt historia [3]

Javan historia alkaa vuodesta 1990, jolloin Sun Microsystems heräsi huomaamaan, että sen asema oli heikentynyt huomattavasti kilpaileviin yrityksiin nähden. Tilannetta parantamaan perustettiin 1991 uusi huippuohjelmoijista koostuva osasto, joka alkoi kehittää uusia järjestelmiä kulutuselektroniikkaan. Eri laitteet halutiin saada ymmärtämään toisiaan ja laitteiden käyttöliittymiä haluttiin parantaa ja yhdenmukaistaa. Aluksi laitteissa tarvittavat ohjelmistot oli tarkoitus toteuttaa tuttuun tapaan C++:lla, mutta pian kävi ilmi, että ohjelmista tulisi liian raskaita ja niiden siirrettävyys ei olisi riittävän hyvä tarpeisiin nähden. Ratkaisuna näihin ongelmiin päätettiin kehittää uusi ohjelmointikieli, jolle annettiin nimeksi Oak. Uusi kieli perustui C++:aan, mutta se oli laadittu silmälläpitäen keveyttä ja siirrettävyyttä eri laiteympäristöjen välillä. Projekti menestyi aluksi, mutta kohtasi vastaiskuja yhteistyössä kulutuselektroniikkayritysten kanssa ja oli vähällä päätyä roskakoriin.

Uusi suunta Oakin kehitykselle avautui 1993 www:n synnyn myötä. Www havaittiin oivaksi kehityskohteeksi Oakille, koska paine interaktiivisuuden lisäämiselle webissä oli suuri. Oakia kehitettiin siten, että se mahdollisti pienten ohjelmasten, applettien, siirron www-palvelimelta selaimelle, joka sitten ajaa tätä applettia. 1995 Oakin nimi vaihdettiin trendikkäämmäksi - Java oli syntynyt. Sopimus Netscapen kanssa takasi Javalle räjähdysmäisen leviämisen ja standardiaseman suoritettavan koodin levittämiselle webissä. Nykyisin Javaa tukevat selaimista Netscape Navigator, Microsoftin Internet Explorer ja JavaSoftin HotJava, joten www:n käyttäjistä suurin osa voi käyttää Java-appletteja selaimissaan.

Mitä Javalla voi tehdä

Usein Javaa pidetään vain www-sivujen elävöittäjänä, pienien animaatioiden ja ääniefektien muodossa. Kuten ensimmäisessä kappaleessa kävi ilmi, Java on kuitenkin täydellinen ohjelmointikieli, jolla voi applettien lisäksi tehdä myös laajoja sovelluksia kuten tekstinkäsittely- ja taulukkolaskentaohjelmia. Uudet NC:t eli network computerit, joilla ei ole omaa massamuistia ja jotka näin joutuvat hakemaan kaikki ohjelmansa ja tiedostonsa palvelinkoneilta, ovat hyvä esimerkki laajojen Java- sovellusten potentiaalisista käyttäjistä. Jo nyt on olemassa Javalla tehty toimisto- ohjelmisto, johon kuuluvat normaalit toimistosovellukset.[4]

Toinen Java-ohjelmien käyttökohde on sama kuin Oakilla aikoinaan, eli sulautetut järjestelmät. Mikä olisikaan hienompaa, kuin kysyä koulun X-päätteiltä Netscapella omalta jääkaapiltaan, josko maksalaatikko on jo mennyt vanhaksi.

Nykyisin Javaa kuitenkin käytetään pääasiassa vielä applettien muodossa, joilla niilläkin voi toki tehdä mielekkäämpiäkin asioita, kuin vieriviä ja pyöriviä tekstianimaatioita kotisivun piristykseksi. Jos jokin yritys haluaa julkaista sellaista sähköisessä muodossa olevaa informaatiota webissä, joka ei ole normaalilla selaimella luettavissa (esim. Jokin vähemmän käytössä oleva kuvatiedostoformaatti), voidaan kirjoittaa sopiva appletti, joka lukee yrityksen web-palvelimelta dataa ja tulkitsee sitä sopivalla tavalla käyttäjän selaimessa.

Mitä Javan käyttöön tarvitaan?

Jotta Java-ohjelmia pystyy ajamaan, tarvitaan Javan tavukoodia tulkitseva ohjelma eli JavaVM. VM tulee sanoista Virtual Machine ja viittaa siis virtuaaliseen prosessoriin, jossa Java-koodia suoritetaan. JavaVM tulee mukana kaikissa Javaa tukevissa www- selaimissa, joita olivat siis Netscape Navigator, MS Internet Explorer ja HotJava selain. Netscape on saatavilla useimmille laiteympäristöille, joten sen avulla pystyy toteuttamaan iskulausetta anyywhere. Poikkeus tähän sääntöön on Windows 3.1, jonka Netscape versio ei tue Javaa. Microsoftin IE 3.02 Windows 3.1:lle kuitenkin ainakin oman ilmoituksensa mukaan tukee Javaa. Omat kokeilut tästä ympäristöstä eivät kuitenkaan ole olleet kovin rohkaisevia.

WWW-selaimet pystyvät vain Java-applettien ajamiseen - Java-sovelluksia varten tarvitaan erillinen JavaVM, joka tulee ainakin Java-ohjelmien kehitysympäristöjen mukana. Ilmaisia kehitysympäristöjä ovat mm. Sunin Java SDK ja IBM:n ja OSF:n JDK. Myös Microsoftin J++:sta on saatavilla ilmainen trial versio. Java SDK on saatavilla Sparcille ja X86 Solarikselle, Windows NT:lle (Intel), Windows 95:lle, MacOS 7.5 käyttäville PowerMaceille ja 68030 (25 MHz ja nopeammat) ja 68040 Maceille. Java SDK on käännetty myös IRIXille, SGI:lle ja Linuxille. IBM:n Java Develpers Kit on saatavilla Windows 3.1:lle, OS/2:lle, and AIXille. OFS on kääntänyt Sunilta lähtöisin olevan JDK:n Unixwarelle, AIX 4.1:stä käyttäville PowerPC:ille, DASCOM OSF/1:stä käyttäville X86:ille, Digital UNIX 3.2:sta käyttäville Alphoille, HPUX 10.x:ää käyttäville HP700 sarjalaisille, UNIX SysV:ta käyttäville NCR Globalysteille (Pentium) ja Sony NEWS 6.11 käyttäville Sony NEWSeille (MIPS). [5]

Sun Microsystems on myös kehitellyt suoraan Javan tavukoodia suorittavaa prosessoria ja siihen Java-pohjaista käyttöjärjestelmää JavaOS:aa, jolla sovellusten ajaminen käy huomattavasti nopeammin. Tätä prosessoria kaavaillaan käytettäväksi NC:ssä ja sulautetuissa järjestelmissä. [6]

Lähteet

[1] Sun Microsystems, Java Overview
<URL:http://www.javasoft.com:80/docs/Overviews/java/java-overview-1.html>

[2] James Gosling, Henry Mc Gilton : Java Language Environment
<URL:http://www.javasoft.com:80/docs/language_environment/Simple.doc2.html>

[3] Wired 3.12: David Banks - The Java Saga
<URL:http://wwww.wired.com/wired/3.12/features/java.saga.html>

[4] Sun Microsystems : Corel and Java, Corel Office for Java
<URL:http://java.sun.com/nav/used/corel.html>

[5] Uutisryhmät comp.lang.java.programmer ja comp.lang.java.tech

[6] Sun Microsystems : Java Chip ja JavaOS
<URL:http://www.javasoft.com:80/docs/whitePaper.Platform/JavaPlatform.doc1.html#8594>

Lisätietoja

Java Documentation Index
Paras tietolähde Javan maailmaan. Sisältää lukuisia linkkejä Javan eri alueita käsitteleviin dokumentteihin.
*****

Gamelan
Tietoa, esimerkkejä, työkaluja, luokkakirjastoja, jne. Javaan ja muihin samankaltaisiin asioihin (ActiveX, JavaScript,..) liittyvää materiaalia.
*****

JavaWorld
Javaa käsittelevä online lehti.
***

Java Tutorial
Ensimmäinen dokumentti, joka kannattaa lukea, jos haluaa opetella Javan.
*****

Getting started with Java
Ohjeita aloittelijalle.

Java Platform
Perusteellinen selvitys Javan teknisestä toteutuksesta.
***

Java Virtual Machine Specification.
**

ACME
Ilmainen luokkakirjasto. Sisältää luokkia lukuisiin eri käyttötarkoituksiin.
***

Java Woman
Gamelanin tapainen hierarkisiin luokkiin järjestetty linkkikokoelma Java-lähteisiin.
**

IBM
IBM:n Java-kotisivu.
**

Microsoft
Microsoftin Java-kotisivu.
**

Yahoo - Java
Yahoo-hakupalvelun Java-linkit.
****

Javology
Viikoittain ilmestyvä Java-lehti. Uusimmat uutiset Java-maailmasta.
**

Java Developers Journal
Java-lehti, joka nimensä mukaisesti käsittelee java ohjelmointia.
***

Hot Java
Sunin Javalla tehty Hot Java www-selain.
*

Java Developer
Java Developer sisältää paljon tietoa Javasta FAQ:n muodossa. Lisäksi se tarjoaa kohtalaisen linkkikokoelman.
**


Päiväys : 27.4.1997
Tekijä : Juha Lindström
E-mail : jlindstr@cc.hut.fi
WWW : http://www.hut.fi/~jlindstr