سحر ابراهیمی
سحر ابراهیمی
خواندن ۴ دقیقه·۵ سال پیش

اپلیکیشن Native یا Hybrid


امروزه تمایل به استفاده از اپلیکیشن های موبایل در بین کاربران موبایل های هوشمند بسیار زیاد شده و به دنبال رفع این نیاز برنامه نویسان و توسعه دهندگان وب نیز همسو و همگام با جریان به وجود آمده به منظور ارائه نرم افزار مورد نیاز کاربران قدم برداشته اند.

اما همواره این سوال مطرح می شود که نوشتن اپلیکیشن های موبایل به صورت native بهتر است یا hybrid ؟!

به طور کلی نرم افزارهای وب به سه دسته تقسیم می شوند :

1- Native APP

2- Hybrid APP

3- Web APP

نرم‌افزار Native چیست؟

ساخت و توسعه نرم‌افزارهای Native به این معناست که برای برنامه نویسی و توسعه نرم‌افزار خود از زبان‌های اصلی سیستم عامل استفاده کنید. مثلا برای توسعه نرم‌افزار اندروید باید از زبان برنامه نویسی Java و برای توسعه نرم‌افزار آیفون باید از زبان برنامه نویسی Objective-C استفاده کنید. بزرگترین مزیت این حالتperformance بالای نرم‌افزار است، زمانی که شما برنامه خود را بصورت Native می‌نویسید کدهای شما به زبان ماشین کامپایل خواهند شد در اندروید که همین موضوع باعث می‌شود شما حداکثر بازدهی ممکن از نرم‌افزار را داشته باشید. بازدهی بالا می‌تواند شامل افکت‌های انیمیشن، روان کار کردن بخش‌های مختلف برنامه، امکان استفاده از multi touch و خیلی موارد دیگر باشد که بدلیل دسترسی مستقیم به موقعیت‌های حافظه و سخت‌افزار گوشی اتفاق میفتد.

مزایا

  • بدلیل کامپایل شدن برنامه دارای سرعت بالایی هستند
  • دسترسی به تمامی امکاناتی که سیستم عامل به برنامه‌نویس می‌دهد
  • پشتیبانی از APIهای مختلف

معایب

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

نرم‌افزار Web چیست ؟

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

مزایا

  • نوشتن کد یکبار و استفاده از آن در بسترهای متفاوت
  • با توجه به اینکه فقط یکبار کد نوشته میشه رفع باگ و مشکلات بسیار آسان خواهد بود
  • مستقل از سیستم‌عامل، بستر و حتی نسخه سیستم عامل‌ها

معایب

  • نداشتن دسترسی به سخت‌افزار گوشی یا تبلت
  • وابسته به مرورگر
  • عدم امکان انتشار نرم‌افزار در مارکت‌ها و app store

نرم‌افزار Hybrid چیست ؟

نرم‌افزارهای Hybrid مانند نرم‌افزارهای Web هستند (وب سایت یا وب اپلیکیشن) که باید در مرورگر مشاهده شوند اما تفاوتی که با Web App دارد این است که نیازی نیست کاربر در مرورگر گوشی، برنامه را ببیند بلکه توسط WebView در اندروید و یا UIWebView در iOS (مرورگر native) محتوای نرم‌افزار به کاربر، در قالب یک نرم‌افزار Native نمایش داده خواهد شد. نرم‌افزارهای Hybrid توسط HTML و CSS و JavaScript توسعه داده می‌شوند و سپس توسط نرم‌افزارهای مانند Cordova به نرم‌افزار Native تبدیل می‌شوند.
البته همانطوری که پیش‌تر گفته شد، تبدیل آنها به نرم‌افزار Native بدین معنا نیست که کدهای ما Compile شوند بلکه بر اساس پلتفرم مورد نظر، Cordova یک اپلیکیشن Native  تولید می‌کند و در آن یک web view قرار می‌دهد و کدهای ما را درون آن اجرا می‌کند.

مزایا

  • نوشتن کد یکبار و استفاده از آن در بسترهای متفاوت
  • دسترسی به تمامی امکاناتی که سیستم‌عامل به برنامه نویس می‌دهد
  • دارای Pluginهای متعدد

معایب

  • بازدهی پایین نسبت به نرم‌افزار Native

در زمان بررسی Native یا Hybrid بودن نرم‌افزار، Web App جایگاهی ندارد. پس ما مقایسه رو بین این دو نوع نرم‌افزارها انجام می دهیم. 
همانطوری که در بالا گفته شد در تولید نرم‌افزار Native و Hybrid تقریبا امکانات و قابلیت‌ها یکسان هستند فقط دو فرق عمده دارند:

  1. سرعت و بازدهی نرم‌افزار
  2. نحوه نوشتن کد

بالاخره Hybrid یا Native ؟

اگر می‌خواهید بازدهی نرم‌افزار شما در حد عالی باشه، اگر می‌خواهید بازی بنویسید، اگر می‌خواهید از APIهای Native استفاده کنید و همچنین اگر شما برنامه‌نویس هستید یعنی قبلا حداقل با زبان برنامه نویسی C در حد قابل قبولی کار کرده‌اید و الان هم هنوز تمایل دارید یک برنامه‌نویس باقی بمانید (بطور کل علاقه شما برنامه نویسی است) بهتره که به سمت نرم‌افزارهای Native بروید و یک زبان را انتخاب کنید و آنرا یاد بگیرید. 
مسلما نوشتن برای همه پلتفرم‌ها کار آسانی نیست و نیاز به زمان دارد، اما با توجه به اینکه برنامه‌نویسی یک مفهوم و درک است، اگر شما بصورت اصولی یک زبان برنامه‌نویسی را یادبگیرید می‌توانید پس از اینکه به آن مسلط شدید، سایر زبان‌های برنامه نویسی را یاد بگیرید. کار خیلی مشکلی نیست، چون تقریبا همه چیز برابر و مفاهیم یکی هستند و فقط syntax ها و نحوه استفاده از apiها متفاوت هستند.

و اما اگر شما یک طراح وب هستید و می‌خواهید همچنان طراح وب بمانید و علاقه‌ای به یادگیری برنامه نویسی‌های پیچیده ندارید پیشنهاد میکنم بصورت Hybrid نرم‌افزارهای خودتون رو طراحی کنید.
برای طراحان وب که HTML5 و CSS و JavaScript (منظور FrontEnd Developer است) بلد هستند شاید یادگیری یک زبان برنامه‌نویسی جدید و درک آن بسیار سخت و زمان‌بر باشه، پس بهتره از معلومات قبلی خود استفاده کنید و با کمی وقت گذاشتن و یادگیری تکنولوژی‌ها و ابزارهای جدید نرم‌افزار موبایل طراحی کنید.

شاید از این پست‌ها خوشتان بیاید