Xamarin হল C# ভাষায় মোবাইল অ্যাপ্লিকেশন তৈরির জন্য Microsoft-এর একটি প্ল্যাটফর্ম, যা 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 রিপোর্ট অনুসারে, 15% ক্রস-প্ল্যাটফর্ম প্রকল্পে Xamarin ব্যবহার করা হত।
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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন