Windows API: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Botcrux (discussione | contributi)
m Bot: fix incipit
Riga 1:
PerLe '''Windows API''' sisono intende l’insiemel'insieme delle interfacce di programmazione (in [[lingua inglese|inglese]] ''[[application programming interface]]'' o API) disponibili nei [[sistema operativo|sistemi operativi]] [[Microsoft Windows|Windows]] di [[Microsoft]]. Per utilizzare le Windows API Microsoft fornisce gratuitamente il ''Platform [[Software development kit|SDK]]'', ora evolutosi nel più moderno [[Microsoft Windows SDK|Windows SDK]] che unifica il Platform SDK con il [[.NET Framework SDK]] (dedicato a sua volta all'ambiente .NET). Il Platform SDK (Windows SDK) è una raccolta di strumenti e documentazione da abbinare ad un compilatore di [[linguaggio C]].
 
== Versioni delle Windows API ==
 
Le Windows API si possono dividere nei seguenti gruppi:
 
* '''Win16''', versione iniziale a [[16 bit]] delle Windows API, le cui specifiche sono disponibili anche come Standard [[ECMA]] con codice [http://www.ecma-international.org/publications/standards/Ecma-234.htm ECMA-234].
 
* '''Win32''', evoluzione a [[32 bit]] per le versioni moderne di Windows.
 
* '''Win32s''', sottoinsieme di Win32 da installare sulle versioni di Windows a 16 bit per eseguire applicazioni compilate a 32 bit.
 
* '''Win64''', evoluzione a [[64 bit]] per le versioni di Windows destinate ai nuovi processori a 64 bit di [[Intel]] e [[Advanced Micro Devices|AMD]].
 
* '''WinRT''', nuove api per le app metro di Windows 8
 
== Struttura delle Windows API ==
 
Le API consistono in un insieme di [[funzione (informatica)|funzioni]] in [[linguaggio C]] implementate in ''librerie a collegamento dinamico'' (in inglese ''[[Dynamic-link library|Dynamic-link libraries]]'' o DLL).
 
Le Windows API, nonostante siano scritte, per ragioni di prestazioni, in un mix di linguaggio C e [[assembly]], presentano un complesso modello [[object oriented|orientato agli oggetti]] con una struttura molto uniforme ed uno stile che è stato di ispirazione per molti altri progetti.
 
La struttura di base delle Windows API è rimasta pressoché invariata da Windows 1.0 ad oggi. Vi sono tre gruppi principali di API: ''kernel'', ''GDI'' e ''user''.
 
=== API Kernel ===
 
Le API ''kernel'' forniscono alle applicazioni un’interfaccia di [[alto livello]] ai servizi del [[kernel]] del sistema operativo (gestione della memoria, dei processi, sincronizzazione, ecc.). Sulle versioni di Windows dalla 1.0 a Windows 4.9 ([[Windows ME]]) molte di queste API sono semplicemente dei richiami ai servizi forniti dagli [[interrupt]] software di [[MS-DOS]]. Sui sistemi con [[Windows NT|kernel NT]], queste API effettuano delle chiamate alle API di basso livello di NT, chiamate ''[[Native API]]''.
 
=== API GDI ===
 
Le API ''GDI'' (''[[Graphics Device Interface]]'') costituiscono la libreria grafica dei sistemi Windows. GDI virtualizza tutti i dispositivi grafici (monitor, stampanti, plotter) in modo da avere un’interfaccia omogenea (chiamata ''[[Device Context]]'') tra le differenti tipologie di dispositivi. Inoltre GDI permette di creare e manipolare una serie di oggetti grafici, tra cui [[font]], penne, pennelli, [[bitmap]], ecc.
 
=== API User ===
 
Le API ''user'' (da ''user interface'') forniscono i servizi di interfaccia grafica, basati sui concetti di "finestra" e di "messaggio".
 
== Implementazioni non Microsoft ==
Sebbene l’implementazionel'implementazione delle API di Windows sia soggetta a [[copyright]], vi sono delle implementazioni proprietarie di altri produttori e anche diversi progetti [[open source]] fra i quali citiamo [[WINE]] per emulare le Windows API nei sistemi di tipo [[Unix]], e [[ReactOS]] che mira a clonare l’interol'intero sistema operativo.
 
Sebbene l’implementazione delle API di Windows sia soggetta a [[copyright]], vi sono delle implementazioni proprietarie di altri produttori e anche diversi progetti [[open source]] fra i quali citiamo [[WINE]] per emulare le Windows API nei sistemi di tipo [[Unix]], e [[ReactOS]] che mira a clonare l’intero sistema operativo.
 
== Librerie a più alto livello ==
 
La stratificazione nel tempo di nuove funzionalità, la necessità di avere una completa retrocompatibilità e l’enorme mole complessiva di funzioni disponibili (ad oggi diverse migliaia) ha reso la programmazione di Windows con le API ostica e inadatta agli standard oggi accettati. Per questo sono nate nel tempo molte [[Libreria software|librerie]] (in linguaggi come [[C++]] e altri) che propongono un modello ad oggetti più astratto e semplice da usare, trasformando di fatto le Windows API in un’interfaccia di basso livello.
 
Esempi di librerie che incapsulano le Windows API sono:
 
* [[Microsoft Foundation Classes]] (MFC), libreria in C++ molto utilizzata che però ha un livello di astrazione ridotto.
* [[Object Windows Library]] (OWL), libreria in C++ di [[Borland]] con un maggiore livello di astrazione.
* [[Active Template Library]] (ATL), libreria in C++ basata su [[template]] di Microsoft.
* [[Windows Foundation Classes]] (WFC), libreria per [[Linguaggio_di_programmazione_JavaLinguaggio di programmazione Java|Java]] non più utilizzata in seguito alla causa giudiziaria intentata da [[Sun Microsystems]] a Microsoft.
* [[Framework .NET|.NET framework]], libreria di Microsoft indipendente dal linguaggio perché destinata ai [[compilatore|compilatori]] [[Common Language Runtime|CLR]].
 
== Il futuro delle Windows API ==
 
La storia delle Windows API è a un bivio: nelle intenzioni di Microsoft dovrebbe lasciare il posto alla libreria .NET grazie in particolare al nuovo componente [[Windows Presentation Foundation]], disponibile nella versione 3.0 del Framework .NET. Alcuni progetti infatti, come [[Singularity]] dei laboratori di [[Microsoft Research]], sperimentano nuovi sistemi operativi completamente basati sul nuovo tipo di kernel completamente scritto con codice gestito basato su .NET, abbandonando quindi la vecchia architettura basata su Windows API.
 
== Voci correlate ==
 
* [[DirectX]]
* [[Component Object Model]] (COM)
Riga 63 ⟶ 48:
* [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdkintro/sdkintro/devdoc_platform_software_development_kit_start_page.asp Microsoft Platform SDK]
* [http://www.negusweb.it/wiki/Tutorial_sulle_Windows_API Introduzione alle Windows API]
 
{{portale|Microsoft}}
 
[[Categoria:Microsoft Windows]]
[[Categoria:Librerie software]]