Szerző: HWSW

2013. június 09. 22:23:00

A Scala nyelv használata a Morgan Stanley-nél

A Scala funkcionális nyelv a kereskedők kezébe is rendkívül erőteljes eszközt ad az adatfeldolgozáshoz. Ennek azonban meg is kell teremteni a feltételeit, a Morgan Stanley-nél erre is nagy hangsúlyt fektetnek.

A Morgan Stanley globális befektetési bankként ismert, azt azonban kevesen tudják, hogy a vállalat hatalmas, jelentős részben önálló fejlesztéseken alapuló IT infrastruktúrát működtet. Az informatikai rendszerekre nem mint szükséges költségtényezőre tekintenek, hanem a cég valódi versenyelőny megszerzését célozza meg velük. Cikksorozatunkban olyan területeket mutatunk be, ahol a vállalat IT szakemberei, köztük a budapesti csapat tagjai közvetlenül hozzájárulnak a Morgan Stanley sikereihez.

Programozási nyelvek és a Morgan Stanley

A Morgan Stanley-nél az Enterprise Application Infrastructure (EAI) részleg mintegy száz fős csapata foglalkozik a programozási nyelvekkel és a hozzájuk kapcsolódó technológiákkal globálisan. A főbb programozási nyelvek (Java, C/C , C#, dinamikus nyelvek, web technológiák) mindegyikével egy-egy külön alcsoport dolgozik. Ezen csoportok feladata, hogy összefogják és kiszolgálják a vállalaton belül található több ezer alkalmazásfejlesztő igényeit. Az egyes nyelvek szakértőjeként belső felhasználású könyvtárak fejlesztésével, karbantartásával, nyílt forrású könyvtárak integrálásával, fejlesztőeszközök készítésével, szaktanácsadással és az új technológiák vállalati alkalmazásának kiértékelésével foglalkoznak. Egy ilyen pusztán technológiai és kutatás-fejlesztési csoport létrehozásának előnye, hogy a vállalat nagy mérete ellenére is gyorsan tud reagálni az új technológiai kihívásokra, az újra felhasználható közös komponenseknek köszönhetően pedig gyorsabb és minőségibb alkalmazásfejlesztést tesz lehetővé.

A Scala nyelv

Az elmúlt pár évben egyre nagyobb teret hódító Scala programozási nyelv kezdeti bevezetésével és alkalmazhatóságának vizsgálatával szintén az EAI csapatai foglalkoztak. Ma már számos üzleti alkalmazás fejlesztése folyik részben, vagy teljesen Scala nyelven, és ebben az EAI továbbra is kulcsszerepet vállal.

A Scala egy Java platformra épülő funkcionális programozási nyelv. Fejlesztését kicsivel több, mint egy évtizede kezdték a lausanne-i egyetemen, első változata 2004-ben látott napvilágot. Széleskörű alkalmazása azonban csak az elmúlt 2-3 évben indult meg igazán. Olyan közismert cégek kezdték használni, mint  Twitter, LinkedIn, Novell vagy épp a Sony Pictures.

A Scala nyelv előnyei

A Scala egyik nagy előnye, hogy nem csak funkcionális, de a Java platformnak köszönhetően erősen típusos, objektum-orientált nyelv is.  A Morgan Stanley számára az egyik legnagyobb előnyt a többi funkcionális nyelvvel szemben az jelentette, hogy a meglévő, hatalmas Java kódbázis egy az egyben felhasználható, miközben a fejlesztők élvezhetik a funkcionális programozás adta tömörebb és magasabb szintű konstrukciókat is (függvény típus, lambda függvények, monad-ok, kifejezőbb típusrendszer, trait-ek, pattern matching, stb).  Másrészt a funkcionális programozás mindig is jelen volt az üzleti alkalmazások fejlesztésében, hisz ez a programozási modell sokkal alkalmasabb pénzügyi feladatok tömör leírására. Ilyenek például az adatfolyamok feldolgozása, transzformálása vagy a matematikai modellek  megvalósítása.

A Scala másik nagy előnye, hogy a Java fejlesztők egy számukra ismerős környezetben dolgozhatnak, hisz ugyanabban a fejlesztőeszközben programozhatnak, amelyben a Java alkalmazásokat is készítik.Természtesen a nyelv szintaxisa és bizonyos programozási paradigmák (például for és while ciklusok, feltételes blokkok használatának minimalizálása vagy teljes elhagyása) újak, de jó programozáselméleti alapokkal egy-két hónap alatt készségszinten használhatóak. A jól ismert Java könyvtárak illetve alkalmazások egy az egyben használhatók. A Scalában írt alkalmazás Java bytekóddá fordul le, így a fordítás után ugyanúgy kezelhető, telepíthető, mint bármelyik más Java alkalmazás.

Szakterület-specifikus nyelvek

A Scala nyelv egy további fontos képessége, hogy lehetővé teszi az úgynevezett DSL-ek (Domain Specific Language) létrehozását. Ezek olyan, adott alkalmazási területre specializált nyelvek, amelyek szinte Scala ismeret nélkül is használhatók. Jó példa ilyen DSL-re grafikus felületek definiálása, pénzügyi analitikai eszközök, build scriptek vagy éppen valamilyen web alkalmazás készítése. Maga a DSL Scala nyelven történő leírása alapos nyelvi ismeretet igényel, de annak használata már egyszerű, az adott felhasználói csoporthoz igazítható. A DSL szintén Scala, aminek köszönhetően a meglévő fejlesztőkörnyezetben lehet vele dolgozni.

A Scala nyelv árnyoldalai

A Scala használata néhány olyan kihívással is jár, amelyek a Java nyelvnél nem jelentkeznek. Az egyik ilyen a bináris kompatibilitás. A különböző fő verziószámmal fordított Scala alkalmazások ugyanis egymással nem kompatibilisek. Új Scala verzió esetén újra kell fordítani az alkalmazást, sőt, azok minden Scala függőségét is. Szerencsére a nyílt forrású Scala könyvtárak gyorsan követik a verzióváltásokat, ám így is minden Scala verzióváltást  alapos előkészítés és felkészülés előz meg.

További problémák a fejlesztőeszközök terén mutatkoznak meg. Ha például valahol Eclipse-re épülő ScalaIDE-t és IntelliJ-t használnak a Scalás fejlesztésekhez, ott kihívást jelenthet az, hogy az eszköztár  távolról sem olyan fejlett, mint amit a Java fejlesztők megszoktak. Például a fordítási idő jelentősen hosszabb lehet, a hibakeresés illetve refaktorálás a nyelv komplexitása miatt nehézkes, a hibaüzenetek kevésbbé egyértelműek, mint Java esetén. A fejlesztőeszközök minőségén jól látszik, hogy a vállalati szintérre a Scala csak az elmúlt pár évben lépett be (a korábbi, főként akadémiai felhasználásnál ugyanis az IDE fejlettsége nem volt elsőrendű szempont). A Morgan Stanley EAI részlege folyamatos visszajelzéseket és javítási javaslatokat tesz a Scala nyelv nyílt forráskódját fejlesztő közösségnek.

Összefoglalásként elmondható, hogy szerintünk a pénzügyi, nagyvállalati környezetben a Scala funkcionális képességei, illetve a Java platform használata olyan előnyök, amelynek köszönhetően igen gyors térhódításnak lehetünk szemtanúi. Ezt a tendenciát látdzik erősíteni a Java 7-ben igért, majd Java 8-ba átütemezett nyelvi elemek (pl. lambda függvények, adatstruktúrákon végzett műveletek pipeline összefűzése) késlekedése is. Kérdés, hogy a Java 8 jövőre tervezett megjelenése milyen mértékben lesz képes megváltoztatni ezt a trendet.

További információk a Morgan Stanley-ről: www.morganstanley.hu

[A Morgan Stanley megbízásából készített anyag.]

a címlapról