2009-02-23 19 views
14

Abbiamo recentemente iniziato a sviluppare un'app desktop Java e la gestione ha richiesto l'utilizzo della piattaforma Rich Client. So di quattro per Java e cioè:Quale piattaforma Rich Client utilizzare

  1. Eclipse RCP - www link to ecipse rcp,
  2. Netbean RCP - Netbeans RCP web site,
  3. primavera RCP - spring rich client
  4. Valkyrie RCP - Valkyrie rich client

Chiunque ha ottenuto qualche esperienza in uno di questi e, in caso affermativo, quali sono la forza e la debolezza di ciascuno di essi?

grazie

+3

Sembra che Spring RCP sia morto ora. – givanse

+0

Questa è una risposta molto tardiva, ma: al momento stiamo sviluppando un'applicazione netbeans rcp vecchia di cinque anni. Siamo stati in grado di migrare completamente a Maven. Con pochi passaggi è possibile sviluppare ed eseguire il debug dell'applicazione con IntelliJ IDEA, che consente di avere una piattaforma rcp matura oltre a un IDE eccellente. – gorefest

risposta

6

I consiglio di dare un'occhiata a JSR 296 - non è ancora completo da nessuna parte, ma penso che colga il punto debole per fornire alcune funzionalità di base che davvero, davvero è necessario in ogni app GUI Java, senza costringerti a vivere in un framework troppo complicato.

Ho utilizzato correttamente JSR 296 per creare un'applicazione di medie dimensioni. Per il layout della finestra in questa app, usiamo MyDoggy (altamente consigliato). Per la gestione del layout, utilizziamo MiGLayout (Beyond altamente raccomandato). Per l'associazione dei dati, utilizziamo una forma modificata di JSR 295 (abbiamo implementato qualcosa di simile a PresentationModel sulla parte superiore di JSR 295 che usiamo per il nostro binding della GUI). Sono in procinto di incorporare Guice come meccanismo DI ma non ho ancora terminato lo sforzo (finora, penso che funzionerà bene con JSR 296 con un tweak qua e là). Vediamo ... la persistenza è il grosso collegamento mancante qui - sto attualmente valutando Simple per la persistenza XML, ma sto incontrando problemi con il fatto di farlo funzionare con contenitori DI come Guice. Ho il Betwixt funzionante, ma le dipendenze su Betwixt sono enormi, quindi stiamo cercando qualcosa di più snella.

Pareri su altre opzioni RCP per Java:

NetBeans: ho alcune obiezioni filosofiche fondamentali per l'approccio utilizzato da NetBeans (troppi progettazione anti-modelli per i miei gusti). Alla fine, il framework ti costringe a prendere decisioni di design scadenti - ed è quasi impossibile da usare se non usi NetBeans come IDE (ho provato, ma non potevo passare da Eclipse a NB). Probabilmente è solo per me, ma sembra che dovrebbe essere possibile scrivere codice per un framework RCP senza l'utilizzo di procedure guidate e risme di codice e file XML generati automaticamente. Ho passato così tante ore a risolvere il vecchio codice Visual C++ generato da Visual Studio che sono estremamente diffidente nei confronti di qualsiasi framework che non possa essere codificato a mano.

Spring RCP: I ragazzi di Spring hanno un buon design solido, ma la documentazione è davvero molto debole. È piuttosto difficile mettersi subito al passo (ma una volta fatto, puoi fare le cose abbastanza velocemente).

Eclipse RCP: Non ho usato Eclipse solo a causa del sovraccarico di distribuzione (dipende dal pubblico di destinazione - per noi, l'implementazione di 50 MB di runtime extra non ha funzionato). Senza dubbio Equinox è una cosa meravigliosa se la tua app richiede funzionalità di plugin significative (ovviamente puoi eseguire Equinox anche con JSR 296 o utilizzare modelli di progettazione simili al modello di lavagna promosso da OSGi).

+0

Sì, la curva di apprendimento di Netbeans RCP è ripida. E sì, per qualche ragione, a loro piacciono i modelli di progettazione idiosincratici che nessun altro usa. Ma: è notevolmente migliorato dal post precedente: la maggior parte dei file xml sono stati sostituiti da semplici annotazioni, i wizard ci sono, ma non devi più usarli. E sono stati pubblicati grandi libri introduttivi (ad es. Https://leanpub.com/nbp4beginners). – Jirka

+0

@KevinDay eventuali aggiornamenti? Sembra che MyDoggy non venga mantenuto, JSR 296 è morto. Quali opzioni abbiamo oggi? – user3111525

+0

@ user3111525 boy - questa è la domanda da $ 10M ... Uso ancora JSR296 e JSR295. Se avessi avviato un progetto da zero, darei un'occhiata seria a JavaFX. –

1

Dal mio punto di vista dell'utente finale.

Ho visto più implementazioni in Eclipse che negli altri due. In realtà conosco le implementazioni di Netbeans ma non ne ho mai avuto uno nelle mie mani.

Dalla primavera è la prima volta che ne ho sentito parlare.

Mentre la mia risposta è sicuramente una visione super 10.000 ft, riflette in qualche modo la preferenza che l'industria aveva avuto nell'usare l'una o l'altra.

Inoltre, la differenza è proporzionale al tempo in cui la piattaforma è stata disponibile. Ricorda che Eclipse ha creato SWT per risolvere i problemi che Java Swing ha avuto in 1.3, dove è stato semplicemente proibitivo.

I Netbeans sono stati molto apprezzati dai miglioramenti JVM e ora funzionano molto velocemente.

La primavera è ancora giovane (rispetto alle altre due), ma come sempre, le nuove cose imparano dalle prime, è probabile che sia più semplice da usare.

Ecco un articolo su queste due piattaforme Eclipse RCP vs Netbeans RCP. Può essere utile

http://blogs.oracle.com/geertjan/entry/eclipse_platform_vs_netbeans_platform

1

Anche se non ho usato esplicitamente nessuno di loro, ho usato porzioni di Eclipse RCP. In particolare, ho utilizzato il runtime di Eclipse OSGi (Equinox) e alcune utilità comuni e ne sono molto soddisfatto. OSGi è fantastico con cui lavorare. Ho diversi amici con contratti di grandi dimensioni che usano Eclipse RCP (più di quello che uso) e ne sono entusiasta.

Se il mio progetto non conteneva un ampio supporto di Swing legacy, Eclipse RCP sarebbe la mia prima scelta. OSGi è così divertente! (Immagino che anche Spring lo usi, ma non ho controllato)

4

Ho esperienza con Eclipse RCP e lo consiglierei.

Pro:

  • Componenti - Componente/plu-in modello consente il riutilizzo.
  • Utilizza SWT e JFace che consente un'interfaccia utente nativa
  • Viste, editor e prospettive collegabili rendono i layout semplici e configurabili.
  • I punti di estensione Eclipse facilitano l'estensione e l'integrazione con API e strumenti di terze parti.

Contro:

  • curva di apprendimento

Se si sceglie Eclipse RCP, con aria di sfida ottenere questo libro, è invaluble quando solo partendo con il quadro: http://www.amazon.com/Eclipse-Rich-Client-Platform-Applications/dp/0321334612

1

Naturalmente tutto dipende dal tipo di applicazioni e servizi che si desidera fornire e dall'ambiente di destinazione. Ma posso anche raccomandare OSGi come piattaforma di sviluppo e implementazione. L'architettura e le specifiche di base sono molto ben sviluppate e comprovate.

Oltre all'RCP Eclipse si dovrebbe dare un'occhiata a Apache Felix (http://felix.apache.org) e Knopflerfish (http://www.knopflerfish.org), che sono (più piccoli) implementazioni di framework OSGi open source.

0

Eclipse RCP fornisce un meccanismo plug-in in modo da poter aggiungere nuove funzionalità in seguito alla distribuzione. Inoltre tramite il meccanismo di aggiornamento è possibile modificare il sistema senza interferenze dell'utente. Nella fase di sviluppo, Eclipse RCP offre un terreno veloce e robusto con prospettive, viste, editor, comandi e meccanismi di azione. Se il tuo progetto richiede molte finestre diverse con diversi strumenti e menu (e anche menu di scelta rapida personalizzati) ti suggerisco di usare Eclipse RCP. Controllo solo i video di Netbeans Platform ed eseguo il progetto Helloworld ma sembra lento e goffo :) 40 secondi per l'avvio (puoi ricaricare l'applicazione anche senza riavviare.) Vogella.de è una buona raccolta di tutorial per Eclipse RCP

10

INTRO - salta se il risultato è solo interessante;)
Stavo sviluppando un editor per un linguaggio di programmazione personalizzato molto simile a JSP. Per prima cosa ho implementato l'editor come mia tesi utilizzando la piattaforma NetBeans . Dopo aver finito la scuola ho trovato un lavoro e volevano che implementassi la stessa cosa in Eclipse RCP, quindi ora posso confrontare queste due piattaforme almeno nelle cose che stavo affrontando durante questo progetto.

RISULTATO - Se avessi una scelta tra la piattaforma Netbeans e Eclipse RCP, sceglierei sicuramente una piattaforma NetBeans. Perché?
Grandi screencast, buoni tutorial, community molto attiva amichevole e disponibile, abbastanza ben documentata e il codice sorgente è scritto bene e con buone convenzioni di codice. Ha anche alcuni gadget interessanti (cookie, ricerca). Mi sta semplicemente bene.

E perché Eclipse RCP non mi soddisfa?
La documentazione è più debole e le convenzioni e le API sono sometimes..ehm..too strano per me :-) E 'abbastanza ususal vedere metodi come:

/** 
* Returns a description of the cursor position. 
* 
* @return a description of the cursor position 
* @since 2.0 
*/ 
protected String getCursorPosition() { 
.. 
} 

Beh ho pensato che devono essere me scherzando :-D Come dovrei usare questo metodo? O come questa:

/** 
* Returns the range of the current selection in coordinates of this viewer's document. 
* 
* @return a <code>Point</code> with x as the offset and y as the length of the current selection 
*/ 
Point getSelectedRange(); 

Anche se il numero e il tipo di attributi Fitts, non trovo la struttura di dati ideale oggetto Point per la memorizzazione di gamma ;-)

ci sono numeri di theese tali surpises in Eclipse RCP

3

Attualmente sto sviluppando un'applicazione Spring RCP. La documentazione è davvero debole, questo è certo, ma i blog e i forum hanno una buona quantità di informazioni per iniziare. Una volta che ottieni la crociera, le cose si muovono abbastanza velocemente e hai solo bisogno di imparare Spring di base se non hai familiarità con il framework. Anche le integrazioni con le librerie Spring come VLDocking sono eccellenti.

Penso che Spring Rich sia eccezionale se il tuo caso d'uso è quello di sviluppare un'applicazione desktop Java autonoma. Ciò che intendo è che se non hai bisogno di distribuire moduli e fare aggiornamenti online, allora dovrebbe soddisfare la maggior parte delle esigenze.

+1

Ho solo pensato che gli sviluppatori rich-client hanno recentemente portato il codice RCP in un nuovo progetto chiamato 'Valkyrie', introducendo diversi aggiornamenti e miglioramenti. Il codice può essere trovato qui - http://www.gitorious.org/valkyrie-rcp - e c'è una discussione con maggiori informazioni qui - http://forum.springsource.org/showthread.php?101299-Trying-out -una-nuova-rotta ... - Ho lavorato con il framework nell'ultima settimana; finora sembra fantastico, anche le applicazioni di esempio sono molto buone. –

7

Troppo tardi per rispondere, ma alcuni ragazzi potrebbero colpire questa pagina.

Vorrei andare per Netbeans RCP, 1) Piattaforma Netbeans. è abbastanza maturo e si è evoluto è una piattaforma 'facile da usare' per lo sviluppo di applicazioni.

2) È molto facile iniziare, mentre la curva di apprendimento dell'eclipse RCP è piuttosto ripida.Basta fare il goto, http://netbeans.org/kb/trails/platform.html, ci saranno tutorial, video (guardate i 10 migliori video della api e provate i tutorial prima di leggere libri, in questo modo otterrete un imprevisto di cose in anticipo).

3) I libri su netbeans RCP (suppongo che ci siano 2 su netbeans RCP) sono aggiornati (piccole modifiche solo per le quali non si avranno molti problemi). mentre il libro principale su RCP non era disponibile da molto tempo (di recente, cioè maggio 2010, la nuova edizione è stata rilasciata, quindi è una cosa molto buona per gli sviluppatori di eclissi RCP. Non c'era quando stavo provando per impararlo, mi sento frustrato con autori che non pubblicano nuove edizioni, quasi lasciando a bada i nuovi sviluppatori. Non a tutti piace leggere i documenti. Non pubblicare libri aggiornati equivale quasi a uccidere la tecnologia). Mi piacerebbe vedere un libro tipo di libro di cucina per entrambe le piattaforme.

4) Netbeans ha un builder GUI completo, che è un grande vantaggio. Eclipse RCP, è necessario disporre di un codice manuale o acquistare un generatore di GUI di terze parti.

5) La piattaforma Netbeans ha questa interessante API di ricerca per la comunicazione intermodulo. Immagino che i ragazzi dell'eclisse utilizzino i punti di estensione per questo scopo. Ma guardare api è facile una volta che ne hai una possibilità.

6) In ogni caso, è una grande decisione di progettazione, su quale piattaforma scegliere. La piattaforma Netbeans funziona per me. Potrebbe non funzionare per te. Entrambe le piattaforme richiedono sforzi, entrambe offrono meravigliose funzionalità "out of the box". Prova a guidare entrambi e poi decidi.

+0

Un'ottima fonte per Netpeans RCP: https://leanpub.com/nbp4beginners. – Jirka

1

Netbeans RCP è eccellente. È venuto un lungo cammino nel corso degli anni. Usa una tecnologia più robusta ('Swing') che molte persone usano e capiscono. Eclipse RCP (più specificamente SWT) mi ha semplicemente confuso.

Problemi correlati