Scala, ölçeklenebilir dil için kısa, fonksiyonel melez bir programlama dilidir. Martin Odersky tarafından oluşturulan bu dilin ilk yayını 2003 yılında yapılmıştır.
Scala, Nesne Yönetimli(object-oriented) ve fonksiyonel dillerin özelliklerini sorunsuz bir şekilde barındırabilecek ve Java Virtual Machine üzerinde çalışabilecek şekilde tasarlanmıştır.
Kritik iş uygulamaları oluşturan, Java’ya bağlı birçok şirket, geliştirme verimliliklerini, genel güvenliklerini ve uygulamaların esnekliğini arttırmak için Scala diline geçiş yapmayı tercih ediyor.
Aşağıdaki listede, geliştiricilerin Scala dilini ilk tercih olarak seçmelerine neden olan önemli özellikler bulunmaktadır.
Scala, tamamen nesne yönetimli bir dildir. Yani her değer bir objedir. Objelerin tipleri ve davranışları sonraki bölümlerde detayına girilecek olan sınıflar ve özellikler ile ifade edilmiştir.
Sınıflar, alt sınıflar(subclassing) tarafından genişletilmiş ve çoklu kalıtım(multiple inheritance) için esnek ‘mixin-based composition‘ mekanizması kullanılmıştır.
Scala fonksiyoneldir. Yani her fonksiyon bir değerdir(value), her değer bir objedir ve sonuç olarak her fonksiyon bir objedir. Scala bilinmeyen fonksiyon tanımlamanız için kolay bir syntax(söz dizimi) sağlar, üst düzey fonksiyonları destekler, iç içe fonksiyonları kullanmanıza imkan sağlar ve currying(çeviremedi) destekler. Bu bahsi geçen kavramlar sonraki bölümlerde açıklanacaktır.
Scala, diğer bazı statik yazılmış dillerin aksine, sizden gereksiz tip bilgilerini sağlamanızı beklemez. Çoğu koşulda tip bildirimi yapmanıza ve tekrar etmenize kesinlikle gerek yoktur.
Scala, Java Virtual Machine(JVM) tarafından çalıştırılabilir kod olan Java Byte koduna derlenir. Bu demektir ki Scala ve Java ortak çalışma platformuna sahiptir. Kolaylıkla Java dilinden Scala diline taşıma yapabilirsiniz. Scala derleyicisi, Scala kodlarınızı daha sonra Scala komutlarının işyebileceği Java Byte koduna dönüştürür. Scala komutları, derlenmiş Scala kodlarını işler. Scala komutları, Java komutlarıyla benzerdir.
Scala, size bütün Java SDK’larını, kendi oluşturduğunuz Java sınıflarını veya favori Java açık kaynak kod projelerini Scala içerisinde kullanmanıza olanak sağlar
Scala dilinin Java dilinden farklılık gösteren bir dizi özellikleri mevcuttur. Bunlardan bazıları şunlardır:
Scala, başta önemli kuruluşların web uygulamaları olmak üzere her yerde kullanılmaktadır. En popüler Scala web frameworklerinden bazılarını inceleyebilirsiniz: