Mondi su mondi, sistemi di sistemi.

Anatomia di uno StarKit

Una definizione

Uno StarKit è un criterio per impacchettare tutte le risorse neces­sarie ad un’applicazione in modo auto–contenuto, che non neces­sita di alcuna installazione e portabile.

In cosa differisce uno StarKit?

Non è un’idea nuova, pensiamo per esempio ai Jar nel mondo Java, che sono degli zip con un file – il MANIFEST.MF – che indica la classe per avviare l’applicazione. Tuttavia, un Jar non è stato pensato per essere completamente indipendente, tant’è vero che è pos­sibile indicare nel MANIFEST.MF dei para­metri per il clas­spath, anche se non funziona molto bene, anzi. Lo stesso può essere detto, grosso modo, anche per formati come war, ear e compagnia bella.

Se tralasciamo la questione dell’auto–contenimento, il tratto distintivo di uno StarKit è l’uso di un file system virtuale, che consente all’applicazione di comportarsi esattamente come se fosse lanciata da una versione “spacchettata”. All’avvio, questo file system viene infatti montato in modo che appaia dal punto di vista dell’applicazione come una normale directory.

Creare uno StarKit con sdx

Uno StarKit viene creato con… un altro StarKit, chiamato StarKit Developer eXtension (sdx), a cui pas­seremo la nostra applicazione da impacchettare. In ogni caso la struttura risultante sarà una cosa del genere:

  • myKit.vfs
    • main.tcl
    • lib
    • app-myKit
      • myKit.tcl
      • pkgIndex.tcl

La sequenza di avvio

Ovvero, tutta l’applicazione viene messa sotto lib, mentre in main.tcl viene inserito il codice (generato da sdx) neces­sario all’avvio dell’applicazione:

 package require starkit
 starkit::startup
 package require app-myKit

La prime due righe caricano il modulo dello starkit, inizializzando il file system virtuale e configurando la variabile auto_path; la terza riga causa il caricamento di myKit.tcl e l’avvio vero e proprio dell’applicazione.

La pros­sima volta parleremo degli StarPack.

Per proseguire

Commenti e trackback sono disabilitati.