سامان بخشی
بعد از ظهور تکنولوژی HTML5 و افزایش قابلیت تکنینکهای وب و پیدایش گوشیهای هوشمند که بر مبنای صفحههای لمسی بزرگ بودند و با نفوذ روز افزون گوشیهای هوشمند در اینترنت که هر روز سهم بیشتری از ترافیک اینترنت را به خود اختصاص میدهند مبحثی پیرامون نرم افزارهای وب برای گوشیهای هوشمند و تبلت که به اصطلاح دستگاه های Post PC نامیده میشوند مطرح شد.
در ادامه تعدادی از شرکتهای بزرگ همچون مایکروسافت، گوگل، اپل و سایر شرکت ها HTML5 را به عنوان استانداردی در وب شناختند و مدتی بعد شرکتها سعی در بهینه سازی آن برای صفحه لمسی گوشی و تبلتها نمودند و یک فریم ورک برای پایه جاوا اسکریپت و بر اساس HTML5 و CSS عرضه نمودند که به آن اصطلاحا HTML 5 Web Mobile Application میگویند.
شرکتهای صاحب پلتفرم همانند گوگل با اندروید، اپل با آی او اس و مایکروسافت با ویندوز فون سعی در بهینه سازی موتور مرورگر پلت فرمهای خود و همخوانی با برنامههای مبتنی بر وب نمودند به گونهای که دیگر همه پلت فرمهای مطرح در گوشیهای هوشمند قابلیت اجرای نرم افزارهای مبتنی بر وب را به صورت استاندارد دارند.
محبوبیت HTML 5 و رشد آن تا جایی پیش رفت که شرکتهای همچون بنیاد موزیلا به فکر عرضه سیستم عاملی هوشمند افتاد که اساسا بر پایه این تکنیک باشد و این نشان دهنده قابلیتها و توانایی این دسته از نرم افزارها میباشد. ادامه مطلب را دست ندهید.
البته این نکته نیز شایان ذکر است که این به این معنا نیست که تقریبا برای همه نوع دسته نرم افزارها انتخاب این تکنیک بهترین گزینه میباشد. هنوز HTML 5 جای کار و توسعه دارد (و محدودیتهایی بر اساس معماری آن) اما در دستهای از نرم افزارها میتواند انتخاب بسیار خوبی باشد.
امروزه اغلب تلویزیونها همانند سریهای هوشمند ال جی و سامسونگ هم از طریق HTML 5 نرم افزار پلتفرمهای خود را توسعه میدهند.
برای توسعه نرمافزار بر روی هر پلتفرم بهتر باید از کیت توسعه نرمافزاری (SDK) شرکت صاحب پلت فرم (توسعه دهنده) استفاده کرد مانند سیستم عامل ویندوز فون مایکروسافت که باید با استفاده از .NET و در محیط Visual Studio و با WP SDK برنامه مورد نظر خود را توسعه دهید. به این روش اصطلاحا Native App میگویند.
در واقع شما از API های سیستم عامل برای نرم افزار خود استفاده میکنید و نرم افزار هر درخواستی را مستقیما به سیستم عامل میدهد و بعد از پردازش جواب خود را میگیرد، در این حالت اختصاص منابع به برنامه و سایر کارهای لازم به صورت مستقیم توسط پلت فرم صورت میگیرد اما در روش Web App که مورد نظر ما برای آموزش میباشد توسط کیت مرورگر (Web Kit) رندر میشود که در مورد آن قبلا مطلب موتورهای مرورگر وب را در نردبانخوانده اید.
در واقع مرورگر وب است که با سیستم عامل درگیر میشود و میزان حافظه ای را به خود اختصاص میدهد و هر صفحه وب را بر روی خود مورد پردازش قرار میدهد، اتفاقی که هم اکنون برای دستگاههای قابل حمل از جمله گوشی و تبلت افتاده، بهینه سازی CSS برای صفحه نمایش آنها، به کار گیری فریم ورک آماده بر پایه جاوا اسکریپت برای نوشتن کدهای مورد نیاز از جمله پشتیبانی رخدادها (Events) از صفحههای لمسی و استفاده از HTML 5 برای صفحههای برنامه است. این موتور با بهینه سازی Layout ها برای صفحه نمایش و چندی قابلیت دیگر مانند ذخیره سازی آفلاین اطلاعات، قابلیت توسعه نرمافزار بر اساس وب را به صورت بهینه و کارآمد به ما میدهد.
حال سوالی که در ذهن توسعه دهندگان پیش میآید، کدام روش بهتر است؟! Native یا Web ؟ قبل از جواب به این سوال بهتر است از شما پرسیده شود میخواهید چه نوع برنامهای را توسعه دهید؟ بهتر است قبل از هر سخنی در مورد انتخاب بگویم این بازی است که هیچ برنده نهایی نخواهد داشت و خواسته شما تعیین کننده انتخاب تکنیک برای توسعه نرم افزار میباشد پس بهتر است به جای اینکه من انتخاب کنم مزایا و معایب هر روش را بیان نموده و خود شما طبق خواسته هایتان روش خود را برگزینید.
1. سادگی در توسعه نرم افزار، در واقع دیگر نیاز نیست درگیر زبانهای همچون C#,Object-C و یا Java بشوید که قاعده و اصولهای خاصی دارند، اینجا میتوانید با جاوااسکریپت که یک زبان اسکریپت نویسی پویا میباشد به سادگی برنامه خود را توسعه دهید و برای رابط کاربری آن از زبان نشانه گذاری HTML 5 و CSS استفاده کنید.
2. آشنا برای توسعه دهندگان وب، برای یادگیری توسعه نرم افزار در صورتی که با برنامه نویسی وب در حد ساده هم آشنا باشید نیاز به صرف زمان برای اصول و قاعدههای پیچیده نیستید.
3. قابلیت Cross Platform ، با یک بار توسعه نرم افزار خود میتوانید خروجی آن را برای همه سیستم عاملهای هوشمند مهیا سازید.
4. هزینه کمتر در توسعه نرم افزار، قابلیت Cross Platform در واقع باعث میشود از صرف زمان و سایر هزینهها برای توسعه بر روی چند پلت فرم بینیاز باشیم.
1. محدودیت در توسعه نرم افزار، در روش Native به همه API های سیستم عامل دسترسی دارید و میتوانید هر نوع نرم افزاری را با هر قابلیتی که دستگاه دارد توسعه دهید ولی در حالت Web عملا محدود هستید هرچند فریم ورکهای همچون Phone Gap سعی در آوردن قابلیت SDK مخصوص هر پلت فرم میباشد اما عملا در توسعه نرم افزار نسبت به Native محدودترند.
2. سرعت کمتر در اجرای برنامه، در روش Web App برنامه هر بار توسط موتور مرورگر پلت فرم رندر میشود و همین افت سرعت را به دنبال خواهد داشت و البته بستگی به موتور مرورگر نیز دارد، در هر نسخه جدید کیت مرورگرها سعی بر سرعت بالاتر در اجرای Java Script و رندر سازی بهنیهتر HTML 5 دارند که نتیجه آن سرعت و عملکردی بهتر است اما باز در مقایسه به Native نمیتوانند خوب باشند.
بهتر است بحث را برای قسمت اول خلاصه کنیم، در واقع شما باید کار کرد برنامه خود را ببینید، پیشنهادی داشتم برای توسعه نرم افزاری برای شرکتی که یک سایت شامل مجموعهای از اطلاعات را می خواست در برنامهی برای دستگاههای همراه نمایش بگذارد و قابلیتهای همچون نمایش اطلاعات، ثبت اطلاعات و جستجو را در برنامه خود داشته باشد و آن را برای کاربران Android ،Symbian،IOS و Windows Phone منتشر سازد. با هزینهای که آنها و زمانی که در نظر گرفته بودند این کار غیر ممکن (غیرصرفه) بود، من با پیشنهاد خوبی توانستم پروژه را بگیرم. تنها کاری که کردم آن را با تکنیک HTML 5 توسعه دادم و بر روی همه آنها منتشر ساختم، اما مشتری قبلی از من برنامه ای می خواست که با سنسورهای گوشی به صورت مستقیم درگیر میشد و بهترین انتخاب برای توسعه و درواقع تنها انتخاب من نوشتن برنامه به صورت Native بود اما خوشبختانه فقط برای Android باید برنامه تهیه میشد.
لازم به ذکر این نکته است که توسعه نرم افزار به روش Web App دیگر در پنجرهی مرورگر اجرا نمیشود و امروزه به جای رسیده که در ظاهر کامل شبیه برنامه های Native هستند و شاید تنها یک توسعه دهنده نرم افزار متوجه تکنیک شما بشود و با استفاده از فریم ورک های که در قسمت های بعدی خواهیم گفت، می توانید برنامه های Web را برای هر پلت فرم مخصوص منتشر کنیم. در قسمت های بعد اگر همراه برخط نویس باشید خواهید خواند چگونه یک برنامه ساده Web ساخته می شود…
در بخش نظرات می توانید نظرات و سوالات خودتان را مطرح کنید.