2013-05-22 32 views
155

Ho un programma molto grande che utilizza attualmente SWT. Il programma può essere eseguito sia su Windows, Mac e Linux, ed è una grande applicazione desktop con molti elementi. Ora che il SWT è piuttosto vecchio, vorrei passare a Swing o JavaFX. E mi piacerebbe sentire i tuoi pensieri su tre cose.Swing vs JavaFx per applicazioni desktop

La mia preoccupazione principale è cosa sarà meglio per un'applicazione desktop GUI? (Ho guardato online e molte persone suggeriscono che JavaFX è buono come Swing, ma non ho visto molti argomenti validi tranne le semplici guerre di opinione). Deve funzionare su Windows, Mac e alcune diffuse distribuzioni Linux.

  • Cosa sarà più pulito e più facile da mantenere?

  • e quale sarà più veloce da compilare da zero?

Sto utilizzando la metologia MVC nella mia applicazione, se questo è di qualche aiuto.

+21

JavaFX è buono è che stai iniziando da zero. Anche perché JavaFX sta ufficialmente sostituendo Swing come libreria UI di Oracle per Java. Ciò non significa che Swing sia eliminato. Significa solo che JavaFX riceverà molta più attenzione in ogni versione. Detto questo, ci sono già un milione e mezzo di domande su questo argomento su SO e altrove su Google. –

+3

http://stackoverflow.com/questions/10587713/javafx-2-vs-swing-for-a-pure-windows-desktop-app Ho citato anche Google. Ci sono già un sacco di cose. –

+0

Ok, quindi il suggerimento sembra davvero essere fx quindi, terrò questo aperto, ma accetterò una risposta credo. Grazie per i link. – Quillion

risposta

130

Cosa sarà più pulito e più facile da mantenere?

A parità di condizioni, probabilmente JavaFX - l'API è molto più coerente tra i componenti. Tuttavia, questo dipende molto di più dal come viene scritto il codice anziché da quale libreria viene utilizzata per scriverlo.

E quale sarà più veloce da costruire da zero?

Molto dipendente da ciò che stai costruendo. Swing ha più componenti in giro per esso (di terze parti e integrati) e non tutti sono già arrivati ​​alla nuova piattaforma JavaFX, quindi potrebbe esserci una certa quantità di re-inventare la ruota se hai bisogno di qualcosa bit personalizzato. D'altra parte, se vuoi fare transizioni/animazioni/materiale video, allora gli ordini di grandezza sono più facili in FX.

Un'altra cosa da tenere a mente è (forse) look and feel. Se si deve assolutamente avere l'aspetto del sistema predefinito, allora JavaFX (al momento) non può fornire questo. Non è un grosso must per me (preferisco il look FX predefinito in ogni caso), ma sono consapevole che alcune politiche impongono una restrizione agli stili di sistema.

Personalmente, vedo JavaFX come il "prossimo e" libreria di interfaccia utente che non è abbastanza c'è ancora (ma più che usabile), e Swing come la biblioteca UI borderline-legacy che è completamente descritto e sostenuto per il momento, ma probabilmente non sarà così tanto negli anni a venire (e quindi è probabile che FX lo supererà ad un certo punto)

5

Non penso che ci sia una risposta giusta a questa domanda, ma il mio consiglio sarebbe di attenersi a SWT a meno che non si verifichino gravi limitazioni che richiedono una revisione così massiccia.

Inoltre, SWT è in realtà più recente e più attivamente mantenuto di Swing. (Era originally developed in sostituzione di Swing usando componenti nativi).

+13

SWT non è mai stato progettato per sostituire Swing. Come mai? Swing viene fornito con Java di SUN e SWT viene eseguito solo su 4 o 5 piattaforme e viene originariamente da IBM ed è stato ulteriormente sviluppato in Eclispe Foundation. Se mai potessi dire: SWT mirava a sostituire AWT. –

0

Mi guarderei intorno per trovare alcuni componenti (di terze parti?) Che fanno ciò che volete. Ho dovuto creare componenti Swing personalizzati per una vista agenda in cui è possibile prenotare più risorse, oltre a una griglia simile a Excel che funziona bene con la navigazione da tastiera e così via. Ho passato un brutto periodo in cui ho lavorato bene perché avevo bisogno di approfondire molte delle complicazioni di Swing ogni volta che incontravo un problema. Il comportamento del mouse e della messa a fuoco e molte altre cose possono essere molto difficili da ottenere, specialmente per un utente occasionale di Swing. Spero che JavaFX sia un po 'più orientato al futuro e liscio fuori dalla scatola.

70

Come affermato da Oracle, JavaFX è il passo successivo nella loro strategia di rich client basata su Java. Di conseguenza, questo è quello che io consiglierei per la vostra situazione:

Quale potrebbe essere più facile e più pulito per mantenere

  • JavaFX ha introdotto diversi miglioramenti rispetto swing, come ad esempio, la possibilità di markup UI con FXML e temi con CSS. Ha un grande potenziale per scrivere un codice manutenibile modulare, pulito &.

Quale potrebbe essere più veloce per costruire da zero

  • Questo dipende in larga misura le tue capacità e gli strumenti utilizzati.
    • Per lo swing, vari IDE offrono strumenti per lo sviluppo rapido. Il meglio che ho trovato personalmente è il builder della GUI in NetBeans.
    • JavaFX ha anche il supporto di vari IDE, anche se non così maturo come il supporto che Swing ha al momento. Tuttavia, il suo supporto per il markup in FXML & CSS rende lo sviluppo della GUI su JavaFX più veloce e intuitivo.

modello di sostegno MVC

  • JavaFX è molto amichevole con pattern MVC, e si può in modo pulito separare il vostro lavoro come: presentazione (FXML, CSS), i modelli (Java, oggetti di dominio) e logica (Java).
  • IMHO, il supporto MVC in Swing non è molto allettante. Il flusso che vedrai tra i vari componenti manca di coerenza.

Per maggiori informazioni, si prega di dare un'occhiata a queste FAQ post di Oracle per quanto riguarda JavaFX qui.

12

Nessuno ha parlato, ma JavaFX non compilare o eseguire su alcune architetture ritenuti "server" da parte di Oracle (ad esempio Solaris), a causa della mancanza "jfxrt.jar" sostegno . Attacca con SWT, fino a nuovo avviso.

+8

@Quillion richiede in particolare qualcosa per la creazione di un'applicazione desktop che _ "debba funzionare su Windows, Mac e alcuni noti stili di linux." _. Quindi immagino che non gli importi di Solaris. –

0

Su notebook datati con l'app Swing video integrata inizia e funziona molto più velocemente rispetto all'app JavaFX. Per quanto riguarda lo sviluppo, ti consiglio di passare a Scala - l'app Scala Swing comparabile contiene 2 ..Codice 3 volte meno di Java. Per quanto riguarda Swing vs SWT: Netbeans GUI considerevolmente più veloce di Eclipse ...

+0

Scala Swing è bello parlare – draw

Problemi correlati