Bundle
# Bundle

In informatica un bundle, nei sistemi operativi sviluppati dalla Apple Inc. come iOS e macOS, è una directory che raggruppa un eseguibile e le relative risorse quali i file NIB, le immagini, i suoni in una struttura standardizzata.

Su altri sistemi come Microsoft Windows, le risorse necessarie al funzionamento dell'applicazione sono compilate direttamente nell'eseguibile. Invece su macOS si interagisce con queste risorse come se fossero normali file nel sistema. Lo scopo è di risolvere i problemi connessi con l'organizzazione delle risorse usando una più semplice struttura gerarchica di directory.

Solitamente nel bundle possono essere raggruppati le applicazioni, i framework e i plugin.

Il bundle non va confuso con il pacchetto, sebbene i due concetti possano sovrapporsi. Un bundle difatti può apparire come un'unica entità nel Finder (ad esempio i bundle applicazione), oppure essere completamente trasparente e mostrare la sua struttura interna (come nel caso dei framework). I documenti non sono considerati come bundle a tutti gli effetti.

## I bundle applicazione

Struttura gerarchica dei bundle applicazione:

* MiaApplicazione.app
   * Contents
      * MacOS
         * MiaApplicazione (eseguibile)
      * Resources
         * Lingua1.lproj
            * InterfacciaLingua1.nib
            * ImmagineLingua1.jpg
         * Lingua2.lproj
            * InterfacciaLingua2.nib
            * ImmagineLingua2.jpg
         * Suono
      * Frameworks
      * Shared Frameworks
      * Plugins

I bundle applicazione sono normalmente presentati all'utente sotto forma di "pacchetto". Questi file sono directory con il nome terminante con l'estensione .app. È possibile visualizzare il contenuto di un pacchetto facendo control-clic su di esso e scegliendo l'appropriata voce dal menu contestuale.

In un'applicazione, la directory contenuta nel bundle normalmente si chiama Contents; dentro di essa è solitamente contenuta una directory chiamata macOS, che contiene l'eseguibile, e una directory chiamata Resources, che contiene le risorse dell'applicazione. La directory Resources contiene le risorse e le interfacce utente in tutte le lingue in cui l'applicazione è stata localizzata. Queste risorse vengono archiviate all'interno di sotto-directory chiamate Lingua.lproj (ad esempio English.lproj oppure Italian.lproj).

Altre comuni sotto-directory sono Plugins, Frameworks e Shared Frameworks. La directory Frameworks contiene i framework usati dall'applicazione, che sono usati anche se versioni diverse di quei framework si trovano nel sistema. La directory Shared Frameworks contiene framework che possono essere utilizzati sia dalle applicazioni che li contengono sia da altre applicazioni; sono usati solo se non esiste una versione più recente nel sistema. La directory Plugins contiene estensioni utilizzabili dall'applicazione.

