Was ist Xamarin?What is Xamarin?

Screenshots einer Xamarin-Beispielanwendung unter iOS und AndroidScreenshots of example Xamarin application in iOS and Android

Bei Xamarin handelt es sich um eine Open-Source-Plattform für das Erstellen moderner und leistungsfähiger Anwendungen für iOS, Android und Windows mit .NET.Xamarin is an open-source platform for building modern and performant applications for iOS, Android, and Windows with .NET. Xamarin ist eine Abstraktionsebene, die die Kommunikation zwischen freigegebenem Code und dem zugrunde liegenden Plattformcode verwaltet.Xamarin is an abstraction layer that manages communication of shared code with underlying platform code. Xamarin wird in einer verwalteten Umgebung ausgeführt, die Vorteile wie Speicherbelegung und Garbage Collection bietet.Xamarin runs in a managed environment that provides conveniences such as memory allocation and garbage collection.

Mithilfe von Xamarin können Entwickler durchschnittlich 90 Prozent Ihrer Anwendung plattformübergreifend freigeben.Xamarin enables developers to share an average of 90% of their application across platforms. Dies ermöglicht es Entwicklern, die gesamte Geschäftslogik in einer einzelnen Programmiersprache zu schreiben (oder vorhandenen Anwendungscode wiederzuverwenden), und dennoch native Leistung, natives Aussehen und eine native Servicequalität auf jeder Plattform bieten zu können.This pattern allows developers to write all of their business logic in a single language (or reuse existing application code) but achieve native performance, look, and feel on each platform.

Xamarin-Anwendungen können auf einem Computer oder einem Mac geschrieben werden und werden in native Anwendungspakete kompiliert, z. B. als APK-Datei unter Android oder als IPA-Datei unter iOS.Xamarin applications can be written on PC or Mac and compile into native application packages, such as an .apk file on Android, or an .ipa file on iOS.

Hinweis

Für die Kompilierung und die Bereitstellung von Anwendungen für iOS ist momentan ein macOS-Computer erforderlich.Compiling and deploying applications for iOS currently requires a MacOS machine. Weitere Informationen zu Entwicklungsanforderungen finden Sie unter macOS-Anforderungen.For more information about development requirements, see system requirements.

Zielgruppe von XamarinWho Xamarin is for

Xamarin eignet sich für Entwickler mit den folgenden Zielen:Xamarin is for developers with the following goals:

  • Plattformübergreifendes Freigeben von Code, Test- und GeschäftslogikShare code, test and business logic across platforms.
  • Schreiben von plattformübergreifenden Anwendungen in C# mit Visual StudioWrite cross-platform applications in C# with Visual Studio.

Funktionsweise von XamarinHow Xamarin works

Diagramm der Xamarin-Architektur

In diesem Diagramm sehen Sie die Gesamtarchitektur einer plattformübergreifenden Xamarin-Anwendung.The diagram shows the overall architecture of a cross-platform Xamarin application. Mithilfe von Xamarin können Sie native Benutzeroberflächen für jede Plattform erstellen und eine Geschäftslogik in C# schreiben, die plattformübergreifend freigegeben wird.Xamarin allows you to create native UI on each platform and write business logic in C# that is shared across platforms. In den meisten Fällen können 80 Prozent des Anwendungscodes mithilfe von Xamarin freigegeben werden.In most cases, 80% of application code is sharable using Xamarin.

Xamarin baut auf Mono auf, einer Open Source-Version von .NET Framework basierend auf den Standards von .NET Ecma International.Xamarin is built on top of Mono, an open-source version of the .NET Framework based on the .NET ECMA standards. Mono existiert bereits fast so lange wie .NET Framework selbst und kann auf nahezu allen Plattformen ausgeführt werden, einschließlich Linux, Unix, FreeBSD und macOS.Mono has existed for almost as long as the .NET Framework itself, and runs on most platforms including Linux, Unix, FreeBSD, and macOS. Die Mono-Ausführungsumgebung verarbeitet Aufgaben wie Speicherbelegung, Garbage Collection und Interoperabilität mit zugrunde liegenden Plattformen automatisch.The Mono execution environment automatically handles tasks such as memory allocation, garbage collection and interoperability with underlying platforms.

Weitere Informationen zu plattformspezifischen Architekturen finden Sie unter Xamarin.Android und Xamarin.iOS.For more information about platform-specific architecture, see Xamarin.Android and Xamarin.iOS.

Hinzugefügte FeaturesAdded features

Xamarin kombiniert alle Vorteile der nativen Plattformen und ergänzt diese um eine Reihe weiterer Features, wie beispielweise die folgenden:Xamarin combines the abilities of native platforms and adds a number of features, including:

  1. Vollständige Bindung für die zugrundeliegenden SDKs: Xamarin enthält Bindungen für fast alle zugrunde liegenden Plattform-SDKs unter iOS und Android.Complete binding for the underlying SDKs – Xamarin contains bindings for nearly the entire underlying platform SDKs in both iOS and Android. Zusätzlich dazu sind diese Bindungen stark typisiert. So bieten sie einfach Navigation, lassen sich leicht nutzen und sorgen während der Entwicklung für eine stabile Typüberprüfung zur Kompilierzeit und während der Entwicklung.Additionally, these bindings are strongly-typed, which means that they’re easy to navigate and use, and provide robust compile-time type checking and during development. Stark typisierte Bindungen führen zu weniger Runtimefehlern und zu Anwendungen mit höherer Qualität.Strongly-typed bindings lead to fewer runtime errors and higher-quality applications.
  2. Objective-C, Java, C und C++ Interop: Xamarin stellt Funktionen zum direkten Aufrufen von Bibliotheken mit Objective-C, Java, C und C++ bereit, sodass Sie verschiedensten Drittanbietercode verwenden können.Objective-C, Java, C, and C++ Interop – Xamarin provides facilities for directly invoking Objective-C, Java, C, and C++ libraries, giving you the power to use a wide array of third party code. Dadurch können Sie die vorhandenen iOS- und Android-Bibliotheken nutzen, die in Objective-C, Java oder C/C++ geschrieben sind.This functionality lets you use existing iOS and Android libraries written in Objective-C, Java, or C/C++. Darüber hinaus bietet Xamarin Bindungsprojekte an, mit denen Sie native Objective-C- und Java-Bibliotheken binden können, indem Sie eine deklarative Syntax verwenden.Additionally, Xamarin offers binding projects that allow you to bind native Objective-C and Java libraries using a declarative syntax.
  3. Moderne Sprachkonstrukte: Xamarin-Anwendungen werden in C# geschrieben, einer modernen Sprache, die gegenüber Objective-C und Java bedeutende Verbesserungen beinhaltet, z. B. dynamische Sprachfeatures, funktionale Konstrukte wie Lambdas und LINQ, Funktionen für die parallele Programmierung und Generics.Modern language constructs – Xamarin applications are written in C#, a modern language that includes significant improvements over Objective-C and Java such as dynamic language features, functional constructs such as lambdas, LINQ, parallel programming, generics, and more.
  4. Solide Basisklassenbibliothek (Base Class Library, BCL): Xamarin-Anwendungen verwenden die .NET-BCL, eine große Sammlung von Klassen mit umfassenden und optimierten Features, z B. Unterstützung für leistungsstarkes XML, Datenbanken, Serialisierung, E/A, Zeichenfolgen und Netzwerke.Robust Base Class Library (BCL) – Xamarin applications use the .NET BCL, a large collection of classes that have comprehensive and streamlined features such as powerful XML, Database, Serialization, IO, String, and Networking support, and more. Vorhandener C#-Code kann zur Verwendung in einer App kompiliert werden. So erhalten Sie Zugriff auf Tausende Bibliotheken, die Ihnen zusätzlich zur BCL Funktionen bieten.Existing C# code can be compiled for use in an app, which provides access to thousands of libraries that add functionality beyond the BCL.
  5. Moderne integrierte Entwicklungsumgebung (Integrated Development Environment, IDE): Xamarin verwendet Visual Studio, eine moderne IDE, die Features beinhaltet wie die automatische Codevervollständigung, ein durchdachtes Projekt- und Projektmappenverwaltungssystem, eine umfassende Projektvorlagenbibliothek und integrierte Quellcodeverwaltung.Modern Integrated Development Environment (IDE) – Xamarin uses Visual Studio, a modern IDE that includes features such as code auto completion, a sophisticated project and solution management system, a comprehensive project template library, integrated source control, and more.
  6. Unterstützung für plattformübergreifende Entwicklung von mobilen Anwendungen: Xamarin bietet hochmoderne, plattformübergreifende Unterstützung für die drei wichtigsten Plattformen: iOS, Android und Windows.Mobile cross-platform support – Xamarin offers sophisticated cross-platform support for the three major platforms of iOS, Android, and Windows. Anwendungen lassen sich so schreiben, dass bis zu 90 Prozent des Codes freigegeben werden können, und in Xamarin.Essentials steht eine vereinheitlichte API zur Verfügung, mit der auf allen drei Plattformen auf häufig verwendete Ressourcen zugegriffen werden kann.Applications can be written to share up to 90% of their code, and Xamarin.Essentials offers a unified API to access common resources across all three platforms. Freigegebener Code kann sowohl die Kosten für die Entwicklung als auch die Zeit bis zur Markteinführung für Entwickler mobiler Anwendungen reduzieren.Shared code can significantly reduce both development costs and time to market for mobile developers.

Xamarin.AndroidXamarin.Android

Architekturdiagramm für Xamarin.AndroidXamarin.Android architecture diagram

Xamarin.Android-Anwendungen kompilieren von C# zu einer Zwischensprache (Intermediate Language, IL) , die dann bei Anwendungsstart Just-In-Time (JIT) in eine native Assembly kompiliert wird.Xamarin.Android applications compile from C# into Intermediate Language (IL) which is then Just-in-Time (JIT) compiled to a native assembly when the application launches. Xamarin.Android-Anwendungen werden in der Mono-Ausführungsumgebung ausgeführt, parallel mit der Android Runtime-VM (ART).Xamarin.Android applications run within the Mono execution environment, side by side with the Android Runtime (ART) virtual machine. Xamarin bietet Android.- und Java.-Namespaces für .NET-Bindungen.Xamarin provides .NET bindings to the Android.* and Java.* namespaces. Die Mono-Ausführungsumgebung führt Aufrufe in diese Namespaces über verwaltete Callable Wrapper (Managed Callable Wrappers, MCWs) aus und stellt ART Callable Wrappers für Android (Android Callable Wrappers, ACW) zur Verfügung, sodass in beiden Umgebungen Code voneinander aufgerufen werden kann.The Mono execution environment calls into these namespaces via Managed Callable Wrappers (MCW) and provides Android Callable Wrappers (ACW) to the ART, allowing both environments to invoke code in each other.

Weitere Informationen finden Sie unter Architektur.For more information, see Xamarin.Android architecture.

Xamarin.iOSXamarin.iOS

Architekturdiagramm für Xamarin.iOSXamarin.iOS architecture diagram

Xamarin.iOS-Anwendungen werden vollständig von C# zu nativem ARM-Assemblycode Ahead-of-time (AOT) -kompiliert.Xamarin.iOS applications are fully Ahead-of-Time (AOT) compiled from C# into native ARM assembly code. Xamarin verwendet Selektoren, um Objective-C für verwalteten C#-Code verfügbar zu machen und Registratoren, um verwalteten C#-Code für Objective-C verfügbar zu machen.Xamarin uses Selectors to expose Objective-C to managed C# and Registrars to expose managed C# code to Objective-C. Selektoren und Registratoren werden zusammen auch als „Bindungen“ bezeichnet und ermöglichen die Kommunikation zwischen Objective-C und C#.Selectors and Registrars collectively are called "bindings" and allow Objective-C and C# to communicate.

Weitere Informationen finden Sie unter Xamarin.iOS-Architektur.For more information, see Xamarin.iOS architecture.

Xamarin.EssentialsXamarin.Essentials

Bei Xamarin.Essentials handelt es sich um eine Bibliothek, die plattformübergreifende APIs für native Gerätefeatures bietet.Xamarin.Essentials is a library that provides cross-platform APIs for native device features. Wie Xamarin selbst ist Xamarin.Essentials eine Abstraktion, die den Zugriffsprozess auf native Funktionen vereinfacht.Like Xamarin itself, Xamarin.Essentials is an abstraction that simplifies the process of accessing native functionality. Zu den von Xamarin.Essentials zur Verfügung gestellten Funktionen gehören die folgenden:Some examples of functionality provided by Xamarin.Essentials include:

  • GeräteinformationenDevice info
  • DateisystemFile system
  • BeschleunigungsmesserAccelerometer
  • WählhilfePhone dialer
  • Text-zu-SpracheText-to-speech
  • BildschirmsperreScreen lock

Weitere Informationen finden Sie unter Xamarin.Essentials.For more information, see Xamarin.Essentials.

Xamarin.FormsXamarin.Forms

Bei Xamarin.Forms handelt es sich um ein Open-Source-Benutzeroberflächenframework.Xamarin.Forms is an open-source UI framework. Mithilfe von Xamarin.Forms können Entwickler iOS-, Android- und Windows-Anwendungen aus einer einzigen freigegebenen CodeBase erstellen.Xamarin.Forms allows developers to build iOS, Android and Windows applications from a single shared codebase. Mithilfe von Xamarin.Forms können Entwickler Benutzeroberflächen in XAML mit CodeBehind in C# erstellen.Xamarin.Forms allows developers to create user interfaces in XAML with code-behind in C#. Diese Benutzeroberflächen werden als leistungsfähige native Steuerelemente für jede Plattform gerendert.These user interfaces are rendered as performant native controls on each platform. Zu den von Xamarin.Forms zur Verfügung gestellten Features gehören die folgenden:Some examples of features provided by Xamarin.Forms include:

  • XAML als Programmiersprache für BenutzeroberflächenXAML user-interface language
  • DatenbindungDatabinding
  • GestenGestures
  • EffekteEffects
  • FormatStyling

Weitere Informationen finden Sie auf der Seite Xamarin.Forms-Dokumentation.For more information, see Xamarin.Forms.

Erste SchritteGet started

Die folgenden Anleitungen unterstützen Sie bei der Erstellung Ihrer ersten App mithilfe von Xamarin:The following guides will help you build your first app using Xamarin:

Auf Channel 9 und auf YouTube finden Sie weitere Videos zu Xamarin.Find more Xamarin videos on Channel 9 and YouTube.