Masaüstü uygulamaları için JavaFx'e karşı salıncak [kapalı]


195

Şu anda SWT kullanan çok büyük bir programım var. Program hem Windows, Mac hem de Linux üzerinde çalıştırılabilir ve birçok unsuru olan büyük bir masaüstü uygulamasıdır. Şimdi SWT biraz eski olmak Swing veya JavaFX geçmek istiyorum. Ve üç şey hakkındaki düşüncelerinizi duymak istiyorum.

Benim asıl endişem bir masaüstü GUI uygulaması için daha iyi ne olacak? (Çevrimiçi baktım ve birçok insan JavaFX'in Swing kadar iyi olduğunu öne sürdü, ancak basit fikir alev savaşları dışında birçok geçerli argüman görmedim). Hem Windows, Mac hem de bazı popüler Linux dağıtımlarında çalışması gerekir.

  • Daha temiz ve bakımı daha kolay ne olacak?

  • ve sıfırdan inşa etmek daha hızlı ne olacak?

Eğer herhangi bir yardım varsa, benim uygulamada MVC yöntemini kullanıyorum.


23
JavaFX iyidir sıfırdan başlamak. Ayrıca JavaFX, Swing'i Oracle'ın Java için UI kütüphanesi olarak resmen değiştirdiği için. Bu, Swing'in ortadan kalktığı anlamına gelmez. JavaFX'in her sürümde çok daha fazla dikkat çekeceği anlamına gelir. Bununla birlikte, bu konuda SO'da ve Google'ın başka bir yerinde zaten bir buçuk milyon soru var.
nico_c

3
stackoverflow.com/questions/10587713/… Google'dan da bahsettim. Zaten orada bolca.
nico_c

Tamam, öneri gerçekten fx gibi görünüyor, bunu açık tutacağım, ama sanırım bir cevabı kabul edeceğim. Bağlantılar için teşekkürler.
Quillion

1
İşte JavaFX'in hızlı bir özeti, ancak SWT, Swing veya JavaFX'ten herhangi biri bir masaüstü uygulaması üretmek için çalışacaktır.
jewelsea

Hiç kimse bundan bahsetmedi, ancak JavaFX, eksik "jfxrt.jar" desteği nedeniyle Oracle'ın (örneğin Solaris) "sunucular" olarak kabul ettiği belirli mimarileri derlemiyor veya çalıştırmıyor.
Malcolm Boekhoff

Yanıtlar:


155

Daha temiz ve bakımı daha kolay ne olacak?

Her şey eşit, muhtemelen JavaFX - API bileşenler arasında çok daha tutarlı. Ancak, bu , kodun yazmak için hangi kitaplığın kullanıldığı yerine kodun nasıl yazıldığına bağlıdır .

Ve sıfırdan inşa etmek daha hızlı ne olacak?

Yaptığınız şeye çok bağımlı. Swing'in etrafında daha fazla bileşen var (3. tarafın yanı sıra yerleşik) ve hepsi yeni JavaFX platformuna henüz ulaşmadı, bu yüzden bir şeye ihtiyacınız varsa tekerleği yeniden icat etmek belirli bir miktar olabilir. biraz özel. Öte yandan, geçişler / animasyonlar / video şeyler yapmak istiyorsanız, bu FX cinsinden daha büyük siparişlerdir.

Akılda tutulması gereken bir diğer şey de (belki) görünüş ve his. Kesinlikle varsayılan sistem görünümüne ve izlenimine sahip olmanız gerekiyorsa, JavaFX (şu anda) bunu sağlayamaz. Benim için büyük bir zorunluluk yok (varsayılan FX görünümünü yine de tercih ediyorum), ancak bazı politikaların sistem stillerine kısıtlama getirdiğini biliyorum.

Şahsen, JavaFX'i henüz tam olarak orada olmayan (ancak kullanılabilir olandan daha fazla) "yaklaşan" UI kütüphanesi olarak görüyorum ve Swing'i şu an için tam özellikli ve desteklenen sınır çizgisi eski UI kütüphanesi olarak görüyorum , ancak muhtemelen olmayacak önümüzdeki yıllarda çok fazla (ve bu nedenle FX bir noktada onu geçecektir.)


1
Bu noktaların hepsinin, Windows Presentation Foundation'ın eski Windows Forms'u değiştirmeyi amaçlayan modern bir yaklaşım olduğu masaüstü GUI dünyasında da geçerli olduğuna inanıyorum, bu yüzden teorik olarak olmayacak (henüz? ancak yıllar oldu) basit bir dosya iletişim kutusu / dizin tarayıcısı / ağaç görünümü kontrolü gibi beklediğiniz yerel ortak kontrolleri / kabuk görünümünü destekleyin.
bitoolean

84

Oracle tarafından belirtildiği gibi JavaFX, Java tabanlı zengin istemci stratejilerinde bir sonraki adımdır. Buna göre, durumunuz için tavsiye ettiğim şey budur:

Bakımı daha kolay ve temiz olur

  • JavaFX, Swing üzerinde UI'leri FXML ile işaretleme ve CSS ile tema oluşturma gibi çeşitli iyileştirmeler yaptı. Modüler, temiz ve bakımı kolay bir kod yazmak için büyük bir potansiyele sahiptir.

Sıfırdan inşa etmek daha hızlı ne olurdu

  • Bu büyük ölçüde becerilerinize ve kullandığınız araçlara bağlıdır.
    • Salınım için çeşitli IDE'ler hızlı gelişim için araçlar sunar. Ben şahsen bulduğum en iyi NetBeans GUI oluşturucu .
    • JavaFX'in çeşitli IDE'lerden de desteği var, ancak Swing'in şu anki desteği kadar olgun değil. Bununla birlikte, FXML ve CSS'de işaretleme desteği, JavaFX'te GUI geliştirmeyi sezgisel hale getirir.

MVC Desen Desteği

  • JavaFX, MVC deseniyle çok dosttur ve çalışmanızı temiz bir şekilde ayırabilirsiniz: sunum (FXML, CSS), modeller (Java, etki alanı nesneleri) ve mantık (Java).
  • IMHO, Swing'deki MVC desteği pek çekici değil. Çeşitli bileşenlerde göreceğiniz akış tutarlılıktan yoksundur.

Daha fazla bilgi için lütfen Oracle'ın JavaFX ile ilgili bu SSS yazısına bir göz atın.


14

Hiç kimse bundan bahsetmedi, ancak JavaFX, eksik "jfxrt.jar" desteği nedeniyle Oracle'ın (örneğin Solaris) "sunucular" olarak kabul ettiği belirli mimarileri derlemiyor veya çalıştırmıyor. Bir sonraki duyuruya kadar SWT ile yapıştırın.


13
@Quillion özellikle "hem windows, mac hem de bazı popüler linux lezzetleri üzerinde çalışmak zorunda " bir masaüstü uygulaması oluşturmak için bir şey ister . . Bu yüzden sanırım Solaris'i umursamıyor.
Tim Büthe

5

Bu sorunun doğru bir cevabı olduğunu düşünmüyorum, ancak tavsiyem, böyle büyük bir revizyon gerektiren ciddi kısıtlamalarla karşılaşmadığınız sürece SWT'ye bağlı kalmak olacaktır.

Ayrıca, SWT aslında Swing'den daha yeni ve daha aktif bir şekilde korunur. (Başlangıçta yerli bileşenleri kullanarak Swing'in yerine geliştirilmiştir ).


16
SWT hiçbir zaman Swing'in yerini almayı amaçlamıyordu. Nasıl yani? Swing, SUN'dan Java ile geldi ve SWT sadece 4 veya 5 platformda çalışıyor ve orijinal olarak IBM'den geliyor ve Eclispe Vakfı'nda daha da geliştirildi. Şöyle diyebilirseniz: SWT, AWT'nin yerini almayı amaçladı.
Angel O'Sphere

0

Ne istediğinizi yapan bazı (3. taraf?) Bileşenleri bulmak için etrafa bakmak istiyorum. Birden fazla kaynak ve klavye navigasyonu vb. İle iyi çalışan Excel benzeri bir kılavuzun yer aldığı bir gündem görünümü için özel Swing bileşenleri oluşturmak zorunda kaldım. Onları güzel bir şekilde işe almak için korkunç bir zaman geçirdim çünkü bir sorunla karşılaştığımda Swing'in birçok karmaşıklığına girmem gerekiyordu. Fare ve odaklama davranışı ve diğer pek çok şey, özellikle sıradan bir Swing kullanıcısı için doğru olmak için çok zor olabilir. Umarım JavaFX biraz daha geleceğe yöneliktir ve kutudan çıkarılır.


0

Entegre video Swing uygulaması olan eski dizüstü bilgisayarlarda JavaFX uygulamasından daha hızlı başlar ve çalışır. Geliştirme gelince, Scala'ya geçmenizi tavsiye ederim - karşılaştırılabilir Scala Swing uygulaması Java'dan 2..3 kat daha az kod içeriyor. Swing vs SWT'ye gelince: Netbeans GUI, Eclipse'den çok daha hızlı ...


Scala Salıncak söz iyidir
çizmek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.