Compose Multiplatform

**Compose Multiplatform** یک چارچوب (فریم‌ورک) مدرن برای توسعه‌ی نرم‌افزارهای چندپلتفرمی است که توسط شرکت JetBrains توسعه داده شده است. این فریم‌ورک بر پایه‌ی Jetpack Compose طراحی شده و به توسعه‌دهندگان اجازه می‌دهد با استفاده از زبان Kotlin، یک بار کد بنویسند و همان کد را روی سیستم‌عامل‌های مختلف از جمله اندروید، iOS، دسکتاپ و وب اجرا کنند.

### تاریخچه و معرفی
----با افزایش تنوع در دستگاه‌ها و سیستم‌عامل‌ها، توسعه‌ی نرم‌افزار به چالشی جدی برای برنامه‌نویسان تبدیل شده است. در گذشته، برای هر سیستم‌عامل باید به‌طور جداگانه برنامه‌نویسی می‌شد، امری که منجر به افزایش هزینه، پیچیدگی نگه‌داری و زمان توسعه می‌گردید

## Compose Multiplatform چیست؟
تصور کنید می‌خواهید یک اپلیکیشن کاربردی بسازید؛ مثلاً یک برنامه‌ی مدیریت کارهای روزانه. کاربران شما از دستگاه‌های مختلف استفاده می‌کنند:

* برخی گوشی اندرویدی دارند،
* بعضی از کاربران از iPhone استفاده می‌کنند،
* برخی دیگر ترجیح می‌دهند از وب یا کامپیوتر دسکتاپ به برنامه‌ی شما دسترسی داشته باشند.

اما مشکل اینجاست که در روش‌های سنتی، هر سیستم‌عامل زبان برنامه‌نویسی و فناوری مخصوص خود را دارد:

* برای اندروید باید از Kotlin یا Java استفاده کنید.
* برای iOS باید Swift یا Objective-C را یاد بگیرید.
* برای وب، حداقل نیاز به HTML، CSS و JavaScript دارید.
* برای دسکتاپ (ویندوز، مک، لینوکس) باید از JavaFX، Swing یا سایر ابزارها استفاده کنید.

این یعنی برنامه‌نویسان باید یک اپلیکیشن را چندین بار با زبان‌های مختلف از اول بنویسند که این کار از لحاظ هزینه و زمان به صرفه نیست.

پس JetBrains، همان شرکت سازنده‌ی زبان Kotlin، فریم‌ورکی به نام Compose Multiplatform (CMP) را توسعه داده است که به برنامه‌نویسان اجازه می‌دهد یک بار کدنویسی کنند و برنامه را روی همه‌ی این سیستم‌ها اجرا کنند.

**به عبارت ساده‌تر:**

* به جای نوشتن چندین نسخه برای هر سیستم‌عامل، فقط یک بار کد می‌نویسید و روی همه‌ی دستگاه‌ها اجرا می‌شود.
* دیگر نیازی به یادگیری چندین زبان و فریم‌ورک مختلف ندارید.
* این کار باعث کاهش هزینه و افزایش سرعت توسعه‌ی اپلیکیشن‌ها می‌شود.

### چرا CMP یک نوآوری مهم است؟
Compose Multiplatform بر پایه‌ی Jetpack Compose ساخته شده است. این یعنی از همان روش مدرن طراحی رابط کاربری که گوگل برای اندروید معرفی کرده بود، برای همه‌ی پلتفرم‌ها استفاده می‌کند.

به عنوان مثال فرض کنید می‌خواهید یک اپلیکیشن فروشگاهی بسازید که روی اندروید، iOS و وب کار کند.

در روش‌های سنتی، توسعه‌دهندگان مجبور بودند یک برنامه را سه بار از ابتدا برای اندروید،iOS و وب بنویسند. اما با استفاده ازCompose Multiplatform، این مشکل برطرف شده است. شما فقط یک بار کدنویسی می‌کنید و همان برنامه بدون نیاز به بازنویسی، روی تمام پلتفرم‌ها اجرا می‌شود.فناوری CMP، توسعه‌ی اپلیکیشن‌های چندپلتفرمی را ساده‌تر، سریع‌تر و کم‌هزینه‌تر می‌کند.

اما این تکنولوژی هنوز در حال پیشرفت است و برخی محدودیت‌ها دارد، اما در حال تبدیل شدن به یکی از بهترین روش‌های توسعه‌ی اپلیکیشن‌های چندسکویی است.

### نحوه عملکرد  Compose Multiplatform
از معماری چندلایه استفاده می‌کند که به دو بخش اصلی تقسیم می‌شود:

**کد مشترک (Shared Code)** در این بخش، بخش‌هایی از برنامه که در تمام پلتفرم‌ها یکسان هستند نوشته می‌شوند. این بخش شامل موارد زیر است:

* **رابط کاربری (UI):** طراحی ظاهری اپلیکیشن شامل دکمه‌ها، لیست‌ها، فرم‌ها و سایر عناصر گرافیکی.
* **منطق برنامه (Business Logic):** شامل پردازش داده‌ها، انجام محاسبات و ارتباط با APIها.
* **مدیریت وضعیت (State Management):** کنترل وضعیت داده‌ها و تعاملات کاربر در طول اجرای برنامه.

## مقایسه CMP با Flutter و React Native
در دنیای توسعه‌ی چندپلتفرمی، سه فناوری مهم در حال رقابت با یکدیگر هستند: Compose Multiplatform، Flutter و React Native هر کدام از این فریم‌ورک‌ها ویژگی‌های خاص خود را دارند و برای استفاده در شرایط مختلف مناسب هستند. در این بخش، به مقایسه‌ی Compose Multiplatform با دو رقیب اصلی آن، Flutter و React Native می‌پردازیم.

### زبان برنامه‌نویسی
Flutter از زبان Dart استفاده می‌کند که توسط گوگل توسعه داده شده است. React Native بر پایه‌ی JavaScript و TypeScript کار می‌کند که برای توسعه‌دهندگان وب و فرانت‌اند مناسب است. در مقابل، Compose Multiplatform از Kotlin بهره می‌برد که یک زبان مدرن و بهینه برای توسعه‌ی چندپلتفرمی محسوب می‌شود.

### روش طراحی رابط کاربری
Flutter از فریم‌ورک Flutter UI برای طراحی رابط کاربری استفاده می‌کند که کاملاً مستقل از عناصر بومی سیستم‌عامل است. React Native از عناصر بومی (Native Components) برای نمایش UI استفاده می‌کند. در حالی که Compose Multiplatform بر پایه‌ی Jetpack Compose ساخته شده و برای توسعه‌ی UI در پلتفرم‌های مختلف طراحی شده است.

### پشتیبانی از پلتفرم‌های مختلف
Flutter به‌طور گسترده از اندروید، iOS، وب، دسکتاپ (ویندوز، مک و لینوکس) و حتی دستگاه‌های Embedded پشتیبانی می‌کند. React Native بیشتر برای اندروید و iOS طراحی شده است، اما با ابزارهای اضافه می‌توان آن را برای وب و دسکتاپ نیز گسترش داد. Compose Multiplatform از اندروید، iOS، دسکتاپ و وب پشتیبانی می‌کند، اما در حال حاضر تمرکز اصلی آن روی اندروید و دسکتاپ است.

### عملکرد و کارایی
Flutter به دلیل داشتن موتور گرافیکی مستقل (Skia) عملکرد بسیار بالایی دارد و در برخی موارد حتی از برنامه‌های بومی سریع‌تر عمل می‌کند. React Native به دلیل وابستگی به JavaScript و ارتباط مداوم بین JavaScript و بومی (Native Bridge) ممکن است در برخی موارد کندتر از Flutter باشد. Compose Multiplatform عملکرد بسیار خوبی دارد، اما هنوز به‌اندازه‌ی Flutter بهینه نشده است.

### جامعه‌ی توسعه‌دهندگان و منابع آموزشی
یکی از مهم‌ترین عواملی که در انتخاب یک فریم‌ورک چندپلتفرمی تأثیر دارد، میزان پشتیبانی جامعه‌ی توسعه‌دهندگان و در دسترس بودن منابع آموزشی است.

Flutter به دلیل اینکه توسط گوگل توسعه داده شده، دارای یک جامعه‌ی بسیار بزرگ از توسعه‌دهندگان است. مستندات رسمی گسترده، دوره‌های آموزشی، انجمن‌های تخصصی، و پشتیبانی قوی از سوی شرکت‌ها و برنامه‌نویسان باعث شده که Flutter به یکی از محبوب‌ترین گزینه‌های توسعه‌ی چندپلتفرمی تبدیل شود.

React Native نیز به دلیل وابستگی به JavaScript و استفاده‌ی گسترده‌ی آن در پروژه‌های تحت وب، جامعه‌ی بسیار فعالی دارد. توسعه‌دهندگانی که قبلاً با ReactJS کار کرده‌اند، به‌راحتی می‌توانند وارد دنیای React Native شوند و از منابع آموزشی متعددی که در اینترنت موجود است، بهره ببرند.

اما Compose Multiplatform هنوز در مراحل اولیه‌ی پذیرش قرار دارد و جامعه‌ی آن نسبت به دو رقیب خود کوچک‌تر است. اگرچه پشتیبانی رسمی از سوی JetBrains و جامعه‌ی کاربران Kotlin به گسترش آن کمک کرده، اما منابع آموزشی و مستندات هنوز به‌اندازه‌ی Flutter و React Native گسترده نیست. بااین‌حال، به دلیل محبوبیت فزاینده‌ی Kotlin و گسترش استفاده از Jetpack Compose در اندروید، انتظار می‌رود که در آینده نزدیک، جامعه‌ی این فناوری رشد قابل‌توجهی داشته باشد و مستندات بیشتری برای آن در دسترس قرار گیرد.

### کد اختصاصی پلتفرم (Platform-Specific Code)
در این بخش، ویژگی‌هایی پیاده‌سازی می‌شوند که به سخت‌افزار یا امکانات خاص هر سیستم‌عامل وابسته‌اند؛ مانند:

* دسترسی به دوربین یا GPS

* ارسال نوتیفیکیشن‌ها

* تعامل با فایل‌های محلی

**مثال کاربردی**  فرض کنید یک اپلیکیشن یادداشت‌برداری ساخته‌اید. صفحه‌ی اصلی شامل لیست یادداشت‌هاست که در تمام پلتفرم‌ها ظاهر یکسانی دارد؛ این بخش در کد مشترک نوشته می‌شود. اما اگر بخواهید کاربر بتواند از دوربین گوشی برای افزودن تصویر استفاده کند، باید برای اندروید و iOS کد جداگانه‌ای بنویسید.
----

### مزایا

# استفاده از زبان Kotlin در همه‌ی پلتفرم‌ها
# کاهش زمان و هزینه توسعه
# استفاده مجدد از کدها و افزایش بهره‌وری
# طراحی رابط کاربری مدرن با استفاده از Compose

----

### معایب و محدودیت‌ها

# در حال توسعه و نسبتاً جدید
# منابع آموزشی محدودتر نسبت به Flutter و React Native
# هنوز بهینه‌سازی کمتری نسبت به برخی رقبا دارد

----

### آینده
با توجه به سرمایه‌گذاری JetBrains و محبوبیت روزافزون Kotlin، انتظار می‌رود Compose Multiplatform در سال‌های آینده جایگاه قوی‌تری در میان ابزارهای توسعه‌ی نرم‌افزارهای چندپلتفرمی پیدا کند. اگر محدودیت‌های فعلی برطرف شوند، این فریم‌ورک می‌تواند به یکی از انتخاب‌های اصلی در توسعه‌ی اپلیکیشن‌ها بدل شود. اگر نیاز به اطلاعات بیشتری برای درک این موضوع دارید می توانید به مرجع معتبرhttps://learnclasico.com/ رجوع کنید.


## منابع
رده:برنامه‌نویسی