HTML5 در مقابل Native

بحث اپلیکیشن موبایل

مایکل ماهموف
مایکل ماهموف

معرفی

برنامه های موبایل و HTML5 دو تا از داغ ترین فناوری های حال حاضر هستند و همپوشانی های زیادی وجود دارد. برنامه های وب در مرورگرهای تلفن همراه اجرا می شوند و همچنین می توانند به عنوان برنامه های بومی در پلتفرم های مختلف تلفن همراه دوباره بسته بندی شوند. با طیف گسترده ای از پلتفرم ها برای پشتیبانی، همراه با قدرت محض مرورگرهای تلفن همراه، توسعه دهندگان به HTML5 به عنوان یک راه حل "نوشتن، اجرا بسیاری" روی آورده اند. اما آیا واقعا قابل اجراست؟ هنوز دلایل قانع‌کننده‌ای برای بومی شدن وجود دارد، و واضح است که بسیاری از توسعه‌دهندگان واقعاً این مسیر را طی می‌کنند. این مقاله یک بحث در مورد بومی در مقابل وب است.

غنای ویژگی

نکته: بومی می تواند کارهای بیشتری انجام دهد

ما می‌توانیم عملکرد تلفن همراه را به دو بعد تقسیم کنیم: تجربه خود برنامه، و نحوه اتصال آن به اکوسیستم دستگاه، به عنوان مثال برای اندروید، ویژگی‌هایی مانند ویجت‌ها و اعلان‌ها. بومی در هر دو بعد برتری دارد.

از نظر تجربه اپلیکیشن، اپلیکیشن های بومی می توانند کارهای بیشتری انجام دهند. آن‌ها می‌توانند به راحتی رویدادهای سوایپ را، حتی چند لمسی، برای پلتفرم‌هایی که از آن پشتیبانی می‌کنند، در دست بگیرند. آنها معمولاً می‌توانند روی کلیدهای سختی که فشار داده می‌شوند، مانند دکمه جستجوی Android و کنترل‌های صدا، عمل کنند. آنها همچنین می توانند به سخت افزارها مانند GPS و دوربین دسترسی داشته باشند. و با اجازه کاربر، برخی از پلتفرم ها دسترسی بدون محدودیت به سیستم عامل را فراهم می کنند. فقط سعی کنید تشخیص دهید چقدر باتری با HTML5 باقی می ماند!

هر چند این بیشتر از تجربه درون برنامه ای است. سیستم عاملی مانند اندروید راه های مختلفی را برای تعامل برنامه ها با کاربران و در واقع با سایر برنامه ها فراهم می کند. ویجت های فعالی در صفحه اصلی دارید. اعلان‌هایی دارید که در نوار وضعیت دستگاه نشان داده می‌شوند. و شما قصد دارید که به برنامه شما اجازه می دهد تا خود را به عنوان ارائه یک سرویس کلی که ممکن است برنامه های دیگر در مواردی به آن نیاز داشته باشند، اعلام کند.

نقطه مقابل: ویژگی‌های بومی را می‌توان افزایش داد، و به هر حال وب در حال افزایش است

درست است که بسیاری از ویژگی های درون برنامه ای برای یک برنامه HTML5 به سادگی خارج از دسترس هستند. مهم نیست که مهارت‌های وب فوی شما چقدر داغ است، اگر برنامه شما در یک جعبه ماسه‌ای بدون API دوربین گیر کرده باشد، به این زودی عکس‌برداری نمی‌شود! خوشبختانه، لازم نیست در آن جعبه شنی باشید. اگر واقعاً به برنامه وب خود برای گرفتن عکس نیاز دارید، می توانید یک برنامه بومی ایجاد کنید، یکی با نمای وب تعبیه شده که بخش عمده ای از رابط کاربری را فراهم می کند. چارچوب PhoneGap منبع باز اینگونه عمل می کند: این شکاف را با نمایش ویژگی های بومی به عنوان سرویس های وب پر می کند، که نمای وب با استفاده از یک API شبکه استاندارد فراخوانی می کند. هنگامی که یک برنامه ترکیبی مانند این می‌سازید، می‌توانید به آن ویژگی‌های پلتفرم مانند ویجت‌ها، اعلان‌ها و اهداف متصل شوید.

ساخت یک برنامه ترکیبی - بومی به علاوه وب - راه حل ایده آلی نیست. این پیچیدگی می‌افزاید و فقط برای برنامه‌های وب که به‌عنوان برنامه‌های بومی پیچیده شده‌اند، به جای وب‌سایت‌های سنتی که از طریق مرورگر تلفن همراه قابل دسترسی هستند، اعمال می‌شود. اما ممکن است برای مدت طولانی لازم نباشد. استانداردهای وب به سرعت در حال پیشرفت هستند و مرورگرهای مدرن تلفن همراه همگام با آن حرکت می کنند. به عنوان مثال، ذخیره سازی آفلاین، موقعیت جغرافیایی، گرافیک بوم، و پخش ویدئو/صوتی، همه از پشتیبانی گسترده ای در میان گوشی های هوشمند مدرن برخوردار هستند. حتی دوربین نیز شروع به پشتیبانی می کند - از اندروید 3.1، امکان گرفتن عکس و فیلم با استفاده از استانداردهای وب وجود دارد. و آخرین مرورگر iOS از WebSocket برای پخش جریانی دو طرفه و همچنین تشخیص جهت گیری دستگاه پشتیبانی می کند.

به طور کلی، موبایل در حال تکامل است. اما وب نیز در حال تکامل و سریع است. تنها در میان مرورگرهای دسکتاپ، پنج فروشنده بزرگ مرورگر وجود دارد که استانداردها را تغییر می‌دهند و ویژگی‌ها را با سرعت بسیار بالا اضافه می‌کنند. در حالی که انتقال این ویژگی ها به موبایل یک فرآیند پیش پا افتاده نیست، بسیاری از آنها قبلاً راه خود را به مرورگرهای تلفن همراه باز کرده اند.

Native یک هدف سریع در حال حرکت است، اما وب در حال بستن شکاف است.

کارایی

نکته: Native سریعتر اجرا می شود

برنامه های بومی مانع اجرای وب برای مقابله با آن ندارند. آنها نزدیک به فلز کار می کنند و می توانند از تقویت کننده های عملکرد مانند شتاب GPU و Multithreading بهره ببرند.

نقطه مقابل: امروزه زمان اجرا وب بسیار سریعتر است و به هر حال اکثر برنامه ها به سرعت نیاز ندارند

اگر بگوییم وب در سال‌های اخیر سریع‌تر شده است، دست کم گرفته شده است. V8، موتور جاوا اسکریپت که با کروم عرضه می‌شود، در زمان راه‌اندازی یک پیشرفت بزرگ در عملکرد وب بود و از آن زمان تاکنون، فقط سریع‌تر شده است:

نمودار عملکرد V8

موتورهای رندر گرافیکی نیز وب را سرعت بخشیده اند و اکنون شتاب سخت افزاری شروع به اتفاق می کند. به سرعت دست انداز ارائه شده توسط سخت افزار accelerated-canvas نگاهی بیندازید:

نمودار بوم شتاب‌دار سخت‌افزاری

علاوه بر این، Web Workers API جدید امکان چند رشته ای را فراهم می کند و توسعه دهندگان وب مدرن همچنین می توانند از مجموعه ای از کتابخانه های بهینه شده عملکرد و تکنیک های بهینه سازی عملکرد به خوبی تحقیق شده استفاده کنند. در حالی که بیشتر آن‌ها زندگی خود را در وب دسک‌تاپ آغاز کردند، اما همچنان به موبایل مرتبط هستند، و توجه بیشتری به موبایل می‌شود، به عنوان مثال، استاد کارایی استیو سادرز صفحه‌ای اختصاص داده شده به ابزارهای عملکرد تلفن همراه دارد.

هنوز همه پیشرفت‌های دسک‌تاپ راه خود را به همه پلت‌فرم‌های تلفن همراه باز نکرده‌اند، اما روندها نشان می‌دهند که در راه هستند. همچنین مهم است که توجه داشته باشید که اکثر برنامه‌های تلفن همراه بازی‌های سه بعدی پیشرفته نیستند، بلکه اساساً مبتنی بر اطلاعات هستند: اخبار، ایمیل، جدول زمانی، شبکه‌های اجتماعی، و غیره. توییتر، و می توانید تأیید کنید که عملکرد وب تلفن همراه بیش از اندازه کافی است. در مورد بازی‌ها، بازی‌های پایه در حال حاضر با بوم دوبعدی قابل اجرا هستند، و WebGL شروع به ظاهر شدن در تلفن‌های همراه کرده است - به فایرفاکس 4 مراجعه کنید. به عنوان مثال ImpactJS .

تجربه توسعه دهنده

نکته: توسعه بومی آسانتر است

برنامه‌های بومی از زبان‌های برنامه‌نویسی قوی (مانند جاوا، هدف C، C++) استفاده می‌کنند که برای توسعه برنامه‌های کاربردی پیچیده طراحی شده‌اند و سابقه ثابتی دارند. APIها برای پشتیبانی از پلتفرم در دست طراحی شدند. شما به راحتی می توانید برنامه ها را در شبیه سازهای دسکتاپ اشکال زدایی کنید که نمایش نزدیکی از دستگاه مورد نظر ارائه می دهند.

آنچه که توسعه وب را به خصوص دردسرساز می کند، تنوع بسیار زیاد مرورگرها و زمان اجرا است. وقتی برنامه شما اجرا می شود، تضمینی نیست که ویژگی X در دسترس باشد. و حتی اگر هم باشد، مرورگر چگونه آن را پیاده سازی می کند؟ استانداردها قابل تفسیر هستند.

نقطه مقابل: توسعه وب اغلب آسان تر است، به خصوص اگر چندین دستگاه را هدف قرار دهد

بیایید ابتدا به فناوری اصلی بپردازیم. این درست است که استانداردهای وب در ابتدا در دوره ای شکل گرفتند که وب اساساً در مورد اسناد بود، نه برنامه ها، با جاوا اسکریپت ساخته شده و تنها در 10 روز! اما معلوم شد که آنها بسیار بیشتر از آنچه تصور می‌شد توانمند هستند - توسعه‌دهندگان وب یاد گرفته‌اند که از قسمت‌های خوب استفاده کنند و قسمت‌های بد را رام کنند، با الگوهایی که اکنون برای طراحی مقیاس‌پذیر درک شده‌اند. علاوه بر این، استانداردها ثابت نیستند و تلاش هایی مانند HTML5، CSS3 و EcmaScript Harmony همگی تجربه توسعه دهندگان را بهبود می بخشند. اینکه C++ را ترجیح می دهید یا جاوا یا جاوا اسکریپت یک بحث مذهبی است و همچنین به پایه کدهای قدیمی شما بستگی دارد. اما مطمئناً می توانیم جاوا اسکریپت را به عنوان یک رقیب جدی این روزها قرار دهیم.

طرف مقابل به تقسیم بندی مرورگر/ زمان اجرا این واقعیت است که همه این محیط ها در وهله اول وجود دارند. یک برنامه اندروید در جاوا توسعه دهید و با پورت کامل Objective C برای پشتیبانی از iOS مواجه خواهید شد. یک برنامه وب را یک بار توسعه دهید تا در اندروید و iOS اجرا شود، نه اینکه به WebOS، BlackBerry، Windows Mobile و... اشاره کنیم، به هر حال این تئوری است. در عمل، اگر واقعاً می‌خواهید تجربه درستی داشته باشید، باید چیزهایی را برای هر پلتفرم تغییر دهید. اما شما باید این کار را به صورت بومی نیز انجام دهید، برای اکثر سیستم عامل های تلفن همراه - نسخه های مختلف و دستگاه های مختلف وجود دارد.

خبر خوب این است که «تکه تکه‌شدن» همیشه در وب این گونه بوده است و تکنیک‌های شناخته شده‌ای برای مقابله با آن وجود دارد. مهمتر از همه، اصل ارتقاء پیشرونده، توسعه دهندگان را ترغیب می کند که ابتدا یک دستگاه اصلی را هدف قرار دهند و لایه هایی از هیبت خاص پلتفرم را در جایی که در دسترس است اضافه کنند. مانترای تشخیص ویژگی نیز کمک می کند و این روزها، ما از پشتیبانی کتابخانه ای مانند Modernizr برای پشتیبانی از طراحی وب واکنش گرا برخوردار هستیم. با استفاده خردمندانه از این تکنیک‌ها، می‌توانید دسترسی خود را به اکثریت قریب به اتفاق دستگاه‌ها، حتی «تلفن‌های ویژه» قدیمی، حتی از عواملی مانند ساعت‌ها و تلویزیون‌ها، بدون توجه به ساخت و سیستم‌عامل، گسترش دهید. شاهد نمایش چند UI ما در Google IO 2011 باشید، جایی که ما فاکتورهای فرم مجزا (تلفن ویژه، تلفن هوشمند، تبلت، دسکتاپ، تلویزیون) را با یک پایه کد مشترک منطق و نشانه گذاری هدف قرار دادیم.

نگاه-و-احساس

نکته: بومی با ظاهر و ظاهر پلت فرم متناسب است

یکی از ویژگی های بارز هر پلتفرم ظاهر و احساس آن است. کاربران انتظار دارند که کنترل ها به طور مداوم ارائه شوند و به همان شیوه دستکاری شوند. اصطلاحات خاصی وجود دارد که از پلت فرمی به پلتفرم دیگر متفاوت است، مثلاً وقتی کاربر یک "نگهداری طولانی" را انجام می دهد (به مدت چند ثانیه یک عنصر را لمس کند) چه اتفاقی می افتد؟ پلافرم ها اصطلاحات استانداردی برای چنین چیزهایی دارند، و شما نمی توانید همه آنها را با یک برنامه HTML5 برآورده کنید.

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

نقطه مقابل: وب ظاهر و احساس خاص خود را دارد و همچنین می توانید رابط وب را برای پلتفرم هایی که بیشتر به آنها اهمیت می دهید سفارشی کنید.

همانطور که در بخش قبل توضیح داده شد، روش توسعه وب این است که یک نسخه اولیه "یک اندازه متناسب با همه" بنویسید و سپس به تدریج آن را تقویت کنید. در حالی که بهبود معمولاً مبتنی بر ویژگی‌ها است، می‌توانید با هدف قرار دادن پلتفرم‌هایی که بیشتر به آن‌ها اهمیت می‌دهید، آن را ارتقا دهید. این یک نوع "تشخیص مرورگر" است که گاهی اوقات توسط جامعه وب مورد انتقاد قرار می گیرد، بیشتر به این دلیل که مرورگرهای احتمالی زیادی در آنجا وجود دارد. اما اگر دو یا سه پلتفرم را با اولویت بسیار بالا مشاهده می‌کنید و می‌خواهید تلاش بیشتری برای مقابله با جایگزین‌های بومی انجام دهید، ممکن است این راه حل باشد.

تا آنجا که نسخه پایه، وب ظاهر و احساس خاص خود را دارد، و حتی می توان گفت که هر پلتفرم تلفن همراه دارای «ظاهر و احساس وب» خاص خود است که توسط مرورگر پیش فرض و زمان اجرا وب ایجاد شده است. «ظاهر و احساس وب» ممکن است برای کاربران شما خوب باشد و در واقع به شما امکان می دهد تا به درجه سازگاری بیشتری با تجربه مرور دسکتاپ و همچنین دستگاه های دیگری که کاربر ممکن است با آنها کار می کند، دست یابید. علاوه بر این، بسیاری از برنامه های موفق وجود دارند که به هر حال از ظاهر و احساس بومی پشتیبانی نمی کنند. این مطمئناً در مورد بازی‌ها صدق می‌کند (آیا بازی موبایل مورد علاقه شما از ظاهر و احساس سیستم عامل تلفن همراه شما پیروی می‌کند؟)، و حتی در مورد برنامه‌های معمولی‌تر نیز صادق است، به عنوان مثال، مشتریان بومی توییتر را در پلتفرم مورد نظر خود بررسی کنید، و خواهید دید. طیف گسترده ای از مکانیسم های رابط کاربری در حال کار است.

قابلیت کشف

نکته: کشف برنامه های بومی آسان تر است

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

نقطه مقابل: در واقع، اپلیکیشن های وب راحت تر قابل کشف هستند

وب مسلماً قابل کشف ترین رسانه ای است که تاکنون ایجاد شده است. در URL فروتن، ما (حداقل در تئوری) یک شناسه منحصر به فرد برای هر چیزی که تا به حال در وب منتشر شده است، داریم که شامل هر برنامه ای است که در وب سایت های استاندارد منتشر شده است. موتورهای جستجو کشف اینکه محتوا و سایر وب‌سایت‌ها می‌توانند به آن پیوند دهند، از جمله کاتالوگ‌های برنامه‌های وب شبیه به بازارهای تلفن همراه، آسان می‌کنند. در واقع، هر فردی می‌تواند برنامه‌های وب را تنها با پیوند دادن به آن در ایمیل‌ها و پیام‌های شبکه اجتماعی با دوستان خود به اشتراک بگذارد. پیوندها را می توان از طریق SMS نیز ارسال کرد، که در آن کاربران تلفن همراه می توانند روی پیوند کلیک کرده و برنامه را در مرورگر دستگاه خود راه اندازی کنند.

ما هنوز بازارهای مشابهی نداریم که کاربران بتوانند به برنامه ها امتیاز دهند و نظر بدهند، اما این نیز در حال تغییر است. ادامه مطلب…

کسب درآمد

نکته: بومی را می توان کسب درآمد کرد

"بچه ای 6 ساله در طول ساعت ناهار اپلیکیشن می سازد، هزار نسخه از آن را به قیمت 3 دلار به فروش می رساند." این روزها این تیتر را زیاد می بینید، بنابراین جای تعجب نیست که توسعه دهندگان بزرگ و کوچک به دنبال بازارهای موبایل برای کسب درآمد هستند. پلتفرم‌های موبایل راه‌های مختلفی را برای توسعه‌دهندگان ارائه می‌دهند تا مستقیماً برای برنامه‌های خود هزینه دریافت کنند. ساده ترین پرداخت یک بار است، برای باز کردن قفل برنامه برای همیشه. همچنین مکانیزم‌های پرداخت درون‌برنامه‌ای و اشتراک در برخی از پلتفرم‌ها ارائه می‌شوند، و آن‌ها کاملاً در یک مکانیسم سازگار و ایمن ادغام شده‌اند. این روش‌های پرداخت جدیدتر به توسعه‌دهندگان این امکان را می‌دهد تا یک برنامه پرفروش را به یک جریان درآمد بلندمدت تبدیل کنند.

علاوه بر پرداخت‌های اپلیکیشن، می‌توانید با مدل‌های سنتی وب مانند تبلیغات و حمایت مالی کسب درآمد کنید.

نقطه مقابل: کسب درآمد از طریق وب همیشه امکان پذیر بوده و فرصت ها در حال رشد هستند

اگر فرصت‌های کافی برای پول نقد وجود نداشت، وب موتور صنعت مدرن نخواهد بود. اگرچه مکانیسم‌های مستقیم «پرداخت به ازای استفاده» هنوز شکوفا نشده است، اما بخش‌های مختلفی وجود دارد که «نرم‌افزار به‌عنوان یک سرویس» مبتنی بر اشتراک است. «راه‌حل‌ها واقعاً عملی شده‌اند. به عنوان مثال می‌توان به Google Apps، طیف محصولات 37Signals و نسخه‌های ممتاز سرویس‌های ایمیل مختلف اشاره کرد. علاوه بر این، پرداخت های مستقیم تنها راه سود بردن از برنامه های وب نیست. تبلیغات آنلاین، پیوندهای وابسته، حمایت های مالی، تبلیغات متقابل به سایر محصولات و خدمات وجود دارد.

با این حال، برای یک توسعه دهنده وب کاملا منطقی است که سرفصل ها را بخواند و حسادت پرداخت را تجربه کند. شما نمی توانید URL وب را به بازارهای بومی ارسال کنید، بنابراین یک توسعه دهنده وب چه کاری باید انجام دهد؟ کاری که شما انجام می دهید این است که یک "برنامه wrapper" بومی ایجاد کنید - برای هر پلتفرمی که می خواهید هدف قرار دهید، یک برنامه بومی خالی ایجاد کنید که به سادگی حاوی یک نمای وب است. نمای وب جایی است که شما برنامه واقعی را جاسازی می کنید. سپس شما فقط این برنامه ها را به بازارهای مختلف ارسال می کنید (و امیدواریم شاهد گردش پول باشید!). احتمالاً امروزه صدها، اگر نگوییم هزاران برنامه مبتنی بر وب در بازارهای اصلی وجود دارد، برخی از آنها چنان حیله‌گرانه شبیه‌سازی شده‌اند که ما حتی برنامه‌های وب آنها را اصلاً نمی‌شناسیم.

نکته منفی، وظیفه کامپایل متقابل برای هر پلتفرم است. در اینجا یک چارچوب موجود مانند PhoneGap می تواند کمک کند. حتی بهتر از آن، خدمات وب مانند PhoneGap Build و Apparatio در دست توسعه هستند. این وب‌سایت‌ها را به مخزن کد خود هدایت کنید، و یک برنامه اندروید، یک برنامه iOS و غیره را بیرون می‌آورید تا آماده ارسال به فروشگاه‌های مربوطه شوید. بدون نصب SDK های بومی روی دستگاه شما. تنها چیزی که برای ساختن همه این برنامه های بومی نیاز داشتید یک ویرایشگر کد و یک مرورگر وب بود.

آیا بازارها هرگز مستقیماً از برنامه‌های وب پشتیبانی می‌کنند، بدون اینکه هزینه‌های اضافی برای بسته‌بندی آن‌ها به صورت بومی وجود داشته باشد؟ هنوز مشخص نیست. ما می دانیم که گوگل فروشگاه وب کروم را سال گذشته معرفی کرد، و اگرچه فقط برای دسکتاپ کاربرد دارد، فروشگاه مورد علاقه سایر فروشندگان مرورگر را برانگیخته است، و به طور کلی بخشی از گرایش به سمت کاتالوگ برنامه های وب، از جمله برخی تلاش های خاص برای موبایل است. . برای مفهوم فروشگاه اینترنتی روزهای اولیه است، اما نشانه‌ها امیدوارکننده هستند.

نتیجه گیری

خوب است که در اینجا یک برنده اعلام شود، اما در حال حاضر، برنده مشخصی وجود ندارد. برخی از برنامه ها برای بومی و برخی دیگر برای وب مناسب هستند. احتمالاً پشته وب شتاب بیشتری دارد، اما از نظر قابلیت‌ها و کیفیت اجرا، برنامه‌های بومی نیز سریع حرکت می‌کنند. و اگر زمانی فرا نرسد که فناوری‌های وب در اکثر سیستم‌عامل‌های تلفن همراه شهروند درجه یک باشند، بومی همیشه مورد توجه قرار خواهد گرفت.

یکی از تکنیک‌های ذکر شده در این مقاله، برنامه‌های ترکیبی است، و این ممکن است بهترین سازش برای برخی از توسعه‌دهندگان باشد: نمایش وب در جایی که امکان‌پذیر است و اجزای داخلی خاص پلتفرم در جایی که چنین نیست.

اگر مسیر وب را انتخاب می کنید، به استانداردهای وب و اصل ارتقاء تدریجی توجه داشته باشید. وب فناوری است که می داند چگونه تعداد زیادی از دستگاه ها و سیستم عامل های اطراف را هدف قرار دهد. چه بخواهید آن را "تجزیه" یا "تنوع" بنامید، وب آن را پذیرفته است و شما توسعه دهندگان می توانید از تمام هنرهای قبلی در آنجا بهره مند شوید.