Newsgroup: it.comp.java
Titolo: Sviluppo rapido di web apps desktop-like

Ciao a tutti,
sono alla ricerca di un IDE RAD visuale che mi consenta il rapido
sviluppo di applicazioni web desktop-like, con interfaccia a finestre.
La cosa che mi servirebbe è un IDE che mi aiuti visivamente nella
creazione delle UI, e nel binding dei dati con i componenti della UI.
Cosa mi consigliate?
Spero possiate aiutarmi. Grazie mille in anticipo!

 Spero possiate aiutarmi. Grazie mille in anticipo!
beh se cerchi il massimo credo che intendi pagare un
ambiente del genere... Eccolo comunque:
http://www.embarcadero.com/products/jbuilder

Grazie per il consiglio TheStylist! :-) Lo proverò...
Avresti da suggerirmi anche qualche alternativa?
Come open source o di libero utilizzo esiste qualcosa del genere?
Forse ci si può avvicinare con JDeveloper, o con Netbeans + IceFaces...

 Forse ci si puņ avvicinare con JDeveloper, o con Netbeans + IceFaces...
si sono due soluzioni alternative, come anche l'uso
di Eclipse + Visual Editor (o Jigloo, che offre una versione
di libero utilizzo ed una a pagamento)

Cosa ne pensate invece di JavaFX per applicazioni web del tipo su
descritto?
Oppure di Silverlight o Flex...


Ciao, non conosco jdeveloper, ma gli altri so che sono molto carenti
in alcune parti o eccessivamente macchinosi. Personalmente mi son
trovato molto bene con seam framework, in un mese ho imparato ad
usarlo e con seam gen, generatore abbinato al framework, col quale ho
realizzato un prodotto di tutto rispetto.
Attenzione, che devi avere un po' di familiarità con jsf e hibernate
annotation, altrimenti diventi pazzo. JBoss ti da anche, insieme al
framework, una serie di tool di sviluppo, che ho trovato davvero
comodi.
Questa è, ad oggi, l'opzione java più rapida per sviluppare, una volta
appresa la metologia, sia chiaro.
L'alternativa per fare un'applicazione visuale desktop like è quella
di scriverti il core dell'applicazione con un framework tipo jersey o
resteasy, per costruire delle API che accedono alla base dati. Il
resto lo fai tutto client side. Bello e potente, ma devi conoscere
necessariamente il linguaggio lato client, ma questo punto puoi poi
montarci adobe flex o flash, silverlight, un telefonino android, o
ancora l'iphone o l'ipad, quello che ti pare insomma. A mio avviso
java fx è bello, ma da scartare perché serve la JVM sul client ed è
sempre una roba difficile da far digerire al cliente.
Ciao, Davide.

Grazie per la tua risposta Davide!
Proverò anche JBoss Seam... ma quindi hai a disposizione degli
strumenti per disegnare visivamente la UI, per fare il binding dei
componenti con i dati, e per programmare in modo event-driven?
Riguardo lo scrivere il core dell'applicazione con un framework tipo
jersey o resteasy, intendi creare i webservice che espongono il db, e
poi creare l'interfaccia lato client con Flex o Silverlight?
Fammi sapere please
Ciao!
Carmelo


Si, JBoss seam ti mette a disposizione dei tool per lo sviluppo
visuale, e per il binding. Ti da nelle jsf l'autocomplete delle
variabili e metodi che hai esposto all'interno degli ejb. Fico
davvero.
Ma la vera potenza è in seam gen, un generatore di codice che, a
partire dalla base dati, ti mette subito a disposizione un prototipo
funzionante. Fico no?
Seam gira su tomcat, glassfish e jboss.
Per realizzare invece un web service, beh, li è un po' più complesso,
non tanto come logiche, anzi molto banali, quanto perché devi
prenderti tutti i componenti e assemblarteli tu.
Ho quasi terminato un'applicazione con questo sistema e sembra stia
venendo davvero fico :) gli strati sono, a partire dal DB:
Server Side:
MySql -> Spring Framework -> Hibernate con Annotation -> Jersey JAX-RS
(REST Web Framework) -> Freemarker (al posto delle JSP)
Client Side:
jQuery (Libreria Javascript) -> jQueryUI (Crei i bottoni, le dialog,
dialog modali, i menu, etc) -> Alcune librerie da me prodotte per fare
la grid e le dialog di inserimento dati.
La comunicazione tra i due strati avviene, per scelta s'intende, via
json, con chiamate ajax. Più veloce e conciso di XML che, invece,
necessita il parsing.
Ho provato parecchi strumenti e framework, in java e non e
quest'ultimo è quello che mi sta dando più soddisfazioni, ma ero
combattuto con seam, perchè scrivi veramente in fretta.
Con quest'ultimo sistema hai invece il controllo su tutto, ma ci ho
messo 4 mesi per preparare l'architettura.
Ora però per fare il CRUD di una tabella, con finestra di ricerca e
campi di lookup ci metto 2 ore.
Anyway, se vuoi approfondire l'argomento web service, intesi come API
della base dati, studiati un po cos'è lo stile REST di programmazione,
il cui principio cardine, espresso da Roy Fielding, l'inventore del
protocollo HTTP, è quello di usare tutti e 9 i metodi del protocollo:
GET, PUT, POST, DELETE, HEAD, TRACE e CONNECT o perlomeno i primi
quattro.
L'idea è quella di identificare con un URL una risorsa e con i vari
metodi modificarne lo stato, ad esempio:
   GET 
http://www.pippo.com/users/
        -> restituisce l'elenco
degli utenti.
   GET 
http://www.pippo.com/users/davide/
 -> restituisce le
informazioni legate all'utente davide.
  POST 
http://www.pippo.com/users/
        -> Scrivi un nuovo utente e
il sistema ti restituisce il suo identificativo.
   PUT 
http://www.pippo.com/users/davide/
 -> Esegui l'update
dell'utente davide.
DELETE 
http://www.pippo.com/users/davide/
 -> Elimini l'utente davide.
Perché parlare quindi di tabelle DB, se si tratta di roba di
protocollo HTTP?
Semplice, la tua tabella si chiama users ed espone una serie di API su
web, atte a modificarne le informazioni al suo interno, usando dei web
services.
Per proteggere i dati, è sufficiente una normale login e verificare
poi che la sessione sia attiva.
Spero di essermi spiegato abbastanza bene.
Ciao, Davide

Ciao Davide, grazie per la tua risposta!
Riguardo JBoss Seam, i tools di cui parli sono integrati in un IDE
oppure devo scaricarmi diverse applicazioni?
Per avere un'idea di JDeveloper puoi dare un'occhiata a questo video
http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/JDev11gExperience/JDev11gExperience.html
Riguardo lo sviluppo con web services, potrebbe sicuramente avere dei
vantaggi questo tipo di architettura, ma per svilupparlo così
manualmente il tempo di sviluppo credo che cresca molto... non è così?
E poi potrebbe essere problematico per varie ragioni, ad esempio per
la generazione di reports, grafici, query particolari sui dati...
A presto,
Carmelo