نمایش نتایج 1 تا 5 از 5

نام تاپیک: ساختار سیستم عامل اندروید

  1. #1
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    شهریور 1389
    پست
    7

    Question ساختار سیستم عامل اندروید

    با سلام..
    من یه سوال دارم در مورد ساختار اجرای برنامه ها در سیستم عامل اندروید.
    و سوال من اینه که ساختار و نحوه اجرای اپلیکیشن ها در سیستم عامل اندروید به چه صورت هستش...
    خب همه ما میدونیم اولین زبان برنامه نویسی اندروید زبان برنامه نویسی جاوا میباشد و برنامه های نوشته شده با جاوا برای اندروید به کد قابل فهم dex. برای ماشین های مجازی dalvik و یا ART تبدیل گشته و این ماشین های مجازی این کد رو به زبان ماشین برای سیستم عامل اندروید تبدیل میکنند.. همانند ساختار bytecode و ماشین مجازی JVM..
    خب تا اینجای کار که ما با زبان جاوا و کیت توسعه اندروید SDK سر و کار داشتیم مشکلی در ساختار اجرای اپلیکیشن ها نبود...
    اما زمانی که ما میخواهیم از زبان c/++c و NDK استفاده کنیم و به اصطلاح برنامه native بسازیم آیا باز هم خروجی که ما از طریق کد نویسی به زبان c/++c میگیریم تبدیل به کد های جاوا گشته و یک فایل اجرایی dex. میباشد برای اجرا در ماشین های مجازی Dalvik و یا ART و یا مستقل از ماشین مجازی Dalvik و یا ART اجرا گشته؟؟؟؟ چون ما میدونیم که برای ماشین مجازی Dalvik و یا ART فقط کد های جاوا قابل فهم میباشد...
    به طور کلی منظور سوالم اینه که آیا برنامه هایی که با زبان c/++c و تحت NDK نوشته میشوند هم در نهایت تبدیل به کد جاوا شده و در ماشین مجازی اندروید (Dalvik و یا ART) اجرا شده و یا مستقیم و بی نیاز از ماشین مجازی اندروید اجرا میشوند...
    و اگر در پاسخ بالا اینگونه باشد که برنامه ها در نهایت به کد جاوا تبدیل شده و تحت ماشین مجازی اجرا شده پس دلیل اینکه به زبان جاوا در اندروید native گفته نمیشود ولی به زبان های c/++c زبان های native در اندروید گفته میشود چیست؟؟؟
    خیلی خیلی ممنون میشم اگه کسی این موارد رو میدونه به طور دقیق بیان کنه...
    با سپاس.

  2. #2
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: ساختار سیستم عامل اندروید

    JNI یا Java Native Interface قابلیتی هست که به برنامه های جاوا که درون JVM اجرا میشن اجازه میده که با برنامه ها و کتابخانه های Native سیستم عاملی که JVM در اون اجرا میشه ارتباط داشته باشن.

    در مورد اندروید، سیستم عامل پایه لینوکس هست و کدهایی که تحت NDK و به زبان ++C/C نوشته میشن، نهایتن به فایل های so تبدیل میشن که میشه گفت معادل DLL در ویندوز هستن. این کتابخانه ها به زبان ماشین کامپایل میشن و به این معنا، برنامه های Native سیستم عامل لینوکس هستن.

    توسط JNI امکان ارتباط بین کدهای جاوا و این کتابخانه ها برای شما فراهم میشه، پس کدهایی که تحت NDK نوشته و کامپایل میشن، نه به جاوا تبدیل میشن و نه در JVM اجرا میشن. بلکه JVM اون کتابخانه ها رو در یک پروسه در سیستم عامل زیرین (که اینجا لینوکس هست) لود می کنه و نهایتاُ کدهای جاوا امکان دسترسی به توابع موجود در اون کتابخانه رو دارن.

    چون این کدها به زیان ماشین کامپایل میشن پرفرمنس بالاتری نسبت به کدهای جاوا میتونن داشته باشن، اما استفاده از JNI هم Overhead هایی داره.

  3. #3
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    شهریور 1389
    پست
    7

    نقل قول: ساختار سیستم عامل اندروید

    با تشکر از پاسخگویی خوبتون..
    پس در نتیجه از پاسخ شما اینطور باید برداشت کنم که برنامه هایی که برای سیستم عامل اندروید تحت زبان های c/++c نوشته میشوند و با NDK کامپایل میشوند، در سیستم عامل اندروید خارج از چارچوب ماشین مجازی Dalvik و یا ART اجرا شده و در واقع هیچ وابستگی به ماشین های مجازی اندروید ندارند و این نوع برنامه ها مستقل از ماشین مجازی اندروید (Dalvik و یا ART) اجرا میشوند... درست متوجه شدم؟؟
    و سوال بعدیم اینه که برنامه هایی که با زبان های C#‎ در زامارین و یا دلفی در پلتفرم فایرمانکی برای اندروید نوشته میشوند به چه صورت میباشند...آیا اونها به کد جاوا در نهایت تبدیل شده برای قابلیت اجرا در ماشین مجازی Dalvik و یا ART و یا مشابه برنامه های نوشته شده به زبان c/++c برای سیستم عامل اندروید مستقل از ماشین مجازی اندروید (Dalvik و یا ART) اجرا میشوند و در واقع مستقل از ماشین مجازی اندروید اجرا میشوند...
    و در نهایت آیا ماشین مجازی سیستم عامل اندروید (Dalvik و ART) تنها فقط قابلیت کامپایل و اجرای کد های نوشته شده به زبان جاوا را دارند؟؟
    و اگر چنین است برنامه های نوشته شده به زبان های دیگر برای سیستم عامل اندروید نظیر زبان های c/C++‎ و C#‎ و Delphi و Basic و Python که همگی این زبانها قابلیت ساخت اپلیکیشن برای سیستم عامل اندروید را دارند به چه صورت در سیتم عامل اندروید کامپایل و اجرا میشوند؟؟
    چون ماشین مجازی اندروید (Dalvik و یا ART) تنها قابلیت خواندن..کامپایل و اجرای کدهای نوشته شده به زبان جاوا را دارا میباشد..
    ببخشید بابت طولانی شدن سوالاتم...
    ولی خیلی مایلم بدونم ساختار سیستم عامل اندروید به چه صورت است..
    باز هم یه دنیا سپاس.

  4. #4
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: ساختار سیستم عامل اندروید

    سیستم عامل اندروید بر پایه لینوکس هست، پس هر برنامه ای که روی لینوکس اجرا میشه، رو میشه به اندروید هم پورت کرد. مثلاً میشه برنامه ی awk رو کپی کرد تو فولدر مخصوصش و ازش استفاده کرد.

    اما وقتی بخوایم عناصر گرافیکی رو نمایش بدیم، به چیزی بنام Window Manager نیاز داریم. درک من از سیستم عامل اندروید این هست تمام عملیات اجرای اپلیکیشن ها و نمایش عناصر گرافیکی در لایه ای انجام میشه که مسئولش VM هست.
    با توجه به این تصور من این هست که تمام برنامه های قابل اجرا روی اندروید، باید به فرمتی باشند که VM بپذیره، یعنی یا کاملاً به جاوا تبدیل بشن (مثل B4A) و یا اینکه بخش هایی از کد رو به جاوا تبدیل کنن و بخش های دیگری رو به کتابخانه ی لینوکس کامپایل کنن و با JNI باهاش ارتباط برقرار کنن.

    پس در نتیجه از پاسخ شما اینطور باید برداشت کنم که برنامه هایی که برای سیستم عامل اندروید تحت زبان های c/++c نوشته میشوند و با NDK کامپایل میشوند، در سیستم عامل اندروید خارج از چارچوب ماشین مجازی Dalvik و یا ART اجرا شده و در واقع هیچ وابستگی به ماشین های مجازی اندروید ندارند و این نوع برنامه ها مستقل از ماشین مجازی اندروید (Dalvik و یا ART) اجرا میشوند... درست متوجه شدم؟؟
    درسته که ما میتونیم فایل های اجرایی لینوکس رو به سیستم اضافه کنیم و ازشون استفاده کنیم، اما این برنامه ها تنها در حالت Command Line میشه باهاشون ارتباط داشت، وقتی قرار باشه GUI داشته باشیم، باید از قوائد و قوانین مشخصی که اندروید تبیین کرده استفاده کنیم. یعنی وقتی ما تحت NDK کدی رو می نویسیم، درسته که اون کدها به زبان ماشین کامپایل میشن و مثل کدها جاوا توسط VM ترجمه نمیشن، اما معنیش این نیست که صرفاً به زبان C و با کمک NDK و میتونیم برنامه ی کاملی بسازیم. این کدها به کتابخانه هایی کامپایل میشن که جاوی توابعی هستن که میتونیم از جاوا صداشون بزنیم. پس برای اجرای اپلیکیشن ها در اندروید حتماً باید قسمتی از کدها به زبان جاوا باشه.

    و سوال بعدیم اینه که برنامه هایی که با زبان های C#‎‎ در زامارین و یا دلفی در پلتفرم فایرمانکی برای اندروید نوشته میشوند به چه صورت میباشند...آیا اونها به کد جاوا در نهایت تبدیل شده برای قابلیت اجرا در ماشین مجازی Dalvik و یا ART و یا مشابه برنامه های نوشته شده به زبان c/++c برای سیستم عامل اندروید مستقل از ماشین مجازی اندروید (Dalvik و یا ART) اجرا میشوند و در واقع مستقل از ماشین مجازی اندروید اجرا میشوند...
    و در نهایت آیا ماشین مجازی سیستم عامل اندروید (Dalvik و ART) تنها فقط قابلیت کامپایل و اجرای کد های نوشته شده به زبان جاوا را دارند؟؟
    و اگر چنین است برنامه های نوشته شده به زبان های دیگر برای سیستم عامل اندروید نظیر زبان های c/C++‎‎ و C#‎‎ و Delphi و Basic و Python که همگی این زبانها قابلیت ساخت اپلیکیشن برای سیستم عامل اندروید را دارند به چه صورت در سیتم عامل اندروید کامپایل و اجرا میشوند؟؟
    همونطور که اشاره کردم، وقتی میگیم کدهای C که با کمک NDK کامپایل میشن، مجزا از VM هستن، منظور این هست که از قبل به زبان ماشین تبدیل شدن و قابل اجرا بر روی لینوکس هستن، که چون مثل کدهای جاوا نیاز به ترجمه توسط VM ندارن، Performance بالاتری دارن. اما اصلاً معنیش این نیست که کل اپلیکیشن ما، خارج از VM درحال اجراست. نه، برنامه ی ما هنوز هم به زبان جاواست و در VM اجرا میشه، اما بخش هایی از کد رو به کتابخانه هایی منتقل کردیم که VM باهاشون ارتباط برقرار می کنه.

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

  5. #5
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    شهریور 1389
    پست
    7

    نقل قول: ساختار سیستم عامل اندروید

    درود..
    با سپاس فراوان از شما بابت توضیحات خوب و دقیقتان.
    من هم در پی سوالی که مطرح کردم خودم هم تحقیقاتی کردم و از منابع مرجع به نتایج خوبی در خصوص پرسشم رسیدم که در اینجا لینکش رو قرار میدم تا اگه دوستانی هم مانند من این سوالات در ذهنشان هست علاوه بر مطالب مفیدی که شما قید کردید، مطالب این لینکی که میفرستم رو هم مطالعه کنند و با ساختار سیستم عامل اندروید به طور کامل آشنا بشوند.
    با سپاس.
    http://tahins.blogspot.co.uk/2012/04...s-android.html

تاپیک های مشابه

  1. سوال: قابلیت اجرای پایتون روی سیستم عامل آندروید
    نوشته شده توسط python_85 در بخش دیگر زبان های اسکریپتی
    پاسخ: 5
    آخرین پست: جمعه 20 مرداد 1391, 15:59 عصر
  2. ساختار سیستم عامل ویندوز
    نوشته شده توسط HadiDelphi در بخش توسعه‌ی هسته‌ی سیستم عامل
    پاسخ: 7
    آخرین پست: شنبه 27 اسفند 1390, 08:33 صبح
  3. جاوای موبایل و سیستم عامل آندروید
    نوشته شده توسط poonoon در بخش Java ME : نگارش میکرو جاوا
    پاسخ: 1
    آخرین پست: جمعه 08 بهمن 1389, 20:41 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •