Qual è il modo migliore per gestire le sfumature per piattaforme diverse?

2

Sto lavorando su una normale applicazione desktop Java / SWT che sto pianificando di distribuire alle tre piattaforme PC principali (Windows, OSX, Linux). Ovviamente, ci sono lievi differenze tra loro, principalmente con i file.

Qual è il modo migliore per tenere separate queste differenze? Sto pensando a tre diversi rami SVN (win, osx, linux) e trunk per lo sviluppo, ma come faccio ad aggiornare i rami senza sovrascrivere le differenze? Devo definire una piattaforma costante invece al momento della compilazione?

E poi, naturalmente, ci sono diverse versioni di librerie (ad esempio SWT nel mio caso). Come dovrebbero essere gestiti questi? Dove devo conservare i file ".jars" del codice byte compilato?

    
posta Jonah 26.01.2011 - 20:01
fonte

1 risposta

4

Per l'esempio che hai fornito (percorsi dei file), dovresti usare un file di configurazione. Puoi averne uno per ogni piattaforma o uno grande con le impostazioni per tutte le piattaforme. Mi sporgo verso la prima opzione, perché quindi puoi semplicemente usare quel file e impostare tutti i percorsi. Java ha un ricco set di metodi per costruire percorsi di file indipendenti dalla piattaforma; usa cose come File.separator piuttosto che \ .

Generalmente in Java non è necessario avere progetti separati per piattaforme separate - ecco perché la JVM! Utilizza componenti specifici per solo le parti dell'applicazione che sono specifiche della piattaforma. Nella mia esperienza, non ho visto nulla in Java che deve cambiare per piattaforme diverse. Interagire con il filesystem è più complicato, ma ci sono modi per aggirarlo come descritto sopra. Detto questo, dovresti comunque testare sulle piattaforme che intendi implementare per essere sicuro che tutto funzioni, a volte ci sono sottili differenze nelle JVM per applicazioni specializzate.

Il mio consiglio per i vasi e altri componenti specifici della piattaforma è di avere una struttura di directory simile a questa nel VCS:

/src
/lib
   linux/
      jars/
      config/
   windows/
      jars/
      config/

Quindi negli script di compilazione, includi solo la cartella di cui hai bisogno per la piattaforma che stai creando. Includerei la cartella come lib nella tua build, quindi per una build di Linux avresti finito con (come suggerimento):

/
*yourjar*
*launchfiles*
/lib
   jars/
   config/

Chiudi tutto quello che vuoi e decomprimilo dove vuoi installarlo. Ciò eviterà di dover specificare percorsi più volte nel codice a spese di un processo di compilazione leggermente più complicato. Probabilmente potresti metterlo anche in un programma di installazione di Windows.

    
risposta data 26.01.2011 - 20:44
fonte

Leggi altre domande sui tag