Soru Aynı proje içinde eşzamanlı Java ve Scala gelişimi


Kullanıcı arayüzünü tanıdık bir Swing tarzında geliştirirken Scala'nın Aktör Çerçevesinden yararlanmak istiyorum.

Eclipse, NetBeans veya başka bir IDE'de karma bir Java - Scala projesi olması mümkün mü?


21
2018-06-23 08:02


Menşei




Cevaplar:


Intellij, karışık Java / Scala projelerini desteklemede iyi bir iş çıkarır. Şu anda Intellij'deki Scala desteği, Eclipse için Scala IDE'den daha iyi görünüyor. (Uzun zamandır Eclipse kullanıcısıyım, kısa bir süre önce bazı Scala kodlayıcılarının tavsiyesi üzerine Intellij'i deniyorum).


5
2018-06-23 18:34



Evet, ortak geliştirme çalışmaları. Scala modunda javadoc'u görebiliyorum. Maalesef java modunda javadoc'a bir scala maddesinde sormak bir hata mesajı gösterir. - akarnokd
Her ne kadar skaffman eşit derecede iyi bir cevap vermiş olsa da, Intellij'ın daha iyi bir iş yaptığı gibi bunu seçiyorum. Teşekkür ederim. Intellij ile aşina olmadığım için kolay bir karar değildi. Ancak, görevimin uğruna onu da öğrenmek zorunda kalacağım. - akarnokd
EcJ'den +1'e, Eclipse'den daha iyi Scala desteği. - Daniel Macias


Eclipse için "resmi" Scala eklentisi, "scala doğasını" java niteliğiyle birlikte herhangi bir projeye eklemenizi sağlar. Bu, istediğiniz şekilde karıştırıp eşleştirmenizi sağlar.

Dün gece ilk kez Eclipse IDE kullanarak scala ile oynuyordum ve çok iyi çalışıyor.


Ayrıca, sadece bu makaleye rastladım: http://www.codecommit.com/blog/scala/joint-compilation-of-scala-and-java-sources

Scalac, java kaynağı üzerinde bağımlılıkları çözümleyebilmek için java hakkında yeterince bilgi sahibi olduğunu düşünüyor. Çok zeki.


21
2018-06-23 08:56



Güzel. Bu işbirliği her iki yönde de javadoc / scaladoc için çalışıyor mu? - akarnokd
Bu iyi bir soru. Şüphelenmiyorum. Java ve scala arasında dairesel bağımlılıklar varsa, bu durum garip olabilir. Sürekli entegrasyon sistemleri için bu gerçek bir sorun olabilir. - skaffman
Scalac / javac bağımlılıklarıyla ilgili düzenlemeyi görün - skaffman
Teşekkür ederim. Gerçekten işe yarıyor. Ne yazık ki, eklentinin kendisi Intellij meslektaşı kadar gelişmiş değil. Her ne kadar java geliştirmenin Eclipse yöntemine bayılsam da, Intellij'i bu özel karma görev için kullanmayı tercih ederim. Cevabınız için +1. - akarnokd


JAVA (Netbeans GUI-Builder) ve Scala-Swing'i karıştırma:

GUI-Builder ve bazı kontroller ve basit mantık ile yeni bir JPanel yarattım.

Sonra Scala-Swing öğreticilerde görüldüğü gibi bir scala nesnesi oluşturdu:

object MySampleView extends Frame { title = "SomeTitle" ...

Sonra yeni JPanel'i içeriğe ekledim:

   contents = new Component { override lazy val peer = new MySampleJPanel() }

Proje derlerken, GUI-Builder Cool'daki JPanel'in her değişikliğini görüyorum.


2
2018-02-01 14:49





Scala'nın Swing paketini denedin mi? Her zaman temeldeki Swing sınıflarına erişme anlamında çok hafif ama çok iyi düşünülmüş. Çalışmaktan memnun oldum - reaksiyonları desen olay işlemeyi çok daha kolay hale getirir ve aktör çerçevesi olay yayılmasını sağlar PropertyChangeSupport'u kullanmaktan çok daha net

Bunu, kendi özel Swing widget'larınızla birlikte kullanmak kesinlikle mümkün.


1
2018-06-23 08:08



Scala kitabından örnek programları denedim ama yıllar süren Swing GUI geliştirme deneyimimden çok farklı buldum. - akarnokd
10 yıldır Swing'i kodluyorum - Scala'ya bir şans ver! - oxbow_lakes
Programlama ve aktör çerçevesinin ölçeksel yolunu öğrenmek ve Scala GUI geliştirme uygulamalarındaki farklılıkları, diğer Swing GUI-ed projelerinde aynı anda çalışıyorum gibi karışıklıklardan kaçınmak için yeterli olacağını düşünüyorum. - akarnokd


Uygulamamda başarılı bir şekilde Java ve Scala'yı karıştırdım. Goggle App Engine'de çalışıyor ve UI için Spring MVC kullanıyorum. (Daha sonra kaldırmak için port edecek)

Intellij eklentileri çok yardımcı oluyor. Yine de erken günlerde ve arada sırada sorunlar var. (örneğin, Scala eklentisi derleyicisi, JDO gelişmiş Java sınıflarını çok fazla sevmiyor gibi görünüyor ... etrafta bir iş var ve eminim ki bu hata çok yakında giderilecektir).

Karışım hakkında biraz sıkıcı bulduğum tek şey, Java toplama sınıfını Scala'ya döndüren Java API'ları ile uğraşmak. Çok tatsız ve çemberler arasından atlamak zorundasınız.


1
2017-07-03 14:08





NetBeans için Scala eklentileri iyi de yapıyorlar. Swing geliştirme ile NetBeans ile çok kolay, sadece aradığınız şey olabilir :)


0
2018-06-30 16:45



Evet, bu el ile kodlama değil, bir GUI oluşturucu kullanmak için "tanıdık bir Swing yolu" anlamına geliyordu. Ama gerçek hibrit projenin mümkün olabileceğinden emin değildim. Teşekkürler. (Eclipse için Scala'yı biliyordum ama biraz hayal kırıklığı yaratıyordu - söz dizimi vurgular bile Java'da olduğu gibi doğru / anında çalışmıyordu.) Teşekkürler. - akarnokd


Harika!!! Fikri paylaştığınız için teşekkür ederiz.

Tamamlamak için, aşağıdaki kod GUI'yi tasarlamak için bir GUI düzenleyicisi kullanmış (WindowBuilder + Eclipse + Scala Plugin kullanıyorum) ve daha sonra her şey Scala kullanılarak yapılabilir. Artık bir Java Swing GUI editörü kullanmak ve Scala'daki tüm programları yapmak mümkün.

import swing._
import event._
object TestApp extends Frame {
def main(args: Array[String]): Unit = {
    title = "Scala Swing Test App"
    val gui = new MyTestPanel() // a JPanel class from the GUI Editor
    val button = new Button {override lazy val peer = gui.getBtnMyButton()}
            // getBtnMyButton() is generated in the Gui Editor (Expose Component)
    contents = new Component{ override lazy val peer = gui }
    this.listenTo(button)
    reactions += {
        case ButtonClicked(b) => println("BUTTON CLICK.")
    }
    this.visible = true
} }

Mvackel


0
2018-01-16 18:25