Xamarin Microsoft का एक प्लेटफ़ॉर्म है जो C# भाषा में मोबाइल एप्लिकेशन बनाने के लिए है, जिसकी घोषणा 2011 में की गई थी। Microsoft Xamarin Documentation, 2024 के अनुसार, Xamarin आपको C# और .NET में साझा कोडबेस के साथ iOS, Android और Windows के लिए एप्लिकेशन लिखने की अनुमति देता है, जो मूल कोड में संकलन के लिए Mono Runtime का उपयोग करता है। 2024 से, Xamarin.Forms को .NET MAUI द्वारा बदल दिया गया है।
मुख्य बातें
Xamarin .NET और Mono पर आधारित एक प्लेटफ़ॉर्म है जो क्रॉस-प्लेटफ़ॉर्म मोबाइल एप्लिकेशन बनाने के लिए C# का उपयोग करने की अनुमति देता है। Xamarin कंपनी की स्थापना 2011 में हुई थी और इसे Microsoft ने 2016 में $400 मिलियन में खरीदा था। अधिग्रहण के बाद, Xamarin Visual Studio और Azure पारिस्थितिकी तंत्र का हिस्सा बन गया।
अधिग्रहण से पहले, Xamarin Enterprise लाइसेंस वाला एक वाणिज्यिक उत्पाद था। Microsoft ने इसे Visual Studio Community के हिस्से के रूप में मुफ्त बना दिया और Mono Runtime और SDK बाइंडिंग का स्रोत कोड भी खोल दिया। इससे लोकप्रियता में वृद्धि हुई: 2020 तक, SlashData रिपोर्ट के अनुसार, Xamarin का उपयोग 15% क्रॉस-प्लेटफ़ॉर्म परियोजनाओं में किया जाता था।
Xamarin का मुख्य विचार कोड को तीन परतों में विभाजित करना है: साझा व्यावसायिक तर्क (C#, .NET Standard), प्लेटफ़ॉर्म-विशिष्ट प्रोजेक्ट (iOS, Android), और Xamarin.Forms के माध्यमից वैकल्पिक साझा UI। यह दृष्टिकोण प्रत्येक प्लेटफ़ॉर्म के API तक मूल पहुँच बनाए रखते हुए 75% तक कोड के पुन: उपयोग की अनुमति देता था।
पहला संस्करण Xamarin 1.0 2012 में केवल iOS समर्थन के साथ जारी किया गया था। Android समर्थन 2013 में जोड़ा गया। Xamarin.Forms — एक घोषणात्मक UI फ्रेमवर्क — 2014 में Evolve सम्मेलन में प्रस्तुत किया गया। Xamarin 4.0 (2016) में watchOS और tvOS के लिए समर्थन शामिल था। Xamarin 5.0 (2019) ने CSS शैलियाँ और Material Design थीमिंग पेश की।
नवीनतम प्रमुख संस्करण Xamarin.Forms 5.0 2021 में जारी किया गया था। Microsoft ने घोषणा की कि Xamarin समर्थन मोड में प्रवेश कर रहा है (जीवन का अंत — 1 मई 2024) और .NET MAUI (Multi-platform App UI) पर स्थानांतरित करने की सिफारिश की, जो .NET 6+ का हिस्सा है। Xamarin.Forms 5.0 अब नई सुविधाएँ प्राप्त नहीं करता, केवल महत्वपूर्ण सुरक्षा सुधार प्राप्त करता है।
Xamarin.Forms एक UI फ्रेमवर्क है जो घटकों के एकीकृत सेट के माध्यम से इंटरफ़ेस को एब्सट्रैक्ट करता है। XAML मार्कअप (ContentPage, StackLayout, Label, Button) रेंडरर्स के माध्यम से प्रत्येक प्लेटफ़ॉर्म पर मूल नियंत्रणों में मैप होता है। Label iOS पर UILabel और Android पर TextView में अनुवादित होता है। यह दृष्टिकोण 95% तक साझा UI कोड प्रदान करता है।
Xamarin.Native (Xamarin.iOS और Xamarin.Android) बिना साझा UI वाला दृष्टिकोण है। डेवलपर एकल C# बैकएंड का उपयोग करके iOS (Interface Builder या Storyboard) और Android (AXML) के लिए अलग स्क्रीन बनाता है। यह प्रत्येक प्लेटफ़ॉर्म की उपस्थिति पर पूर्ण नियंत्रण देता है लेकिन UI कोड दोहराव को 50–60% तक बढ़ा देता है।
Microsoft Developer Survey 2023 के अनुसार, 70% Xamarin प्रोजेक्ट Xamarin.Forms का उपयोग करते थे, 20% साझा सेवाओं के साथ Xamarin.Native का उपयोग करते थे, और 10% प्लेटफ़ॉर्म-विशिष्ट अनुकूलन के लिए कस्टम रेंडरर्स के साथ हाइब्रिड दृष्टिकोण का उपयोग करते थे।
Xamarin की आर्किटेक्चर दो स्तरों से मिलकर बनी है। निचला स्तर Mono Runtime है, जो प्लेटफ़ॉर्म पर C# IL (Intermediate Language) निष्पादित करता है। ऊपरी स्तर में iOS के लिए Managed Callable Wrappers (MCW) और Android के लिए Android Bindings शामिल हैं, जो प्रबंधित C# कोड से मूल API तक पहुँच प्रदान करते हैं।
Mono .NET Framework का एक ओपन-सोर्स कार्यान्वयन है। Xamarin में, Mono Common Language Runtime (CLR) के रूप में कार्य करता है, C# असेंबली लोड करता है और उन्हें मशीन कोड में संकलित करता है। iOS पर, Mono Ahead-of-Time (AOT) संकलन करता है — ARM64 मशीन कोड में, क्योंकि Apple उपयोगकर्ता एप्लिकेशन में JIT संकलन प्रतिबंधित करता है। Android पर, Mono AOT प्रोफाइलिंग के साथ JIT संकलन का उपयोग करता है।
iOS बाइंडिंग (Xamarin.iOS) Objective-C रनटाइम पर C# रैपर हैं। प्रत्येक UIKit वर्ग (UIView, UIViewController) Xamarin.iOS.dll असेंबली में एक प्रबंधित वर्ग द्वारा दर्शाया जाता है। Objective-C सेलेक्टर MessageUI तंत्र के माध्यम से कॉल किए जाते हैं। Android पर, Xamarin.Android Android Callable Wrappers (ACW) का उपयोग करता है — C# और Java/Kotlin के बीच एक JNI ब्रिज। Kotlin लाइब्रेरीज़ Android Bindings Library के माध्यम से रैप की जाती हैं।
XAML (eXtensible Application Markup Language) UI का वर्णन करने के लिए एक घोषणात्मक भाषा है। Xamarin.Forms में, XAML स्क्रीन संरचना को परिभाषित करता है: पृष्ठ (ContentPage), कंटेनर (StackLayout, Grid, FlexLayout), और तत्व (Label, Entry, Button, ListView)। C# में कोड-बिहाइंड घटनाओं (Clicked, PropertyChanged) को संभालता है और डेटा बाइंडिंग (Binding, Data Binding) का प्रबंधन करता है।
MVVM पैटर्न Xamarin.Forms के लिए अनुशंसित आर्किटेक्चर है। मॉडल में डेटा होता है, ViewModel INotifyPropertyChanged और कमांड (ICommand) लागू करता है, और व्यू (XAML) BindingContext के माध्यम से बाइंड होता है। RelayCommand या Prism DelegateCommand के माध्यम से ICommand को लागू करना UI निर्भरताओं के बिना ViewModel के परीक्षण को सक्षम बनाता है। Prism.Forms लाइब्रेरी NavigationService, DialogService और मॉड्यूलैरिटी प्रदान करती है।
using Xamarin.Forms;
namespace XamarinApp
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
var label = new Label
{
Text = "Hello, Xamarin!",
FontSize = 24,
VerticalOptions = LayoutOptions.Center,
HorizontalOptions = LayoutOptions.Center
};
Content = new StackLayout
{
Children = { label }
};
}
}
}
एकीकृत C# भाषा — Xamarin का मुख्य लाभ। C# और .NET डेवलपर Swift, Kotlin या Objective-C सीखे बिना मोबाइल एप्लिकेशन बना सकते हैं। व्यावसायिक तर्क, नेटवर्किंग, डेटाबेस (ORM के माध्यम से SQLite), एन्क्रिप्शन और लॉगिंग एक बार लिखे जाते हैं और सभी प्लेटफ़ॉर्म पर पुन: उपयोग किए जाते हैं। यह कोड रखरखाव और परीक्षण को सरल बनाता है।
मूल API तक पहुँच — Xamarin बाइंडिंग के माध्यम से iOS (Cocoa Touch) और Android (Android SDK) API तक 100% पहुँच प्रदान करता है। जब iOS या Android का नया संस्करण जारी होता है, Microsoft 24–48 घंटों के भीतर अद्यतन बाइंडिंग प्रकाशित करता है। लापता बाइंडिंग (कस्टम Objective-C या Kotlin लाइब्रेरीज़) के लिए, Android Bindings Library या iOS Binding Library मैन्युअल रूप से बनाई जाती है।
Microsoft पारिस्थितिकी तंत्र के साथ एकीकरण — Xamarin Visual Studio, Azure DevOps, App Center (CI/CD, परीक्षण, निगरानी) और Enterprise Mobility + Security (Intune, ADAL, MSAL) का समर्थन करता है। App Center Analytics और Crashes लाइव एप्लिकेशन से डेटा एकत्र करते हैं। Visual Studio App Center बिल्ड, डिवाइस परीक्षण और ऐप स्टोर पर प्रकाशन को स्वचालित करता है।
हानियाँ में एप्लिकेशन आकार शामिल है — एक खाली स्क्रीन वाला Xamarin.Forms APK 25–35 MB का होता है जबकि मूल Android ऐप 5–8 MB का होता है। संकलन समय भी अधिक है: एक मध्यम आकार का प्रोजेक्ट 2–5 मिनट में बनता है जबकि मूल Android Studio में 30–60 सेकंड लगते हैं। Mono Runtime अंतिम बाइनरी में 15–20 MB जोड़ता है।
दूसरी कमी है नए API में देरी. नई iOS/Android सुविधाएँ मूल विकास में तुरंत दिखाई देती हैं, जबकि Xamarin में वे बाइंडिंग जारी होने के 1–2 महीने बाद आती हैं। iOS 17 SDK (2023) को Xamarin द्वारा रिलीज़ के 3 सप्ताह बाद पूरी तरह समर्थित किया गया था। तत्काल परियोजनाओं के लिए, यह महत्वपूर्ण हो सकता है। .NET MAUI .NET 8 के साथ सीधे एकीकरण के माध्यम से इस समस्या का समाधान करता है।
| मापदंड | Xamarin | .NET MAUI |
|---|---|---|
| प्लेटफ़ॉर्म | iOS, Android, Windows | iOS, Android, Windows, macOS, Tizen |
| आधार फ्रेमवर्क | Mono + .NET Standard | .NET 6+ (एकीकृत BCL) |
| UI फ्रेमवर्क | Xamarin.Forms | .NET MAUI (उत्तराधिकारी) |
| समर्थन स्थिति | 1 मई 2024 से जीवन का अंत | सक्रिय Microsoft विकास |
| Hot Reload | सीमित | XAML Hot Reload + C# Reload |
.NET MAUI (Multi-platform App UI) Xamarin.Forms का विकास है, जिसे Microsoft ने 2022 में .NET 6 के साथ जारी किया था। MAUI iOS, Android, Windows और macOS को एक ही प्रोजेक्ट में एकीकृत करता है बिना प्रत्येक प्लेटफ़ॉर्म के लिए अलग प्रोजेक्ट की आवश्यकता के। Xamarin.Forms के विपरीत, MAUI Mono और .NET Standard के बजाय .NET 6+ BCL का उपयोग करता है।
Microsoft एक स्थानांतरण उपकरण प्रदान करता है — Visual Studio के लिए .NET Upgrade Assistant। यह Xamarin.Forms प्रोजेक्ट का विश्लेषण करता है, नेमस्पेस बदलता है (Xamarin.Forms.* -> Microsoft.Maui.*), .csproj फ़ाइलों को अपडेट करता है (SDK-शैली प्रारूप), और Android और iOS सेटिंग्स को एकीकृत कॉन्फ़िगरेशन में स्थानांतरित करता है। स्थानांतरण के बाद, प्रोजेक्ट सभी नई .NET 8 क्षमताओं का लाभ उठा सकता है: Native AOT, सुरक्षा के लिए CodeQL, और बेहतर बिल्ड प्रदर्शन।
मुख्य परिवर्तन है एकल प्रोजेक्ट। जबकि Xamarin.Forms को 3 अलग प्रोजेक्ट (iOS, Android, .NET Standard) की आवश्यकता थी, .NET MAUI Platforms/iOS, Platforms/Android, Platforms/Windows और Platforms/MacCatalyst फ़ोल्डरों के साथ एक प्रोजेक्ट का उपयोग करता है। प्रत्येक प्लेटफ़ॉर्म प्लेटफ़ॉर्म-विशिष्ट सशर्त निर्देशों (#if ANDROID, #if IOS) के साथ साझा कोड से संकलित होता है।
मौजूदा कोडबेस के लिए, .NET MAUI Xamarin.Forms के साथ 90% पिछड़ी संगतता बनाए रखता है। API संगतता ContentView, ContentPage, Shell, NavigationPage, DependencyService और MessagingCenter को कवर करती है। मुख्य परिवर्तनों ने Device.StartTimer (IDispatcher द्वारा प्रतिस्थापित), Platform API (Microsoft.Maui.ApplicationModel में स्थानांतरित) और अप्रचलित रेंडरर्स (Handlers द्वारा प्रतिस्थापित) को प्रभावित किया।
स्थानांतरण प्रक्रिया में पाँच चरण शामिल हैं। पहला — Xamarin.Forms को नवीनतम संस्करण 5.0 में अपडेट करें। दूसरा — .NET Standard 2.0 को .NET 6 या 8 से बदलें। तीसरा — स्वचालित प्रोजेक्ट रूपांतरण के लिए Upgrade Assistant चलाएँ। चौथा — Platforms फ़ोल्डरों में प्लेटफ़ॉर्म-विशिष्ट कोड ठीक करें। पाँचवाँ — परीक्षण, विशेष रूप से कस्टम रेंडरर्स और प्लेटफ़ॉर्म सेवाओं का।
अक्सर पूछे जाने वाले प्रश्न
Xamarin iOS, Android और Windows के लिए C# डेवलपमेंट हेतु Microsoft का मोबाइल प्लेटफ़ॉर्म है। यह साझा कोड संकलन के लिए Mono Runtime का उपयोग करता है और दो दृष्टिकोण प्रदान करता है: Xamarin.Forms (XAML के माध्यम से एकीकृत UI) और Xamarin.Native (प्लेटफ़ॉर्म-मूल स्क्रीन)। 2024 से, Xamarin समर्थन मोड में है।
Xamarin C# और .NET का उपयोग करता है, बाइंडिंग के माध्यम से मूल नियंत्रणों (UIKit, View) के माध्यम से रेंडर करता है। Flutter Dart और अपने स्वयं के रेंडरिंग इंजन (Impeller) का उपयोग करता है, बिना मूल UI घटकों पर निर्भर हुए। Flutter सभी प्लेटफ़ॉर्म पर एक समान रूप प्रदान करता है, जबकि Xamarin प्रत्येक OS का मूल स्वरूप प्रदान करता है। Flutter Google द्वारा समर्थित है और Xamarin के 15% के मुकाबले 46% हिस्सेदारी रखता है।
नहीं। Microsoft ने 1 मई 2024 को Xamarin का समर्थन बंद कर दिया। सभी नए प्रोजेक्ट .NET MAUI पर शुरू किए जाने चाहिए — इसके उत्तराधिकारी पर, जो .NET 8 में निर्मित है और .NET प्लेटफ़ॉर्म के साथ अपडेट प्राप्त करेगा। मौजूदा Xamarin.Forms प्रोजेक्ट के लिए, 12–18 महीनों के भीतर स्थानांतरण की सिफारिश की जाती है।
सामान्य एप्लिकेशन के लिए अंतर नगण्य है। Xamarin.Forms Managed-Wrapper-Native परतों के कारण 5–10% रेंडरिंग ओवरहेड जोड़ता है। भारी सूचियों (ListView बनाम RecyclerView) और एनिमेशन (प्लेटफ़ॉर्म API के बिना Xamarin.Forms का उपयोग) में समस्याएँ उत्पन्न होती हैं। CollectionView (जिसने ListView को बदल दिया) और मूल एनिमेशन का उपयोग करने की सिफारिश की जाती है।
हाँ, Android Bindings Library के माध्यम से। यह .NET प्रोजेक्ट प्रकार AAR या JAR आर्काइव को स्वचालित क्लास और मेथड जनरेशन के साथ C# बाइंडिंग में लपेटता है। Kotlin लाइब्रेरीज़ को कोरूटीन और सील्ड क्लास के लिए अतिरिक्त हैंडलर की आवश्यकता होती है, जो Binding Library में Metadata.xml के माध्यम से कॉन्फ़िगर किए जाते हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें