Esiste un altro strumento di livello di presentazione fortemente integrato diverso da JSF / JSP per Java EE?

StackOverflow https://stackoverflow.com/questions/296325

Domanda

Sto insegnando Java EE all'università, e questa era una domanda posta da uno studente. Ho detto "no", ma non ne ero davvero sicuro, quindi ho pensato di potervi chiedere potenti sviluppatori. :)

Fondamentalmente, quello che mi piacerebbe fare è usare le entità se fossero nel mio contesto: getter di gatti, setter, ecc., così come i normali POJO. se uso un bean usando il suo inferface remoto, le entità vengono disaccoppiate dall'infrastruttura di base, quindi è un no-go.

Ho pensato di scrivere un livello come questo nella mia tesi di laurea specialistica. Se è un'idea morta, sentiti libero di dirmelo. In caso contrario, dimmi se ne desideri uno.

O se esiste uno strumento simile, fammelo sapere!

È stato utile?

Soluzione

In un'applicazione Java EE di base del mondo moderno, è suddivisa in vari livelli, in cui sono presenti 4 livelli di base

+--------------------+
|   Presentation     |
+--------------------+
| Controller/Actions |
+--------------------+
| Business Delegate  |
|     (Service)      |
+--------------------+
|  Data Access Layer |
+--------------------+
|      Database      |
+--------------------+

Le tue applicazioni dovrebbero essere divise in questi livelli fin dall'inizio, in modo tale che in qualsiasi momento puoi sostituire qualsiasi livello senza influenzare nessuno dei suoi livelli fratelli.

Esempio se hai utilizzato JDBC per il livello di accesso ai dati, dovresti essere in grado di sostituirlo con Hibernate senza influire sul delegato aziendale o sul livello del database. Il vantaggio di utilizzare tale architettura è consentire la collaborazione con più tecnologie. Il tuo delegato aziendale (livello di servizio) dovrebbe essere in grado di parlare con un servizio web e gestire l'elaborazione delle applicazioni senza nemmeno andare a un browser!

Per quanto riguarda l'utilizzo di JSP come livello di presentazione, ci sono altre tecnologie disponibili come velocità , freemarker , come già menzionato iberck, Tapestry ha anche un proprio motore di rendering. È possibile utilizzare XML + XSLT anche per eseguire il rendering dell'interfaccia utente. Esistono anche app per la gestione dell'interfaccia utente come Tiles e sitemesh , che ti aiuta a integrare varie tecnologie come diversi componenti della pagina e mostrarle come una sola.

Puoi anche usare componenti swing leggeri clubbati con JNLP e sviluppare un'applicazione enterprise in stile desktop. Tutto ciò di cui abbiamo bisogno è un po 'di immaginazione e requisiti del cliente e possiamo usare letteralmente qualsiasi cosa come livello di presentazione.

Altri suggerimenti

Non l'ho mai provato, ma JSF dovrebbe funzionare meglio con Facelets che con JSP.

IBM ha un articolo al riguardo.

Ah. Sembra che tu non abbia capito bene la mia domanda :)

I bean sono lì per fornire servizi all'interno di un'applicazione. Diciamo che mi piacerebbe sviluppare un'applicazione java autonoma con una gui swing, e da quella applicazione mi piacerebbe usare le entità presenti nell'ambito dell'app java ee.

Questo è ciò che mi piacerebbe fare senza soluzione di continuità: creare entità, modificarle, eliminarle in modo intuitivo, senza preoccuparsi dei problemi di distacco di EntityManager (se si chiama un bean in remoto e restituisce un oggetto entità, esso verrà rimosso prima del ritorno).

Non voglio sviluppare un'applicazione web. JSF / JSP e simili sono fortemente integrati, ma in molti ambienti un'applicazione client autonoma sarebbe migliore. :)

Vedendo il tuo commento nel mezzo, vedo che vuoi un framework desktop su Java EE.

La risposta qui è che JSF funziona sull'API servlet. Ed è sicuramente per il web, ma aspetta, puoi ancora incorporare tomcat o molo nella tua applicazione!

Le possibilità sono praticamente infinite, se il livello aziendale è ben definito, basta creare un livello oscillante che chiama le funzioni aziendali.

Inoltre, Java EE è un'API, alcune parti possono essere sostituite o puoi semplicemente usarne una parte. Il contenitore serve principalmente per gestire EJB, Servlet JNDI e altre piccole cose. Tutto questo può essere utilizzato anche dalle app desktop.

Quindi la risposta dipende dal tuo obiettivo specifico e dall'attuale progettazione / implementazione dell'applicazione.

Un'alternativa è Spring Framework . Spring fornisce il proprio supporto per l'associazione di oggetti entità alla vista e gestisce il recupero / impostazione per te una volta che è cablato. Ci sono molti moduli Spring tra cui scegliere. Vale la pena dare un'occhiata a Spring MVC e Spring Webflow. Spring MVC (IMO) è più semplice da iniziare, ma Sring Webflow consente una navigazione più complessa e più opzioni di ambito (ad es. Ambito di flusso). Se stai cercando un libro Spring In Action è la discesa. Ci sono alcuni concetti che dovrai affrontare (come l'iniezione di dipendenza) per usare Spring, ma ne vale la pena.

Un'altra alternativa è Tapestry5 framework. Tapestry è un framework open source per la creazione di applicazioni Web dinamiche, robuste e altamente scalabili in Java. Tapestry integra e si basa sull'API Java Servlet standard, quindi funziona in qualsiasi contenitore di servlet o application server.

Tapestry divide un'applicazione web in una serie di pagine, ognuna costruita da componenti. Ciò fornisce una struttura coerente, che consente al framework Tapestry di assumersi la responsabilità di problemi chiave come la costruzione e l'invio di URL, l'archiviazione permanente dello stato sul client o sul server, la convalida dell'input dell'utente, la localizzazione / internazionalizzazione e la segnalazione delle eccezioni. Lo sviluppo di applicazioni Tapestry comporta la creazione di modelli HTML utilizzando HTML semplice e la combinazione dei modelli con piccole quantità di codice Java. In Tapestry, crei la tua applicazione in termini di oggetti, metodi e proprietà di tali oggetti, e in particolare non in termini di URL e parametri di query. Tapestry porta un vero sviluppo orientato agli oggetti nelle applicazioni web Java.

L'ideologia alla base dei bean è oggigiorno in qualsiasi vero framework Java che conosco. Come accennato in precedenza, Spring è un buon / ottimo framework per la logica di business (controlla il suo template jdbc , sono semplicemente fantastici - un altro grande gioiello è applicationContext.xml che è) e per il livello vista preferisco personalmente Apache Wicket .

Non credo che dovresti crearne uno tuo, ma invece trova un framework adatto alle tue esigenze e inizia a contribuire alla sua base di codice, in questo modo inizierai con una base di utenti già formata e il tuo codice verrà creato in modo più approfondito che a sua volta ti renderà un programmatore migliore.

grails ( http://www.grails.org/ ) o griffon ( http://griffon.codehaus.org/ ) potrebbe essere interessante

StringTemplate è scritto da Terrence Parr, l'uomo dietro ANTLR. Se sei interessato a generare una sorta di presentazione testuale da un modello, questo è molto buono.

Ho ottenuto risultati eccellenti utilizzandolo per generare XML, pagine Web e file dot dallo stesso modello. Scrivi un modello per renderizzare un oggetto. Tale modello può chiamare altri modelli (incluso ricorsivamente), in base ai dati derivati ??dal modello. (qv Funzioni immagine )

Getter e map.get () sono richiamabili direttamente dai template. Il modello può essere qualsiasi POJO. ST è orgogliosa della sua rigorosa separazione dal controller, quindi nei template stessi è consentita una logica minima.

Come con tutte queste piccole lingue, è qualcosa di nuovo da imparare e potrebbe non essere quello che stai cercando. È stato davvero perfetto per me.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top