Anladığım kadarıyla, hem Scala hem de Clojure yeni diller olarak tasarlandı
- JVM'ye bağlıdır ve
- Scala ve Clojure kodunda Java sınıflarının kullanılmasına izin vermeleri açısından Java koduyla kolayca entegre edilebilir.
Java 8 ile başlayarak (ve belki de Java'nın sonraki sürümlerinde daha da güçlü bir şekilde), Java dilinin anlamında değişiklikler olacaktır.
Bu değişikliklerin Java ile Scala / Clojure arasındaki birlikte çalışabilirliği nasıl etkileyeceğini ve sonuçlarının ne olacağını sormak istedim. Örneğin, Java 8'deki lambdaslar nesne olmadığından (örneğin buraya bakın ), Scala ve Clojure'un nesne olmayan Java değerleriyle uğraşması gerekebilir. Bu bir sorun olur mu?
Aşağıdaki senaryoları düşünebilirim:
- Scala veya Clojure dili, yeni Java semantiğine uyum sağlamak (yeni nesne dışı değerleri işlemek için) ve Java ile birlikte çalışabilirliği desteklemek için genişletilecektir.
- Scala veya Clojure dil olacak değil uzatılabilir. Bu, ancak işlev değerleri gibi yeni Java özellikleri mevcut kavramlarla eşlenebilirse mümkün olabilir. Örneğin, Scala'da bir fonksiyon bile bir nesnedir, bu yüzden Java fonksiyonlarının Scala için görünür hale geldiklerinde yine bir tür nesneye sarılacağını düşünüyorum.
- Scala veya Clojure dili, Java'nın en son geliştirmelerini takip etmeden Java 6 veya 7'ye kadar birlikte çalışabilirliği desteklemeye devam edecektir. Bu, Java'nın eski sürümlerinin hala desteklenmesini gerektirir (en azından OpenJDK veya başka bir proje tarafından), böylece bu diller Java'nın daha muhafazakar / kararlı bir dalına dayanabilir.
Özetleme: Java'nın gelecekteki gelişiminin, Java ile birlikte çalışabilirliği sağlamak için Scala ve Clojure gibi diller üzerinde bir etkisi olmasını bekleyebilir miyiz? Bu konuyla ilgili devam eden bir tartışma var mı?
Not
Scala, Clojure ve diğer JVM tabanlı dillerin uygulamalarını JVM'nin daha yeni sürümlerine güncellemede büyük sorunlar yaşamayacağını hayal edebilirim (ve yeni JVM özelliklerinin bu uygulamayı daha da kolaylaştıracağını). Sorum, Java'nın bir dil olarak özellikleri ve diğer JVM dilinin, JVM tabanlı dillerin en son JVM'lerde çalışıp çalışmayacağını değil, bu yeni özellikleri "görüp göremeyeceği / kullanıp kullanamayacağı / nasıl kullanacağına / odaklanmasına odaklanıyor.
String
bir Java String
. Bu yüzden Scala belirli Java kitaplığı sınıflarını kullanır. Ama çok güçlü olduğunu düşünüyorsanız formülasyonu değiştirebilirim.