اپلیکیشن Native یا Hybrid : مسئله این است !
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
افزونه فرم ساز آسان
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
خرید ورق گالوانیزه رنگی
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
کارگاه رویه کوبی در تهران
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
خودتان را اینجا معرفی کنید
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
بطور کل نرمافزارهای موبایل به سه دسته تقسیم میشوند:
- Native App
- Web App
- Hybrid App
نرمافزار Native چیست؟
ساخت و توسعه نرمافزارهای Native به این معناست که برای برنامه نویسی و توسعه نرمافزار خود از زبانهای اصلی سیستم عامل استفاده کنید. مثلا برای توسعه نرمافزار اندروید باید از زبان برنامه نویسی Java و برای توسعه نرمافزار آیفون باید از زبان برنامه نویسی Objective-C استفاده کنید. بزرگترین مزیت این حالت بازدهی (performance) بالای نرمافزار است، زمانی که شما برنامه خود را بصورت Native مینویسید کدهای شما به زبان ماشین کامپایل خواهند شد(Dalvik bytecode در اندروید) که همین موضوع باعث میشود شما حداکثر بازدهی ممکن از نرمافزار را داشته باشید. بازدهی بالا میتواند شامل افکتهای انیمیشن، روان کار کردن بخشهای مختلف برنامه، امکان استفاده از multi touch و خیلی موارد دیگه باشه که بدلیل دسترسی مستقیم به موقعیتهای حافظه و سختافزار گوشی اتفاق میفته.توسعه نرمافزارهای Native آسان نیست! چرا؟ چون باید برنامهای که میخواهید بنویسید، برای هر platform بشکل مجزا بنویسید. با اینکه امروزه منابع زیادی برای یادگیری برنامهنویسی در اینترنت وجود دارند اما باز هم یادگیری برنامهنویسی بصورت Native شاید برای همه قابل فهم و انجام نباشه و همین موضوع کمی کار رو سخت میکنه. اگر شما بخواهید نرمافزار خود را برای پلتفرمهای مختلف مانند اندروید، ios و یا ویندوز طراحی کنید باید کدی که مینویسید را به زبان برنامهنویسی هر کدام از پلتفرمها مجددا بنویسید! شاید منطق و الگوریتم همگی یکی باشند اما مسلما SDK و APIهای که برای هرکدام استفاده میکنید متفاوت خواهند بود و از همه مهمتر باید وقت بیشتری برای کدنویسی آن بگذارید.
پس اگر میخواهید برنامه نویسی Native انجام دهید به خاطر داشته باشید برای هر Platfrom باید زبان برنامهنویسی آن را یاد بگیرید و مجددا کدهای برنامه خود را بنویسید.
مزایا
- بدلیل کامپایل شدن برنامه دارای سرعت بالایی هستند
- دسترسی به تمامی امکاناتی که سیستم عامل به برنامهنویس میدهد
- پشتیبانی از APIهای مختلف
معایب
- دوباره نویسی کدهای برنامه برای پلتفرمهای مختلف
- هزینه تمام شده بالا بدلیل زمان توسعه برنامه
نرمافزار Web چیست ؟
نرمافزارهای web در واقع نرمافزار نیستند! آنها وبسایتی هستند که بصورت Responsive طراحی شدهاند و یا اینکه وبسایتی هستند که مخصوص موبایل پیادهسازی شدهاند و کاربران میتوانند توسط مرورگر دستگاههای خود آنها را بدرستی مشاهده کنند. شاید بشه گفت این قبیل نرمافزارها شبیه نرمافزار هستند، تا اینکه نرمافزار واقعی باشند.این نرمافزارها با استفاده از HTML5 طراحی و توسعه داده میشوند، به همین دلیل باید حتما در مرورگر گوشی آنها را مشاهده کرد. برای دسترسی به این قبیل نرمافزارها کاربر باید مانند بازدید از یک وبسایت عمل کند، یعنی ابتدا مرورگر را باز کند، در بخش نوار آدرس، آدرس وبسایت یا وباپلیکیشن را وارد کند و آنرا از طریق مرورگر مشاهده کند. امکان نصب نرمافزار بر روی گوشی وجود ندارد و کاربر فقط میتواند یک bookmark از آن آدرس را بر روی گوشی خود بسازد که در آینده دسترسی به آن سایت راحتتر باشد.
با توجه به اینکه مرورگرهای مختلفی بر روی گوشیها وجود دارد و کاربر شما از مرورگر مورد علاقه خود استفاده میکند، اگر نرمافزار را اصولی توسعه ندهید و یا برخی نکات در طراحی سایت/اپلیکیشن را در نظر نگیرید، ممکن است نرمافزار شما در برخی از مرورگرها دچار مشکل شود.
البته باید این رو هم گفت که Web Appها خیلی هم بد نیستند! چون کار شما رو به عنوان توسعه دهنده خیلی راحت میکنه! اگر شما در حال طراحی یک وب سایت با ساختار وب اپلیکیشن هستید کافیه موارد لازم برای دستگاههای موبایل و تبلت را در نظر بگیرید و نرمافزار خود را تولید کنید، بدین شکل شما یکبار کد میزنید و با همان کد هم وبسایت دارید و هم موبایل اپلیکیشن از نوع Web App
مزایا
- نوشتن کد یکبار و استفاده از آن در بسترهای متفاوت
- با توجه به اینکه فقط یکبار کد نوشته میشه رفع باگ و مشکلات بسیار آسان خواهد بود
- مستقل از سیستمعامل، بستر و حتی نسخه سیستم عاملها
معایب
- نداشتن دسترسی به سختافزار گوشی یا تبلت
- وابسته به مرورگر
- عدم امکان انتشار نرمافزار در مارکتها و app store
نرمافزار Hybrid چیست ؟
نرمافزارهای Hybrid مانند نرمافزارهای Web هستند (وب سایت یا وب اپلیکیشن) که باید در مرورگر مشاهده شوند اما تفاوتی که با Web App دارد این است که نیازی نیست کاربر در مرورگر گوشی، برنامه را ببیند بلکه توسط WebView در اندروید و یا UIWebView در iOS (مرورگر native) محتوای نرمافزار به کاربر، در قالب یک نرمافزار Native نمایش داده خواهد شد. نرمافزارهای Hybrid توسط HTML و CSS و JavaScript توسعه داده میشوند و سپس توسط نرمافزارهای مانند Cordova به نرمافزار Native تبدیل میشوند.البته همانطوری که پیشتر گفته شد، تبدیل آنها به نرمافزار Native بدین معنا نیست که کدهای ما Compile شوند بلکه بر اساس پلتفرم مورد نظر، Cordova یک اپلیکیشن Native تولید میکند و در آن یک web view قرار میدهد و کدهای ما را درون آن اجرا میکند.
این روش توسعه نرمافزار نسبت به نرمافزارهای Native سریعتر و راحتتر است. امکان رفع مشکلات و یا به روزرسانی نرمافزار بسیار راحت خواهد بود و هر زمان که بخواهید میتوانید برای هر بستری که لازم باشد نرمافزار خود را منتشر کنید.
Cordova به شما این امکان را میدهد که بدون حتی اضافه کردن یک خط کد به برنامه خود، آنرا برای پلتفرمهای مختلف منتشر کنید! علاوه بر این تقریبا شما به تمامی امکانات سختافزاری دستگاه (که در نرمافزارهای Native میتوانستید کار کنید) دسترسی دارید و حتی کلی Plugin از قبل توسعه داده شده وجود دارد که میتوانید بسیار راحتتر برنامه خود را توسعه دهید. تنها ایرادی که به نرمافزارهای Hybrid وارده اینه که بازدهی نرمافزارهایی که بدین شکل توسعه داده میشوند به اندازه نرمافزارهای Native نیستند و دلیلش هم اینه که کدهای شما توسط مرورگر قرار است پردازش و نمایش داده شود.
مزایا
- نوشتن کد یکبار و استفاده از آن در بسترهای متفاوت
- دسترسی به تمامی امکاناتی که سیستمعامل به برنامه نویس میدهد
- دارای Pluginهای متعدد
معایب
- بازدهی پایین نسبت به نرمافزار Native
در زمان بررسی Native یا Hybrid بودن نرمافزار، Web App جایگاهی ندارد. پس ما مقایسه رو بین این دو نوع نرمافزارها انجام می دهیم.
همانطوری که در بالا گفته شد در تولید نرمافزار Native و Hybrid تقریبا امکانات و قابلیتها یکسان هستند فقط دو فرق عمده دارند:
- سرعت و بازدهی نرمافزار
- نحوه نوشتن کد
حالا به این مرحله میرسیم که بین این دو کدام را انتخاب کنیم ؟
بالاخره Hybrid یا Native ؟
در اینجا من نظر شخصی خودم رو با تجربه ای که در این زمینه دارم به شما انتقال میدهم ولی ممکنه نظرها متفاوت باشه، پس لطفا نظر خودتون رو از طریق نظرات این مطلب ارسال کنید و با دیگران به اشتراک بگذارید.اگر میخواهید بازدهی نرمافزار شما در حد عالی باشه، اگر میخواهید بازی بنویسید، اگر میخواهید از APIهای Native استفاده کنید و همچنین اگر شما برنامهنویس هستید یعنی قبلا حداقل با زبان برنامه نویسی C در حد قابل قبولی کار کردهاید و الان هم هنوز تمایل دارید یک برنامهنویس باقی بمانید (بطور کل علاقه شما برنامه نویسی است) بهتره که به سمت نرمافزارهای Native بروید و یک زبان را انتخاب کنید و آنرا یاد بگیرید.
مسلما نوشتن برای همه پلتفرمها کار آسانی نیست و نیاز به زمان دارد، اما با توجه به اینکه برنامهنویسی یک مفهوم و درک است، اگر شما بصورت اصولی یک زبان برنامهنویسی را یادبگیرید میتوانید پس از اینکه به آن مسلط شدید، سایر زبانهای برنامه نویسی را یاد بگیرید. کار خیلی مشکلی نیست، چون تقریبا همه چیز برابر و مفاهیم یکی هستند و فقط syntax ها و نحوه استفاده از apiها متفاوت هستند.
برای شروع منابعی را معرفی میکنم که میتوانند به شما کمک کنند:
- بخش مقالات موبایل مجیدآنلاین
- کتابخانه توسعه iOS
- توسعه دهندگان Android
- مرجع توسعه دهندگان Windows
- سایت Stackoverflow
برای طراحان وب که HTML5 و CSS و JavaScript (منظور FrontEnd Developer است) بلد هستند شاید یادگیری یک زبان برنامهنویسی جدید و درک آن بسیار سخت و زمانبر باشه، پس بهتره از معلومات قبلی خود استفاده کنید و با کمی وقت گذاشتن و یادگیری تکنولوژیها و ابزارهای جدید نرمافزار موبایل طراحی کنید.
برای تولید نرمافزارهای Hybrid میتونید از ابزارهای زیر استفاده کنید: اصلاح: Xamarin به اشتباه در دسته تولید نرمافزارهای Hybrid قرار گرفته است، در واقع خروجی اپهایی که با Xamarin تولید میشوند بصورت Native هستند.
اگر میخواهید بصورت Hybrid بازی طراحی کنید و توسعه بدید، پیشنهاد میکنم از Ludei استفاده کنید.
زمانی که بصورت Hybrid کار میکنید میتوانید از فریمورکهای طراحی و یا برنامهنویسی مختلفی استفاده کنید: من با Ionic کار کردم که یک فریمورک فوقالعاد برای توسعه نرمافزار بخصوص برای iOS هستش، در این فریم ورک از AngularJS استفاده شده که بخاطر ساختار MVC، کدها بسیار تمیز و سرعت توسعه هم بالا خواهد بود. جدیدا هم با Meteor شروع به کار کردم که اونم فوقالعاده هستش، پیشنهاد میکنم اگر میخواین موبایل اپلیکیشن Hybrid توسعه بدید، حتما از یکی از فریمورکها استفاده کنید و AngularJS و Meteor رو در اولویت قرار بدید.
نظرات و سوالات کاربران
کد نوشته شده توسط پلترفرم Meteor آیا در ویندوز هم میتوان خروجی ios گرفت؟
با کدام پلتفرم میتوان کراس پلتفرم در ویندوز نوشت؟
سپاسگزارم
باید ببینید هزینه تمام شده کدوم یکی براتون مناسبتر هستش.
ممنون از توضیحات جامع. یه پرسش هم بنده دارم اونم اینه که بجای جاوا میشه از زبان پایتون استفاده کرد؟
شما اگر میخواین یک زبان برنامهنویسی جدید یادبگیرید بهتره که زبانی مانند Java یا Swift (اگر نمیخواهید ویندوزی توسعه بدین) رو یاد بگیرید که بتونید یه نرمافزار native برای پلتفرمی که در نظر دارید بنویسید.
سوالی داشتم.
ایا یادگیری زبان basic مانند b4a مناسب است و ایا این زبان برای برنامه نویسی اندروید چطور میدانید؟
ایا native است؟
ممنون میشم پاسخ بدید.
بله حق کاملا با شماست و مطلب ویرایش شد.
github.com/j3k0/cordova-plugin-purchase
میخواستم بدونم چطور میشه در برنامه های Hybrid از پرداخت درون برنامه ای (مثلا بازار) استفاده کرد
با تشکر
اپلیکیشن هایی مثل دیوار و شیپور از native استفاده شده درش یا hybrid !؟