Using Scala to Boost Web Development
Lähteenmäki, Jyri-Matti (2010)
Lähteenmäki, Jyri-Matti
2010
Tietotekniikan koulutusohjelma
Tieto- ja sähkötekniikan tiedekunta
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2010-05-05
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201005101118
https://urn.fi/URN:NBN:fi:tty-201005101118
Tiivistelmä
Web-sovellusten kehittämiseen on tarjolla useita vaihtoehtoisia teknologioita. Loppukäyttäjälle valittu toteutusteknologia ei välttämättä ole näkyvissä, mutta asiakkaalle se näkyy projektista aiheutuvina kustannuksina. Lisäksi teknologiavalinnoilla on vaikutusta lopputuloksen laadulle ja projektin kehittäjien työn mielekkyydelle. Pääsääntöisesti vaihtoehdot perustuvat dynaamisiin ohjelmointikieliin, ja staattisesti tyypitetty kieli toisikin mielenkiintoisen vaihtoehdon. Tässä työssä tarkastellaan Scala-ohjelmointikielen soveltuvuutta perinteiseen Web-kehittämiseen ja arvioidaan sen tuomia etuja ja haittoja.
Scala-ohjelmointikieli on tavukoodiyhteensopiva yleisesti käytetyn Java-kielen kanssa, mutta sen funktionaalisen paradigman hyödyntäminen ja mahdollisesti hyvinkin erilainen syntaksi tekevät siitä hankalahkon opittavan Java-ohjelmoijalle. Tämän vuoksi työssä esitellään Scala-ohjelmointikielen perusteet sekä työn kannalta oleellisimmat tekniikat. Työ pyrkii tuomaan esiin eroja ja yhtäläisyyksiä Java-kieleen nähden ja luo silmäyksen tämänhetkiseen työkalutukeen.
Työssä toteutetaan Scala-kielellä perinteisiä Web-kehityksessä vastaantulevia asioita ja arvioidaan niiden etuja ja haittoja vaihtoehtoisiin tapoihin nähden. Ohjelmakoodiesimerkit tarjoavat samalla konkreettisen näkymän asiaan. Joitakin mielenkiintoisia mahdollisuuksia havaittiin, joilla voi olla merkittäväkin positiivinen vaikutus ohjelmistokehitykseen.
Työn yhteydessä toteutettu yksinkertainen esimerkkiprojekti tarkastelee työssä tehtyjä havaintoja käytännössä. Tällä pyritään tuomaan esille asioita, jotka tulisivat vastaan tosielämän projekteissakin. Projekti toteutettiin sekä Javalla että Scalalla, mikä osoittaa että Scala-kieltä voidaan käyttää saumattomasti osassa projektia ilman että se liikaa häiritsee muita osia. Esimerkkiprojektille ajettu yksinkertainen suorituskykytesti osoittaa, ettei Scala-toteutuksella ole suorituskykyongelmia Javatoteutukseen nähden. /Kir10 There exists a number of alternative technologies for Web application development. The final product as seen by the end user might not reflect the underlying technologies, but for the customer it is visible in project costs. The chosen technologies have an impact on the overall quality of the product and they also play an important role in making the development pleasant. Most of the available technologies are based on dynamic programming languages and thus a statically typed language would introduce an interesting alternative. This thesis examines the suitability of the Scala programming language for Web development and evaluates its advantages and disadvantages.
Scala programming language is bytecode compatible with the well-known Java language but its utilization of the functional paradigm and possibly quite differing syntax make it somewhat hard to learn for an average Java programmer. Therefore the basics and the most relevant techniques of the Scala language are introduced. The similarities as well as differences to Java language are brought up, and the available tool support for Scala is examined and briefly compared to the excellence of Java tools.
This thesis implements some common functionality related to web development in Scala. The discovered advantages and disadvantages are evaluated against alternative methods. Program code listings offer a concrete view to the subject. Some interesting possibilities were discovered that could have a significant positive impact on development.
A simple example project investigates the observations in practice. This strives to bring out issues that could also be present in real-life projects. The project was implemented in both Java and Scala which shows that Scala can be used in some parts of a project without major interference to other parts. A simple performance test run against the example project shows that Scala does not suffer from performance issues comparing to Java.
Scala-ohjelmointikieli on tavukoodiyhteensopiva yleisesti käytetyn Java-kielen kanssa, mutta sen funktionaalisen paradigman hyödyntäminen ja mahdollisesti hyvinkin erilainen syntaksi tekevät siitä hankalahkon opittavan Java-ohjelmoijalle. Tämän vuoksi työssä esitellään Scala-ohjelmointikielen perusteet sekä työn kannalta oleellisimmat tekniikat. Työ pyrkii tuomaan esiin eroja ja yhtäläisyyksiä Java-kieleen nähden ja luo silmäyksen tämänhetkiseen työkalutukeen.
Työssä toteutetaan Scala-kielellä perinteisiä Web-kehityksessä vastaantulevia asioita ja arvioidaan niiden etuja ja haittoja vaihtoehtoisiin tapoihin nähden. Ohjelmakoodiesimerkit tarjoavat samalla konkreettisen näkymän asiaan. Joitakin mielenkiintoisia mahdollisuuksia havaittiin, joilla voi olla merkittäväkin positiivinen vaikutus ohjelmistokehitykseen.
Työn yhteydessä toteutettu yksinkertainen esimerkkiprojekti tarkastelee työssä tehtyjä havaintoja käytännössä. Tällä pyritään tuomaan esille asioita, jotka tulisivat vastaan tosielämän projekteissakin. Projekti toteutettiin sekä Javalla että Scalalla, mikä osoittaa että Scala-kieltä voidaan käyttää saumattomasti osassa projektia ilman että se liikaa häiritsee muita osia. Esimerkkiprojektille ajettu yksinkertainen suorituskykytesti osoittaa, ettei Scala-toteutuksella ole suorituskykyongelmia Javatoteutukseen nähden. /Kir10
Scala programming language is bytecode compatible with the well-known Java language but its utilization of the functional paradigm and possibly quite differing syntax make it somewhat hard to learn for an average Java programmer. Therefore the basics and the most relevant techniques of the Scala language are introduced. The similarities as well as differences to Java language are brought up, and the available tool support for Scala is examined and briefly compared to the excellence of Java tools.
This thesis implements some common functionality related to web development in Scala. The discovered advantages and disadvantages are evaluated against alternative methods. Program code listings offer a concrete view to the subject. Some interesting possibilities were discovered that could have a significant positive impact on development.
A simple example project investigates the observations in practice. This strives to bring out issues that could also be present in real-life projects. The project was implemented in both Java and Scala which shows that Scala can be used in some parts of a project without major interference to other parts. A simple performance test run against the example project shows that Scala does not suffer from performance issues comparing to Java.