10

Qualcuno sa di un buon framework di sviluppo software o simile che ha le seguenti proprietà?Esistono piattaforme software runnable, non installabili, multipiattaforma (con interfaccia grafica)?

  • Piattaforma incrociata: dovrebbe essere eseguibile su XP, Vista, OSX e versioni comuni di Linux (come Ubuntu e Kubuntu).
  • Nessuna installazione: essere in grado di eseguire il software da una penna USB senza dover copiare nulla sul computer host.
  • Avere un buon supporto GUI (questo è il motivo per cui this question non fornisce una risposta adeguata, per quanto ne so).
  • Licenza permissiva come LGPL o BSD o simile.

Tra i requisiti più morbidi stanno avendo un insieme di astrazioni per le funzionalità più comuni backend, come prese, archiviare IO, e così via (C'è di solito alcuni adattamenti specifici della piattaforma necessari), e supportante una buona lingua così come Python o C++, anche se di solito è divertente impararne uno nuovo (cioè non perl).

Penso che i possibili candidati siano Qt 4.5 o successivo (ma il software IFAIK Qt non funzionerà su Vista senza alcuna installazione (?)), Alcuni wxWidgets o forse una soluzione wxPython, forse gtkmm. Gli esempi che ho trovato hanno fallito su uno o l'altro dei requisiti. Questo non significa che nessun esempio di questo tipo esista, significa solo che non ne ho trovato nessuno. Quindi mi stavo chiedendo se qualcuno là fuori sa di qualche soluzione esistente a questo?

Alcune precisazioni;

  • Con "framework" intendo qualcosa come Qt o gtkmm o python con un pacchetto di widget.
  • Si tratta di essere in grado di eseguire il prodotto finito su più piattaforme, da una chiavetta, senza installazione, non si tratta di avere un ambiente di sviluppo portatile.
  • Non è uno stivale.
  • È necessario compilare il software in modo specifico per i diversi target, se necessario.

Il caso d'uso che sto vedendo è che hai qualche software che si basano su (come la pianificazione del progetto, la somministrazione di informazioni, strumenti di analisi o simili) che:

  • non si basa su avere una connessione internet è disponibile.
  • viene eseguito su diverse macchine host in cui non è proprio corretto installare nulla.
  • viene spostato da un utente tramite un supporto fisico (ad esempio una chiavetta USB).
  • viene eseguito su diversi sistemi operativi, come Windows, Vista, Ubuntu, OSX.
  • funziona sugli stessi dati su questi host diversi (i dati possono essere memorizzati sull'host o sul bastone).
  • non è davvero limitato in quanto è grande il framework in bundle (a meno che non sia diversi gigabyte, che non è veramente realistico).

È anche corretto disporre di installazioni parallele sulla chiavetta finché il software si comporta allo stesso modo e può funzionare sugli stessi dati quando viene eseguito su destinazioni diverse.

Una vista diversa sul caso d'uso sarebbe che ho cinque macchine appena installate con Vista, XP, OSX, Ubuntu e Kubuntu rispettivamente davanti a me. Mi piacerebbe, senza dover installare nulla di nuovo sulle macchine, essere in grado di eseguire lo stesso software da una sola chiavetta USB (rispettando i requisiti della GUI di cui sopra e così via) su ciascuna di queste cinque macchine (anche se, se necessario, da diverse fasci sul bastone).

È possibile?

Modifica: Ho sperimentato un po 'con un'applicazione Qt che utilizza alcuni widget e un database SQLite. È stato facile farlo funzionare su un ubuntu dist e su osx. Per windows xp e vista ho dovuto copiare QtCored4.dll, QtGuid4.dll, QtSqld4.dll e mingwm10.dll nella directory di distribuzione (questo era il codice di debug) e ho copiato il qsqlited4.dll in una cartella denominata "sqldrivers" nella distribuzione directory.

+0

Last.FM usa QT e che gira su Vista bene. – Fowl

+0

Senza installazione? – FeatureCreep

risposta

4

Si menziona wxWidgets ma si rifiuta di soddisfare almeno uno dei requisiti.

Non so che cosa siano le vostre esigenze e in che modo wxWidgets non avrebbe funzionato per voi, ma IMO lo fa loro compiere:

piattaforma Croce: dovrebbe essere eseguibile su XP, Vista, OSX e versioni comuni di Linux.

Esso viene eseguito su queste piattaforme, ma "versioni comuni di Linux" non è abbastanza buono, come si può mai essere sicuri che le librerie GUI necessari per wxGTK (che non dovrebbero essere collegati a staticamente) saranno installato. Questo è comunque un problema anche per altre soluzioni, a meno che non si preveda di inserire nella barra.

Nessuna installazione: essere in grado di eseguire il software da una penna USB senza dover copiare nulla sul computer host.

Vedere il punto precedente, è necessario specificare quali librerie sono necessarie su Linux. Inoltre è possibile specificare al momento della compilazione di non utilizzare alcune delle librerie fornite dal sistema (ad esempio per grafica, compressione, espressioni regolari), ma utilizzare invece le librerie interne wxWidgets.

avere un buon supporto GUI

Check.

Licenza permissiva come LGPL o BSD o simile.

Check. Puoi anche collegare staticamente wxWidgets alla tua applicazione.

sostenere un buon linguaggio come Python o C++

supporta sia, e ci sono attacchi ad altre lingue.

avere un insieme di astrazioni per le funzionalità più comuni di back-end, come prese, il file IO, e così via

E ha alcuni astrazioni del genere, ma si può collegare ad altri cross- anche le librerie di piattaforma.

Usiamo wxWidgets per FlameRobin, un programma di amministrazione grafica per il server Firebird SQL. Ha porte attive su Windows, Linux e Mac OS X ed è stato compilato per almeno alcune varianti BSD e Solaris. Funziona sicuramente da un bastone su Windows, non ho provato con Linux o Mac OS X, ma non vedo perché non dovrebbe esserci anche lì.

+0

Grazie. Buone informazioni In realtà, non mi importa di avere "enormi" pacchi sul bastone in quanto sono abbastanza economici in questi giorni. Sto cercando di minimizzare la necessità/il rischio di dover installare qualcosa sul target. Aggiungerò una sorta di caso d'uso alla domanda. – FeatureCreep

+0

Ancora non vedo nulla nelle vostre esigenze che eliminerebbe una soluzione wxWidgets. Quello che ho menzionato come aree problematiche nella mia risposta è molto probabilmente problematico anche con altre soluzioni, se si intende integrarsi con il desktop Linux. Con ogni soluzione sarà necessario definire alcuni requisiti di base per l'esecuzione del sistema operativo di destinazione. – mghie

+0

Vedo. Pensi che sia possibile raggruppare le librerie wxGTK per evitare il problema di installazione? O sto fraintendendo le tue argomentazioni? – FeatureCreep

0

Bene, dipende da cosa intendi per "pacchetto". Kylix si è avvicinato ad essere una cosa del genere. Era basato su QT e ti permetteva di scrivere una volta e compilare per Windows + Linux. Tuttavia, non era una soluzione open source.

+0

Ok, intendo "pacchetto" come in "framework", penso. Lo cambierò. – FeatureCreep

2

Potete guardare Mono è cross platform, ha GUI (GTK +, o WinForms 2.0) e posso eseguire codice senza installare.

+0

Grazie. Conoscete qualche esempio di un software di questo tipo senza installazione? Cioè che non ha bisogno di un runtime mono da installare sulla destinazione e non collega il runtime in modo statico (dal momento che questo sembra richiedere licenze diverse)? – FeatureCreep

+0

La ragione per cui chiedo è che ho cercato su google ma non ho trovato alcun esempio. – FeatureCreep

+1

In realtà, ora ho trovato alcuni esempi: http://cocoa-sharp.com/index.php?option=com_content&task=view&id=4&Itemid=1 – FeatureCreep

4

Java.

  • Ha il supporto della GUI.

  • Fornisce la rete/file/etc. astrazioni.

  • È multipiattaforma. La maggior parte delle piattaforme si può pensare di avere un JRE disponibile.

  • Non è necessario installare un JRE. Probabilmente la maggior parte degli utenti ne ha già uno e, in caso contrario, è possibile eseguire correttamente il giusto JRE.

  • È possibile fornire diversi script di avvio per varie piattaforme per eseguire l'applicazione sotto la JRE appropriata.

+0

Grazie, vale la pena esaminare. – FeatureCreep

+0

+1. L'unica opzione a cui posso pensare davvero. Mono ha alcuni problemi minori a volte (non so se questo si applica se in realtà DEVELOP l'app in mono) – WhyNotHugo

+0

Non ho giocato con Mono, ma sono diffidente di quanto sia "compatibile" davvero. –

3

Qualcos'altro da considerare è HTML + Javascript. : D

+0

Vuoi dire una specie di esecuzione senza server solo nel browser? – FeatureCreep

+0

Sì. È * molto * ampiamente supportata (se variata), ma probabilmente avrai problemi a vivere all'interno della sandbox. Puoi fare molto anche se non hai un server. Tuttavia, un server aiuta: D – Fowl

+0

È necessaria MOLTA programmazione, ma in realtà è al 100% multipiattaforma. Bene. – WhyNotHugo

0

Ho posto una domanda simile in questo collegamento http://www.24hsoftware.com/DevelopersForum/CrossPlatform-C-Library.html e il miglior risultato sembra essere QT.

Ho iniziato a utilizzare QT, ma non è così facile come mi aspettavo principalmente a causa di problemi di distribuzione dovuti all'inferno della DLL, all'inferno di Winsxs e all'inferno manifesto.

+1

Ho provato anche Qt, e la mia esperienza è l'opposto. Per Windows ho semplicemente inserito le relative Qt dll nella stessa directory dell'app e il plugin sqlite di cui avevo bisogno doveva essere inserito in una directory di plugin. Questo ha funzionato su osx, ubuntu, xp e vista. Aggiornerò la domanda con qualche altro dettaglio quando avrò il tempo. – FeatureCreep

0

Tclkit è un singolo file, il sistema di Tcl/Tk autonomo. La versione Mac che ho è di circa 3,8 mega. È possibile ottenere una versione per quasi tutti i sistemi operativi moderni. Mi porto dietro una chiavetta con i binari mac, windows e linux in modo da poter eseguire i miei script su qualsiasi piattaforma. Non è richiesta alcuna installazione, basta copiare un file dove vuoi.

Le versioni più recenti di tcklit utilizzano native, widget a tema (anche se, su * nix ci realmente non è un unico insieme "nativo" di widget ...)

Problemi correlati