۱۳۸۸ بهمن ۲۵, یکشنبه

From MAC OS X 10.5 to iPad to Prohibition

از زمانی که خبر تولید iPad پخش شد ما هم کنجکاو شدیم ببینیم اصلا این پلتفرم های Apple چگونه اند! آیا واقعا همانند Unix هستند یا خیر!؟

برای شروع برنامه سازی برای iPad خواستیم برای iPhone برنامه بسازیم و مطلع شدیم که بهترین زبان در این مورد زبان Objective-C می باشد که بسیار هم زبان چموشی به نظر می رسد. من به شخصه این زبان را نمی پسندم و احساس می کنم که به زور خواستند یک سری Extension را به خورد C/C++ بدهند.

چند وقتی است که Novell یک محصول به نام MonoTouch را معرفی کرده. با استفاده از آن می توان برنامه هایی Native برای iPhone نوشت، اما، به زبان C# و با استفاده از امکانات محدودتر شده از کتابخانه .Net به اضافه امکان استفاده از تمامی API های iPhone و از همه مهمتر با حظور Garbage Collector! البته این محصول مجانی نیست. مهمترین نکته در مورد آن این است که برنامه تولید شده توسط این ابزار Native است و بدون نیاز به نصب هیچ افزونه ای اجرا می شود. و با توجه به اینکه حتی خود Apple هم امکان GC را برای iPhone قرار نداده، وجود GC در این ابزار بسیار قابل توجه است. شاید تنها نقطه ضعف آن این است که حجم یک برنامه Hello Word که به وسیله MonoTouch ایجاد شده حدود 4MB خواهد بود. که این موضوع هم به دلایل بسیاری می تواند قابل چشم پوشی باشد (البته بسته به کاربرد).

وقتی فهمیدیم که MonoTouch به خوبی iPad را هم پشتیبانی می کند دیگر قانع شدیم که کلید برنامه نویسی راحت و تمیز برای iPad در دست MonoTouch است. برای آزمایش MonoTouch نسخه ی Trial آن وجود دارد. اما نصب و راه اندازی آن، کم پیش نیاز ندارد!

پیش نیاز ها به ترتیب عبارتند از:

  • سیستم عامل MAC OS X
  • iPhone SDK
  • Mono Framework
  • MonoDevelop

نصب MAC OS X بر وری VMWare خودش داستانی است که شاید یک پست دیگر می طلبد، خود ما هم از اینجا کمک گرفتیم. بارها صفحه بالا آمدن MAC با آن سیب گاز زده را دیدیم ولی حتی محیط نصب هم بالا نیامد!

اما در آخر موفق شدیم.

در مورد iPhone SDK ظاهرا Apple هم در مورد ایران حساس است و نمی گذارد iPhone SDK را دانلود کنیم. به هر حال Torrent آنرا پیدا کرده و به همراه بقیه پیش نیاز ها نصب کردیم.

MonoDevelop به خوبی کار کرد و برنامه نوسی به زبان C# بر روی MAC OS امکانپذیر شد اما فقط برای برنامه های غیر iPhone ی. امکان ایجاد یک پروژه iPhone ی وجود داشت ولی هنگامی که می خواستیم فایل UI این پروژه را ویرایش کنیم به مشکل بر خوردیم.

Interface Builder نتوانست فایل xip (که در ایجاد UI کاربرد دارد) را باز کند و مشکل از نا هماهنگی نسخه ی iPhone SDK بود. ای کاش تحریم نبودیم و مجبور نبودیم یک فایل 2GB ی را دانلود کنیم و دست آخر متوجه شویم که اشتباه دانلود کردیم و ای کاش می شد هر چیزی را از مرجع آن دریافت کرد.

واقعا متاسفام که این تحریم به راحتی اثرات مشهودی بر کار ما می گذارد. خدا میداند! شاید همین تحریم باعث شد، چیزی شبیه iPad ساختیم و سپس SDK ی آنرا تولید کرده و بعد یک برنامه ساختیم مانند MonoTouch که بایت کد های CLI را به ساختار Native قابل اجرا برای آن دستگاه تبدیل کند! یا حتی از اول دستگاهی ساختیم که قابلیت اجرای بایت کد های CLI را داشته باشد. یا اصلا چرا این کارها! شاید اصلا خودمان Byte Code خودمان را تولید کردیم از نوع ملی و محلی و …!

پی نوشت 1: این شرکت هایی که نمی گذارند ایران از آنها سرویس بگیرد معمولا گناهی ندارند و فقط قانون را اجرا می کنند.
پی نوشت 2: خوشبختانه C# و CLI هر دو استاندارد هستند و ما می توانیم از آنها استفاده کنیم و یا (اگر بتوانیم) پیاده سازی خودمان را داشته باشیم؛ بدون هیچ محدودیتی.
پی نوشت 3: این پست شامل چند ScreenShot از MAC OS X و MonoDevelop اجرا شده تحت آن بود اما متاسفانه (احتمالا باز هم بخاطر تحریم) پست با تصویر را نمی توان به راحتی از طریق نرم افزار Windows Live Writer ارسال کرد. البته پی گیری این امر از حوصله و وقت ما خارج بود.