Swing projenizi JavaFX'e taşımaya başlıyor musunuz?


13

Swing + SwingX'te yazılmış 4 yıllık bir projem var. Şu anda hala yaşıyor ve hala tekmeliyor.

Ancak, GUI ile ilgili daha fazla özellik isteği geldiğinde (Örneğin, sıralanabilir bir ağaç tablosu), istekleri yerine getirmekte zorluk çekmeye başladım. Bu özellikle SwingX projesinde aktif bir gelişme olmadığı için doğrudur.

Ayrıca, neredeyse hiç iyi, ama aktif olarak korunan / geliştirilen / gelişen GUI Java çerçevesini bulamıyorum.

Merak ediyordum, Swing geliştiricilerinden herhangi biri aynı şeyi hissediyor mu? Swing projenizi JavaFX gibi çok daha aktif geliştirilmiş bir GUI çerçevesine taşımaya başladınız mı?



7
O Swing'iniz yoksa hiçbir şey ifade etmiyor.
Robert Harvey

swing platformlar arası ... javaFX2 değil .. kasa kapalı.

@blanc Windows, Linux ve OSX'te kullanılabilir. YanChenhCHEOK, TreeTable, JavaFX 8 için planlanıyor (bu yıl Java 8 ile muhtemelen Eylül ayında piyasaya sürülecek).
Assylias

Yanıtlar:


9

Şahsen JavaFX'e geçiyorum (2.1+, kötü kodlama diliyle eski garip 1.x sürümü değil). Yeni JavaFX% 100 mükemmel değil, ama zaten Swing'den daha zevkli bir görüş var, bunun için makul bir gelecek görüyorum (özellikle gömülü Webkit motoru göz önüne alındığında).


9

Kendime sık sık aynı şeyi soruyorum ama mevcut projeleri JavaFX'e geçireceğimi sanmıyorum. En azından şimdilik değil, orta ve büyük ölçekli projeler için değil. Bununla birlikte, yeni projeler için JavaFX'i düşünür ve gelecekte tekrar bir geçişi düşünür ve JavaFX'in ilerlemesine dayalı olarak soruyu yeniden değerlendiririm.

Şu anda endişelerim:

  • hamlık

    Evet, yakında 3.0'a gideceğiz, ancak bu kadar uzun sürmedi ve hala büyük değişiklikler geçirdi. Büyük ve riskten kaçınan kurumsal yazılımlar için bu nispeten acı veren bir noktadır.

  • Verim

    Performans farkları hakkında yeterince sabit veri görmedim.

  • Widget'lar ve Bileşenler

    Yeni bileşenlerde yeterli kazanç görmedim. Bu olgunlaşmamışlıkla ilgili olabilir sanırım. Ayrıca, Swing'in aksine, ne kadar iyi genişletilebileceğini ve birleştirilebileceğini bilmiyorum.

Genel olarak, avantajlar hakkında sert veriler JavaFX tarafından tamamen ikna olmak için eksik olduğum şey sanırım.

Öte yandan, Swing kanıtlanmış ve test edilmiştir. Evet, API tıknaz ve JTextPane gibi bir Swing nesnesinde IDE'nizdeki otomatik tamamlamayı çağırmak, annesini ağlatır ve ağlatır, ancak yeterince bilgiliyseniz Swing ile harika UI'ler oluşturabilirsiniz. iyi performans gösteriyorlar (Swing-has-bad-performance yanılsamasını hiç satın almadım, Romain Guy'ın Sun'ın bloglarındaki eski blog yayınlarına bakın) ve oldukça düzgün şeyler yapmanıza izin vermedim.

Bu nedenle, herhangi bir şeyi değiştirmeden önce, önce küçük bir prototip denemenizi ve belki de uygulamanızın bazı iletişim kutularını taşımayı ve nasıl gittiğini görmenizi öneririm.


5

Şu anda çok fazla JavaFX yapıyorum ve Swing yerine tercih ediyorum. Sahne Grafiği yapısı, Swing ile alışkın olduğunuzdan farklıdır, ancak çok fazla iyileştirme sağlar. API ile çalışmak eğlencelidir, ferahlatıcı hisseder.

Bununla yapabileceğiniz çok daha fazlası var, multimedya, animasyon, web'de gezinme. Örneğin , html5 ve javascript gömerek birkaç kod satırında bir Google Haritalar uygulaması oluşturabilirsiniz.

Java 8 çalışma zamanına dahil edildiği söylenir, bu da Swing'in varsayılan ui çerçevesi olarak kesin olarak değiştirilmesi anlamına gelir

@ Göç : Uygulamanızın JavaFX'e dönüştürülebilen kısımlarını izole ederek başlamalısınız. Swing-JavaFX 2 birlikte çalışabilirliği büyük bir şeydir, JavaFX öğenizi gömmek için javafx.embed.swing.JFXPanel'i kullanabilirsiniz. Bkz. Swing-fx ile birlikte çalışabilirlik . (Tamlık için SWT'ye de gömebilirsiniz.)


Swing-jfx birlikte çalışabilirlik özelliğini denemeyin, oldukça hatalıdır. Uygulamamda denedim, netbeans içinde çalışıyor, ancak .jar'ı doğrudan çalıştırmaya çalışırsam garip bellek / ilgili hatalar alıyorum. Sadece bence yeni başla.
Upvote Oyla

4

Swing eski bir teknoloji haline geliyor ya da zaten. Ancak, öngörülebilir bir gelecekte yaptığı ve gitmeyen şeylerde oldukça iyi, bu yüzden, özellikle de zaten yatırım yapmışsa, ondan uzaklaşmak için bir neden göremiyorum. JIDE Software , standart Swing'de eksik olanın yerini almak için iyi (ticari) Swing bileşenleri yapar. Örneğin, sıralanabilir treetable, Izgaraları kutusundan çıkar.


3

Yeni JavaFX sürümleri çok etkileyici görünse de, GUI'nin tam bir revizyonuna çok fazla zaman / çaba / para yatırmaya istekli olmadığınız sürece tam bir geçiş yapmaya değer.

Swing'in tuhaflıkları olabilir ve yaşını gösteriyor ama aynı zamanda bazı avantajları var:

  • Çok güçlü çapraz platform özelliği, şu anda JavaFX'ten çok daha iyi
  • Olgun ve kanıtlanmış, JavaFX'ten çok daha fazlası
  • Geniş bir kullanıcı topluluğu / kütüphane ekosistemine sahiptir
  • Muhtemelen çok fazla Swing yeteneğine sahipsiniz veya onlarla kolayca insan kiralayabilirsiniz

Nihayetinde, kırık değilse, neden düzeltirim?

Tabii ki, yeni bir proje için JavaFX, Android ve / veya web tabanlı bir GUI'ye (belki de Vaadin gibi bir şeyle) çok ciddiyetle bakacağım.


JavaFX çapraz platform yetenekleriyle ilgili herhangi bir sorun var mı?
Upvote Oyla

En son JavaFX'in Windows, Mac ve Linux için desteklendiğini kontrol ettim. Bunun ötesinde diğer platformları hedefliyorsanız, durumun ne olduğunu kontrol etmeye değer ... Geniş çapraz platform yeteneği arıyorsanız Swing hala (2012 ortası itibariyle) daha güvenli bir bahis.
mikera

başka hangi ilgi platformları var?
Upgote Oyla

1

OP ile aynı pozisyondayım - eski salıncak uygulamalarına sahipim, ancak yerel olarak desteklemeyen yeni deyimler ve arayüzler uygulamak gerekiyor. Bu uygulamaların en büyüğü çeşitli nedenlerle (modülerliği, daha iyi MVC ve olay gönderme yapısını vb. Geliştirmek) birkaç kez yeniden düzenlendi, bu yüzden tamamen UI kodunu yeniden yazmaktan kaçınmıyorum. Bu yüzden uzun ve çok düşündüm.

Bununla birlikte, bazı şeyler, aslında eski bir teknolojiye çok daha fazla zaman ve çaba harcamadan Swing ile çözülemez. Örneğin, basit fare olayları dışında, yeni dokunmatik ekranlı cihazlar ve Swing tarafından desteklenmez. Swing tabanlı bir tarayıcı bileşeni sağlamak benzer şekilde zahmetli veya pahalıdır ve benim durumumda, javafx-in-swing yaklaşımı, UI olay işlemeyi önemsiz olmayan yollarla karmaşıklaştırdığı için bir seçenek değildir.

Bence zamanın eski ve sadıktı ve platformunuz kod tabanınız kadar değişmezse, açıkçası buna sadık kalın. Ancak bir uygulamanın yeni ve daha çağdaş kullanım durumlarına geçmesi için JavaFX 2+ muhtemelen benim durumumda ilerlemenin yolu olacaktır.

Bir yan not olarak: Swing'deki tek bir yanlışlık, jfx'te kaybolmayı çok isterdim - ama etmedi - UI olay dağıtımına tek iş parçacıklı-kural-hepsine yaklaşım. Önemsiz herhangi bir kullanıcı arayüzü, kullanıcı arayüzünü net ve duyarlı tutmak için çoklu iş parçacığına ihtiyaç duyar ve aynı tuzakları kolayca bulabilmek için tamamen uygulama geliştiricisine bırakmak API IMHO'da bir eksikliktir.


0

Büyük, masaüstü tabanlı uygulamalarda RCP kullanma konusunda büyük deneyimim oldu . Temel olarak Eclipse'nin GUI katmanının bir soyutlaması olarak başladı ve o zamandan beri çok yol kat etti. AWT'ye dayanan Swing yerine RCP, JFace üzerine kuruluyor ve bu da SWT'ye dayanıyor. Eclipse uygulamasının kullandığı GUI kavramlarını (görünümler, editörler, perspektifler, sihirbazlar vb.) Geliştirmenize ve geliştirmenize olanak tanır. Çok ölçeklenebilir ve Eclipse'nin kendisi gibi sürekli geliştiriliyor.

Ancak, hiçbir zaman mevcut bir projeyi Swing'den RCP'ye geçirmedim; Başınızı farklı paradigmaların etrafına sarmanın biraz zaman alacağını ve modelinizi ayırıp katmanları iyi görüntülemediyseniz zor zamanlar geçireceğinizi hayal ediyorum. Ama sıralanabilir ağaç masaları gibi şeyleri sorduğunuz için, RCP bu konuda harika.

Bunu daha fazla araştırmak isterseniz, Lars Vogel'in eğitimini denemek veya RCP kullanan açık kaynak projeleri veya ticari projelerden bazı örneklere göz atmak isteyebilirsiniz .


-2

(Örneğin, sıralanabilir bir ağaç tablosu), istekleri yerine getirmekte zorluk çekmeye başladım. Bu, özellikle SwingX projesinde aktif bir gelişme olmadığı için doğrudur.

  • doğru değil, yine bu proje yaşıyor,

  • SwingX Sun'ın hibelerini kaybettiğinde bir kez blablabla (Oracle tarafından toplanırken) SwingX halkları JavaFX'i inşa etmeye gitti

Ayrıca, neredeyse hiç iyi bulamıyorum, ancak aktif olarak sürdürülen / geliştirilen / gelişen GUI Java çerçevesi.

  • hiçbir Salıncak Çerçeve ile ilgili değil, Görünüm ve Hisset ile ilgili

  • Çerçeveler teknik olmayan kullanıcılar içindir (MsAccess GUI Framework için en iyi örnek olabilir)

  • ancak gerçek bir uygulama oluşturmak istiyorsanız Swing hakkında güçlü bilginiz var ve Overriden da Framework'ten geldi,

  • komik örnek Netbeans, JSR296 tabanlı Swing Framework'ü inşa etti, ancak JFrames Simgesini doğrudan değiştiremez,

Swing projenizi JavaFX gibi çok daha aktif geliştirilmiş bir GUI çerçevesine taşımaya başladınız mı?

neden yok

  • Java7'ye geçişle aynı, belki ne zaman orada olacak Java7.15 - 17

  • JavaFx'i Nimbus ile karşılaştırıyorum, geliştirme sona erdi / ilk yarıda bir yerden vazgeçti

  • üzgünüm ben geliştirici değilim sadece Java ve Swing Fan'ım


MsAccess GUI Framework nedir?
Cheok Yan Cheng

huuuuh değil mi ??? sorun ne, platformlar farklılıklar veya ei ??? ilk Java GUI çerçeveleri çok benzerdi
mKorbel
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.