Was ist YAML?
YAML ist eine leicht lesbare Sprache zur Daten-Serialisierung für alle Programmiersprachen.
YAML Ain’t Markup Language
YAML – YAML Ain’t Markup Language – ist eine menschenlesbare Sprache zur Daten-Serialisierung, die für eine Vielzahl von Anwendungsfällen in allen Programmiersprachen verwendet wird. Ursprünglich als Abkürzung für „Yet Another Markup Language“ eingeführt, betont die rekursive Bezeichnung „YAML Ain’t Markup Language“ den Schwerpunkt auf Datendarstellung über Dokumentenmarkierung hinaus.
YAML eine intuitive Wahl für viele Softwareentwickler
YAML zur Serialisierung von Daten
YAML ist also nicht einfach eine weitere Markup-Sprache, dass heißt zur Auszeichnung als maschinenlesbare Sprache für die Gliederung und Formatierung von Texten und anderen Daten wie HTML, sondern zur Serialisierung von Daten konzipiert.
YAML basiert auf Unicode
YAML ist eine menschenfreundliche, sprachübergreifende, auf Unicode basierende Datenserialisierungssprache.
YAML steigert die Interoperabilität von Software
Damit ergänzt YAML gängige native Datentypen dynamischer Programmiersprachen und dient quasi als Bindeglied zwischen unterschiedlichen Technologien.
YAML ist vielseitig einsetzbar
Die Serialisierungssprache eignet sich für eine Vielzahl von Programmieranforderungen:
- Konfigurationsdateien
- Internet-Messaging
- Objekt-Persistenz
- Datenprüfung
- Datenvisualisierung
Zusammen mit dem Unicode-Standard für Zeichen liefert die Spezifikation alle notwendigen Informationen, um interoperable Software-Programme und APIs zu erstellen, die YAML-Informationen verarbeiten können.
Wozu dient die YAML-Spezifikation?
YAML wird häufig für die Konfiguration von Software verwendet wird und ist darüber hinaus eine vollständige Datenserialisierungssprache.
- Die aktuelle YAML-Spezifikation hat die Version v1.2.2.
- Die YAML-Spezifikationen definieren die Datensprache YAML.
Die YAML-Sprache nutzt ein offenes und transparentes Konzept, so dass sich nicht nur Entwickler*innen sondern auch alle anderen Beteiligte leichter in IT-Projekte einbringen können.
Markdown als YAML-Eingabeformat
Das YAML-Eingabeformat ist nun Markdown. Bilder werden aus einfachen LaTeX-Dateien erstellt.
Seit der vorherigen YAML-Spezifikation vor über 12 Jahren hat die Popularität von YAML erheblich zugenommen.
YAML vereinfacht Software-Entwicklung und Deployment Prozesse
YAML vereinfacht den Entwicklungsprozess für Software-Entwickler*innen und DevOps indem leicht verständliche, weil für Menschen einfach zu lesende Code-Artefakte genutzt werden.
Was ist das YAML-Framework?
Ergänzend gibt es das YAML-Framework als begleitende Dokumentation, die den Implementierern des YAML-Frameworks und den Anwendern der YAML-Sprache als Leitfaden dienen soll.
Das Resultat ist eine Sprache zur Serialisierung von Daten, die so konzipiert wurde, dass sie menschenfreundlich ist und mit allen modernen Programmiersprachen für alltägliche Aufgaben besonders gut funktioniert.
Warum ist YAML so erfolgreich?
Offene, interoperable und leicht verständliche Werkzeuge haben die Computertechnologien immens vorangebracht. YAML wurde von Anfang an so konzipiert, dass es für Menschen, die mit Daten arbeiten, nützlich und freundlich ist.
Strukturinformationen plus Daten
Es verwendet druckbare Unicode-Zeichen, von denen ein Teil Strukturinformationen liefert und der Rest die Daten selbst enthält.
Damit erreichen YAML-Dateien eine einzigartige Übersichtlichkeit, indem die Anzahl von Strukturzeichen minimiert und Daten auf natürliche und sinnvolle Weise dargestellt sind.
So funktioniert die YAML-Syntax
- Einrückungen können zur Strukturierung verwendet werden
- Doppelpunkte trennen Schlüssel/Wert-Paare
- Bindestriche werden zur Erstellung von „Aufzählungslisten“ verwendet.
YAML-Datenstrukturen sind simple
Es gibt viele Arten von Datenstrukturen, die jedoch alle mit drei grundlegenden Primitiven adäquat dargestellt werden können:
- Mappings (Hashes/Dictionaries),
- Sequenzen (Arrays/Listen) und
- Skalare (Strings/Numbers)
YAML nutzt diese Primitive und ergänzt sie durch ein einfaches Typisierungssystem und einen Aliasing-Mechanismus zu einer vollständigen Sprache zur Serialisierung beliebiger nativer Datenstrukturen.
Während die meisten Programmiersprachen YAML zur Datenserialisierung nutzen können, zeichnet sich YAML durch die Zusammenarbeit mit denjenigen Sprachen aus, die grundsätzlich auf den drei Grundprimitiven aufgebaut sind.
Dazu gehören gängige dynamische Sprachen wie JavaScript, Perl, PHP, Python und Ruby.
Nur wenige Programmiersprachen sind zum Datentransfer geeignet
Es gibt Hunderte verschiedener Programmiersprachen, aber nur eine Handvoll Sprachen zum Speichern und Übertragen von Daten. Obwohl die Möglichkeiten von YAML nahezu unbegrenzt sind, wurde es speziell für gängige Anwendungsfälle entwickelt, wie z.B. Konfigurationsdateien, Logdateien, prozessübergreifendes Messaging, sprachübergreifenden Datenaustausch, Objektpersistenz und Debugging von komplexen Datenstrukturen.
Wenn Daten leicht zu sehen und zu verstehen sind, wird die Programmierung einfacher.
YAML-Design Ziele
Die Gestaltungsziele für YAML sind, in absteigender Priorität:
- YAML soll von Menschen leicht lesbar sein.
- YAML-Daten sollen zwischen Programmiersprachen portabel sein.
- YAML soll zu den nativen Datenstrukturen dynamischer Sprachen passen.
- YAML sollte ein konsistentes Modell haben, um generische Tools zu unterstützen.
- YAML soll eine One-Pass-Verarbeitung unterstützen.
- YAML soll ausdrucksstark und erweiterbar sein.
- YAML soll einfach zu implementieren und zu nutzen sein.
Code Beispiel YAML Logfile
--- Time: 2021-11-23 15:01:42 -5 User: ed Warning: This is an error message for the log file --- Time: 2021-11-23 15:02:31 -5 User: ed Warning: A slightly different error message. --- Date: 2021-11-23 15:03:17 -5 User: ed Fatal: Unknown variable "bar" Stack: - file: TopClass.py line: 23 code: | x = MoreObject("345\n") - file: MoreClass.py line: 58 code: |- foo = bar
YAML vs. JSON vs. XML
Unser Vergleich von YAML mit anderen populären Datenaustauschformaten wie JSON (JavaScript Object Notation) und XML (Extensible Markup Language) liefert wichtige Einblicke in ihre jeweiligen Stärken und Schwächen.
Hier ist unsere detaillierte Gegenüberstellung:
Gemeinsamkeiten:
- Beide sind menschenlesbar: Sie bieten eine klare Struktur, die es einfach macht, die Daten zu verstehen und zu bearbeiten.
- Unterstützung für grundlegende Datentypen: Beide Formate unterstützen ähnliche Datentypen wie Strings, Zahlen, Booleans, Arrays (in YAML Sequenzen) und Objekte (in YAML Maps).
Unterschiede:
- Lesbarkeit: YAML ist für seine Lesbarkeit und Klarheit bekannt, da es weniger Klammern verwendet und stattdessen auf Einrückungen setzt. JSON hingegen verwendet viele Klammern und ist kompakter, was es manchmal schwerer zu lesen macht.
- Kommentare: YAML unterstützt Kommentare innerhalb des Codes, was bei JSON nicht der Fall ist. Dies kann für Dokumentationszwecke nützlich sein.
- Komplexität: YAML kann durch seine Abhängigkeit von Einrückungen subjektiv komplexer erscheinen, besonders für tief verschachtelte Strukturen. JSON ist in seiner Struktur sehr vorhersehbar und oft einfacher zu analysieren.
- Parsing: JSON-Parser sind aufgrund des einfacheren Formats tendenziell schneller und universeller verfügbar.
YAML vs. XML:
Gemeinsamkeiten:
- Flexibilität: Beide Formate können komplexe, verschachtelte Datenstrukturen darstellen und werden häufig für Konfigurationsdateien und Datenaustausch verwendet.
- Erweiterbarkeit: Sowohl YAML als auch XML können erweitert und angepasst werden, um verschiedenen Anforderungen gerecht zu werden.
Unterschiede:
- Verbalität: XML ist deutlich verbaler und nutzt öffnende und schließende Tags, was es weniger kompakt macht als YAML. YAML ist knapper und oft klarer in seiner Darstellung.
- Strukturierung: YAML verwendet Einrückungen zur Strukturierung, während XML Tags und Attribute verwendet. Dies kann YAML in manchen Fällen lesbarer machen, während XML eine klar definierte Hierarchie und Schemaunterstützung bietet.
- Datenmodell: XML ist nicht nur ein Datenformat, sondern auch ein Dokumentenformat, was es ideal für komplexe Dokumentstrukturen macht. YAML hingegen konzentriert sich mehr auf die Datenrepräsentation.
- Sicherheit: XML ist anfällig für bestimmte Arten von Angriffen wie XML External Entity (XXE) Angriffe, während YAML seine eigenen Sicherheitsüberlegungen hat, insbesondere wenn es schlecht implementiert ist.
Fazit unseres Vergleich der aktuell populärsten Datenaustauschformate:
YAML:
- Stärken: Menschliche Lesbarkeit, Kompaktheit, und Einfachheit in der Darstellung komplexer Daten.
- Schwächen: Potenzielle Komplexität durch Einrückung, weniger universelle Parser-Verfügbarkeit.
JSON:
- Stärken: Schnelles Parsen, universelle Verwendbarkeit, Formatkonsistenz.
- Schwächen: Weniger lesbar für komplexe Daten, keine eingebaute Kommentarfunktion.
XML:
- Stärken: Strikte Struktur, Unterstützung für komplexe Dokumente, Schema-Validierung.
- Schwächen: Verbalität, potenzielle Sicherheitsrisiken, weniger menschenlesbar für einfache Daten.
Die Wahl zwischen diesen Formaten hängt letztendlich von den spezifischen Anforderungen des Projekts, der bevorzugten Arbeitsweise des Teams und der Art der Daten ab, die repräsentiert werden sollen. YAML ist oft die bevorzugte Wahl für Konfigurationsdateien und Szenarien, in denen Lesbarkeit entscheidend ist, während JSON und XML in verschiedenen anderen Kontexten, einschließlich Webdiensten und komplexen Dokumentstrukturen, dominieren.
YAML, JSON, XML: Entdecken Sie das ideale Format für Ihre Daten!
Hier ist unser Vergleich übersichtlich in einer Tabelle zu den Eigenschaften von YAML, JSON und XML, die ihre Unterschiede und Gemeinsamkeiten hervorhebt:
Eigenschaft | YAML | JSON | XML |
---|---|---|---|
Format | Menschlich lesbar, textbasiert | Textbasiert, leicht maschinenlesbar | Verbal, textbasiert |
Lesbarkeit | Hoch (klar und einfach) | Mittel (kompakt, aber viele Klammern) | Niedrig (ausführliche Tags) |
Strukturierung | Einrückungen | Klammern und Kommas | Tags und Attribute |
Kommentare | Unterstützt | Nicht unterstützt | Unterstützt |
Komplexität | Kann komplex sein bei tiefen Verschachtelungen | Relativ einfach und vorhersehbar | Kann komplex sein, insbesondere mit Namensräumen |
Parsing | Variiert (abhängig von der Implementierung) | Schnell und einfach | Variiert, tendenziell langsamer |
Datenmodell | Datenrepräsentation | Datenrepräsentation | Daten- und Dokumentenformat |
Sicherheit | Anfällig für schlechte Implementierungen | Relativ sicher | Anfällig für XXE-Angriffe |
Erweiterbarkeit | Flexibel | Begrenzt | Sehr flexibel, unterstützt Schemata |
Verbreitung | Häufig in Konfigurationsdateien und DevOps | Weit verbreitet in Web APIs und Konfigurationen | Früher dominant, besonders in Enterprise-Anwendungen |
Unsere Tabelle bietet eine grundlegende Übersicht über die Eigenschaften und Unterschiede zwischen YAML, JSON und XML. Es ist jedoch wichtig zu beachten, dass die beste Wahl für ein bestimmtes Projekt von vielen Faktoren, einschließlich spezifischer Anforderungen, Umgebung und persönlicher oder teambasierter Vorlieben, abhängt.