# Titanium SDK

Titanium SDK è un framework open source che consente la creazione di applicazioni mobili native su piattaforme iOS e Android da un'unica codebase JavaScript. Titanium SDK è attualmente sviluppato dalla fondazione software senza scopo di lucro TiDev, Inc.
Nel febbraio 2013, Business Insider ha stimato che il 10% di tutti gli smartphone in tutto il mondo esegue app realizzate con Titanium. Dal 2017, Titanium aveva accumulato oltre 950.000 registrazioni di sviluppatori.
Il componente principale dell'ecosistema software Titanium è il kit di sviluppo software con licenza Apache, Titanium SDK. Alloy, un framework model-view-controller basato su Titanium, è un progetto correlato attualmente gestito e sviluppato da TiDev, Inc per l'utilizzo con Titanium SDK, che consente di semplificare e velocizzare lo sviluppo.
Titanium SDK è stato originariamente sviluppato e gestito da Appcelerator, Inc, poi successivamente da Axway, Inc dopo che Axway ha acquistato Appcelerator nel 2016. Oggi il Titanium SDK e i progetti correlati sono mantenuti dagli sviluppatori sotto la direzione della società senza scopo di lucro dell'Alabama TiDev, Inc. con sede a Centreville, Alabama.

## Architettura

Le caratteristiche principali di Titanium SDK includono:
* API multipiattaforma per l'accesso a componenti nativi dell'interfaccia utente come barre di navigazione, menu, finestre di dialogo e funzionalità native del dispositivo, inclusi file system, rete, geolocalizzazione, notifiche, accelerometro e mappe.
* Le funzionalità non incluse nelle API, possono essere aggiunte con Hyperloop e con i moduli nativi.
* Il framework Alloy basato sul paradigma MVC.
Tutto il codice sorgente dell'applicazione viene distribuito sul dispositivo mobile dove viene interpretato utilizzando un motore JavaScript; Rhino di Mozilla viene utilizzato su Android e BlackBerry e JavascriptCore di Apple viene utilizzato su iOS. Nel 2011 è stato annunciato che era in fase di sviluppo un porting per il motore JavaScript V8 di Google che, una volta completato, avrebbe migliorato significativamente le prestazioni. Il caricamento del programma richiede più tempo rispetto ai programmi sviluppati con gli SDK nativi, poiché l'interprete e tutte le librerie richieste devono essere caricate prima che possa iniziare l'interpretazione del codice sorgente sul dispositivo.
Titanium fornisce API per:
* Utilizzo di funzionalità hardware specifiche, come i pulsanti del menu Android
* Uso di controlli specifici del sistema operativo, come i controlli dell'interfaccia utente di Cocoa su iOS
* Partecipazione all'ecosistema della piattaforma, ad esempio utilizzando i meccanismi di notifica delle specifiche piattaforme

## Storia

Quando è stato introdotto nel dicembre 2008, Titanium era destinato allo sviluppo di applicazioni desktop multipiattaforma ed è stato talvolta paragonato ad Adobe Air. Tuttavia, ha aggiunto il supporto per lo sviluppo di applicazioni mobili per iPhone e Android nel giugno 2009 e nel 2012 Titanium Desktop è stato scorporato in un progetto separato guidato dalla comunità chiamato TideSDK. Il supporto per lo sviluppo di app per tablet basate su iPad è stato aggiunto nell'aprile 2010. Il supporto BlackBerry è stato annunciato nel giugno 2010, ed è stato in versione beta da aprile 2013. Il supporto di Tizen è stato aggiunto anche nell'aprile 2013 con le versioni 3.1.0 Titanium Studio e SDK. L'ultima aggiunta alla piattaforma nel 2016 è stata Hyperloop, una tecnologia per accedere alle API native su iOS, Android e Windows con JavaScript.
Nell'aprile 2010, Appcelerator ha ampliato la linea di prodotti Titanium con Titanium Tablet SDK. Titanium Tablet SDK attinge in gran parte dal supporto esistente per iPhone, ma include anche il supporto nativo per i controlli dell'interfaccia utente solo per iPad, come la suddivisione delle finestre e le popover. Inizialmente l'SDK mobile supportava solo lo sviluppo per iPad, ma ora il supporto include anche i tablet basati su Android.
Nel giugno 2011, Appcelerator ha rilasciato Studio e Titanium Mobile 1.7. Studio è un IDE standard completamente aperto derivato da Aptana Studio che Appcelerator ha acquisito nel gennaio 2011.
Nel giugno 2013, Jeff Haynie, CEO di Appcelerator, ha annunciato che la società aveva avviato Ti.Next, un progetto per riscrivere Titanium SDK in Javascript per migliorare le prestazioni e avvicinare gli utenti finali di Titanium, che scrivono in Javascript, al codice interno. In un post sul blog, ha scritto:
   Riteniamo che JavaScript dovrebbe essere il linguaggio giusto per sviluppare Titanium, non solo app con Titanium SDK. Con Ti.Next, abbiamo creato un piccolo progetto di microkernel che ci consentirà di avere un codice di bootstrap minimo nel linguaggio nativo (C, Java, C#, ecc.) che dialoga con un set comune di compilatori, strumenti e una singola macchina virtuale JavaScript. Abbiamo trovato un modo per far funzionare la VM WebKit KJS su più piattaforme invece di utilizzare macchine virtuali diverse per piattaforma. Ciò significa che possiamo ottimizzare pesantemente il microkernel (di seguito chiamato "TiRuntime") e la manutenzione, le ottimizzazioni e la profilazione possono essere notevolmente semplificate. Stiamo parlando di ~5K LOC contro 100K LOC per piattaforma.
Nel gennaio 2016, Appcelerator è stata acquisita da Axway, una società di software globale con oltre 11.000 clienti del settore pubblico e privato in 100 paesi. Da allora, i piani Indie sono stati nuovamente resi gratuiti, incluso l'accesso API nativo con Hyperloop.

### Versioni

| Versione (prima del 2021) | Data di uscita |
| 1.0.0 | 9 marzo 2010 |
| 1.6.0. GA | 23 febbraio 2011 |
| 1.7.0. GA | 7 giugno 2011 |
| 2.0.0. GA | 30 marzo 2012 |
| 2.1.0. GA | 28 giugno 2012 |
| 3.0.0. GA | 13 dicembre 2012 |
| 3.3.0. GA | 16 luglio 2014 |
| 3.4.0. GA | 26 settembre 2014 |
| 3.5.0. GA | 13 gennaio 2015 |
| 4.0.0. GA | 20 maggio 2015 |
| 4.1.0. GA | 8 luglio 2015 |
| 5.0.0. GA | 16 settembre 2015 |
| 5.1.0. GA | 20 novembre 2015 |
| 5.2.0. GA | 22 febbraio 2016 |
| 5.3.0. GA | 2 giugno 2016 |
| 5.4.0. GA | 10 agosto 2016 |
| 5.5.0. GA | 13 settembre 2016 |
| 6.0.0. GA | 14 novembre 2016 |
| 6.1.0. GA | 26 maggio 2017 |
| 6.2.0. GA | 13 settembre 2017 |
| 6.3.0. GA | 1º novembre 2017 |
| 7.0.0. GA | 8 dicembre 2017 |
| 7.1.0. GA | 14 marzo 2018 |
| 7.2.0. GA | 14 giugno 2018 |
| 7.3.0. GA | 17 agosto 2018 |
| 7.4.0. GA | 17 settembre 2018 |
| 7.5.0. GA | 15 novembre 2018 |
| 8.0.0. GA | 14 marzo 2019 |
| 8.0.2. GA | 18 giugno 2019 |
| 8.1.0. GA | 28 agosto 2019 |
| 8.2.0. GA | 14 novembre 2019 |
| 8.3.1. GA | 17 gennaio 2020 |
| 9.0.0. GA | 18 marzo 2020 |
| 9.0.1. GA | 16 aprile 2020 |
| 9.0.2. GA | 19 maggio 2020 |
| 9.0.3. GA | 10 giugno 2020 |
| 9.1.0. GA | 14 agosto 2020 |
| 9.2.0. GA | 23 settembre 2020 |
| 9.2.1. GA | 6 ottobre 2020 |
| 9.2.2. GA | 29 ottobre 2020 |
| 9.3.0. GA | 14 dicembre 2020 |
| Versione (dal 2021) | Data di uscita |
| 9.3.1. GA | 25 gennaio 2021 |
| 9.3.2. GA | 11 febbraio 2021 |
| 10.0.0. GA | 17 maggio 2021 |
| 10.0.1. GA | 28 luglio 2021 |
| 10.0.2. GA | 10 agosto 2021 |
| 10.1.0. GA | 28 settembre 2021 |
| 10.1.1. GA | 19 novembre 2021 |
| 11.0.0. GA | 1 luglio 2022 |
| 11.1.0. GA | 8 settembre 2022 |
| 11.1.1. GA | 26 settembre 2022 |
| 12.0.0. GA | 30 dicembre 2022 |
| 12.1.0. GA | 24 aprile 2023 |
| 12.1.1.GA | 28 aprile 2023 |
| 12.1.2.GA | 2 giugno 2023 |
| 12.2.0.GA | 15 settembre 2023 |
| 12.2.1.GA | 9 ottobre 2023 |
| 12.3.0.GA | 16 febbraio 2024 |
| 12.3.1.GA | 12 giugno 2024 |
| 12.4.0.GA | 17 luglio 2024 |
| 12.5.0.GA | 16 settembre 2024 |
| 12.5.1.GA | 2 ottobre 2024 |
| 12.6.0.GA | 12 dicembre 2024 |
| 12.6.1.GA | 19 dicembre 2024 |
| 12.6.2.GA | 3 febbraio 2025 |
| 12.6.3.GA | 6 marzo 2025 |

## Caratteristiche notevoli
### Integrazione Angular

Da aprile 2018 è possibile utilizzare Angular 6 in combinazione con Titanium per sviluppare app mobili.

### Integrazione Vue.js

Oltre all'integrazione Angular è anche possibile utilizzare Vue.js (a partire da maggio 2018) come framework per sviluppare app.

### Supporto ES6

Titanium supporta le funzionalità di ES6 a partire dall'SDK 6.1.0 come le Classi, le arrow function e altro ancora.

### Hyperloop

Hyperloop consente all'utente di accedere al codice nativo (Java, Objective-C, Swift, C#) all'interno di JavaScript e utilizzare librerie di terze parti.

### App native

Con Titanium SDK le app compilate utilizzano componenti dell'interfaccia utente nativi attraverso il tuo codice JavaScript. Il vantaggio è che si avrà la migliore esperienza utente su ogni piattaforma poiché si utilizzano elementi nativi invece di creare elementi personalizzati.

### Codice riutilizzabile

Uno degli obiettivi di Titanium è riutilizzare quanto più codice possibile per le varie piattaforme. Esiste un elevato livello di parità di componenti e l'utilizzo del framework Alloy MVC consente di condividere fino al 90% del codice su tutte le piattaforme. D'altra parte, si possono integrare funzionalità specifiche della piattaforma in modo molto semplice.
Esempio basilare di una finestra con una barra delle azioni Android (che sarà nascosta su iOS).