Joustavat sisennykset selkeyttävät koodin lukemista

Ohjelmoijat ovat usein erittäin pikkutarkkoja siitä, miten he kirjoittamansa koodin jäsentelevät: käytetäänkö sisennyksessä tabulaattoria vai välilyöntejä, miten asiat rivitetään, tuleeko sulkeiden jälkeen väli vai ei ja niin edelleen. Teoreettisesti koodi on samaa, jäsenteli sen miten halusi, mutta käytännössä koodin lukeminen on huomattavasti helpompaa, jos se on rakenteeltaan selkeää ja yhdenmukaista.

Koodin jäsentelyyn liittyvien sisennysten toimintaan on Nick Gravgaardin ideoinut niin sanotun joustavan sisennyksen eli ”elastic tabstops” -ominaisuuden, jossa rivit sisentyvät selkeiksi ryhmiksi. Ominaisuudessa tabulaattorin pituus voi vaihdella eri riveillä ja teksti on jaoteltu tavallaan kuin taulukon soluihin ja sarakkeisiin.

Esimerkiksi ryhmän rivit sisennetään automaattisesti samalle tasolle.

Tab Stops

ja rivin muuttuessa ryhmän rivien sisennystä muutetaan automaattisesti uuteen pituuteen.

Tab Stops

Ideasta saa paremman käsityksen, kun vilkaisee enemmän esimerkkejä miten Code Browser -ohjelma asian toteuttaa tai testata ominaisuutta käytännössä. Sisennyksen automaattinen muuttaminen tekstin muuttuessa tuo selkeyttä koodin lukemiseen muun muassa switch-case -rakenteissa, muuttujaryhmissä ja kommenteissa.

Ominaisuus näyttää kätevältä, mutta harmillisesti se ei ole vielä yleistynyt. Toivoa kuitenkin herättää, että ominaisuudesta on tehty kehitysehdoitus Eclipseen ja ominaisuus löytyy kuulemma Swingistä, GTK:sta ja tulevasta Visual Studiosta. Gedit-editoriin tämä mullistava uudistus on saatavissa Nick Gravgaardin tekemän lisäosan avulla.

Java-kehitys ja OS X: JAR-paketin leipominen

JAR-paketin voi luoda Mac OS X:ssä joko perinteisesti tai helposti. Helpolla tavalla edettäessä saadaan määriteltyä muutamia OS X -spesifisiä ominaisuuksia, kun JAR-paketista luodaan niin sanottu app-sovellus. App:n rakentaminen onnistuu Xcode Developer Toolsin mukana tulevalla Jar Bundlerilla (/Developer/Applications/Utilities/), josta vain klikataan sopivat vaihtoehdot.

Sovelluksen otsikon saaminen OS X:n menupalkkiin onnistuu antamalla Properties-välilehdeltä Bundle Nameksi haluttu teksti. Komentoriviltä ajettaessa otsikon asettaminen onnistuu java -Xdock:name="Foo Bar" -jar foobar.jar -komennolla.

Kuvakkeen luominen Applen icns-formaattiin onnistuu Xcoden Icon Composer -työkalulla (/Developer/Applications/Utilities/), joka voidaan sitten liittää Jar Bundlerissa sovelluksen kuvakkeeksi.

Perinteinen JAR-paketointi
Perinteinen Jar-paketointi menee luomalla Manifest.txt, jossa määritellään sovelluksen Main-luokka. Manifestissa pitää olla lisäksi yksi tyhjä rivi tiedoston lopussa.

Main-Class: foo.bar.logic.Lorem

Manifest.txt lisätään JAR-pakettiin komennolla jar cfm foobar.jar Manifest.txt foo/bar/, jolloin Jar luo pakettiin oikeanlaisen Manifest-tiedoston.

Levykuvan kasaaminen
Jos tehdyn App:n lisäksi haluaa jakaa (Mac OS X) käyttäjille muitakin tiedostoja kuten Readme-tiedoston, voi Disk Utilityn avulla kietaista kokonaisuuden levykuvaksi eli Disk Imageksi (.dmg). Kerää haluamasi tiedostot omaan kansioon ja valitse Disk Utilitystä File -> New -> Disk Image From Folder ja valitse kansio, johon sovelluksen tiedostot keräsit. Nyt käyttäjän täytyy ennen sovelluksen käyttämistä avata tehty paketti Finderiin.

Versionhallinnan parhaat käytännöt koodaajalle

Versionhallinnasta ja siihen liittyvistä asioita on kirjoitettu paljon, mutta useissa kirjoituksissa on keskitytty lähinnä teknisiin asioihin ja eri versionhallintajärjestelmien mahdollistamiin asioihin. Harvat kirjoitukset keskittyvät käytännön asioihin ja niin sanottuihin parhaisiin käytäntöihin, joita soveltamalla versionhallinnan käytöstä saa paljon enemmän irti.

Muutamia käteväksi todettuja ja omasta mielestäni ”parhaita käytäntöjä” koodaajan näkökulmasta ovat muun muassa:

  1. Työn kulku
  2. Vie koodi versionhallintaan usein ja aikaisin
  3. Vie yhtenäisiä kokonaisuuksia
  4. Kirjoita järkeviä commit-viestejä
  5. Tee koodaustyylin muutokset erillään oikeista muutoksista
  6. Älä vie tiedostoja, jotka muuttuvat dynaamisesti
  7. Älä vie koodia, joka ei käänny


1. Työn kulku
”Version Control with Subversion” -kirja selvittää normaalin työn kulun, joka on hyvä omaksua versionhallintaa käytettäessä (hieman sovellettuna):

  1. Hae koodista tuorein versio versionhallinnasta
  2. Toteuta koodiin tehtävät muutokset
  3. Hae tuorein versio ennen koodin vientiä versionhallintaan
  4. Aja testit uudestaan ja varmista, että tekemäsi muutokset toimivat
  5. Vie koodi versionhallintaan yhtenä kokonaisuutena
  6. Selvitä konfliktit
  7. Tarkista, että versio kääntyy myös build-palvelimella
  8. Korjaa virheet tai palauta

2. Vie koodi versionhallintaan usein ja aikaisin
On suositeltavaa toteuttaa Check In Early, Check In Often -periaatetta. Tällöin muut näkevät mitä olet tekemässä ja koodi on muidenkin käytössä.

”If the code isn’t checked into source control,
it doesn’t exist.” – Coding Horror

Lisäksi jos piilottelet koodia omalla koneellasi, etkä synkronoi sitä versionhallintaan pitkään aikaan, voi muutosten yhdistämisestä tulla erittäin työlästä. Pieniä kokonaisuuksia on helpompi verrata ja saadaan aikaan vähemmän konflikteja.

Vaikka idean järkevyys ja käytännöllisyys on helppo ymmärtää, on käytännön toteutus usein jotain muuta. Itse olen ainakin huomannut, että omaa koodia tulee helposti pantattua levyn nurkalla, kunnes kyseinen ominaisuus on ”valmis” ja testattu.

”Hiding your code until it’s ”done” may feel safer, but it isn’t. Sharing your ongoing code with your coworkers is scary, much less the world — but it also results in feedback and communication that will improve your code and draw you closer to the project you’re working on.” – Coding Horror

3. Vie yhtenäisiä kokonaisuuksia
On suositeltavaa viedä versionhallintaan loogisesti yhtenäisiä kokonaisuuksia. Tämä tekee versiohistorian seuraamisesta huomattavasti hyödyllisempää, etenkin jos muutokset käsittelevät useita eri tiedostoja.

Eli, jos teet useita yhtäaikaisia muutoksia, jaa ne useampaan loogiseen kokonaisuuteen ja vie ne osissa. Näin yksittäisten muutosten historiaa on helpompi seurata ja nopeuttaa mahdollisten bugien metsästystä myöhemmin. Jos siis teet ominaisuutta A, B ja C sekä korjaat bugeja 1, 2 ja 3, pitäisi niistä muodostua vähintään kuusi committia. Vastaavasti, jos teet suuria muutoksia tai toteutat itsenäisiä muutoksia useisiin loogisiin moduleihin, vie muutokset erikseen, vaikka ne olisivatkin osa isompaa kokonaisuutta.

Käytännössä sitä kuitenkin usein huomaa koodaavansa hieman sieltä sun täältä sitä ja tätä, ja lopulta järkevän yhtenäisen kokonaisuuden vieminen versionhallintaan on käytännössä mahdotonta.

Tietenkin tätä periaatetta on helpompi noudattaa sovelluksen ylläpidossa kuin sovelluksen kehittämisessä, jossa puutteellisia ja koodausta kaipaavia asioita on paljon. Teoriassa järkevä ”commit”-tapa on helppo omaksua, mutta käytännössä yhtenäisen kokonaisuuden siirtäminen versiohallintaan vaatii itsekuria ja koodauksen suunnittelua.

4. Kirjoita järkeviä commit-viestejä
Kirjoita aina jokin kommentti viedessäsi koodia versionhallintaan. Kommentin tulisi olla lyhyt ja ytimekäs, ja kertoa mitä muutettiin ja miksi. Jos teit useita muutoksia, kirjoita ne omille riveilleen.

On myös kätevää lisätä kommentin eteen jokin tunniste kuten Fix tai Add, viitaten minkä tyyppisiä muutoksia teit. Tämä myös helpottaa sisällön filtteröintiä myöhemmin.

Korjatessa jotain tiettyä bugia tai pyydettyä ominaisuutta, on suositeltavaa lisätä bugin tai issuen numero commit-viestiin.

”If the changes you made are not important enough to comment on, they probably are not worth committing either.” – loop label

5. Tee koodaustyylin muutokset erillään oikeista muutoksista
Koodaustyyli voi kokea muutoksia ja kehitysvälineessä voidaan esimerkiksi ottaa käyttöön automaattiset koodimuotoilut. On erittäin suositeltavaa, että koodin muotoiluun vaikuttavat muutokset tehtäisiin erillään oikeista muutoksista.

Jos koodimuotoilut ja muutokset sekoitetaan keskenään, on muutosten jäljittäminen ja kohdistaminen käytännössä mahdotonta.

6. Älä vie tiedostoja, jotka muuttuvat dynaamisesti
Versionhallinnassa olevien tiedostojen olisi hyvä olla sellaisia, joiden sisällöstä valta on käyttäjillä eikä esimerkiksi kehitysympäristöllä. Esimerkiksi ei kannata viedä Eclipsen asetuksia tai projekti-tiedostoa, jotka muuttuvat riippuen kehittäjän haluamista asetuksista. Kyseiset tiedostot eivät varsinaisesti liity projektin koodiin ja aiheuttavat vaan turhaa synkkaamista. Myös projektin binäärit ja Javadocit voidaan mieltää turhiksi versionhallinnan näkökulmasta.

(via Perforce)

7. Älä vie koodia, joka ei käänny
Ei ole suositeltavaa viedä versionhallintaan koodia, joka ei käänny ja hajottaa projektin myös muille kehittäjille. Toisaalta, ideaalissa tilanteessa, ei pitäisi koskaan lähteä toimistolta viemättä koodia versionhallintaan.

Jos teet muutoksia, jotka vaikuttavat muihin, harkitse koodin branchaamista muutoksen toteuttamiseksi ja yhdistä koodi, kun olet valmis. Toisaalta, toimimaton koodi ei ole syy olla viemättä sitä versionhallintaan.

”It’s better to have a broken build in your working repository than a working build on your broken hard drive.” – loop label

Yhteenveto
Versionhallinnan käyttö on omaksuttu osaksi sovelluskehitystä ja toivottavasti edes osa yllä olevista periaatteista on jo useimpien kehittäjien käytössä. Ellei käytössä olevia työvälineitä hyödynnetä kunnolla, jää paljon etuja saavuttamatta. Edes muutaman yllä olevan käytännön omaksuminen kuten ”loogiset kokonaisuudet” ja ”commit-viestit”, helpottaa jo kummasti.

Versionhallinta on käsitteenä laaja ja sen käyttöön liittyy paljon muitakin asioita, joista voidaan määritellä niin sanotut parhaat käytännöt. Tälläisiä ovat muun muassa koodin hallintaan liittyvät asiat, versionhallinnan soveltaminen ja toimintojen laajentaminen, mutta ei niistä sen enempää.

Blueprint CSS -kehys avustaa sivuston taiteilussa

Kaikkea ei aina kannata keksiä uudestaan, eikä se ole aina edes tarpeellista, sillä hyviä ideoita voi kierrättää. Web-sivujen suunnittelussa taustalla olevat rakenteet ja elementit ovat usein eri projekteissa pohjimmiltaan samanlaisia ja mahdollisuuksia uusiokäytölle on useita. Internetistä löytyykin useita kirjastoja ja frameworkkeja JavaScriptille, web-ohjelmointiin ja viime aikoina enenemissä määrin myös CSS:lle. Yksi kohtalaisen kätevä ja selkeä CSS-framework on Blueprint CSS -framework.

Blueprint CSS on norjalaisen opiskelijan, Olav Frihagen Bjørkøy:n luoma CSS-framework, joka käytännössä kokoaa yhteen useita hyväksi havaittuja tekniikoita ja tarjoaa hyvän perustan web-sivun rakentamiselle. Kehyksen kokonaisuus rakentuu ristikkotaiton päälle (Grid Layout) ja tarjoaa järkevät perusarvot typografialle ja eri CSS-elementeille. Vakiona sivuston sisältö on suunniteltu 960px leveäksi eli 1024×768 -resoluutiolle. Blueprint CSS:n tarjoamia ominaisuuksia voi laajentaa muun muassa hienommilla napeilla. Jos Blueprint CSS:n taustat kiinnostavat, kannattaa lukaista Olavin haastattelu.

”Spend your time innovating, not replicating.” – Blueprint CSS

Parhaiten Blueprint CSS:n idea selvenee esimerkeistä:

Blueprint CSS Blueprint CSS Blueprint CSS Blueprint CSS

Blueprint CSS:llä saa aikaan nopeasti sekä näkyvää että siistiä tulosta ja varsinkin hieman vähemmän CSS:n kanssa taistelleille web-koodareille se on hyvä lähtökohta. Vastaavasti hieman kokeneemmille toteuttajille Blueprint CSS:n käyttäminen voi tuntua hieman rajoittavalta ja jäykältä, vaikka monilta osin se tarjoaakin käteviä palikoita nopeaan toteutukseen. Tältäkin osin Blueprint CSS -framework toteuttaa monen muun frameworkin tavoin yhden niiden käytön ongelman: olet ”rajoittunut” valitsemasi kehyksen sisään ja sieltä irtautuminen voi olla työlästä.

Kokeilin Blueprint CSS:n kätevyyttä muutaman web-projektin suunnittelussa ja etenkin sen sopivuutta omiin tarpeisiini, mutta vaikka kehys vaikuttikin näppärältä, ei se oikein taipunut haluamiini raameihin. Pala palalta kaipasin jotain hieman erilaista, jota Blueprint CSS ei tarjonnut, ja lopulta totesin helpommaksi vain poimia käyttöön ne osat, jotka havaitsin käytännölliseksi. Eli käytännössä olen osa osalta rakentamassa omaa CSS-kehystä, joka toki hiemankin enemmän web-sivujen suunnittelua tekeviltä jo jossain muodossa löytyy. Työläin vaihehan vain on kaikkien palikoiden kerääminen yhteen ja sen jalostaminen sopivaksi kokonaisuudeksi.

Vaikka Blueprint CSS ei oikein lämmittänyt, sen kanssa leikkiessä tuli kuitenkin todettua, että ristikkotaitto eli Grid Layout on aika kätevä tapa sijoitella komponentit ruudulle. Kehitysvaiheessa ristikkotaiton ja elementtien sijoittelun apuna on lisäksi kätevä käyttää Grid Layout JS -palikkaa, joka JavaScriptin avulla näyttää ja piilottaa sivutaiton sarakkeet.

Kenties seuraavaksi pitää tutkia, mitä tarjottavaa BlueTripillä on ja mitä kaikkia komponentteja Yahoo User Interface Librarysta löytyy. Open Sourcessa on se mainio ominaisuus, että jos jokin asia ei miellytä, lisäyksen saa kohtalaisen helposti toteutettua ja aina voi tietenkin forkata.

Eclipse: jätä target-hakemistot huomioimatta Monkey-skriptillä

Eclipse on kätevä, joskin välillä ärsyttäväkin sovelluskehitystyökalu, mutta on laajennettavuudessaan erinomainen. Jos jotain ominaisuutta ei löydy paketista valmiina, löytyy se aika varmasti lisäosana tai sen voi itse toteuttaa.

Kaikki Eclipseä käyttäneet varmasti tietävät, että haettaessa jotain esimerkiksi Ctrl+Shift+R (Open Resource), tulee hakutuloksiin myös kohde-hakemiston (Target folder) tiedostot, joista ainakaan itse en ole tähän mennessä ollut kiinnostunut. Tietenkin kyseiset hakemistot voi merkitä manuaalisesti Derived-tilaan, jolloin ne jätetään huomioimatta. Valitettavasti käännettäessä sovellus cleanin kanssa esimerkiksi mavenillä tai antilla, kyseinen tila häviää ja se on asetettava uudelleen. Onneksi tämänkin asian voi automatisoida.

Eclipselle on saatavilla lukuisia eri lisäosia ja ominaisuuksia ja tällä kertaa pelastuksemme on dash-projektin Monkey Script, joka JavaScriptiä käyttäen suorittaa haluamiamme tehtäviä. Lisäksi tarvitsemme sopivan skriptin, joka toteuttaa target-hakemistojen merkitsemisen. Tätäkään ei tarvitse itse alkaa uudestaan keksimään, vaan voimme käyttää valmista skriptiä. Helppoa.

Skriptien ajamista varten tarvitsemme siis Eclipse Monkey -työkalun, jonka Eclipse Update -site löytyy osoitteesta http://download.eclipse.org/technology/dash/update/. Annetaan osoite Eclipse Update Managerille ja asennetaan Eclipse Monkey ja Mozilla Rhino -palikat.

Monkey

Eclipse Monkeyn asennuksen jälkeen kopioidaan alla oleva skripti:

--- Came wiffling through the eclipsey wood ---
/*
 * Menu: Maven > Make Maven Targets Derived
 * Kudos: Donnchadh
 * License: EPL 1.0
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.dash.doms
 */

function main() {
  var files = resources.filesMatching(".*/pom\\.xml");
  var targetFolder;

  for each( file in files ) {
    if (targetFolder = file.eclipseObject.parent.findMember("target")) {
    	targetFolder.setDerived(true);
    }
  }
}
--- And burbled as it ran! ---

ja valitaan Eclipsen valikoista "Scripts > Paste New Script".

Monkey

Tämän jälkeen pitäisi Scripts-valikosta löytyä uusi tehtävä "Scripts > Maven > Make Maven Targets Derived" ja Project Explorerissa Eclipse Monkey Scripts -kansiosta kyseinen skripti.

Monkey Monkey

Nyt skriptin ajamisen jälkeen Eclipse ei huomioi Target-hakemistoja hakutuloksissa tai resurssia avatessa.

(via Some things to remember)

Eclipse 3.4 Ganymede tuo lukuisia pieniä uudistuksia

Eclipsestä julkaistiin alkuviikosta Ganymede-koodinimeä kantava 3.4-versio, joka tuo lukuisia pieniä, mutta käyttömukavuutta selkeästi parantavia uudistuksia. Kattava lista Eclipsen uudistuksista löytyy julkaisun tiedoista. Julkaisutiedoissa uudet ja viritellyt ominaisuudet on jaettu alustan uudistuksiin ja Java-kohtaisiin uudistuksiin.

Eclipse Ganymede

Eclipsen koodinimi Ganymede on Jupiterin seitsemäs kuu ja on aurinkokunnan suurin kuu. Aikaisempia Eclipsen versionimiä ovat olleet Europa (3.3) ja Callisto (3.2), eli Jupiterin kuudes ja kahdeksas kuu.

Uudessa versiossa on parempi ollakin kaivattuja ja käyttömukavuutta parantavia uudistuksia, sillä Eclipsen päivittäminen versionumerosta toiseen on aina yhtä tuskaa. Ominaisuudet ja lisäpalikat pitää asentaa uudelleen, versionhallinnassa olevat projektit pitää hakea uudelleen tai ainakin Subversive ei osannut yhdistää suoraan ja Eclipsen asetukset pitää viritellä takaisin haluamakseen. Parin harjoittelukerran jälkeen tämä toki sujuu nopeasti, ja jos vielä tarvittavat palikat ja niiden update-sivustot ovat tallessa, menee homma kohtalaisen vaivattomasti.

Tässä muutamia ainakin näin päältä päin katsottuna mielenkiintoisia ominaisuuksia (poimittuna Eclipsen julkaisutiedoista):

Software Updates
Eclipsen ominaisuuksien ja lisäosien päivitysmekanismi on päivitetty ja se osaa nyt valita automaattisesti tarvittavat lisäpalikat halutun ominaisuuden lisäämiseksi sekä näyttää vain ne palikat, joita olet asentamassa.

Uudistettu päivitystoiminto

Problems, Bookmarks ja Task -näkymät
Problems, Bookmarks ja Task -näkymät ovat saaneet kasvojenkohotuksen ja parannuksia näkymiin. Muun muassa Problems-näkymä osaa nyt rajata näkymän vain käytössä olevaan working settiin.

Problem -näkymä

Save Actions
Eclipsen Europa-versiossa oli mahdollista määritellä erilaisia toimintoja, jotka suoritetaan tiedostoa talletettaessa. Nyt Save Actionit voi myös rajoittaa koskemaan vain omia rivejä. Window > Preferences > Java > Editor > Save Action -asetuksista määriteltäviä toimintoja voivat olla esimerkiksi:

  • Muotoilu: sisennys, sulut, välilyönnit, tyhjät rivit, kontrollirakenteet, rivinvaihdot, kommentit
  • Importtien järjestely: turhien importtien poistaminen
  • Koodityyli: if/while/for/do -rakenteiden muotoilut, final-muuttujat
  • Turha koodi: poista käyttämättömät muuttujat ja rakenteet
  • Puuttuva koodi: lisää @Override and @Deprecated annotaatiot
  • Koodin jäsentely: järjestele muuttujat, vakiot

Tietenkin toiminnon hyödyntäminen on parhainta, kun projektia varten on määritelty koodaustyylit ja -standardit.

Hakuosumat rivinäkymällä
Tiedostoista haun osumat näkyvät nyt kokonaisina riveinä, kun aikaisemmin näkyi vain tiedosto.

Haun rivinäkymä

Hae/korvaa
Tekstiä korvattaessa voidaan säilyttää kohteen kirjainkoko. Esimerkiksi korvattaessa ”test” ”\CFoo”:lla ”Test test= TEST” -tekstistä, saadaan tulokseksi ”Foo foo= FOO”.

Säilytä kirjainkoko
Säilytä kirjainkoko

Rivinumero vierityspalkissa
Rivinumero näkyy nyt myös vierityspalkista kiskottaessa.

Vierityspalkin rivinumero

Java Editorin murupolku
Java-editori tarjoaa nyt murupolkua elementin sijaintiin. Ominaisuus voidaan kytkeä päälle/pois Toggle Breadcrumb työkaluvalikon napilla tai painamalla Alt+Shift+B. Jokainen elementti on mahdollista valita ja aktivoida siihen liittyviä toimintoja.

Java-editorin murupolku
Murupolun konteksti-valikko
Muropolun alasvetovalikko

Parempia Javadoc-vinkkiruutuja
Javadoc-vinkkiruutu näyttää nyt parempia vinkkejä ja on mahdollista selata Javadocia linkkejä seuraten, avata se ulkoiseen selaimeen, sekä muuttaa ruudun kokoa.

Javadoc vinkit

Muuttujan luku- ja kirjoitustapahtumat
Painamalla Alt+Shift+O, voidaan korostaa muuttujan luku- ja kirjoitustapahtumat eri väreillä. Ominaisuus on asetettavissa General > Editors > Text Editors > Annotations -asetuksista.

Muuttujan luku- ja kirjoitustapahtumien korostus

Java-kääntäjä moniytimisillä koneilla
Eclipsen Java-kääntäjä osaa nyt hyödyntää moniytimisten suorittimien monisäie-kapasiteettia.

Ulkoiset luokkakirjastot
Luokkakirjastot voivat nyt sijaita workspacen ulkopuolella.

Viritelty debug-näkymä
Sovellusta debuggatessa, on mahdollista nähdä muuttujien arvot.

Debug-näkymä

Oraclen tietokannat haltuun Oracle SQL Developerilla

Oraclen tietokantojen kanssa askarteluun on tarjolla useita eri tasoisia ja etenkin erilaisilla hintalapuilla varustettuja ohjelmia, mutta ilmaisiakin vaihtoehtoja löytyy. Oraclen ilmainen SQL Developer on oiva työkalu SQL:n ja PL/SQL:n kanssa työskentelyyn ja tarjoaakin maksullisiin ohjelmiin lähes verrattavissa olevia ominaisuuksia etenkin satunnaiselle käyttäjälle. Maksullisista ohjelmista mainittakoon Golden, PL/SQL Developer, Hora ja Toad.

Oraclen SQL Developer tarjoaa monipuolisen työkalun tietokannan hallintaan, selaamiseen, raporttien luontiin, SQL-kyselyihin ja PL/SQL-kehitykseen, vaikka ei aivan kaikkia vastaavia ominaisuuksia tarjoa kuin Oraclen SQL+. Toisaalta käyttöliittymä on paria astetta miellyttävämpi, kuin komentorivi-tyylisessä SQL+:ssa. Javalla toteutetuksi Swing-kirjastoa käyttäväksi ohjelmaksi SQL Developer on nopea ja tuntuu ihan ”normaalilta” työpöytäsovellukselta. Kokonaisuutena ohjelma vaikuttaa myös selkeämmältä kuin vastaavan tason Golden, mutta tietenkin ilman vanhojen ohjelmien painolastia nykyaikainen SQL Developer vaikuttaa hyvältä ja helpolta käyttää.

Muutamia pieniä puutteita ohjelmasta vielä löytyy, kuten date-kentän formaatti, joka on ilmeisesti ns. ominaisuus ja pitää asettaa haluamakseen sessio-kohtaisesti. Lisäksi tuettuja kantoja ovat vain 9i-sarjan tietokannat (9.2.0.1), vaikka tuen puuttumisen huomautuksesta huolimatta myös 8i-kannat toimivat.

Tuorein SQL Developer 1.5 -versio tuo mukanaan muun muassa tuen versionhallinnalle ja muita uudistuksia sekä täydentää 1.2-version hieman puutteellista tukea SQL-käskyille. Valitettavasti versio myös tiputtaa täysin pois tuen 8i-kannoilta, jota ainakin itse jäin vielä kaipaamaan, vaikka lähitulevaisuudessa häämöttävät jo 10g-kannat.

SQL Developer 1.5 on ladattavissa Oraclen sivuilta Windowsille, Linuxille sekä Mac OS X:llle. Eniten ohjelmasta saa irti käyttämällä sitä Oraclen 9i, 10g ja 11g -tietokantojen kanssa, mutta tuettuja tietokantoja ovat lisäksi Microsoft Access, SQL Server, MySQL ja SyBase. Ohjelman käyttöön löytyy myös videodemot.

PL/SQL-kehitystä suunnitellessani testailin nopeasti myös ensimmäisessä kappaleessa mainitsemiani ohjelmia, mutta hinta-laatu -suhde oli selkeästi paikallaan SQL Developerin kohdalla, vaikka KeepToolin Hora olikin vaikuttava paketti; myös hinnaltaan.

SQL Developer SQL Developer SQL Developer