
بطور كل نرمافزارهاي موبايل به سه دسته تقسيم ميشوند:
- 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 رو در اولويت قرار بديد.
نتيجه گيري
تا چند سال پيش همه در تكاپو بودند كه براي كسب و كار خود وبسايتي داشته باشند و از اين طريق خود را معرفي كنند و مشتري جذب كنند، اما امروزه نه تنها وبسايت، بلكه ابزارهاي نوين مانند نرمافزارهاي موبايل هم بسيار اهميت پيدا كرده، پس منطقيه كه شما هم سوار بر موج پيشرفت تكنولوژي و ابزارها شويد و آنها را ياد بگيريد. اما مهم اينه كه بتونيد در سريعترين زمان ممكن به نتيجه برسيد! پس تواناييهاي خود را بسنجيد و بر اساس آن راه خود را در زمينه توسعه نرمافزارهاي موبايل انتخاب كنيد. اميدوارم اين مطلب به انتخاب اين راه به شما كمك بكنه.- جمعه ۱۸ اسفند ۹۶ | ۱۷:۳۷
- ۵ بازديد
- ۰ نظر