WIN32 Todessehnsucht

Mark Twain’s

Die Nachricht von meinem Tod ist stark übertrieben.

gilt heute für Vielerlei. Und die Windows-API, heute auch bekannt als WIN32, zählt meines Erachtens auch dazu.

Ebenso könnte man unter Linux behaupten: POSIX war früher, heute gibt es nur noch D-BUS und Docker.

Warum kommt im 3-Jahres-Rhythmus immer ein neuer Hype um etwas auf, das zeitgleich behauptet: “Das andere war früher, ist jetzt tot und ich allein bin die Zukunft”?


WIN32 ist DAS primäre Subsystem unter Windows, auf dem alles andere aufbaut.
Take that dot.net!

OK … zugegeben, für Treiber gilt das nicht und seit die “Services für Linux” endlich gut in Windows 10 etabliert sind, gibt es ein zweites Feld, wo der obige Satz nicht zur Anwendung kommt.

Aber für den Rest aller Dienste, Apps und Desktop-Anwendung gilt es. Das dotNet Framework und dotNet Core, die Universal-Windows-Platform und sämtlichen anderen Hilfsbibliotheken greifen immer auf noch auf die gleichen Basisroutinen für Thread- und Prozesssteuerung zu, wie es damals in NT 3 und NT 4 definiert wurde.

Natürlich wurden einige neue APIs geschaffen, die heute formal nicht mehr als “WIN32” gehandelt werden: DirectX war das älteste Beispiel, weil es als “neuer” Entwurf zum angestaubten GDI eingeführt wurde.

Oft vergisst man, dass klassische WIN32 Frameworks wie WMI die zentrale Schnittstelle zur Ressourcenverwaltung übernimmt und dotNet oder UWP nur einen dünnen Layer einer eigenen API darüber legen.

Und während die beiden genannten App-Frameworks ihre neue “Funktion” medienwirksam kommunizieren, fehlt die Info, dass im WIN32-WMI Repository eine neue Objektklasse mit X Methoden eingefügt wurde.

Es stimmt also, dass es keine “neue globale WIN32 C Funktion” gibt, die jetzt jeder aufrufen kann (und soll). Das heißt aber nicht, dass nur noch dotNet und UWP Apps “neue Windows Features” abgreifen können.

Mein Lieblingsbeispiel ist hier immer: Windows PE. Jeder kann sich sein eigenes kleines 250 MB großes Windows selbst zusammenbauen. Desktop-Anwendungen, JScript und VBScript sind voll einsatzfähig. DotNet ist dort optional integrierbar.

Es gibt auch einen Videobeitrag von Microsoft, wo Windows 8 Metro-Apps erklärt werden und die beste Aussage, die mir in Erinnerung geblieben ist, lautet in etwa: “… but all starts with a message pump”.

Fazit

WIN32 ist NICHT tot, es lebt und wird es noch lange tun, so wie auch kein Linux je auf seinen POSIX Grundsatz verzichten wird.

Dies Lieb verkündete der Jugend muntre Spiele,
Der Frühlingsfeier freies Glück;
Erinn’rung hält mich nun, mit kindlichem Gefühle,
Vom letzten, ernsten Schritt zurück.
O tönet fort, ihr süßen Himmelslieder!
Die Träne quillt, die Erde hat mich wieder!

Nachtrag

Das Linux-Subsystem beweist uns aber, dass die NT-Architektur durchaus bereit wäre, dass ein neueres Subsystem eingeführt werden kann, das klassische APIs umgeht. “Light-weight-Processes” sind ein genialer Ansatz, und wer sich noch an früher erinnert: Es war auch mal möglich OS/2 Programme unter Windows NT auszuführen.

Allein das Problem der vielen Dienste und die Kompatibilität derer zueinander (und nicht zu vergessen Bugs und Sicherheit) verleiten mich zur Annahme, dass Microsoft beim WIN32 Substrat bleiben wird und alles darauf aufbaut, anstatt nochmal bei Null zu beginnen. Neue Features kann man ja auch gut auf dem bestehenden Baugrund hochziehen.