لطفا جاواسکریپت مرورگر خود را فعال سازید!

نحوه فعال سازی در کروم
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
نحوه فعال سازی در فایرفاکس
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
rajai

آیا در عمل کد Native در اندروید (با توجه به استفاده از JVM) وجود دارد؟

rajai ۱۳۹۶/۰۵/۲۸ 94 برنامه‌نویسی اندروید

سلام اینجور که من فهمیدم برنامه های نوشته شده به زبان جاوا برای اندروید با استفاده از JVM با کرنل سیستم عامل اندروید (لینوکس) دارن ارتباط برقرار میکنن. یعنی یک واسط بین کرنل و کد برنامه هست و همچنین کدها هم به یک زبان میانی کامپایل میشن. با این تفاصیل میشه ادعا کرد که کد نیتیو برای اندروید در عمل وجود نداره؟
پاسخ‌ها به این تاپیک
محمدعلی بحرینی
محمدعلی بحرینی
۱۳۹۶/۰۵/۲۹
سلام خدمت شما کاربر گرامی.
اجازه بدید اول چند تا تعریف کنیم :
برنامه هایی که با جاوا نوشته میشن و به Bytecode (کد میانی) تبدیل میشن، با استفاده ابزاری به اسم JVM یا همون Java Virtual Machine اجرا میشن.

توی اندروید چند مرحله بیشتر داریم:

برنامه ها به زبان جاوا نوشته میشن، بعد تبدیل به Bytecode میشن و بعد با استفاده از ابزاری به نام DVM یا Dalvik Virtual Machine تبدیل به Dalvik bytecode میشن و در مرحله بعد با فرمت های dex یا Dalvik EXecutable و odex یا Optimized Dalvik EXecutable ذخیره میشن.

خلاصه :
ابتدا کد های JVM bytecode توی جاوا تولید میشن و کد های DVM bytecode توی مرحله بعد تولید میشن.
پس یه جورایی Dalvik جایگزینی برای JVM در اندروید هست.

پس بنابراین توی اندروید اصلا JVM وجود نداره، یا دقیقتر اینکه جایگزینی براش وجود داره.

البته از نسخه 4.4 اندروید از یک ابزار دیگه به نام ART یا Android Runtime استفاده میشه.

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

مثلا اگر شما با زبان Angular JS یک اپلیکیشن بسازید، خب چون با استفاده از HTML و JavaScript دارید کد میزنید، این وسط تبدیل هایی از یک زبان به زبان دیگر انجام میشه که در اون صورت میشه گفت Native نیست.
rajai
rajai
۱۳۹۶/۰۵/۳۱
با تشکر از پاسخ شما...

من طی این مدت تحقیق کردم متوجه شدم اندروید از Jvm استفاده نمیکنه بلکه طبق گفته شما به جاش از دالویک و ART استفاده نمیکنه
ولی در اصل چیزی فرق نکرده.کد dex تولید شده توسط یک ماشین (ART) هندل میشه این طبق تعاریف مهندسی نرم افزار یعنی کد مدیریت شده (managed code) که در تقابل کامل با کد native هست
در ثانی خود گوگل هم یک بسته به نام NDK منتشر کرده که با استفاده از Cpp مستقیم و به صورت native میتونی app اندروید بنویسی

بازم ممنون

در پاسخ به

محمدعلی بحرینی
محمدعلی بحرینی
۱۳۹۶/۰۵/۳۱
سلام دوباره خدمت شما.

بسیار عالی، متشکرم از اینکه این اطلاعات رو با ما هم به اشتراک گذاشتید.

خواهش میکنم اگر بازم هم موردی بود، توی تالار گفتگو مطرح کنید.

موفق و پیروز باشید

در پاسخ به