توسعه اپلیکیشن موبایل بین پلتفرمی توسعه بین پلتفرمی: موافق یا مخالف؟ هزینه های عملیاتی کم
به نظر می رسد که ما توسعه بین پلتفرمی داریم که امکان ایجاد برنامه های جهانی برای پلتفرم های مختلف را فراهم می کند. من برنامه را سریعتر نوشتم، بلافاصله آن را در همه جا منتشر کردم - سود! و هیچ توسعه بومی مورد نیاز نیست. یا هنوز مورد نیاز است؟ درباره تفاوت های ظریف هر دو رویکرد توسعه اپلیکیشن های موبایلاز کارشناسان خود پرسیدیم
"توسعه دهنده موبایل" یک مفهوم گسترده است. توسعه دهنده اجرای قطعات موبایل سیستم عامل، همچنین یک توسعه دهنده موبایل است. و اگر هدف تبدیل شدن به چنین توسعه دهنده ای است، پس باید با یادگیری C++، سیستم عامل موبایل و سخت افزار شروع کنید. دستگاه های تلفن همراه.
اگر منظور شما توسعهدهندهای است که برنامههای موبایل سفارشی را پیادهسازی میکند، پس باید با توسعه بومی شروع کنید.
چرا اینطور است؟ توسعه بومی به شما امکان می دهد تا توانایی های سیستم عامل های خاص (و برنامه های کاربردی برای آنها) و سخت افزار موبایل را بهتر و عمیق تر مطالعه کنید.
از دیدگاه کاربر، توسعه بومی قطعا برنده است. برنامههای بومی سریعتر کار میکنند، رابط کاربری آنها برای کاربران یک سیستمعامل موبایل خاص، پاسخگوتر و آشناتر است، از قابلیتهای سختافزاری دستگاه بهتر استفاده میکنند، آفلاین بهتر کار میکنند و باگ کمتری دارند.
ایده اصلی توسعه بین پلتفرمی کاهش هزینه های نیروی کار توسعه دهندگان است. به طور خلاصه می توان آن را به صورت زیر بیان کرد: "یک بار انجام شد، روی هر چیزی کار می کند." ایده خوب و درست است (از نظر توسعه دهنده)، اما مشکلات کیفی وجود دارد. هر گونه تطبیق پذیری ذاتاً با مصالحه همراه است و زمینه توسعه موبایل نیز از این قاعده مستثنی نیست.
هنگام انتخاب نوع توسعه برای یک کار خاص، توسعه دهنده باید ارزیابی کند که این سازش تا چه حد قابل قبول است. تعدادی کار وجود دارد که استفاده از توسعه بین پلتفرمی کاملاً توجیه می شود، به عنوان مثال، در پروژه های آزمایشی، نسخه های موبایلی وب سایت ها، بازی هایی با استفاده از چارچوب هایی مانند Unity 3D.
در عین حال، برای پروژه هایی که مشکلات کسب و کار تلفن همراه را حل می کنند (با بار زیاد، نیاز به پشتیبانی از حالت آفلاین، با هدف توسعه طولانی مدت)، توسعه بومی تنها بهینه به نظر می رسد (و برای برخی کارها، تنها امکان ممکن ) گزینه.
در عین حال، معایب اصلی توسعه بومی زمان توسعه (بیشتر مورد نیاز است) و نیاز به منابع متنوع (توسعه دهندگان در زبان های برنامه نویسی بومی مختلف) است. راههایی برای کاهش این کاستیها وجود دارد - به عنوان مثال، از نوعی پلت فرم برنامه تلفن همراه (کلاس MEAP) برای توسعه استفاده کنید که به شما امکان میدهد برنامههای کاربردی بومی ایجاد کنید.
Demote را ارتقا دهید
, مدیر توسعه فناوری شرکت فناوری اطلاعات "ID - Management Technologies"
هر کتابخانه یا چارچوب متقابل پلتفرمی مبتنی بر همان مکانیسمهای بومی است که توسعه بومی مستقیماً بر اساس آن پیادهسازی میشود. فقط در مورد راهحلهای چند پلتفرمی، فرآیندهای کاری به گونهای ساخته میشوند که «گوشهها» را از نظر رساندن رابط راهحل نهایی به یک مخرج مشترک خاص، «صاف کردن» کند.
به عنوان یک قاعده، جهانی گرایی همیشه پاسخی به کار ایجاد یک راه حل کارآمد تلفن همراه نیست: توسعه دهنده هر چه بهتر مکانیسم های فرآیندهای مختلف را از درون درک کند، همانطور که می گویند، "زیر سرپوش" بهتر کار می کند.
همچنین، کاملا مدل کارتسلط همزمان بر عناصر اساسی این دو رویکرد وجود خواهد داشت، هیچ چیز غیرممکنی در این کار یادگیری در مرحله اولیه وجود ندارد. به عنوان مثال، چنین سناریویی ممکن است کاملاً عملی و امیدوارکننده باشد: شروع به کار در یک الگوی چند پلت فرمی کنید، و در همان زمان، به طور مستقل یا با کمک همکاران، بررسی کنید که چه قابلیتهای بومی برای توسعه راهحلهای فعلی وجود دارد و چگونه آنها را می توان در عمل به کار برد.
در این حالت، دستیابی به درک جامعی از نحوه عملکرد اصولی فرآیند توسعه تلفن همراه که به آن end-to-end گفته می شود، آسان تر است. این نیز مفید است زیرا هر پلتفرم جهانی، حتی پیشرفتهترین، در قابلیتهای خود از پلتفرم بومی عقبتر است: سازندگان سختافزار و سیستمعامل موبایل اغلب با هم کار میکنند و دائماً قابلیتهای راهحلهای نهایی را افزایش میدهند - قابلیتهای پلتفرمهای توسعه موبایل، بهویژه متقابل. راه حل های پلت فرم، به ناچار عقب می مانند.
محصولات جدید در بخش دستگاه های تلفن همراه به طور مداوم در بازار ظاهر می شوند، برخی از آنها به طور قابل توجهی جلوتر از زمان خود هستند - سامسونگ و توسعه دستگاهی با صفحه نمایش خمیده را در نظر بگیرید: بدیهی است که به دلیل ظاهر کاملاً متفاوت ، پلتفرم های توسعه موجود برای چنین مواردی آماده نیستند.
اینجاست که دانش عمیق پلتفرمهای بومی مفید است: فقط یک توسعهدهنده با دانش عمیق و سیستمی از توسعه تلفن همراه، یعنی پلتفرمهای بومی، میتواند عقب ماندگی طبیعی سختافزار و سیستمعامل را جبران کند. فقط چنین متخصصی می تواند عملکرد راه حل خود را برای جدیدترین دستگاه های تلفن همراه بر اساس پلتفرم های توسعه کاملاً پیشرفته موجود در حال حاضر افزایش دهد.
توسعه کراس پلتفرم برای نمونه سازی عالی است، تست سریعایدهها و غیره. به محض اینکه نوبت به ایجاد محصولات واقعاً اساسی میرسد، توسعهدهنده ناگزیر به مطالعه عمیق عناصر اساسی فرآیند، یعنی توسعه بومی میرسد.
Demote را ارتقا دهید
, رئیس دانشکده توسعه iOS GeekUniversity، پورتال آموزشی GeekBrains
پاسخ کوتاه: اگر تجربه برنامه نویسی ندارید، مطمئناً باید توسعه بومی را انتخاب کنید. توسعه بین پلتفرمی برای متخصصانی که از حوزههای مرتبط به توسعه موبایل میروند خوب است. به عنوان مثال، اگر شما یک توسعه دهنده frontend هستید که دانش خوبی از جاوا اسکریپت با استفاده از چارچوب React Native (ساخته شده در بالای چارچوب React) دارید، می توانید به سرعت و بدون دردسر بر توسعه تلفن همراه مسلط شوید. به طور مشابه، تسلط بر فریم ورک Xamarin برای یک توسعه دهنده دات نت آسان تر خواهد بود.
توسعه کراس پلتفرم برای مشتری نیز مفید است - پیدا کردن یک تیم از توسعه دهندگان که طبق یک مدل رایج، یک برنامه کاربردی برای دو پلتفرم به طور همزمان توسعه دهند، آسان تر است.
مزایا مشخص است، اما معایب توسعه چند پلتفرمی چیست؟! اعتقاد بر این است که هرچه عملکرد یک برنامه تلفن همراه پیچیده تر و ظریف تر باشد، پیاده سازی آن با استفاده از ابزارهای چند پلتفرمی دشوارتر، اگر نگوییم غیرممکن است - این اغلب بیشتر از تمام مزایای ابزارهای جهانی است. بر اساس تجربه من، چندین شرکت بزرگ وجود دارند که با رشد برنامه های خود، مجبور به کنار گذاشتن کراس پلتفرم به نفع توسعه بومی شدند. بنابراین، برای پروژه های کوچک و احتمالاً کارهای مستقل، راه حل های کلی کافی است، اما برای پروژه های بزرگ، راه حل های بومی مناسب تر هستند.
تقاضا برای هر دو منطقه بسیار زیاد است، اما برای توسعه بومی تا حدودی بیشتر است: با درخواست Swift در hh.ru در روسیه - 369 جای خالی، Kotlin - 397، React Native - 111، Flutter - 13 Xamarin - 18. اما مطمئن باشید. ، یک متخصص خوب در هیچ شغلی در هیچ بخشی باقی نخواهد ماند.
Demote را ارتقا دهید
برای شروع، مهم است که توجه داشته باشید که هر برنامه تلفن همراه از چندین لایه تشکیل شده است:
- UI چیزی است که کاربر می بیند.
- منطق تجاری چیزی است که برنامه برای آن نوشته شده است.
- سایر اجزای پلت فرم - کار با شبکه، پایگاه های داده و سایر اجزای سیستم که توسط منطق تجاری استفاده می شوند.
بسته به کاربرد خاص، اندازه اجزای این لایه ها می تواند بسیار متفاوت باشد. به عنوان مثال، یک برنامه برای خواندن اخبار در یک وب سایت بسیار متفاوت از یک سرویس گیرنده VPN خواهد بود.
خود توسعه را می توان به سه نوع تقسیم کرد: بومی، کاملاً کراس پلتفرم و ترکیبی.
توسعه بومی
در توسعه بومی، هر سه لایه با استفاده از مجموعه ای از ابزارها نوشته می شوند. بنابراین، آنها می توانند بدون هیچ گونه پیچیدگی اضافی با یکدیگر تعامل داشته باشند.
مزایای توسعه بومی:
توسعه ترکیبی
این نوع توسعه هر دو رویکرد قبلی را ترکیب می کند. لایه منطق کسب و کار به عنوان یک جزء "قابل حمل" ساخته شده است و UI و پلت فرم یکپارچه با استفاده از ابزارهای استاندارد ایجاد می شوند. چندین زبان برای نوشتن منطق کلی وجود دارد: C/C++ (راه حل بالغ و قدرتمند)، KotlinNative (بسیار فعالانه توسعه یافته) و جاوا اسکریپت (کمترین متداول).
مزایا:
- اجزای مناسب برای این کار بومی باقی می مانند.
- منطق کلی یک بار ایجاد می شود.
ایرادات:
- اگر یک مؤلفه مشترک توسط یک تیم تلفن همراه ایجاد شود، لازم است در یک زبان دیگر تخصص کسب کنید.
- هزینه ای برای یکپارچه سازی اجزای کراس پلتفرم وجود دارد.
برای شروع با چه نوع توسعه ای بهتر است؟
برای پاسخ به این سوال، باید بدانید که چه نوع پروژه هایی را می خواهید ایجاد کنید. پروژه های کوچک می توانند صرفاً کراس پلتفرم باشند و این کاملاً توجیه خواهد شد. در اینجا من به شما توصیه می کنم که نگاه دقیق تری به فلاتر بیندازید.
اما امروز با توسعه بومی شروع می کنم. اولاً، امروزه بیشتر پروژه ها به صورت بومی ایجاد می شوند. این بدان معناست که شما فرصت بیشتری برای تغییر پروژه ها/شرکت ها خواهید داشت. ثانیاً، با گذشت زمان میتوان به سمت توسعه پلت فرم هیبریدی رفت. این به شما امکان می دهد در مسائل فنی رشد کنید.
Demote را ارتقا دهید
به نظر من، بهتر است با بومی شروع کنید، و سپس، اگر واقعاً می خواهید، بر یک یا چند ابزار چند پلتفرمی تسلط داشته باشید. تنها استثنا ممکن است توسعه بازی باشد، زیرا آنها عمدتاً در Unity نوشته شده اند و این یک موتور کراس پلتفرم است.
اگر در مورد مزایای توسعه بومی صحبت کنیم، برای یک برنامه نویس به معنای موانع کمتر و تعداد بیشتری ابزار مختلف برای کار است. او همچنین منابع اطلاعاتی بیشتری برای حل مسائل پیچیده ای خواهد داشت که در فرآیند ایجاد یک برنامه به وجود می آیند - این راز نیست که برای توسعه بومی نکات و ترفندها در اینترنت چندین برابر بیشتر از توسعه چند پلتفرمی وجود دارد.
برای کاربر نهایی، توسعه بومی به این معنی است که برنامه دارای رابط های آشنا و قابل پیش بینی و الگوهای رفتاری خواهد بود - مشروط بر اینکه برنامه مطابق با تمام راهنماها نوشته شده باشد.
یک برنامه چند پلتفرمی ممکن است همیشه نتواند به طور کامل دستورالعمل های هر دو پلتفرم را رعایت کند و این می تواند مشکلات بیشتری را برای توسعه دهنده و کاربر ایجاد کند. ساده ترین مثال- وضعیت دکمه "بازگشت": در اندروید تقریباً در همه صفحه ها وجود دارد در حالی که در iOS اینطور نیست. اگر بدون این دکمه یک برنامه کراس پلتفرم بسازید، ممکن است برخی از کاربران اندروید احساس ناراحتی کنند.
همچنین باید به تفاوت هزینه های توسعه اشاره کرد. اگر پروژه پیچیده نیست، انتخاب توسعه بین پلتفرمی به شما امکان می دهد در بودجه خود صرفه جویی کنید، زیرا شما در واقع محصولات جداگانه ای را برای پلتفرم های مختلف توسعه نمی دهید، بلکه یک محصول برای همه ایجاد می کنید. اما اگر پروژه رشد کند، ترازو به سمت دیگری می رود و توسعه بومی ممکن است سودآورتر باشد.
وقتی صحبت از سرعت برنامه می شود، محصولات کراس پلتفرم کندتر هستند. به عنوان مثال، آنهایی که مبتنی بر فناوری های وب هستند یک مرورگر به عنوان یک لایه دارند که به طور قابل توجهی سرعت برنامه را کاهش می دهد.
Demote را ارتقا دهید
انتخاب یک رویکرد بین پلتفرمی یا بومی در واقع به دو عامل بستگی دارد: ماهیت توسعه تلفن همراه که شخصاً می خواهید انجام دهید، یا درخواست کارفرمایان که علاقه مند به همکاری با آنها هستید. بنابراین، به عنوان مثال، اگر به Upwork (پلتفرمی برای یافتن متخصصان از راه دور برای پروژه ها و وظایف) نگاه کنید، متوجه غلبه واضح پیشنهادات در جهت Xamarin و React Native خواهید شد. مزایای اینجا واضح است: ارزان، سریع است و به شما امکان می دهد پروژه ها را در همه سیستم عامل ها به طور همزمان اجرا کنید. با این حال، اگر شرکت های بزرگ فناوری اطلاعات را در نظر بگیریم که کارمندان خود را در خانه جستجو می کنند، با وجود اینکه این نوع به زمان بیشتری نیاز دارد و گران تر است، تأکید قابل توجهی بر توسعه بومی وجود دارد.
در شرکت ما، توسعه بومی را اولویت بندی کرده و انتخاب می کنیم، زیرا به طراحان و توسعه دهندگان اجازه می دهد یک UX/UI روانتر و بصری تر ایجاد کنند. علاوه بر این، توسعه بومی کنترل انعطاف پذیرتری بر عملکردهای سیستم می دهد.
Demote را ارتقا دهید
اگر می خواهید یک توسعه دهنده موبایل شوید، پاسخ واضح است: باید هر یک از محیط های توسعه بومی را انتخاب کنید و به Objective-C/Swift برای iOS یا Java/Kotlin برای اندروید تکیه کنید. در این مورد، تمام قابلیت های سیستم در خدمت شما هستند، شما می توانید تقریباً تمام نکات ظریف را کنترل کنید.
اگر فقط میخواهید برنامهای بنویسید که روی تلفنها نیز کار کند، پس لازم نیست زیاد فکر کنید و آنچه را که بیشتر به آن علاقه دارید یا تجربه قابل توجهی در آن دارید انتخاب کنید: C++، React Native، Xamarin یا پانصد هزار فریمورک JS برای توسعه چند پلتفرمی. یا حتی به ساخت وب سایت های [پاسخگو] خود ادامه دهید.
اعتراف می کنم، من نسبت به کل ایده توسعه پلتفرم متقابل بر روی پلتفرم هایی متفاوت (و واگرا) مانند اندروید و iOS بسیار شک دارم. هیچ یک از فروشندگان، توسعه دهندگان «اشتباهی» را دوست ندارند که به طور همزمان روی دو صندلی بنشینند. همه در تلاشند تا برنامه نویسان را به ابزارها و محیط ها گره بزنند و در آینده قابل پیش بینی نمی توان انتظار داشت که روند همگرایی داشته باشد. چه می توانم بگویم، اپل در این مسابقه حتی OpenGL را رها کرد، کراس پلتفرم ترین کتابخانه ها بعد از Curl، اما اکنون آنها Metal خود را دارند، که به نظر می رسد همان کار را انجام می دهد، فقط بهتر و به زبانی دیگر.
از سوی دیگر، اغلب اوقات توسعه موبایل به معنای ایجاد دو برنامه کاربردی با ظاهر یکسان برای برخی از خدمات شبکه است. مشتریان همیشه حاضر نیستند برای دو محصولی که کاملاً غیرقابل تشخیص به نظر می رسند، پول بپردازند، بنابراین تقاضا برای فناوری های توسعه بین پلتفرمی وجود دارد و مسلماً بسیار زیاد است. برنامه نویسان همچنین از پس انداز پول مخالف نیستند، به خصوص اگر می خواهند یک برنامه موبایل بفروشند و تمایلی به یادگیری Swift/Kotlin ندارند، اما JS/C# در حال حاضر در دسترس است.
البته، توسعه بین پلتفرمی، تفاوت های ظریف غیر واضح زیادی را به همراه دارد. همه راهحلهای جهانی مجبور به ساخت قلعههایی در شن و ماسه هستند: یا با تکیه بر راهحلهای تکنولوژیکی پیچیده و شکننده (مانند Xamarin)، یا بر روی موتورهای جاوا اسکریپت موبایل، مانند React Native. در عین حال، فروشندگان پلتفرم حتی به پشتیبانی از هیچ یک از راه حل ها فکر نمی کنند و هر به روز رسانی SDK بومی دردسر بزرگی برای هر چارچوب چند پلتفرمی است. ناگفته نماند ویژگیهای خاص سیستم مانند دسترسی به دوربین، جاکلیدی یا حتی گالری عکس معمولی که همه سعی میکنند با درجات مختلفی از موفقیت دور شوند. توسعهدهندگانی که مسیر جهانی را انتخاب میکنند، خود را گروگان چارچوب خود میبینند و اغلب توسعهای که وعده صرفهجویی قابلتوجهی میدهد به مبارزه با چنگکزن تبدیل میشود.
همچنین معمول است که راهحلهای چند پلتفرمی چیزی را که به عنوان تجربه کاربر (UX) از آن یاد میشود قربانی میکنند: بسیاری از چارچوبها سعی میکنند از کنترلهایی استفاده کنند که تا حد امکان برای هر دو سیستم عمومی باشد، و این راهحل تقریباً همیشه برای همه به یک اندازه ناخوشایند است. یا کند می شود. یا از سبک کلی متمایز است. یا باتری را خالی می کند. لیست را خودتان ادامه دهید.
برنامههای کاربردی متقابل پلتفرم جدا هستند، هستههای آنها در سطح پایین نوشته شدهاند، تا جایی که ممکن است برای همه سیستمعاملها رایج باشد: در زبانهایی مانند C/C++. در این مورد، مرسوم است که استفاده از منطق تجاری ارائه دهنده کد را تعمیم دهیم و رابط برای هر پلتفرم جداگانه نوشته می شود. در حالت ایدهآل، از تکرار یک بخش حیاتی برنامه جلوگیری میشود، در حالی که تجربه کاربری خاص پلتفرم حفظ میشود. با این حال، در زندگی واقعی همه چیز پیچیده تر است. به عنوان مثال، دراپ باکس چندین سال متوالی سعی کرد با یک هسته سطح پایین زندگی کند، اما در نهایت به دلایل زیادی منصرف شدند و اکنون از برنامه های پلتفرم بومی راضی هستند. علاقه مندان را به مقاله جالب خود در این زمینه ارجاع می دهم.
به نظر من، صرفه جویی در چارچوب های چند پلتفرمی همیشه توهمی است. احتمالاً در برخی از پروژههای بیاهمیت، که در آن برنامه فقط نسخهای از سایت اصلی است که برای موبایل فوقالعاده بهینه شده است، رویکرد تعمیمیافته کار میکند. در موارد دیگر، شما خطر تکرار سرنوشت Dropbox را دارید. توصیه من این است که اگر می خواهید یک توسعه دهنده موبایل باشید، برای یادگیری این پلتفرم تلاش کنید. آنها همیشه نتیجه خواهند داد، حتی اگر مجبور باشید در یک پروژه چند پلتفرمی شرکت کنید.
Demote را ارتقا دهید
, توسعه دهنده ارشد نرم افزار در مرکز فناوری Accenture Tver
بازار برنامه های تلفن همراه به طور فعال در حال توسعه است و دامنه فناوری های توسعه آنها نیز به همین ترتیب در حال رشد است. ابزارهای بسیار زیادی وجود دارد که می توانید از آنها استفاده کنید.
برای توسعه بومی در پلتفرم اندرویدجاوا یا یک پوشش روی JVM - Kotlin وجود دارد. برای iOS، می توانید از Objective-C یا بسته بندی آن - Swift استفاده کنید. همه این ها زبان های OOP هستند که از Smalltalk و C به ارث برده اند.
برای توسعه بین پلتفرمی، آنها در حال حاضر از Flutter از Google استفاده می کنند، که برای آن باید Dart را بشناسید. یا React Native از فیس بوک.
برای یک توسعه دهنده مبتدی موبایل، عامل تعیین کننده به احتمال زیاد تجربه و دانش قبلی او از زبان ها خواهد بود. اگر جعبه ابزار او مبتنی بر جاوا باشد، میتواند با استفاده از همان جاوا یا کاتلین، دنیای توسعه موبایل را از طریق پلتفرم اندروید بسیار سریعتر کشف کند.
در همان زمان، Objective-C برای توسعه iOS مانند جاوا چیزهای زیادی از Smalltalk گرفت، بنابراین در صورت تمایل می توانید به نفع iOS انتخاب کنید. اما قابل توجه است که توسعه اندروید میتواند در ویندوز یا لینوکس انجام شود، اما iOS به MacOS X نیاز دارد. اما برای یک توسعهدهنده جاوا اسکریپت با دانش React، React Native واضح است که سریعترین راه است. درست مانند توسعه دهندگان دارت، انتخاب به نفع Flutter خواهد بود.
پس از اینکه یک توسعهدهنده مبتدی ایدهای درباره توسعه موبایل چیست، مسیر انتخاب شده چه مزایا و معایبی دارد، خودش تصمیم میگیرد که با یک رویکرد کار کند یا با استفاده از راهحلهای چند پلتفرمی مشکلات را حل کند.
این رویکرد مزایای خود را دارد: روش cross-platform این امکان را فراهم می کند که یک پروژه را با استفاده از منابع کمتر، کمی سریعتر در یک محیط تولیدی منتشر کنید. علاوه بر این، نگهداری آن آسان تر است. اما معایب آشکاری هم برای توسعه دهنده و هم برای کاربر دارد. برای مثال، یک توسعهدهنده نیازی به دانستن فناوریهای بومی ندارد، اما دستورالعملهای پلتفرم باید در نظر گرفته شود، زیرا برنامهای که طبق دستورالعملهای iOS نوشته شده باشد، مشکلاتی را برای آن ایجاد میکند. کاربران اندرویدو برعکس
برنامههای چند پلتفرمی نمیتوانند به سطح یکپارچهسازی دستگاههای بومی دست یابند. یعنی اگر برنامه در مورد تعامل با یک دستگاه باشد، مثلاً با دوربین، تقویم یا استفاده از قدرت محاسباتی دستگاه، دستیابی به این امر با استفاده از رویکرد بومی آسانتر است و سریعتر و بیشتر خواهد بود. مولد
هنگام توسعه یک برنامه کاربردی بین پلتفرم، متخصصان قابلیت های چارچوب را در نظر می گیرند که محدودیت هایی را اعمال می کند. همچنین شایان توجه است که برای توسعه یک محصول با استفاده از فناوری های بومی، برای هر پلتفرم به متخصصان نیاز است.
اگر به عنوان یک فریلنسر کار میکنید یا هدف دارید حداکثر تعداد دستگاهها را با حداقل منابع پوشش دهید، اگر روی راهحلهای موبایل تمرکز میکنید یا به عنوان یک توسعهدهنده فرانتاند کار میکنید، روی توسعه بین پلتفرمی تمرکز کنید.
مزایا و معایب اصلی توسعه بومی و چند پلتفرمی موبایل چیست؟ توسعه بومی به خودی خود گران است زیرا شرکت باید روی دو تیم سرمایه گذاری کند - iOS و Android. برای برنامه های کاربردی ساده، سرعت توسعه در Flutter / React Native بالاتر است.
اما نکته مثبت این است که زیرساخت ها قبلاً شکل گرفته و قابل درک است. شما به هر منبع دستگاهی دسترسی دارید و می توانید تحت آن توسعه دهید ساعت هوشمند، اتومبیل و موارد دیگر.
توسعه بین پلتفرمی نیز چیز جالبی است. اما هنوز در بازار کار فناوری اطلاعات در روسیه توسعه نیافته است. می توانید متخصصان باهوش را روی انگشتان خود بشمارید. زیرساخت چارچوب جوان است، اما وضعیت به تدریج به سمت بهتر شدن تغییر می کند. این توسعه امکان نوشتن را برای چندین دستگاه به طور همزمان فراهم می کند. حتی اگر مثلاً در فلاتر بنویسید، به راحتی با کدهای بومی ادغام می شود.
Demote را ارتقا دهید
هدف توسعه بین پلتفرمی نتایج سریع و صرفه جویی قابل توجه در بودجه است - ما یک کد برای همه دستگاه ها می نویسیم. دامنه کاربرد آن یا راه حلی برای استفاده داخلی است، جایی که قابلیت استفاده از محصول چندان مهم نیست، و عملکرد نقش غالب را ایفا می کند، یا ایجاد یک پروژه آزمایشی سریع، زمانی که مشتری نیاز به نشان دادن اصل دارد یا ایده برنامه علاوه بر این، اگر درک دقیقی از دستگاهی که نمونه اولیه شما با کدام سیستم عامل مشاهده میشود وجود نداشته باشد، توسعه بین پلتفرمی راه خروج است. با این حال، باید از قبل درک کنید که همه دستگاهها دارای معماریهای متفاوتی هستند، بنابراین اجرای یک برنامه با کیفیت بالا تنها با استفاده از کدهای چند پلتفرمی تقریباً غیرممکن است. سناریوهای پیچیده نیاز به نوشتن کد بومی دارند. علاوه بر این، با توجه به ویژگی های آن، توسعه کراس پلتفرم هزینه هایی را به همراه دارد که اجازه نمی دهد برنامه تا حد ممکن کارآمد باشد. این قابل درک است، در در این موردکد بین پلتفرمی میانی باید برای هر پلتفرم ترجمه شود، که برنامه را «سنگینتر» میکند، زیرا علاوه بر کد عملکردی، محیط اجرای آن را نیز دارد.
نظر دیگری به من بدهید
همه چیز واضح است، نتیجه گیری خود را نشان دهید
بنابراین کدام رویکرد توسعه را باید در پیش بگیرید؟
همه چیز به وظیفه بستگی دارد. اگر نیاز به نوشتن یک نمونه اولیه برنامه برای چندین پلتفرم یا نسخه موبایلسایت، سپس می توانید به چارچوب های چند پلتفرمی نگاه کنید. با کمک آنها، به احتمال زیاد یک برنامه را سریعتر از توسعه بومی می نویسید، به خصوص اگر بر روی چارچوبی شبیه به ابزار معمول خود، مانند React Native کار کنید.
از سوی دیگر، تطبیق پذیری اپلیکیشن های کراس پلتفرم باید به نحوی جبران شود. در جایی یک عنصر رابط "غیر بومی" ظاهر می شود، در جایی تعامل با سیستم بدتر است، در جایی سرعت کار کاهش می یابد، و غیره. محصولی با ظاهری پایدار و بومی
در این رابطه اگر تازه شروع کرده اید توسعه موبایل، پس بهتر است ابتدا توسعه بومی انجام شود. شما می توانید اطلاعات بیشتری در مورد آن در اینترنت بیابید، درک عمیق تری از قابلیت های پلتفرم به دست خواهید آورد و برخی از تفاوت های ظریف توسعه چند پلتفرمی مانعی برای شما نخواهند داشت. علاوه بر این، اگر تصمیم دارید در آینده در توسعه بین پلتفرمی شرکت کنید، قطعاً دانش به دست آمده به شما آسیبی نخواهد زد.
یادآوری می کنیم که می توانید سوال خود را از کارشناسان بپرسید و در صورت جالب بودن پاسخ آن را جمع آوری می کنیم. سوالاتی که قبلا پرسیده شده اند را می توان در لیست شماره یافت. اگر می خواهید به جمع متخصصان بپیوندید و پاسخی از شرکت یا خودتان بفرستید، به آدرس زیر بنویسید، ما به شما می گوییم چگونه این کار را انجام دهید.
توسعه کراس پلتفرم به شما امکان می دهد یک برنامه تلفن همراه ایجاد کنید که به طور همزمان در iOS و Android کار کند. این یک جایگزین کم هزینه برای ایجاد یک برنامه کاربردی برای هر سیستم عامل به طور جداگانه است.
ویژگی های توسعه متقابل پلت فرم
توسعه یک اپلیکیشن برای پلتفرم های مختلف در عین حال خوب و بد است. خوب است، زیرا می توان آن را سریعتر و ارزان تر از چندین برنامه برای هر سیستم عامل انجام داد. و این بد است، زیرا مصالحه بر عملکرد برنامه تأثیر می گذارد.
این ویژگی ها باید قبل از شروع پروژه در نظر گرفته شوند:
- در یک محیط کراس پلتفرم، کد یک بار نوشته می شود. برای اینکه برنامه روی سیستم عامل دیگری کار کند، کد به زبان برنامه نویسی دیگری ترجمه می شود. زمان و پول صرف شده برای توسعه 1.5 برابر کمتر است.
- ممکن است برنامه ها به درستی کار نکنند.در توسعه بین پلتفرمی، در نظر گرفتن تمام تفاوت های ظریف کار با معماری هر سیستم عامل غیرممکن است، بنابراین برنامه ها ممکن است کندتر از برنامه هایی که به طور خاص برای iOS یا Android توسعه یافته اند اجرا شوند.
- الزامات طراحی رابط و المان بین سیستم عامل ها متفاوت است. برای مثال، iOS مانند اندروید دکمه بازگشت ندارد. هنگام توسعه یک طراحی یکپارچه، باید این نکته را در نظر گرفت: در iOS، دکمه یا باقی می ماند، اما کار نمی کند، یا باید به صورت دستی قطع شود، که به معنای کار اضافی با کد است.
اکثر خطاها هنگام مهاجرت از یک پلت فرم به پلتفرم دیگر را می توان به صورت دستی حل کرد، اما حل کامل مشکلات تطبیق با یک سیستم عامل "غیر بومی" غیرممکن است.
پس توسعه بین پلتفرمی بد است؟
نه، توسعه بین پلتفرمی خوب است تا زمانی که از آن چیزی بیش از آنچه که می تواند بخواهد نخواهید.
این گزینه در موارد زیر قابل انتخاب است:
- پوشش تمام سیستم عامل ها با بودجه محدود.اگر مخاطبان هدف فعالانه از iOS یا Android استفاده می کنند، می توانید با یک برنامه بومی برای یک سیستم عامل شروع کنید. اگر حداکثر پوشش فوراً مهم است، بهتر است یک گزینه cross-platform را انتخاب کنید.
- طاقچه را بررسی کنید. اگر ایده امیدوارکنندهای وجود دارد، اما مطمئن نیستید که کار خواهد کرد، سرمایهگذاری فوری بودجه زیادی در توسعه خطرناک است. منطقی است که با توسعه بین پلتفرمی شروع کنید، واکنش های کاربران را مطالعه کنید و بر اساس آن تصمیمات استراتژیک بگیرید.
- این برنامه از انیمیشن های پیچیده استفاده نمی کند و محاسباتی را انجام نمی دهد.این عملیات به طور جدی دستگاه را بارگیری می کند و برنامه چند پلتفرمی برای استفاده کامل از منابع یک پلت فرم خاص بهینه نشده است.
- این برنامه فقط از عملکردهای اصلی دستگاه استفاده می کند. نمایش اطلاعات، آپلود فایل ها، استفاده از موقعیت جغرافیایی، ثبت سفارش - برنامه چند پلتفرمی می تواند همه اینها را مدیریت کند. یکپارچگی عمیق تری از قابلیت های دستگاه مورد نیاز است - شما باید توسعه بومی را انتخاب کنید.
- اپلیکیشن شرکتی برای کارمنداناگر برنامه برای کارهای داخلی باریک توسعه داده شود و افراد از طریق گجت های شخصی با آن کار کنند، یک اپلیکیشن cross-platform بهترین گزینه خواهد بود.
هیچ پاسخی جهانی برای این سوال وجود ندارد که آیا می توان از راه حل های چند پلتفرمی برای پروژه شما استفاده کرد. فرم زیر را پر کنید: ما پروژه شما را مطالعه می کنیم و بهترین گزینه را برای اجرای آن انتخاب می کنیم.
برنامه های کاربردی چند پلتفرمی – بودن یا نبودن؟ این سوال آسان نیست، زیرا هر کسب و کاری اهداف و الزامات خاص خود را برای برنامه های تلفن همراه دارد. اما امروز قطعا متوجه خواهیم شد که کدام توسعه برای شما مناسب است.
برنامه های کاربردی چند پلتفرمی چیست؟
اپلیکیشنهای کراس پلتفرم، برنامههایی هستند که توسعه داده میشوند و سپس بر روی اندروید و iOS اجرا میشوند. ماهیت توسعه این است که کد منبعبرنامه به بومی ترجمه شده است، یعنی برای یک دستگاه تلفن همراه خاص قابل درک است. در نتیجه، برنامه می تواند با سیستم عامل نصب شده بر روی آن تعامل داشته باشد.
یادآوری می کنیم: برنامه های بومی، بر خلاف برنامه های چند پلتفرمی، برای یک سیستم عامل خاص نوشته شده اند.
مزایای توسعه چند پلتفرمی
- پسوند پایگاه کاربربه دلیل ظاهر برنامه در چندین فروشگاه به طور همزمان؛
- کد منبع واحد نیاز به استخدام چندین توسعه دهنده برای هر پلتفرم را از بین می برد.
- 75 درصد از پایه کد یک برنامه کاربردی چند پلتفرمی را می توان مجدداً استفاده کرد و آن را برای پروژه های جدید تطبیق داد.
معایب توسعه چند پلتفرمی
1. وابستگی شدید به دستگاه تلفن همراه
برنامه های کراس پلتفرم معمولاً به صورت آفلاین کار نمی کنند. بنابراین، قابلیتهای آنها به شدت به داشتن یک اتصال اینترنتی پایدار توسط کاربر بستگی دارد. نسخه سیستم عامل و مدل دستگاه نیز مهم هستند. یک برنامه کراس پلتفرم تقریباً تضمینی برای کاهش عملکرد دستگاه قدیمیتر از یک یا دو سال است. در حالی که یک برنامه بومی حتی بر روی یک ابزار قدیمی با سیستم عامل قدیمی به طور پایدار کار می کند. بنابراین، اگر نمیخواهید مشتریان شما نظرات خشمگینانهای درباره نحوه پایان یافتن اپلیکیشن شما در گوشی هوشمند شخصی بخوانند، توسعه بومی را انتخاب کنید.
2. رابط کاربری غیر دوستانه
کاربران خیلی به آن عادت می کنند ظاهرو عملکرد گجتهایشان، این است که از برنامههای نصب شده روی آنها انتظار حداکثر پاسخگویی را دارند. آنها می خواهند مطمئن باشند که هر دکمه در جای مناسب خود قرار می گیرد، صفحه با سرعت مطلوب برای آنها حرکت می کند، و هر اقدامی که انجام می دهند با پاسخ فوری به دنبال خواهد بود. برنامه های کاربردی کراس پلتفرم معمولاً در تطبیق با دستگاه مشکل دارند و نمی توانند عملکرد خود را به رخ بکشند.
مشکل این است که برای توسعه بین پلتفرم هیچ دستورالعملی وجود ندارد - استانداردهای توسعه از سوی سازندگان سیستم عامل. بنابراین، یک برنامه cross-platform ساخته شده "برای Android" برای یک کاربر iOS راحت نخواهد بود و بالعکس. البته میتوانید برای هر پلتفرم طرحهای جداگانه ایجاد کنید، اما از نظر هزینههای نیروی کار، این برابر با ایجاد دو برنامه متفاوت، البته به یک زبان است.
3. مبارزه برای برتری در میان ابزارهای توسعه
در بازار راه حل های توسعه چند پلتفرمی، رقابت هر روز سخت تر می شود. تاکنون، React Native و Xamarin محبوبترینها در میان توسعهدهندگان هستند، اما ممکن است برای مثال Vue Native از آنها پیشی بگیرد. در این صورت، رهبران سابق مسابقه مهمترین مزیت خود را از دست خواهند داد - پشتیبانی عملیاتیکد و این می تواند با هر ابزار کراس پلتفرمی اتفاق بیفتد.
توسعه بومی از چنین مشکلی نمی ترسد. معرفی ابزارهای جدید به تدریج اتفاق می افتد و دانش چندین زبان برنامه نویسی، که برای یک متخصص اجباری است، به او اجازه می دهد تا به سرعت تمام نوآوری ها را درک کند. علاوه بر این، جوامع حرفه ای بزرگی در اطراف هر سیستم عامل وجود دارد که در نتیجه هر مشکلی که پیش می آید با جستجوی مشکل مشابه در انجمن ها حل می شود، جایی که هزاران نفر آماده پیشنهاد و کمک به حل آن هستند.
کدام اپلیکیشن برای کسب و کار شما مناسب است؟
قبل از پاسخ به این سوال، تجزیه و تحلیل کسب و کارتان بسیار مهم است. بخش های مصرف کننده، ارزش زمان و منابع پولی، عمق مطلوب ادغام برنامه با دستگاه های کاربر، به علاوه اهداف بلند مدت به وضوح تعریف شده - حداقلی که انتخاب شما به آن بستگی دارد. اما اگر همین الان به سوالات مربوطه پاسخ دهید، کار را آسانتر می کنیم.
1. مخاطب شما از چه چیزی استفاده می کند؟
اگر می دانید که نسبت کاربران iOS و اندروید در بین مشتریان شما نزدیک به 50/50 است، توسعه داخلی را انتخاب کنید. این نشان می دهد که شما به نیازهای همه مشتریان خود بدون توجه به سطح درآمد آنها به یک اندازه احترام می گذارید.
ارتباط بین انتخاب یک دستگاه تلفن همراه و سطح پرداخت بدهی بار دیگر توسط App Annie تأیید شد. در نتیجه بررسی تعداد دانلود و فروش اپلیکیشن های موبایل در گوگل پلیو اپ استوردر سه ماهه اول سال 2018، مشخص شد که کاربران گوشی های هوشمند اندرویدی 135 درصد بیشتر از بازدیدکنندگان فروشگاه iOS برنامه دانلود کرده اند. در همان زمان، اپ استور 85 درصد بیشتر از گوگل پلی درآمد برای صاحبان خود به ارمغان آورد.
مسیر موفقیت واضح است: بازی در دو زمین همزمان. دقیق تر، در دو فروشگاه. فقط محاسبه کنید که برنامه باید در کدام یک از آنها ابتدا ظاهر شود. البته، مگر اینکه انتشار همزمان بخشی از استراتژی دیجیتال شما باشد).
2. چقدر زمان برای توسعه دارید؟
هزینه های مالی پروژه به پاسخ به این سوال بستگی دارد. واقعیت این است که از نقطه نظر زمان صرف شده برای توسعه، یک برنامه کاربردی چند پلتفرمی تنها راه حل سودآورتری به نظر می رسد. در واقع، تطبیق آن با پلتفرمها میتواند تقریباً به اندازه ایجاد دو برنامه بومی طول بکشد، زیرا توسعهدهندگان باید کدهای اضافی را برای مناطق مشکل بنویسند.
با یک برنامه بومی قطعا چنین مشکلاتی وجود نخواهد داشت، که برای حفظ مخاطبی که به شدت نسبت به خطاها و اشکالات تحمل نمی کند بسیار مهم است. طبق آمار Compuware، 79٪ از کاربران آماده هستند تا یک برنامه را در صورتی که در اولین راه اندازی به درستی کار نمی کند، راه اندازی مجدد کنند، اما تنها 16٪ موافقت می کنند که فرصتی دوباره به آن بدهند. دیگران به احتمال زیاد به سادگی برنامه را حذف خواهند کرد.
3. قصد دارید از چه ویژگی های دستگاه استفاده کنید؟
قبلاً در مورد این واقعیت صحبت کرده ایم که فقط برنامه های بومی قادر به بازتولید گرافیک های سنگین به سرعت و بدون افت کیفیت هستند. اما مزایای فنی توسعه بومی به این محدود نمی شود. به عنوان مثال برنامه فیس بوک را در نظر بگیرید. به لطف انتشار نسخههای مجزا برای اندروید و iOS، اسکرول نرمتر شده، زمان بارگذاری تصاویر کاهش یافته و تمامی مشکلات حافظه پنهان برطرف شده است.
علاوه بر این، برنامههای بومی دسترسی مستقیم به تمام خدمات دستگاه دارند و به شما امکان میدهند اطلاعاتی در مورد موقعیت جغرافیایی کاربر یا لیست تماسهای او دریافت کنید. برنامه های کراس پلتفرم باید از افزونه های بومی ویژه استفاده کنند که بر سرعت انتقال داده و بارگذاری بیش از حد تأثیر منفی می گذارد. RAMدستگاه ها
4. برای چه نتایجی تلاش می کنید؟
استراتژی دیجیتال لیستی از اهدافی است که شرکت شما می تواند با استفاده از ابزارهای دیجیتال به آنها دست یابد. انتخاب دومی تا حد زیادی به مزایایی که می خواهید در پایان به دست آورید بستگی دارد.
با در نظر گرفتن تمام منابع موجود، فرآیند را از ایده به نتیجه، نقطه به نقطه تجزیه کنید. اکتشافات می توانند غیرمنتظره ترین باشند.
برای مثال، ممکن است متوجه شوید که تبدیل کردن وبسایت واکنشگرای خود، که دارای ویژگیها و عناصر تعاملی است، به یک برنامه متقابل پلتفرم مانند آنچه در ابتدا میخواستید، بسیار پرهزینه است. یا در نهایت مطمئن شوید که یک سایت تلفن همراه همیشه به یک برنامه تلفن همراه بازنده می شود، درست مانند توسعه بین پلتفرم به توسعه بومی. و در میان دلایلی که در بالا توضیح دادیم، خواهید یافت.
نتیجه گیری: یک برنامه چند پلتفرمی فقط در یک مورد مفید است - شما در حال ایجاد یک نسخه آزمایشی از برنامه هستید که از نظر زمان، پول و متخصصان بسیار متخصص محدود است. در همه موارد دیگر، یک برنامه بومی چندین برابر مزایای بیشتری به شما می دهد، زیرا سطح توسعه کیفی متفاوتی دارد.
اپلیکیشن های موبایل به همراهی ثابت زندگی ما تبدیل شده اند. با کمک آنها نه تنها می توانیم سرگرم شویم و زندگی خود را ساده کنیم، خرید انجام دهیم یا خدمات خاصی را به صورت آنلاین سفارش دهیم، بلکه می توانیم تجارت خود را ارتقا دهیم، پایگاه مشتریان خود را افزایش دهیم و در نتیجه سود را افزایش دهیم. و اگر هیچ کس نمی تواند در مورد نیاز به ایجاد یک برنامه کاربردی برای تجارت خود شک کند، ممکن است در انتخاب نوع برنامه تلفن همراه مشکلاتی ایجاد شود.
همه برنامه های مدرن برای دستگاه های تلفن همراه را می توان به دو دسته بومی و کراس پلتفرم تقسیم کرد و هر یک از این دو گروه مختص به خود را دارند. نقاط قوت، و کاستی های آن.
برنامه های کاربردی بومی آنهایی هستند که به طور خاص برای یک پلتفرم خاص در زبان برنامه نویسی مناسب توسعه یافته اند. بنابراین، هنگام ایجاد یک برنامه برای اندروید، از جاوا و برای برنامه های iOS - Objective-c یا Swift استفاده می شود. هنگام ایجاد چنین پروژههایی، متخصصان تمام ویژگیهای پلتفرمها را در نظر میگیرند، توجه ویژهای به طراحی UI/UX، الزامات/توصیههای توسعهدهندگان سیستمعامل و همچنین آخرین روندها در صنعت موبایل دارند. یک متخصص قادر نخواهد بود به تمام زبان های فوق تسلط کامل داشته باشد، بنابراین، برای توسعه یک محصول بومی برای پلتفرم های مختلف، لازم است اتصال برقرار شود. توسعه دهندگان مختلف، و اینها هزینه های اضافی هستند و زمان توسعه چشمگیر خواهد بود. اما در عین حال، برنامه ها برای یک پلتفرم خاص "تناسب" خواهند شد، به منابع و عملکردهای داخلی دستگاه دسترسی خواهند داشت و تا حد امکان کارآمد عمل خواهند کرد.
علیرغم فهرست قابل توجهی از مزایای توسعه های بومی، مشتریان همیشه نمی خواهند زمان و هزینه خود را برای توسعه خود صرف کنند و چندین متخصص را در فرآیند ایجاد درگیر کنند. بهترین گزینهدر چنین مواردی از توسعه کراس پلتفرم استفاده می شود که به شما امکان می دهد با استفاده از فناوری های وب استاندارد برنامه هایی را برای هر پلتفرمی ایجاد کنید. در این صورت توسعه می تواند توسط یک فرد با دانش و تجربه لازم در کار با HTML5، JavaScript و CSS3 انجام شود. توسعه های چند پلتفرمی را می توان در یک فایل apk. برای اندروید و یک فایل ipa. برای IOS کامپایل کرد. بنابراین، بر اساس یک توسعه، می توانید دو برنامه کاربردی برای سیستم عامل های محبوب دریافت کنید و زمان و هزینه کمتری را صرف آن کنید. با این حال، چنین پیشرفت هایی دارای اشکالاتی نیز هستند، بنابراین بسیار توصیه می شود که به هر مورد خاص به صورت جداگانه نزدیک شوید و مناسب ترین گزینه - توسعه بومی یا چند پلت فرم را انتخاب کنید.
بخش های سرویس گیرنده و سرور برنامه
اکثر برنامه های کاربردی جدی بخش مشتری خود را دارند که اغلب به آن frontend می گویند و یک بخش سرور - Backend. فرانت اند مسئول آنچه بر روی صفحه نمایش دستگاه تلفن همراه خود می بینید، یعنی کل نمایش بصری برنامه، از جمله طراحی، اندازه و مکان پنجره ها، منوها، دکمه ها، فلش ها و هر عنصر دیگر را بر عهده دارد. فرانت اند همچنین مسئول پاسخ برنامه به برخی اقدامات کاربر با هدف انتقال به بخش های مختلف برنامه، فراخوانی منوهای جدید و غیره است.
Backend بخش سرور برنامه است و بر روی یک سرور راه دور قرار دارد که می تواند در هر مکانی قرار گرفته و با استفاده از طیف گسترده ای از برنامه ها کنترل شود. نرم افزار. ارتباط بین بخش های مشتری و سرور به لطف API (رابط برنامه نویسی برنامه) انجام می شود. به عبارت دیگر، API نوعی واسطه بین frontend و backend است که درخواستها را از سمت کلاینت به سرور ارسال میکند و دادههای مورد نیاز کاربر را برمیگرداند.
توسعه Frontend
بخش مشتری برنامه بسیار مهم است، زیرا با آن است که خود کاربر با آن سروکار دارد و درک کلی او از عملکرد برنامه به راحتی قسمت ظاهری بستگی دارد. می توان آن را به صورت دستی توسعه داد، اما برای این کار باید درک خوبی از HTML5، CSS3 و java-script یا به اصطلاح فریمورک ها استفاده کنید. در مورد اول، محیط توسعه Apache Cordova که معمولاً با نام PhoneGap نیز شناخته می شود، اغلب استفاده می شود. با استفاده از این محیط، میتوانید برای هر پلتفرمی با استفاده از فناوریهای وب برنامههایی ایجاد کنید که Cordova آنها را به کد قابل فهم برای یک پلتفرم خاص تبدیل میکند. Cordova تقریباً امکانات نامحدودی را برای توسعه دهندگان وب باز می کند که لزوماً برای ایجاد برنامه های کاربردی برای سیستم عامل های خاص نیازی به یادگیری Objective-C یا Swift، Java یا Kotlin ندارند.
در حالی که Cordova هیچ محدودیتی در رابط کاربری و منطق ندارد، چارچوب ها راه حل های قالب آماده ای را ارائه می دهند. از یک طرف، این به طور قابل توجهی روند توسعه را سرعت می بخشد و ساده می کند، زیرا یک متخصص می تواند از دکمه های آماده، لیست ها، فیلدهای ورودی، کارت ها و سایر عناصر UI استفاده کند. از طرف دیگر، یک متخصص می تواند برای توسعه تنها از ابزارها و عناصری استفاده کند که در چارچوب انتخاب شده موجود است. محبوب ترین آنها Ionic است که به شما امکان می دهد برای هر سلیقه ای برنامه های cross-platform ایجاد کنید. این فریم ورک دارای مجموعه داخلی بزرگی از عناصر استاندارد است که به صورت بصری از برنامه های بومی تقلید می کنند، اما در صورت لزوم می توان طراحی آنها را تغییر داد. در عین حال، توسعه دهنده می تواند بسیاری از پلاگین های اضافی را که قابلیت های فریم ورک یونی را گسترش می دهند، متصل کند و پروژه ایجاد شده بر روی این فریم ورک را می توان مستقیماً در پنجره مرورگر راه اندازی کرد و ارزیابی کرد که برنامه ایجاد شده چگونه به نظر می رسد و بدون نیاز به کار می کند. از یک شبیه ساز استفاده کنید یا آن را روی گوشی هوشمند نصب کنید.
توسعه Backend
در حالی که سمت کلاینت توسط طراحان و توسعه دهندگان با دانش HTML، CSS، JS و فریمورک ها مدیریت می شود، باطن توسط برنامه نویسانی با مشخصات متفاوت اداره می شود. می توان از آن برای پیکربندی سرور استفاده کرد زبان های مختلفبرنامه نویسی و ابزار، نکته اصلی این است که به درستی کار و رابطه آنها را با بخش مشتری پیکربندی کنید. در اینجا لازم است از سیستم های مدیریت پایگاه داده مناسب استفاده شود. این می تواند MySQL سنتی، Redis، PostgreSQL یا هر پایگاه داده دیگری (به عنوان مثال MongoDB) باشد که برای اجرای یک پروژه خاص مناسب است و توسعه دهنده باطن به خوبی در آن مهارت دارد. برای ایجاد سمت سرور برنامه، توسعه دهندگان می توانند از PHP، NodeJS، C#، Ruby، Python، Java و سایر زبان های برنامه نویسی استفاده کنند.
متخصصان استودیوی موبایل کیت اپ به توسعه قطعات فرانت اند و بک اند به طور جامع و تا حد امکان مسئولانه برخورد می کنند. توسعه دهندگان ما برای شما یک برنامه کاربردی چند پلتفرمی با هر پیچیدگی و تمرکزی با بیشترین سرعت و کارآمدی ایجاد خواهند کرد! با ما تماس بگیرید، و متخصصان ما به سرعت در مورد تمام سوالات شما به شما مشاوره خواهند داد!
بازار اپلیکیشن های موبایل بیش از ده سال قدمت دارد، اما هنوز به سرعت در حال توسعه است. تقاضا از سوی شرکت ها به طور مداوم در حال رشد است و هنوز به طور قابل توجهی از عرضه فراتر می رود که منجر به افزایش مداوم هزینه های توسعه می شود. یک راه حل برای کاهش هزینه های این فرآیند، توسعه کراس پلتفرم است، زمانی که کد یکسان در همه پلتفرم ها استفاده می شود.
آخرین باری که روی توسعه اپلیکیشن های موبایلی چند پلتفرمی صحبت کردیم و از آن زمان تاکنون چیزهای زیادی تغییر کرده است. وقت آن است که دوباره در مورد روش ها و ابزارها صحبت کنیم.
اجازه دهید ابتدا دوباره به اصطلاحات بپردازیم.
بستگان
اگر توسعه دهندگان در فرآیند نوشتن یک برنامه از زبان برنامه نویسی اتخاذ شده برای یک پلتفرم خاص استفاده کنند، خواه Objective-C و Swift برای iOS باشد یا چنین برنامه ای بومی (از زبان انگلیسی - بومی، طبیعی) نامیده می شود.
مزایای برنامه های بومی:
- سرعت و پاسخ رابط برنامه بلافاصله به کلیک ها پاسخ می دهد، عملا هیچ تاخیری در انیمیشن، اسکرول، دریافت و خروجی داده ها وجود ندارد.
- دسترسی واضح و آسان به عملکردها و حسگرهای دستگاه. برای توسعه دهنده، کار با موقعیت جغرافیایی، اعلان های فشار، گرفتن عکس و فیلم از طریق دوربین، صدا، شتاب سنج و سایر سنسورها مشکلی ندارد.
- توانایی کار عمیق با عملکردهای تلفن هوشمند. مانند پاراگراف قبل، مواردی مانند انیمیشن ها، ایجاد رابط های پیچیده و عملکرد شبکه های عصبی به طور مستقیم بر روی دستگاه ها، شاید نه به سادگی، بلکه قابل پیش بینی، پیاده سازی شده اند.
- . برنامههای کاربردی بومی معمولاً با عناصر رابط «پلتفرم» کار میکنند: منوها، ناوبری، فرمها و سایر عناصر طراحی از سیستم عامل گرفته شدهاند و بنابراین برای کاربر آشنا و قابل درک هستند.
تنها یک اشکال وجود دارد - هزینه بالای توسعه و پشتیبانی، از جمله اینکه باید کد خود را برای هر پلتفرم بنویسید.
با رشد بازار اپلیکیشن های موبایل، توسعه دهندگان نه تنها گران، بلکه بسیار گران شده اند و توسعه بومی چیزی نیست که هر صاحب کسب و کاری بتواند از عهده آن برآید. اما توسعه ندادن یک اپلیکیشن موبایل ممکن است در آینده برای شما هزینه بیشتری داشته باشد. تایپ زنده می تواند به شما در صرفه جویی در هزینه کمک کند - ایده خود را توصیف کنید و بودجه تقریبی را که می خواهید برآورده کنید، در .
و نه اقوام
برنامه های کاربردی کراس پلتفرم برای چندین پلتفرم به طور همزمان به یک زبان غیر از زبان اصلی نوشته می شوند. چگونه چنین کدی می تواند روی آن کار کند دستگاه های مختلف? در اینجا نیز دو رویکرد وجود دارد.
اولین مورد این است که در مرحله آماده سازی برنامه برای انتشار، با استفاده از ترانسپایلر برای یک پلتفرم خاص به بومی تبدیل می شود. در واقع، یک زبان برنامه نویسی کراس پلتفرم به دیگری ترجمه می شود.
دوم این است که یک بسته بندی خاص به کد حاصل اضافه می شود، که در حال حاضر روی دستگاه کار می کند، در حال پرواز، تماس ها را از کد غیر بومی به توابع سیستم بومی ترجمه می کند.
فرض بر این است که بیشتر این کد را می توان بین پلتفرم ها منتقل کرد - بدیهی است که به عنوان مثال، منطق خرید، ذخیره کالا در سبد خرید، محاسبه مسیر برای تاکسی، نوشتن پیام در پیام رسان تغییر نمی کند. بسته به اینکه مشتری اندروید یا iOS داشته باشد. ما فقط باید UI و UX را برای پلتفرم ها بهبود دهیم، اما اکنون، در محدوده های خاصی، حتی می توان این را با هم ترکیب کرد - به عنوان مثال، منوی همبرگر به طور فعال در Android و iOS استفاده می شود. بنابراین حتی انجام اصلاحات در رابط به گونه ای که برنامه با روح و حرف پلتفرم مورد نظر مطابقت داشته باشد، امری دلخواه، سرعت و کیفیت مورد نیاز توسعه است.
مزایا:
- هزینه و سرعت توسعه از آنجایی که کد بسیار کمتری باید نوشته شود، هزینه کار کاهش می یابد.
- توانایی استفاده از منابع داخلی شرکت همانطور که بعداً نشان خواهیم داد، توسعه برنامه های کاربردی بین پلتفرمی اغلب توسط برنامه نویسان فعلی شما انجام می شود.
ایرادات:
- رابط غیر بومی یا حداقل نیاز به کار با رابط هر پلتفرم به طور جداگانه. هر سیستم الزامات خاص خود را برای طراحی عناصر دارد و گاهی اوقات آنها متقابلاً منحصر به فرد هستند. این باید در طول توسعه در نظر گرفته شود.
- مشکلات در اجرای توابع پیچیده یا مشکلات احتمالیحتی با رویههای ساده به دلیل اشتباهات در خود چارچوبهای توسعه کار میکند. محیط کراس پلتفرم فقط درخواستها را به فراخوانیهای سیستم و رابطها به قالبی تبدیل میکند که سیستم آن را درک میکند، و بنابراین در این مرحله ممکن است هم مشکلات در درک و هم خطاها در خود چارچوب رخ دهد.
- سرعت کار از آنجایی که محیط کراس پلتفرم یک "روبنا" بر روی کد است (نه همیشه، اما در شرایط خاص)، تاخیر و مکث خاص خود را در پردازش اقدامات کاربر و نمایش نتایج دارد. این امر به ویژه چند سال پیش در گوشیهای هوشمندی که قدرت کمتری نسبت به گوشیهای امروزی داشتند، قابل توجه بود، اما اکنون با افزایش عملکرد دستگاههای تلفن همراه، میتوان از این موضوع غافل شد.
همانطور که می بینید این دو روش عملا هستند تصویر آینه ایهمدیگر - اینکه توسعه برنامه های بومی دارای مزیت هایی است، توسعه برنامه های کاربردی بین پلتفرمی دارای معایبی است و بالعکس.
پلتفرمها و ابزارهای محبوب برای توسعه تلفن همراه بین پلتفرمی
همانطور که در بالا نوشتیم، دو رویکرد وجود دارد - تبدیل کد به بومی در مرحله اسمبلی یا اضافه کردن یک پوشش خاص که تماسها را به و از سیستم ترجمه میکند.
Cordova و PWA دو ابزاری هستند که دقیقاً در ایدئولوژی یک لفاف کار می کنند.
کوردووا و HTML5
یکی از محبوب ترین حوزه ها در برنامه نویسی کراس پلتفرم است که معمولاً PhoneGap نامیده می شود. در واقع، یک وب سایت تلفن همراه ایجاد می شود که در یک کد پلت فرم کوچک "پیچیده شده" است که تماس ها را از سیستم به برنامه و برگشت ارسال می کند.
تمام معایب و مزایا در اینجا واضح تر از هر جای دیگری بیان شده است. می توانید از توسعه دهندگان وب (HTML، CSS و جاوا اسکریپت به عنوان فناوری های اصلی) استفاده کنید و اولین نسخه برنامه را در یک ماه یا حتی چند هفته با هزینه نسبتاً کمی بسازید. بله، عملکرد آن کند خواهد بود و ممکن است موقعیت جغرافیایی کاملاً دقیقی نداشته باشد، اما روی همه دستگاهها کار میکند و به شما امکان میدهد حداقل تقاضای مشتری را در دستگاههای تلفن همراه آزمایش کنید.
تعداد زیادی چارچوب برای این رویکرد ایجاد شده است، اما همه آنها اساساً یک کار را انجام می دهند. تفاوت آنها در این است که Cordova (PhoneGap) برای پروژه HTML5 شما محدودیت ها و قالب هایی را روی منطق و UI برای پروژه HTML5 شما تعیین نمی کند و فریمورک ها با عناصر UI آماده خود که شبیه سازی می کنند کار می کنند. پلتفرم های موبایلو منطق توسعه آن. نمونه ای از این رویکرد: Ionic Framework - wrapper; Framework7، Mobile Angular UI، Sencha Touch، Kendo UI - چارچوب های رابط.
PWA
فناوری مد روز گوگل همان برنامه های کاربردی وب است، اما از طریق استفاده از فناوری های خاص (عمدتاً به اصطلاح کارگران خدمات - کار در پس زمینهاسکریپتها، و Web App Manifest - توصیفی از یک برنامه کاربردی وب به شکلی قابل درک برای یک سیستم تلفن همراه) میتوانند بهعنوان برنامههای بومی بدون پوشش PhoneGap کار کنند. آنها را می توان در صفحه اصلی نصب کرد، فروشگاه برنامه را دور زد، به صورت آفلاین کار کرد، با اعلان های فشاری و با عملکردهای بومی کار کرد.
مشکل این است که همه پلتفرم ها حتی در حال حاضر از این "فناوری های خاص" پشتیبانی نمی کنند. این در درجه اول مربوط به اپل است، که ظاهرا واقعاً توانایی توزیع برنامه ها را با دور زدن اپ استور دوست ندارد.
با در نظر گرفتن تمام کاستیهای راهحلهای HTML5، بسیاری از شرکتها ابزارهایی ایجاد کردهاند که به شما امکان میدهد کد را به یک زبان غیر بومی بنویسید و سپس به بومی ترجمه میشود. این کار دو پرنده را با یک سنگ می کشد: فقط یک پایه کد وجود دارد و برنامه ها تا حد امکان به بومی نزدیک هستند.
زامارین
پلتفرم مایکروسافت استاندارد زبان برنامه نویسی برای توسعه Enterprise C# و محیط توسعه بین پلتفرم ویژوال استودیو است. خروجی برنامه های بومی برای iOS، اندروید و ویندوز است. درست است، اندازه نسبتا بزرگ است.
React Native
پلتفرم از - برنامه های کاربردی با جاوا اسکریپت و با استفاده از سبک های CSS مانند نوشته می شوند. معلوم می شود که رابط بومی است و کد بر روی پلتفرم تفسیر می شود که به آن انعطاف لازم را می دهد.
React Native که یک پلتفرم نسبتاً جوان است، هنوز بدیهی است (اگرچه نه به طور فاجعه بار) از کمبود ابزار توسعه و اسناد رنج می برد.
بال زدن
طبیعتا غول بزرگی مانند گوگل نمی تواند موضوع توسعه چند پلتفرمی اپلیکیشن های اندروید و iOS را نادیده بگیرد. Flutter، اگرچه در حال حاضر فقط در نسخه بتا است، اما رویکردی متفاوت از React Native و Xamarin دارد. کد منبع را به کد بومی که توسط پلتفرم اجرا میشود تبدیل نمیکند، بلکه در واقع پنجرهای را روی صفحه گوشی هوشمند ترسیم میکند و تمام عناصر را خود رندر میکند. زبان مورد استفاده دارت "اختصاصی" است که گوگل آن را به عنوان نسخه بهبود یافته جاوا اسکریپت ایجاد کرده است.
این هم مزایا دارد (مثلاً رابط های خارجی مشابه) و هم معایبی (مثلاً ترسیم مجدد رابط به مقدار مشخصی حافظه و زمان CPU نیاز دارد).
این پلتفرم به سرعت در حال توسعه است و گوگل تلاش و پول زیادی را روی آن سرمایه گذاری می کند. اما در مقایسه با Flutter، حتی React Native نیز یک اکوسیستم بسیار تثبیت شده و چشمگیر به نظر می رسد.
چه چیزی را انتخاب کنید
احتمالاً سر شما در حال چرخش است، اما هنوز نمی دانید چه چیزی را انتخاب کنید. بیایید یک لیست ساده از سوالات را برای کمک به شما ارائه دهیم:
- آیا باید به نوعی روی هر دستگاهی کار کند؟ انتخاب کنید HTMLبه عنوان پایه؛
- آیا بودجه کافی دارید، عجله ندارید و برنامه با بالاترین کیفیت می خواهید؟ شما یک مسیر مستقیم دارید توسعه بومی;
- آیا یک توسعهدهنده وب «ساختشده» دارید یا فقط میخواهید به سرعت و به راحتی یک برنامه تلفن همراه را در عمل امتحان کنید؟ در اینجا ما می توانیم توصیه کنیم Cordova/HTML یا PWA;
- آیا سیستم CRM خود را دارید و یک توسعه دهنده سی شارپ از آن پشتیبانی می کند؟ آن را بگیرید زامارین;
- شما "می خواهید امتحان کنید"، اما باید همه چیز را زیبا و شیک کنید؟ دور نگاه کن React Native یا Flutter.
از آن طرف هم می توانید بروید. به عملکردی که در برنامه خود نیاز دارید نگاه کنید و از آنجا بروید:
- یک برنامه کارت ویزیت ساده؟ بگیر React Native یا HTML5و شما دو پلتفرم را با حداقل قیمت دریافت خواهید کرد.
- آیا وب سایتی با ترافیک زیاد دارید و نیاز به تست حضور خود در فضای موبایل دارید؟ HTML5;
- برنامه های پیچیده با دسترسی به توابع لازمدستگاه ها؟ توسعه بومی، Xamarin، React Native.
توسعه بین پلتفرمی یک دارو نیست
هنگام انتخاب، باید از وظایف محول شده و منابع موجود پیش بروید. توسعه بین پلتفرمی یک مسیر خوب و قابل درک است، اما با مزایا و معایب خاص خود که باید قبل از راه اندازی پروژه در نظر گرفته شود. یک برنامه کاربردی چند پلتفرمی تکمیل شده بدیهی است که بهتر از یک برنامه بومی ساخته نشده است. میتوانید سریع و ارزان آن را توسعه دهید، آن را در فروشگاه آپلود کنید و به سادگی تقاضای کاربران را بررسی کنید - آیا کسی به دنبال برنامه شما است، آیا آن را نصب میکند، از چه عملکردهایی استفاده میکند. بر اساس نتایج چنین آزمایشی، می توان در مورد سرنوشت جهت موبایل در شرکت شما و سرمایه گذاری در آن تصمیم گیری کرد.
آیا هنوز در مورد برنامه های کاربردی کراس پلتفرم تردید و سؤال دارید؟ در مورد نحوه ایجاد یک برنامه کاربردی برای دریافت سریع اشتراک یکی از موسسات ورزشی شهر بخوانید و برنامه پرداخت انواع خدمات - از مسکن و خدمات عمومی گرفته تا سفارشات در فروشگاه های آنلاین را امتحان کنید. بهتر است برای مشاوره رایگان ثبت نام کنید و بودجه تقریبی خود را مشخص کنید شرح مختصرایده ها یا با مدیر ما کاتیا از طریق تلفن تماس بگیرید