REALbasic

**REALbasic** on ohjelmointikieli, jonka erityispiirteinä on oliomenetelmien tuen lisäksi se, että sillä voi luoda samasta lähdekoodista eri alustoilla ilman tulkkausta ajettavia konekielisiä binääritiedostoja ja web-sovelluksia. REALbasic -kehitys on nopeaa mistä syystä sitä on laajasti käytetty prototyyppikehityksessä ja myös oppilaitoksissa Javan sijaan. Sillä on maailmanlaajuisesti noin 130&nbsp;000 käyttäjää 130 maassa.

REALbasicin kehitysympäristöä kutsutaan nykyään nimellä *REAL Studio*.

## Historia

Australialainen Andrew Barry julkaisi CrossBasic -nimisen ohjelmistokehitysympäristön 90-luvun puolivälissä. Tuote sai nimensä siitä, että sillä saattoi kääntää samasta lähdekoodista sekä ajokelpoisen PowerPC -sovelluksen että Java -sovelman samalla kertaa. CrossBasicin syntaksi perustui Basiciin mutta jo tuolloin suuntaus oli Visual Basicia vahvemmin oliomenetelmissä.

Vuonna 1997 amerikkalaisen Geoff Pearlmanin FYI Software osti tuoteoikeudet ja samalla yhtiö muutti nimensä muotoon REAL Software, Inc. Hieman myöhemmin yhtiö osti vielä RapidQ -kehitysympäristön oikeudet ja sen kehittäjä William Yu siirtyi samalla REAL Softwaren palvelukseen.

## Kielen ominaisuudet

REALbasic on vahvasti tyypitetty kieli. Se on oliokieli, joka tukee periytymistä (Inheritance), laajennettuja aliluokkia (Extends), luokkarajapintoja (Class Interfaces) sekä itsehavainnoinnin (Introspection). REALbasic soveltuu myös tapahtumaohjautuvien järjestelmien kehittämiseen.. 

REALbasicin syntaksi vastaa BASIC-ohjelmointikieliä suurelta osin: Rivinumeroita ei tarvitse käyttää, funktioiden määrittelyyn käytetään as-rakenteita, komentorakenteet päätetään aaltosulkeiden sijaan erillisellä käskyllä. Visual Basicin lisäksi se on nykyisin yksi harvoista paljon käytetyistä ja myös yksi harvoista olioita tukevista BASIC:n jälkeläisistä.

REALbasic sisältää plugin -rajapinnan jonka kautta toiminnallisuutta voidaan laajentaa C-kielisten pluginien kautta. Ohjelmoija voi myös itse koodin kautta kutsua dynaamisesti ulkoisten kirjastojen funktioita.

Vuoden 2010 lopussa REAL Studio -kehitysympäristöön lisättiin tuki selainkäyttöisten sovellusten luomiseksi. Yhtiö kutsuu näitä sovelluksia Web 3.0 -sovelluksiksi.

## Kehitysympäristö

REAL Studio IDE on suunniteltu ketterään kehitystyöhön (RAD). Ketteriä menetelmiä tukee kääntäjä, joka toimii vaiheittain siten, että jo käännettyä osaa ei käännetä uudelleen tehtäessä välikäännöstä. Kehitysympäristö sisältää myös etäkäännöstyökalun, jonka avulla esimerkiksi Linux -työasemassa ajetusta IDEstä voi kutsua Windows -työaseman ajamaan debug -versiota. 

Lähdekoodi tallennetaan tekstimuotoisena jokainen luokka erillisenä tiedostona jolloin se soveltuu hyvin versionhallintajärjestelmien kanssa käytettäväksi. 

Kehitysympäristö mahdollistaa ikkunoiden nopean luomisen sekä kontrollien vedä ja pudota -tyyppisen sijoittelun ikkunaan. Kontrollit ovat kunkin käyttöjärjestelmän APIn tarjoamia natiiveja kontrolleja. C-rajapinnan kautta kehitysympäristöön voidaan lisätä käyttäjän itsensä luomia tai luokkakirjastoina hankittuja kontrolleja. Valmiita luokkakirjastoja on myös saatavana: esimerkiksi MonkeyBread Softwaren MBS -luokkakirjasto sisältää kaikkiaan 29.000 uutta funktiota. REAL Studio sisältää SQLite -tietokantatuen ja pluginin avulla luotu sovellus voi kytkeytyä mm. Oracle, MySQL, PostgreSQL -kantoihin sekä ODBC-rajapinnan kautta myös muihin tietokantoihin.

Kehitysympäristö mahdollistaa ikkunallisten sovellusten lisäksi ikkunattomien, konsolityyppisten ja daemon -prosesseina ajettavien sovellusten tekemisen.

Versiossa 2009R4 kehitysympäristöön on lisätty visuaalinen työkalu raporttien luomiseksi tietokannoista ja muista tietolähteistä.

Uusimmissa versioissaan REALbasic on vahvistanut tukeaan Linux -kehittäjille. Se on virallisesti Red Hatin ja Novellin sertifioima ja Linux -kehittäjille tuote on myös hinnoiteltu kilpailukykyisesti: Personal Edition on maksuton Linux -ympäristöön asennettuna (muuten lisenssihinta on 75€).

## REALbasic vs. Visual Basic

Microsoft ilmoitti Visual Basic 6.0 tuen päättyvän 8. huhtikuuta 2008. Ilmoituksen myötä kehittäjät joilla vielä oli VB6 -sovelluksia mutta jotka eivät halunneet sitoa sovellustaan .NET Framework -arkkitehtuuriin alkoivat etsiä vaihtoehtoja, ja myös REAL Software käytti tilaisuutta hyväkseen. REALbasic mahdollistaa Visual Basic -lähdekoodin porttaamisen varsin vähällä vaivalla ja näin tuotteiden elinkaarta voidaan jatkaa, vaikka VB6-kehitysympäristön tuki onkin päättynyt. Samalla kehittäjille avautuu mahdollisuus tarjota sama sovellus myös Linux- ja Mac-käyttäjille.

## Käyttö opetuksessa

Vuonna 2004 noin 20 % REALbasic -lisensseistä oli käytössä oppilaitoksissa. REALbasic soveltuu opetuskäyttöön hyvin koska IDE on helppokäyttöinen jolloin opetusaikaa ei tarvitse käyttää työkalujen opetteluun. Koska REALbasic on oliosuuntautunut se soveltuu hyvin käytettäväksi perusopetuksessa Javan asemasta tai rinnalla.

Puolan opetusministeriö on hiljattain sopinut lisensoinnista, jossa 60.000 puolalaista lukio- ja korkeakouluopiskelijaa suorittaa ohjelmointiin liittyvän perusopetuksen REALbasicilla. Puolan kouluissa käytetään laajasti Applen Mac -koneita jolloin cross-platform -kehitysympäristö mahdollistaa saman opetussuunnitelman käyttämisen niin PC- kuin Mac -luokissakin. REAL Software puolestaan on tukenut opetusta julkaisemalla oman REALbasic Curriculum -opetusmateriaalikokoelmansa.

## Esimerkki

### Hello World

Seuraavassa koko lähdekoodi REALbasic -sovelluksesta joka kirjoittaa konsoliin tekstin 'Hello World':


```basic
Class App

Inherits ServiceApplication

App.Run

Function Run(args() as String) as Integer

Print "Hello World"

While true

app.DoEvents

Wend

Quit(0)
```


Olio siis perii pääluokan ServiceApplication ominaisuudet. Tällöin App -olio saa tapahtumaviestin 'Run' joka ajetaan olion syntyessä. Run -tapahtumassa tulostetaan konsoliin teksti 'Hello World' jonka jälkeen sovellus jää ajamaan sille annettuja tehtäviä (DoEvents) kunnes se suljetaan.

## Katso myös
* Gambas - Avoimenkoodin kilpailija Visual Basicille ja REALBasicille

## Lähteet

## Aiheesta muualla

*REALbasic Curriculum
*Object-oriented programming with REALbasic