آموزش برنامه نویسی آندروید به زبان فارسی-فصل دوم
بسم الله الرحمن الرحیم
فصل دوم دوره آموزشی Android
آموزش برنامه نویسی آندروید به زبان فارسی
Android
در چند سال گذشته رشد شگفت انگیز در استفاده از گوشی های هوشمند (smartphones) قابل مشاهده است. ایالات متحده آمریکا اخیرا در مورد نحوه تبدیل شدن تلفن های هوشمند به عنوان بخشی از زندگی مردم گزارشی را ارائه کرده است. با رشد و عمومی شدن رقابت نیز به وجود می آید و برخلاف کامپیوترهای معمولی، هنوز هیچ طیف و پلتفرم خاصی در حیطه موبایل نتونسته همه بازار موبایل را از لحاظ نرم افزار قبضه کنه بخاطر همین موضوع انواع مختلف اعم از سیمبین و اندروید و ویندوز موبایل وجود دارد.
علاوه بر این ممکن است، موبایل ها توسط یک سیستم عامل یکسان اجرا شوند و به کاربران در فاکتورهای متفاوتی نمایش داده شوند. این تغییرات در فروشگاه های موبایل مشکلی برای توسعه دهندگان می شود: توسعه دهندگان چطور می توانند یک framework توسعه یا یک ابزار که از قبل آن را می شناسند و از علم مربوط به آن در یک دستگاه که مقدار زیادی از سهم فروش بازار را در اختیار دارد و در حال رشد است، ایجاد کنند.
NET Framework.
در ده گذشته، محبوبیت NET Framework. افزایش یافته است. در اواخر 1990 مایکروسافت کار خود را بر روی .NET Framework آغاز کرد. اولین نسخه Framework NET . در سال 2002 معرفی شد. مدتی پیش NET Framework 4. نیز معرفی شد. NET Framework 4. در نسخه های مختلفی ارائه شده است شامل نسخه 32-bit, 64-bit و نسخه ای Xbox gaming platform و نسخه ای برای دستگاه های موبایل مایکروسافت که به نام Compact Framework (CF) شناخته می شوند.
در اینجا چند مورد از واقعیت های NET Framework. را بررسی می کنیم و این موارد را بخاطر بسپارید تا زمانی که به Mono framework می پردازیم در مورد آن صحبت کنیم.
مایکروسافت ابزار توسعه خود را با NET Framework. با نام Visual Studio منتشر کرد. این ابزار محیط توسعه برای NET. یکپارچه شده است.
این framework بر اساس یک virtual machine است که نرم افزار های نوشته شده برای این framework را اجرا می کند. محیط این virtual machine (ماشین مجازی) Common Language Runtime (CLR) نامیده می شود و این محیط مسئول امنیت، مدیریت حافظه، اجرا کردن برنامه و مدیریت استثناها می باشد.
برنامه های نوشته شده با NET Framework. شبیه Visual Basic یا C# در ابتدا از source code به یک زبان میانی (intermediate language) که MSIL نامیده می شوند، کامپایل می شوند. کامپایل ابتدایی به وسیله فراخوانی خط فرمان کامپایلر در یک زبان مشخص، مانند Visual Studio و یا هر ابزار build مشابه دیگر انجام می شود. کامپایل دوم معمولا هنگامی که برنامه اجرا می شود، صورت می گیرد. کامپایل دوم زبان میانی (intermediate language) را ایجاد می کند و کدهایی که توسط سیستم عامل می توانند اجرا شوند را کامپایل می کند. کامپایل دوم را کامپایل just-in-time (JIT) می نامند.
این framework مستقل از زبان است و زبان های متعددی برای آن وجود دارد. در Visual Studio مایکروسافت زبانهای زیادی را ارائه کرده است، شامل: Visual Basic, F#, C++, و C# .
این framework دارای یک مجموعه از کتابخانه هایی است که شامل قابلیت هایی برای زبان های مختلف است. این کتابخانه ها، کتابخانه های کلاس پایه (base class libraries) نامیده می شوند.
مایکروسافت بخش های مختلف NET Framework. را به سازمانهای مختلف استاندارد ارسال کرده است، مثلا برای زبان سی شارپی که ما با آن کار می کنیم، می توان بخش های زیر را نام برد:
- Common Language Infrastructure
- Common Type System (CTS)
- Common Language Specification (CLS)
- Virtual Execution System (VES)
این framework بیشترین تعداد توسعه دهنده را نسبت به تمامی development framework های دیگر (چهار چوب های توسعه) دارد. درنتیجه، بیشترتوسعه دهندگان با NET Framework. بیشتر از سایر development framework آشنا هستند.
یک عیب NET Framework. این است که برای سایر platformهایی که متعلق به مایکروسافت نیستند، قابل دسترسی نیست.
مهمترین مورد این است که مایکروسافت برای NET Framework. یک محیط با استانداردی پایه ایجاد کرده است. هر چند بیشتر توسعه دهندگانی که بر روی platform مایکروسافت کار می کنند نگرانی در مورد تطابق استانداردهای NET Framework. ندارند و اهمیت این جنبه از NET Framework. را نمی توانند درک کنند. به وسیله تعریف این استاندارد ها و ارسال آنها به کمیته های تطابق، مایکروسافت یک گروه از توسعه دهنده گانی که می توانند در سطوح نسبتا پایین درون NET Framework. ادغام شوند، ایجاد کرده است. در این محیط، Miguel de Icaza یک چشم انداز و افزایش ایجاد Mono framework دارد.
در این محیط (هاگیر واگیر) گروه تولید کننده مونو تصمیم گرفت که به عنوان مرجع عمل کرده و فریم ورک منو که در ادامه مورد بحث قرار می گیرد را تولید کند.
Mono
Mono یک پروژه open source است که یک کامپایلر سی شارپ و یک CLR را بر روی سیستم عامل های غیر ویندوزی فراهم می کند. Mono در حال حاضر دارای لایسنس های زیر است:
- GPL version 2
- LGPL version 2
- MIT
- dual licenses
Mono می تواند بر روی Mac, Linux, BSD و سایر سیستم های عامل اجرا شود. همراه با کامپایلر C# زبان های دیگری در Mono شامل F#, Java, Scala, Basic و... اجرا می شوند.
Mono که زاییده فکر Miguel de Icaza است در سال 2001 رسما معرفی شد. نسخه 1.0 در سال 2004 روانه بازار شد،در حال حاضر Mono در نسخه 2.0 است. اما Mono هر روز در حال رشد و بروز رسانی است و طبیعتا وقتی شما این مقاله را می خوانید نسخه های جدید تر ارائه شده است.
در حال حاضر، Mono با بسیاری از ویژگی های NET 4. هماهنگی دارد. Mono همچنان توسط Miguel de Icaza مدیریت می شود. به تازگی نظارت بر روی Mono به Xamarin سپرده شده است و Xamarinجهت حرکت Mono را تعیین می کند.
Mono به عنوان یک پیاده سازی open source از روی کامپایلر C# آغاز شد. این ایده از طرح اولیه ساده به پیاده سازی open source (متن باز) از نسخه NET. جاری رشد کرد. در حال حاضر پرورش و رشد Mono مسئولیت Xamarin است. Xamarin مسئول توسعه Mono برای Android، MonoTouch و نرم افزاری که این محصولات را ایجاد می کند، می باشد Given that Xamarin is laser-focused on Mono in the mobile area, I think these products are in good hands
NET Framewrok.
هرچند که تمایل برای تطابق ویژگی های NET Framework. وجود دارد، اما این امکان پذیر نیست زیرا مایکروسافت منابع بیشتری دارد و کار خود در توسعه این ویژگی ها بسیار زودتر آغاز کرده است. در همان زمان، پروژه Mono طیف عظیمی از هماهنگی ها را با ویژگی های NET Framework. داشت. از این بهتر آنکه Xamarin به احتمال زیاد، به زودی در مدت کوتاهی در NET Framework. برای بسیاری از API هایی که امکان دارد با آن ترکیب می شود.
همراه با Mono یک IDE متن باز با نام MonoDevelop وجود دارد که به عنوان یک نقطه آغاز از IDE، SharpDevelop می باشد. MonoDevelop به عنوان یک پروژه برای توسعه Mono بر روی Linux آغاز شد، اما با انتشار نسخه MonoDevelop 2.2، توانایی توسعه Mono بر روی Mac، Windows و چندین پلتفرم non-Linux UNIX دیگر نیز اضافه شد.
هرچند NET Framework. خیلی محبوب است، اما با وجود دو مشکل باعث می شود NET Framework. برای اجرا بر روی Android مناسب نباشد:
Google Android و Microsoft
در برخی سطوح Google و Microsoftبا یکدیگر رقیب هستند و احتمالا تمایلی به همکاری با یکدیگر ندارند. مایکروسافت برای سال ها دستگاه های Windows Mobile را داشت که یک رقیب مستقیم برای سیستم عامل Android گوگل بود.
NET Framework. در اصل یک رقیب برای Java Virtual Machine است که VM در قلب دستکاه های Android قرار داده شده است.
درکل این دو رقیب باید یا باید شریک شوند یا به رقابت خود ادامه دهند و جالبتر اینجا است که جدیدا مایکروسافت با ارائه MVC 6 که vNext نام دارد در حال پشتیبانی از بخش های Android است و حتی مایکروسافت در حال ساخت آموزش هایی برای Android و توسعه آن در Visual Studio است. یاد بگیریم بعضی وقتها باید با رقیبمان شریک شویم تا بزرگتر شویم. با عرض
یک نقطعه ضعف NET/Mono. و Android این است که توسعه دهندگان NET/Mono. نمی توانند دانش #NET/Mono/C. ایجاد و آن را در Android platform تایید کنند. تصویر زیر این مفهوم را نمایش می دهد.
توسعه دهندگان NET/Mono. نمی توانند Android را هدف قرار دهند1 زیرا آنها دو موجودیت متفاوت هستند.
در سال 2009 تیم Mono معرفی شد و MonoTouch روانه بازار شد، که پیشرو در Mono for Android (این نام محصول است) است.
MonoTouch به توسعه دهندگان آشنا به C# اجازه می دهد تا با Apple iPhone نیز کار کنند. بر اساس تجربه ساخت MonoTouch، تیم Mono یاد گرفت چطور به صورت موثر و کارآمد یگ لایه C#/Mono را بر روی بالاترین لایه داخلی APIدستگاه ها قرار دهد. API : application programming interface
Mono for Android
در April 2010 شرکت Apple ترس و عدم اطمینان و شک به بازار توسعه موبایل را با ایجاد تغییر و صدور مجوز SDK (software development kit) اعلام کرد.
این تغییر موجب مطرح شدن سوالی برای ادامه توسعه دادن برای iPhone و iOS در ذهن بسیاری از توسعه دهندگان شد. در همان روزها، تیم Mono با ایجاد یک محصول Mono برای Android ( شبیه محصول MonoTouch خود) آزمایش شده بود.
به علت تغییرات SDK Apple، تیم Mono محصول Mono for Android را اعلام کرد و منابع قابل توجه ای را برای حمایت آن قرار داد. محصول Mono for Android در بهار 2011 به بازار معرفی شد.
هنگامی که Apple در حال حل کردن مشکلات SDK خود بود، 5 ماه طول کشید تا MonoTouch در حالت بلاتکلیفی اجازه پیدا کرد تیم Mono را با منابع قابل توجهی را برای توسعه دادن، درون Mono for Android قرار دهد.
اگر این چندین ماه در سال 2010 توسط Apple معطل نمی شدند نتیجه این کار باعث می شد که Mono for Android پیشرفته تر شود و این تاخیر را نمی خواست تحمل کند.
Mono for Android به توسعه دهندگان NET. اجازه می دهد برنامه هایی که به صورت محلی بر روی Android قابل اجرا ایجاد کنند. این برنامه ها شبیه برنامه های Java ایی هستند که بر روی Dalvik اجرا می شوند
ماشین مجازی Dalvik چیست
نرم افزار Dalvik یک ماشین پردازش مجازی در سیستم عامل اندروید می باشد. نرم افزاری است که برنامه های اندروید را روی گوشی اندرویدی اجرا می کند. Dalvik یک بخش جدای ناپذیر از اندروید است که معمولا در گوشی های موبایل یا تبلت ها مورد استفاده قرار می گیرد. برنامه ها معمولا به صورت جاوا نوشته می شوند و به بایت کد کامپایل می شوند. سپس آن ها از فایل های .class سازگار با ماشین مجازی جاوا به فایل های .dex سازگار با dalvik قبل از نصب روی گوشی تبدیل می شوند.
فرمت قابل اجرای dalvik طراحی شده است تا برای سیستم هایی که محدودیت پردازش و رم دارند، مناسب باشند.
dalvik یک نرم افزار متن باز می باشد. این برنامه توسط Dan Bornstein نوشته شده است. او این نام را از یک روستای ماهیگیری با همین نام در ایسلند گرفته است.
Mono for Android
با Mono for Android برنامه ها به کدهای قابل اجرا کامپایل شده و بر روی دستگاه های Android اجرا می شوند. اهمیت این موضوع درک نمی شود:
توسعه دهندگان NET/Mono. می توانند مانند تصویر نمایش داده شده به Android از طریق Mono for Android دست پیدا کنند.
چطور این کار توسط Mono for Android انجام گرفت؟
آیا اجازه می دهد به نحوی برنامه های Windows Forms ترجمه شوند و دوباره کامپایل شوند تا بتوانند بر روی Android اجرا شوند؟
Mono for Android یک لایه NET. بر روی لایه برنامه نویسی داخلی حاضر در سیستم عامل Android فراهم می کند.
توسعه دهندگان مورد نظر برای Dalvik باید برنامه خود را در Java بنویسند.
Mono for Android یک مکانیزم برای cross-compile شدن برنامه های Windows Forms فراهم نمی کند، اما این تکنولوژی به توسعه دهنده گان اجازه می دهد تا برنامه خود را به صورت Native بر روی Android اجرا کنند.
به طور کلی، API های معرفی شده به وسیله Mono for Android یک ترکیب از ویژگی های هسته NET. Framework 4، Silverlight APIs و در نهایت native Dalvik Java VMاست.
Mono for Android یک لایه ارتباطی (interop) بین Android’s native APIs و API هایی که توسعه دهندگان NET. و C# با آن در حال کار کردن هستند فراهم می کند.
نظرات (۱)
با عرض سلام
ممنون از لطف شما، انشالله مطالب کد نویسی را که آغاز کنیم کار بسیار جالب تر خواهد شد.
یاعلی