Scala’ya Başlamak

Malum, Java çok uzun süredir bir dil değil, yani sadece bir dil değil, aynı zamanda bir platform. JVM’in standartlar üzerine kurgulanmış, oturmuş ve yüksek performanslı yapısı, irili ufaklı pek çok dil için nefis bir run-time ortamı oluşturmakta. Bu yüzden yanlış bilmiyorsam 100’den fazla dil ya da dilcik var ki JVM üzerinde çalışabiliyor, yani JVM için bytecode üretiyor. Örneğin Groovy’i, statik tipli (statically-typed) bir dil olan Java’ya dinamizm kazandırmak için geliştirilmiş bir dil. Ben de onu dinamik tipli (dynamically-typed) bir dil olarak kullanmıştım, Java’nin statik yapısını dinamikleştirmekte faydalanmıştık Groovy’den. Benzer şekilde son zamanlarda fonksiyonel diller de sık kullanılır hale geldi. Scala da, yapı olarak Java’ya çok benzeyen bir dil olan Groovy’nin tersine, tamemen farklı bir söz dizimi ve gramerle, JVM eko sisteminde kendine güzel bir yer bulmuş durumda. Burada detaylarına fazla girmeyeceğim ama ileride bir vesileyle ele alacağım fonksiyonel programming paradigmasının yapılarını, nesne-merkezli yapılarla harmanlayarak topa giren Scala, açıkçası Java’nın hemen en başından bu yana arka tarafta, sessiz ama sağlam adımlarla gelişmiş bir tarihe sahip.

Bu yazıda bir dil olarak Scala’ya nasıl başlanırdan bahsedeceğim.

Kurulum ve İlk Program

Scala’yı makinanızda iki farklı türde çalışır hale getirebilirsiniz. İlki Scala’nın “interactive build tool”u olan sbt aracılıgıyla. Sbt, Scala’nın Maven vari bir aracı ve buradan temin edilebilir. Ben Mac’imde indirdiğim zip dosyasını, bir yere kopyalayıp, bin klasöründe içeriği aşağıdaki gibi olan bir “sbt.sh” dosyası oluşturdum ve bu klasörü path değişkenine ekledim. Artık “sbt.sh” diyerek bu etkileşimli Scala ortamına ulaşabiliyorum. Bu amaçla bu sayfadaki manual installation bilgilerine bakabilirsiniz.

SBT_OPTS="-Xms1024M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"

Etkileşimli Scala ortamında, derlemek ve çalıştırmak yanında, “console” diyerek ulaştığınız Scala shell’i de mevcut. Scala’yı öğrenmek için bu etkileşimli konsol ortamı son derece basit ve hızlı iş görerek faydalı olmaktadır, dolayısıyla sbt ortamını muhakkak kurun derim.

Bir diğer yol ise Eclipse ortamınızı bir Scala IDE’ye çevirmek. Bunun için buradan Scala güncelleme linkini kullanarak, Eclipse IDE’nizi Scala tanır hale getireceksiniz. Orneğin şu anda burada Scala IDE 4.0.0 Milestone 1’in Eclipse için güncelleme linkleri mevcut. Yapacağınız şey Eclipse’inizdeki Help menüsünün altındaki “Install New Software”i tıklayarak Scala IDE özelliklerini Eclipse’inize kazandırmak. Eclipse’inizi tekrar başlattığınızda, Scala özelikleriniz hazır demektir.

İster Eclipse’i kullanarak isterseniz herhangi bir editörü kullanarak örneğin aşağidaki gibi ilk Scala programınızı yazabilrisiniz:

package org.javaturk.scala.ch01.selam1

object SelamObject {
//  def main(args: Array[String]) = println("Selam :), naber?")

  def main(args: Array[String]) {
    println("Selam :), naber?")
  }
}

Yukarıdaki kod, isimsiz (anonymous) bir sınıfın SelamObject isimli nesnesini oluşturup üzerindeki standart main fonksiyonunu çağırıyor. Farkedeceğiniz gibi yukarıdaki kodda main fonksiyonun tanımı iki farklı şekilde yapılmış durumda.

Aslında yukarıdaki kod, sınıfını da tanımlayarak şöyle yazılabilirdi:

package org.javaturk.scala.ch01.selam1

/**
 *  This is a class with a function.
 */
class SelamClass1 {
  
  def selamSoyle(name: String) = println("Selam " + name + " :)")

}

Bu durumda aşağıdaki gibi bir test sınıfı ile yukarıdaki sınıfın nesnesini oluşturup ondan hizmet alabiliriz:

package org.javaturk.scala.ch01.selam1

/**
 * Test object of SelamClass1
 * @author akin
 */
object SelamClass1Test {
  def main(args: Array[String]) {
    var selamClassObject = new SelamClass1
    selamClassObject.selamSoyle("Ali")
    selamClassObject.selamSoyle("Yesim")
  }
}

Madem Scala, JVM’de çalışabiliyor ve Java ile etkileşim halinde, o zaman aşağidaki gibi bir Java test kodu da yazabilirim:

package org.javaturk.scala.ch01.selam1;

/**
 * SelamClass1's tester class.
 * @author akin
 *
 */
public class SelamClass1JavaTest {

	public static void main(String[] args) {
	     SelamClass1 selamClassObject = new SelamClass1();
	     selamClassObject.selamSoyle("Mihrimah");
	}
}

 

Nasıl Öğrenirim?

Scala’yı öğrenmek için belki de ilk yapacağınız şey, DZone’un referans kartlarından Scala için olanına ulaşmak. Bu adresten temin edebileceğiniz bu 6 sayfalık giriş dokümanını okumak, tecrübeli programcılar için hızlı bir başlama imkanı sağlayacaktır.

Scala ile ilgili en güzel öğretici bilgilere online olarak ulaşabilirsiniz.  Sanırım bunlardan en merkezi olan Scala’nin kendi sayfasındaki dokümantasyondur. Scala’nin specification dosyasına, APIsine ve pek çok diğer tutoriala buradan ulaşabilirsiniz. Ayrıca piyasadaki Scala kitaplarıyla ilgili bilgilere de buradan ulaşabilrisiniz.

Ayrıca aralarında Scala’nın yaratıcısı Martin Odersky’nin dersinin de bulunduğu pek çok online video eğitimine buradan ulaşabilirsiniz.

Scala’ya başlamak böyle kolay ve hızlı ama ilerlemek biraz farklı. Özellikle fonksiyonel özellikleri ilk etapta kafa karıştırıcı gelebilir.

Bu yazı toplam 4703 defa görüntülenmiştir.