Un SDK (Software Development Kit) è una suite di strumenti per realizzare programmi e applicativi per ogni tipo di piattaforma operativa (sistemi operativi) e piattaforma hardware.
Un SDK semplifica la scrittura del codice web, grazie alle librerie e ai moduli precompilati di cui è costituito, senza dover scrivere il codice da zero.
Gli SDK vengono in genere messi a disposizione degli sviluppatori da chi trova interesse nel lasciare loro sviluppare app e siti per le proprie piattaforme.
I Software Development Kit possono variare molto tra di loro, ma in generale presentano tutti degli strumenti e funzioni comuni. Questi sono:
- uno o più compilatori (per trasformare il codice sorgente dell’ app o sito web in un file eseguibile)
- librerie standard dotate di API (per poterle utilizzare a proprio piacimento)
- la documentazione necessaria all’utilizzo dell’ SDK stesso
- informazioni sulle licenze per distribuire programmi creati con l’ SDK
A questi elementi, possono a volte aggiungersi:
- uno o più debugger
- compilatori per diversi linguaggi di programmazione
- programmi per gestire le varie versioni o per interfacciarsi ad essi
- editor di sorgenti (programmi per scrivere più velocemente o con più precisione)
- IDE (Integrated Development Editor): editor di sorgenti con varie funzioni (completamento e formattazione codice, creazione interfaccia grafica, analisi del codice, mantenimento della documentazione relativa al codice sorgente…)
Al momento della compilazione dell’ app, lo sviluppatore dovrà solo richiamare le varie librerie e moduli al momento giusto, lasciando che sia il compilatore a inserire la funzione o l’elemento grafico dove serve.
Gli SDK (Software Development Kit) possono anche essere venduti insieme a dei programmi per permettere ai compratori di sviluppare ulteriormente i programmi comprati (secondo un utilizzo orientato al mercato).
Esistono inoltre delle versioni più specifiche di SDK, detti DDK (Driver Development Kits). I DDK vengono solitamente forniti dai proprietari delle piattaforme per lo sviluppo di driver per componenti hardware.