Shim (Informatik)
# Shim (Informatik)

Als Shim bezeichnet man im Jargon der Softwareentwicklung ein Computerprogramm, das einer bestehenden Anwendung eine Kompatibilitätserweiterung hinzufügt.

## Beschreibung

Ein Shim fängt API-Aufrufe ab und passt die übergebenen Parameter an, leitet die Aufrufe um oder führt gegebenenfalls selbst Operationen aus. Das Verhalten wird dabei als transparent bezeichnet, da der Einsatz eines Shim „unsichtbar“ ist und vom Benutzer nicht als vorhanden wahrgenommen wird.
Üblicherweise werden Shims dann eingesetzt, wenn Änderungen an APIs zu Kompatibilitätsproblemen führen, bei der bereits existierende Anwendungen auf Funktionalitäten der vorherigen API-Version angewiesen sind. Ein Shim dient dann als zusätzliche Kompatibilitätsebene über der neuen API und stellt die alte Funktionalität weiterhin zur Verfügung, indem es die Anfragen transformiert. Alternativ dazu könnte man beide Versionen der API parallel weiter pflegen, was einen Mehraufwand sowie Redundanzen, gleichzeitig aber geringere Verzögerungszeiten bedeuten könnte.
Des Weiteren können Shims dazu verwendet werden, um Programme auf Plattformen laufen zu lassen, für welche sie ursprünglich nicht entwickelt wurden.

## Wrapper vs. Shim

Während Shims meist von API-Anbietern stammen, um Rückwärtskompatibilität bei Aktualisierungen der API zu gewährleisten, werden Wrapper meist von API-Anwendern initiiert. Ziel dabei ist eine erhöhte Flexibilität, das heißt die Möglichkeit, eine zugrundeliegende API austauschen zu können, ohne den Rest des Codes betrachten zu müssen. Ein beliebter Einsatzzweck für Wrapper sind Schnittstellen zu Datenbankservern.

## Beispiele

* EcmaScript Shims: Kompatibilitätserweiterungen für veraltete JavaScript Engines
* Windows Shim-Infrastruktur: Anwendungskompatibilitätsinfrastruktur von Microsoft Windows
* Start von nicht signierten Betriebssystem-Kernen, zum Beispiel Linux, auf Rechnern mit UEFI-BIOS unter Secure Boot
* Wine: Wine stellt auf GNU/Linux und anderen Unix-ähnlichen Betriebssystemen eine Implementation der Funktionen der Windows-API dar. Die Systemaufrufe werden an den Linux- beziehungsweise Unix-Kernel sowie das X Window System weitergereicht.

## Herkunft des Wortes

Das Wort wird ursprünglich bei mechanischen Anwendungen verwendet. Shim bezeichnet eine Ausgleichsscheibe, in diesem Kontext ein meist zugespitztes Materialstück (etwa aus Metall oder Stein), welches zum Füllen einer Lücke zwischen zwei Gegenständen eingesetzt wird (etwa als Stütze oder Nivellierung, siehe auch Zwischenlage).