Xamarin: A cross-platform app development framework allowing developers to create native iOS and Android apps using a single C# codebase.
Advantages
- Code Reusability: Share code between iOS and Android apps.
- Native Performance: Apps have native-like performance and user experience.
- C# Language: Familiar and versatile programming language.
- Native API Access: Direct access to platform-specific APIs.
- Large Community: Active community and extensive library of plugins and components.
Disadvantages
- Limited Dynamic Language Support – Android callable wrappers are needed anytime the Android runtime needs to invoke managed code
- Limited Java Generation Support – by default, Android callable wrappers will only contain declared constructors and methods which override a virtual Java method, or implement a Java interface method
- Limited sharing of code outside of Xamarin – Xamarin doesn’t allow the creating of reusable components or modules outside of its own environment
- Non portable .NET libraries – some companies that offer .NET libraries for interfacing with their APIs, do not offer yet PCL versions, or do not have PCL versions that support Xamarin iOS or Xamarin Android
Components
- Cloud Services
- Libraries
- User Interface
- Plugins
- Themes
Development tools
- Visual Studio: Microsoft’s integrated development environment (IDE) with Xamarin support.
- Visual Studio for Mac: A macOS version of Visual Studio with Xamarin tools.
- Xamarin Studio: Formerly Xamarin’s dedicated IDE, now integrated into Visual Studio.
- Xamarin Test Cloud: A cloud-based service for testing Xamarin apps on real devices.
- NuGet: A package manager for adding libraries and components to Xamarin projects.