Guy Kindermans Guy Kindermans is freelance journalist bij Data News.

Zoals Devoxx een steeds breder deel van het ontwikkelaarsspectrum belicht, zo stelt ook Java Virtual Machine zijn deuren verder open voor meer en andere talen. Van die nieuwkomers lijkt Scala wel erg veel aandacht te krijgen.

Scala staat voor ‘SCAlable LAnguage’ en combineert objectoriëntatie met functioneel programmeren en statische typering. ‘Functioneel programmeren’ wordt daarbij omschreven als ‘een programmeerparadigma dat berekeningen aanpakt als een evaluatie van wiskundige functies, zonder ‘state’ en ‘wijzigbare data’. Door de wijze waarop functies in functioneel programmeren worden aangewend (in tegenstelling tot proceduraal programmeren) moet dit leiden tot code die makkelijker begrijpbaar is, met een beter voorspelbare werking. De ‘object’ aard van Scala wordt nog benadrukt omdat alles (inclusief cijfers en functies) objecten is. Scala mikt precies op een combinatie van de voordelen van functioneel programmeren met de opgebouwde ervaring in procedurale talen en een compatibiliteit met Java.

Vanuit Java

De band met Java heeft alles te maken met de geestelijke vader van Scala, Martin Odersky, professor aan de Ecole Polytechnique Fédérale de Lausanne (EPFL) en hoofd van de programmeeronderzoeksgroep (Programming Methods Laboratory 1). In de Javawereld verwierf hij immers faam als co-ontwerper van Java Generics en als de oorspronkelijke auteur van de huidige javac referentiecompiler. Zijn doel met Scala was een taal voor programma’s met uitdrukkelijke doorgroeimogelijkheden (scalability), of zoals Odersky het stelt, “dezelfde constructies moeten zowel in kleine als grote programma’s werken.” Hij benadrukt verder dat “Scala ‘diep’ is, waar andere talen ‘breed’ gaan.” Concreet betekent dit het vermijden van veel repetitieve sleurcode ( boilerplate code) en een nadruk op “sterke abstractiemethoden, voor het schrijven van krachtige bibliotheken.”

De oorspong van Scala gaat terug op vroeg onderzoek van Odersky en anderen om Java te paren aan elementen uit functioneel programmeren. Dat leidde tot een eerste taal, Pizza (1996), die onder meer voorzag in generics, hogere orde functies en pattern matching. Op vraag van personen uit het ontwikkelingsteam van Sun, werd vervolgens het idee van generics verder uitgewerkt tot GJ (Generic Java, 1997-98), wat dan later de basis was voor generics in Java 5. In 2001 resulteerden de ideeën in Pizza en GJ uiteindelijk in Scala, dat in 2003 voor het eerst in cursussen aan het EPFL werd aangewend en vervolgens in 2004 publiek werd gemaakt. In 2006 volgde een versie 2.x, waarna de aandacht voor Scala op evenementen als JavaOne (en JavaPolis/Devoxx) groeide.

Vandaag draait Scala op systemen onder Linux, Unix, Macos en Windows, en dat zowel op het Java-platform als het .Net-platform (Scala versie 1.4). Begin oktober was Scala 2.7.6 de downloadable versie, versie 2.8 is voorzien voor eind dit jaar. Die versie zal onder meer nieuwe collecties brengen, package objects, named en default parameters en voorzieningen voor snellere generics.

Voorbij Java

De claim van Scala als opvolger van Java onderbouwt Odersky met de opmerking dat Scala alles heeft wat Java heeft, zij het “wellicht soms in een andere vorm.” Er werd in ieder geval veel zorg besteed aan een vlotte integratie in de Javawereld. Zo draait Scala op de Java Virtual Machine (de scalac compiler genereert Java class-bestanden), is het bytecode compatibel met Java, zodat er gebruik kan worden gemaakt van Java bibliotheken en kunnen Scala en Java elkaar oproepen. Scala kan daarbij dienen als een scripttaal of als een taal voor het bouwen van grote systemen.

Scala overstijgt volgens Odersky Java omdat de taal ook closures biedt (een heikele discussie in de Javawereld), pattern matching en traits (vergelijkbaar met Java’s ‘interface’). Voorts voorziet het in een actor model met het oog op concurrency (gelijktijdige verwerking). Ook biedt Scala de mogelijkheid om domein-specifieke taaluitbreidingen te formuleren. Dat alles zorgt ervoor dat de taal “scales with the programmer” (gelijke tred houdt met de groei van de ontwikkelaar). Ontwikkelaars kunnen overigens beschikken over Scala plug-ins voor Eclipse, IntelliJ en Netbeans.

Elke serieuze programmeertaal heeft vandaag een eigen frame-work en voor Scala is dat Lift. De bouwers van dit framework verklaren te hebben geleerd van de fouten en de beste ideeën in andere frameworks. Met Lift wordt onder meer een strikte scheiding tussen de presentatielaag en de toepassingscode nagestreefd. Lift biedt tevens ondersteuning voor Ajax en Comet.

De claim van Scala als taal voor robuuste toepassingen met erg sterke doorgroeimogelijkheden, moet natuurlijk nog hard worden gemaakt. Op de Scala-site staan al een reeks gebruikers van Scala, waaronder Twitter. Met het oog op recordaantallen ‘tweets’ zoals bij de aanstelling van Barack Obama (goed voor 5000 tweets per minuut) werd een belangrijk onderdeel van de site – hun main message queue – van Ruby on Rails overgezet naar Scala. Daarbij werd onder meer de mogelijkheden inzake concurrent processing geprezen.

Bij de ‘trading’-dochtermaatschappij van Electricité de France (EDF) werd in de voorbije jaren een belangrijk deel van de Java-code in hun toepassing voor de handel en prijsvorming inzake energiederivaten herschreven in Scala. Een belangrijke rol werd gespeeld door de Scala IDE voor Eclipse, terwijl ook een significatnte verhoging van de ontwikkelingsproductiviteit werd genoteerd.

De combinatie van Scala en het Lift framework vormt dan weer de basis van het ‘Enterprise Social Messaging Experiment’ (ESME), een opensourceproject dat door Siemens werd aangewend voor de verhoging van de productiviteit met behulp van sociale netwerken. ESME moet helpen om ‘communities’ te bouwen en de bedrijfsbrede communicatie tussen werknemers te bevorderen, heet het.

In de toekomst

Voor de toekomst ziet Odersky nog verbeteringen met het oog op meer concurrency en ondersteuning voor parallelle verwerking. In versie 2.8 wordt hiervoor gerekend op ‘continuations’ als een compiler plug-in. Met continuations kan een function state worden opgeslagen en later hernomen, eventueel op een andere computer. Een proof of concept hiervan werd al aangetoond met Swarm.

Hoe en of Scala uiteindelijk dé opvolger van Scala wordt, zal evenwel de toekomst moeten uitwijzen. Java kende een snelle groei en verspreiding door de steun van Sun met tools en een grote groep enthousiaste gebruikers. De omvang en het enthousiasme ven de groep Scala-gebruikers zal dan ook ongetwijfeld een cruciale rol spelen, zeker als ze Java-aficionado’s kunnen overhalen zich in te werken in eigenheden van Scala.

Belangstellenden kunnen terecht op de site, www.scala-lang.org, waar zich ook een presentatie van Martin Odersky over de komende 5 jaar van Scala bevindt, www.scala-lang.org/sites/default/files/odersky/scalaliftoff2009.pdf. Je kan ook het boek ‘Programming in Scala’ door Odersky, Spoon en Venners proberen te ontcijferen. En op Parleys.com kan je klikken op ‘Popular tags’ en vervolgens ‘scala’, waar onder meer presentaties van Odersky (‘The Scala Experience’, Javapolis 2007) en Venners (‘The feel of Scala’, Devoxx 2008) staan. Op Devoxx 2009 heeft Bill Venners een sessie over het testen van Scala programma’s.

Meer info over Lift staat op liftweb.net, inclusief een ‘Starting with Lift’ op liftweb.net/docs/getting-started/mod-master.html.

Guy Kindermans

Scala overstijgt volgens Odersky Java omdat de taal ook closures biedt, pattern matching en traits.

Fout opgemerkt of meer nieuws? Meld het hier

Partner Content