Scala'ya Giriş

February 6, 2011

Uzun zamandır Scala ile ilgili bir yazı dizisi yazma planım vardı. Yoğunluğum nedeniyle bugüne kısmetmiş ama bir miktar paslandığımı itiraf etmeliyim. Bu yıl daha çok ölçeklenebilirlik üzerine yazılar yazmak istediğimi dile getirmiştim.

Ölçeklenebilirlik konulu yazılarımın aslına bakarsanız merkezinde scala programlama dili olacak. İşin web bacağında lift web framework, dağınık haberleşme mimarilerinde (akka), ve dağınık veri tabanları konusunda (noSQL) özellikle MongoDB’den bolca konuşacağız.

Scala ile ilk kez tanışacaklar için Scala, ruby, java, c++ karışımı bir dil gibidir. Nasıl bir yazım biçimi olduğunu merak edenler için aşağıda bir hello-world programı yazdım.

object HelloWorld {
    def main(args: Array[String]) {
        println("Hello, world!")
    }
}

Bu yazım biçimi bana yetmez diyenler şu adresten daha fazla kod örneği bulabilirler.

Scala’nın özelliklerine hızlıca bir bakacak olursak;

Scala diliyle ilgili türkçe bir kitap hazırlığı içindeyim. Ücretsiz dağıtmayı düşündüğüm bu kitaba adresinden ulaşabileceksiniz.

Geliştirme Ortamı

Scala derleyicileri, kodları derlediğinde JVM mimarisine dönüştüğü için Java araçlarıyla tam uyumludur. Java’daki birçok teknolojiyi kullanabilirsiniz.

Scala’nın bir CLI(command-line interpreter) arayüzü olduğunu söylemiştim. gelin hızlıca Scala ile birşeyler yazalım.

$ scala
This is an interpreter for Scala.
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

# Example 1

scala> 1 + 2
unnamed0: Int = 3

# Example 2

scala> unnamed0 * 3
unnamed1: Int = 9

# Example 3

scala> println("Hello, world!")
Hello, world!
unnamed2: Unit = ()

Scala’ya daha fazla giriş yapmak için :) artima sitesindeki First Step to Scala yazısını tavsiye ederim.

Scala’yı popüler programlama editörleri Vim ve Emacs ile yazabileceğiniz gibi, popüler Java IDEleri (Netbeans, Eclipse, Intellij IDEA CE) ile yazabilirsiniz. Ben tercihimi Eclipse’ten yana kullandığımı ama Intellij’nin eklentisinin gerçekten başarılı olduğunuda belirtmeliyim. Maalesef Netbeans nasıl hiçbir fikrim yok ama Lift Framework’un yaratıcısı Netbeans’ı kullandığına dair 1-2 yazıya rastlamıştım. Kısacası burada karar size kalıyor.

Java ile Scala Arasındaki Farklar

Java ile Scala arasındaki farkları şuradaki yazıda bulabilirsiniz. Ayrıca hemen aşağıda bu konuda bulduğumu sunumuda inceleyebilirsiniz.

Scala for Java Developers - Intro from David Copeland


Scala Araçları (birkaç iyi oyuncak)

SBT (Simple Build Tool)

Scala ile Java teknolojilerinin tümünden faydalanabileceğinizden yukarıda söz etmiştim. Scala programcıları ilk zamanlar Maven kullansalarda, sonraları Simple Build Tool (aka SBT) isimli çok tatlı bir yapılandırma aracı kullanılmaya başlandı. Bu araçla yapılandırma işlemlerinizi, Scala diliyle yapabiliyorsunuz. Arkada, ivy ve maven kullanan bu başarılı araç için aynı maven’da olduğu gibi hızlıca eklentilerde yazabiliyorsunuz.

Örneğin ben proje kodumu sbt ile build edecek şekilde hazırlayıp. Buradan da Eclipsify isimli SBT eklentisi ile eclipse projesini yaratıyorum. Ayrıca SBT’yi, Eclipse içinden kullanmak şuradan ekletiye ulaşabilirsiniz.

Scalatra Web Framework

Scalatra eskiden Step olarak anılan ve Ruby Sinatraya benzeyen bir web çatısı. Küçük projeler için hızlı uygulama yazmayı amaçlayanlar için iş görebilir. Ama daha çok fazla yolu olduğunu eklemekte fayda var. Aşağıda adından söz edeceğim Lift framework’e kıyasla çok eksiği bulunuyor.

Lift Web Framework

David Pollak (a.k.a @dpp) tarafından yazılan web çatısıdır. David, framework’u hazırlarken birçok frameworkü incelemiş ve uygun gördüğü özelliklerini Lift Web Framework‘e dahil etmiştir. Bugün en büyük referansı Foursquare olarak verilebilir. Yeni versiyonlarla MVC patterni kullanılarak web projeleri yazılabilse de aslında bileşen (Snippet) mimarisine dayanır. Kendi içinde ORM gibi birçok alt proje bulunduğunu iletmekte yarar var.

Lift “Seven Thins” isimli sayfasına girerek diğer frameworklere kıyasla yarattığı farkların neler olduğunu görebilirsiniz.

Lift Framework‘ün belgelemesi gerçekten iyidir. Biri David Pollak tarafından olmak üzere iki özgür kitap projesi bulunmaktadır. Bunlar;

Lift projesinin kaynak kodlarına ve örnek uygulamalarına Github üzerinde bulunan adresinden erişebilirsiniz.

Scala dili ile ilgili başlangıç sorularınıza umarım cevaplar verebilmişimdir. Scala gerçekten eğlenceli ama bir o kadarda detaylı bir dil. Oracle’ın Sun’ı satın aldıktan sonra yapacakları belirsizliğini korurken bu konuda bir B planı olması bence gerçekten çok rahatlatıcı. Eğer sizde Scala ile birşeyler yapmayı düşünüyor ve kendinizi yalnız hissediyorsanız, Scala Türkiye ekibine katılabilirsiniz. Topluluk bu konuda etkinlikler yaparak faliyetlerine çok kısa bir süre içerisinde başlayacaktır.

Bir sonraki yazımızda elinizi Scala’ya bulamaya hazır olun. Scala diliyle framework kullanmadan Web dünyasına giriş yapacağız.