È possibile avere una base di codice singolo per una GUI desktop e un'applicazione web?

3

L'interfaccia utente richiesta è abbastanza semplice; fondamentalmente, due tabelle che "interagiscono tra loro", ad es. determinate righe in una tabella vengono evidenziate quando si fa clic su una riga nell'altra, oltre a un pannello con grafici.

È possibile avere una base di codice (in gran parte) per un'app desktop e un'app Web che implementa questa interfaccia? Per alcuni motivi, sarebbe opportuno avere entrambe le versioni, ma non vorrei implementare la GUI due volte.

I dettagli del mio caso particolare sono i seguenti:

  1. Questo è un problema di ricerca accademica, quindi non ho vincoli rigidi in termini di strumenti e dello stile di codifica (o degli utenti!). D'altra parte, ho un certo limite di tempo.
  2. Deve funzionare su JVM nuda, ma qualsiasi linguaggio / framework sarebbe benvenuto (Java, Groovy, Scala, Clojure, ecc.).
  3. Non esiste uno stato persistente, ovvero non è strettamente necessario in un DB condiviso o in una parte server qualunque.
  4. Sarei disposto a passare attraverso alcuni schemi di progettazione per farlo funzionare (per progetti di design intendo alcune architetture di applicazioni non convenzionali).

È completamente assurdo pensare a qualcosa del genere? Se no, quali sarebbero gli strumenti per tirarlo fuori?

    
posta wxd 23.06.2014 - 11:45
fonte

4 risposte

1

Un browser è un'applicazione desktop, è molto facile mettere in valigia la tua guerra e installare il server (con il molo è davvero facile), in questo modo puoi eseguire la tua app in un computer autonomo.

Se vuoi due versioni, web e desktop, è perché una di queste versioni fornisce cose ai tuoi utenti che le altre versioni non possono dare, se stai pensando in un modo "automatico" di avere le due GUI perché sei pensando di avere praticamente la stessa app nel browser e nella versione desktop, perché stai pensando di sprecare il tuo tempo per costruire la stessa cosa due volte?

Nel riprendere, il problema è non pensare in un modo automatico di avere due guis, il vero problema è il suo pensiero in perché vuoi queste due versioni in primo luogo.

    
risposta data 23.06.2014 - 20:37
fonte
5

Il modo più semplice sarebbe implementarlo usando le tecnologie web (ad esempio i controlli HTML) in modo che possa essere visualizzato facilmente come una pagina Web e quindi creare un'app desktop che utilizza le stesse pagine html solo come "eseguibile" .

Per creare un'applicazione desktop è possibile visualizzare la pagina Web in un browser incorporato in un'applicazione che esiste unicamente per mostrare il browser in una finestra, oppure è possibile utilizzare qualcosa come il sistema HTA di Microsoft che presenta le pagine Web come stile desktop finestre.

L'unica altra alternativa è Wt . Si tratta di un sistema che accetta un'applicazione GUI basata su Qt e riscrive il meccanismo di disegno dai consueti controlli desktop in controlli html su una pagina Web. È piuttosto interessante considerando che la maggior parte delle applicazioni va al contrario. IIRC è molto trasparente in quanto è sufficiente modificare una o due righe del codice originale. Qt non è java, quindi lo sto solo indicando per completezza, è comunque piuttosto interessante:)

    
risposta data 23.06.2014 - 17:08
fonte
4

MVC è un buon modello per questo, ma è la parte V "Visualizza" che non è riutilizzabile da piattaforma a piattaforma.

Il codice per modificare il documento di una pagina Web sul clientide senza postback è javascript, che non è negoziabile.

Il codice per la modifica dei controlli in un'applicazione di formato nativa / jvm, ad esempio, non è javascript.

Quindi per la parte di presentazione la risposta è no, non proprio. Non per pagine web tradizionali e moduli nativi / java.

Tuttavia, il pattern MVC può rendere riutilizzabile la maggior parte del codice reale, con solo la visualizzazione e l'interazione della vista che devono essere specifiche della piattaforma.

    
risposta data 23.06.2014 - 19:07
fonte
0

È possibile tramite RAP con un singolo codice di base sviluppare un'applicazione Web che può essere installata anche come applicazione desktop. Ecco il link: link

    
risposta data 23.06.2014 - 14:27
fonte

Leggi altre domande sui tag