Xamarin مائیکروسافٹ کا ایک پلیٹ فارم ہے جو 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 میں قائم ہوئی اور اسے مائیکروسافٹ نے 2016 میں 400 ملین ڈالر میں خریدا۔ خریداری کے بعد، Xamarin Visual Studio اور Azure ماحولیاتی نظام کا حصہ بن گیا۔
خریداری سے پہلے، Xamarin Enterprise لائسنس کے ساتھ ایک تجارتی مصنوعہ تھا۔ مائیکروسافٹ نے اسے Visual Studio Community کے حصے کے طور پر مفت کر دیا اور Mono Runtime اور SDK بائنڈنگز کا سورس کوڈ بھی کھلا کر دیا۔ اس کی وجہ سے مقبولیت میں اضافہ ہوا: SlashData رپورٹ کے مطابق، 2020 تک 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 میں جاری کیا گیا۔ مائیکروسافٹ نے اعلان کیا کہ 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 کا نیا ورژن جاری ہوتا ہے، مائیکروسافٹ 24–48 گھنٹوں میں اپ ڈیٹ شدہ بائنڈنگز شائع کرتا ہے۔ غائب بائنڈنگز (کسٹم Objective-C یا Kotlin لائبریریز) کے لیے، Android Bindings Library یا iOS Binding Library دستی طور پر بنائی جاتی ہے۔
مائیکروسافٹ ایکو سسٹم کے ساتھ انضمام — 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) کو ریلیز کے 3 ہفتوں بعد Xamarin نے مکمل طور پر سپورٹ کیا۔ فوری منصوبوں کے لیے، یہ اہم ہو سکتا ہے۔ .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 سے زندگی کا اختتام | مائیکروسافٹ کی فعال ترقی |
| Hot Reload | محدود | XAML Hot Reload + C# Reload |
.NET MAUI (Multi-platform App UI) Xamarin.Forms کا ارتقاء ہے، جسے مائیکروسافٹ نے 2022 میں .NET 6 کے ساتھ جاری کیا۔ MAUI iOS، Android، Windows اور macOS کو ایک ہی پروجیکٹ میں یکجا کرتا ہے بغیر ہر پلیٹ فارم کے لیے الگ پروجیکٹ کے۔ Xamarin.Forms کے برعکس، MAUI Mono اور .NET Standard کی بجائے .NET 6+ BCL استعمال کرتا ہے۔
مائیکروسافٹ ایک منتقلی کا آلہ فراہم کرتا ہے — 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# ڈویلپمنٹ کا مائیکروسافٹ موبائل پلیٹ فارم ہے۔ یہ مشترکہ کوڈ تالیف کے لیے 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% حصہ رکھتا ہے۔
نہیں۔ مائیکروسافٹ نے 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں