Ragioni per NON usare JSF [chiuso]

63

Sono nuovo di StackExchange, ma ho pensato che saresti stato in grado di aiutarmi.

Stiamo implementando una nuova applicazione Java Enterprise, in sostituzione di una soluzione JSP legacy. A causa di molti molti cambiamenti, l'interfaccia utente e parti della logica aziendale saranno completamente ripensate e reimplementate.

Il nostro primo pensiero è stato JSF, in quanto è lo standard in Java EE. All'inizio ho avuto una buona impressione. Ma ora sto cercando di implementare un prototipo funzionale e ho alcune serie preoccupazioni sul suo utilizzo.

Innanzitutto crea il peggior mix pseudo-HTML / CSS / JS non ammassato che io abbia mai visto. Viola ogni singola regola che ho appreso nello sviluppo web. Inoltre getta insieme, cosa mai dovrebbe essere così strettamente accoppiato: Layout, Design, Logic e Comunicazione con il server. Non vedo come sarei in grado di estendere questo output in modo constrongvole, sia con lo styling con CSS, aggiungendo caramelle UI (come tasti di scelta rapida configurabili, widget drag-and-drop) o qualsiasi altra cosa.

In secondo luogo, è troppo complicato. La sua complessità è eccezionale. Se me lo chiedi, è una scarsa astrazione delle tecnologie web di base, paralizzate e inutili alla fine. Quali benefici ho? Nessuno, se ci pensi. Centinaia di componenti? Vedo decine di migliaia di snippet HTML / CSS, decine di migliaia di snippet JavaScript e migliaia di plug-in jQuery in aggiunta. Risolve davvero molti problemi: non avremmo se non usassimo JSF. O il modello del controller anteriore.

E, infine, penso che dovremo ricominciare da capo, diciamo 2 anni. Non vedo come posso implementare tutto il nostro primo motto della GUI (Inoltre, non abbiamo esperti JSF nel nostro team). Forse potremmo hackerarlo insieme in qualche modo. E poi ci saranno di più. Sono sicuro che potremmo hackerare il nostro trucco. Ma ad un certo punto, saremo bloccati. A causa di tutto sopra il livello di servizio è in controllo di JSF. E dovremo ricominciare da capo.

Il mio suggerimento sarebbe di implementare un API REST, usando JAX-RS. Quindi creare un client HTML5 / Javascript con MVC lato client. (o qualche sapore di MVC ..) A proposito; avremo comunque bisogno dell'API REST, visto che stiamo sviluppando anche un front-end Android.

Dubito che JSF sia la soluzione migliore al giorno d'oggi. Poiché Internet si sta evolvendo, non vedo davvero perché dovremmo usare questo 'rake'.

Ora, quali sono i pro / contro? Come posso sottolineare il mio punto di non usare JSF? Quali sono i punti di forza per utilizzare JSF sul mio suggerimento?

    
posta Bruno Schäpper 24.07.2012 - 15:17
fonte

4 risposte

26

C'è almeno una buona ragione per considerare JSF.

È una parte standard dello stack Java EE, e quindi sarà disponibile - e funzionante - in TUTTI i contenitori Java EE per un tempo molto, molto lungo. E anche mantenuto, senza che tu debba farlo se hai rispettato rigorosamente le specifiche Java EE.

Se questa è una preoccupazione per te, allora dovresti prenderla in considerazione. La maggior parte dei software dura più a lungo di quanto pensino i loro progettisti, soprattutto se presi in considerazione quando vengono scritti.

    
risposta data 25.07.2012 - 14:48
fonte
14

Now, what are pros/cons? How can I emphasize my point to not use JSF? What are strong points to use JSF over my suggestion?

Sembra che tu ti abbia già fatto un'idea degli aspetti negativi, e io ne ho di gree con alcuni di essi (non separa abbastanza layout e logica, e l'HTML risultante è spesso atroce), ma non sono d'accordo sugli altri ( se usi Facelets, che consiglio vivamente, l'output dovrebbe essere sicuramente valido.

Quindi ecco alcuni vantaggi:

  • Ci sono alcune librerie di componenti molto potenti come PrimceFaces o RichFaces che offrono un sacco di funzionalità fuori dalla scatola. Questi possono farti risparmiare molto lavoro se coprono le tue esigenze (non tanto se hai requisiti non negoziabili non coperti da loro).
  • Composite Components offre un modo molto semplice per modularizzare le tue pagine
  • JSF si integra molto bene con il resto di Java EE
  • AJAX tramite il re-rendering dei componenti è davvero facile e conveniente

Ma certamente nessuno di questi vantaggi è così grande che dovresti usare JSF su qualche altro framework di cui il tuo team ha già esperienza.

    
risposta data 24.07.2012 - 16:17
fonte
9

JSF è un framework web statistico adeguato per Java che è uno standard che significa che è supportato immediatamente da molti importanti fornitori (compresi quelli di FOSS). Ha un strong supporto per le librerie di terze parti (PrimeFaces, IceFaces, ecc.). Tuttavia, fondamentalmente 'rompe il web' a causa della sua natura di stato (e un sacco di altre cose). Vedi il confronto tra Matt Raible di framework web basati su JVM , JSF di solito si avvicina alla fine.

Modifica - con JSF 2.2 - puoi iniziare a sostenere che non rompe il web tanto quanto una volta. In effetti è l'integrazione HTML5 non è affatto terribile: -).

    
risposta data 24.07.2012 - 16:12
fonte
6

Avevamo un'applicazione legacy JSP / Struts 1.0. Abbiamo saltato Struts 2, JSF e tutto il resto che è successo da Struts 1 e siamo entrati in Spring 3.0. Ha supporto (e una comunità attiva) per la nostra lista dei desideri - Eclipse IDE, MVC e REST. Inoltre abbiamo abbandonato il nostro javery / jajax vintage homegrown per jquery.

YMMV, ma la primavera è stata una migrazione senza problemi per noi.

    
risposta data 24.07.2012 - 16:10
fonte

Leggi altre domande sui tag