دالویک (نرم‌افزار)

**دالویک** پردازشگر ماشین مجازی است که در محصول معروف گوگل، سیستم‌عامل اندروید مورد استفاده قرار می‌گرفت (از اندروید ۵ به بعد ART جایگزین دالویک شد). دالویک بخش داخلی اندروید است که به صورت معمول در دستگاه‌های همراه مانند تلفن همراه، تبلت‌ها (رایانه‌های لوحی) و نت بوک‌ها مورد استفاده قرار می‌گیرد. برنامه‌های اندروید به فرمت قابل اجرای dex. تبدیل می‌شود. این روش برای سیستم‌هایی مناسب است که از نظر فضای حافظه رم و سرعت پردازنده مرکزی دچار محدودیت هستند.

دالویک، مانند باقی سامانهٔ اندروید تا نگارش ۲٫۳ متن باز است. این برنامه توسط دان بورنستین نوشته‌شد، که به خاطر ماهیگری در روستایی در ایسلند به همین نام و به یاد این روستا که زمانی اعقابش در این روستا بوده‌اند؛ به نام دالویک نامگذاری نمود.

## معماری
بندانگشتی|چپ|Architecture Diagram
برخلاف ماشین‌های مجازی جاوا، که ماشین‌های پشته‌ایی هستند، دالویک ماشینی مبتنی بر معماری رجیستری است. البته دربارهٔ برتری ماشین‌های مبتنی بر رجیستری نسبت به ماشنی پشته‌ایی مسئله‌ای در حال بحث است. عموم ماشین‌های مجازی پشته‌ایی باید از دستورات برای بارگذاری داده‌های در پشته و اعمال تغییرات بر روی آن‌ها استفاده نماید؛ بنابراین نسبت به ماشین‌های مبتنی بر رجیستر به دستورات بیشتری برای کد سطح بالا نیاز دارد؛ ولی دستورات در ماشین رجیستری باید به صورت مبدأ و مقصد باشد که منجر به بزرگ شدن دستورات خواهد شد. این تفاوت پایه‌ایی در ترجمه در زمان بسیار مهم‌است و تعیین‌کننده.

ابزاری که با نام **dx**، برای تبدیل بخشی از کد جاوا (نه تمام آن) که به صورت .class است به گونهٔ dex. به کار می‌رود. چندین فایل کلاس می‌تواند به درون یک فایل dex. قرار گیرد. رشته‌هایی که چندین بار در کلاس‌های استفاده‌شدن‌اند تنها یکبار در dex. خروجی ظاهر می‌شود. بایت کد جاوا به شکلی از محموعه دستورات جایگزین که توسط ماشین مجازی دالویک قابل قبول است، تبدیل می‌شود. یک فایل غیر فشردهٔ dex. معمولاً چند درصد کوچکتر از فایل jar. معادل است.

## کتابخانه
دالویک نه کاملاً منطبق با J2ME است و نه منطبق بر J2SE برای مثال کلاس‌های جاواام‌ایی از قبیل awt یا swing مورد پشتیبانی قرار نمی‌گیرد در عوض از کلاس‌های کتابخانهٔ مخصوص به خودش استفاده می‌نماید که مبتنی بر پیاده‌سازی آپاچی هارمونی از جاواست.

## اجازه‌نامه و پتنت‌ها
گوگل ادعا نمود که دالویک را طی فرایند اتاق تمیز طراحی نموده‌است. این کار به جای انجام طراحی بر روی نسخهٔ استاندارد جاوا انجام‌شد تا گرفتار مسائل حقوقی و مبتنی بر رعایت حق مؤلف نگردد.
دالویک تحت اجازه‌نامه آپاچی ۲٫۰ منتشر شد.

اوراکل که بعد از خریداری شرکت سان میکروسیستمز مالک حقوق جاوا شده بود، در تاریخ ۲۱ مرداد ۱۳۹۰، از گوگل به خاطر عدم رعایت حق مؤلف و عدم رعایت استفادهٔ درست از پتنت‌های جاوا، از این شرکت شکایت نمود..

## ماشین مجازی ART
بندانگشتی|نمودار معماری Android Run Time، بازآفرینی شده از اطلاعات منتشر شده در A Closer RunTime (ART) Android در Android L
Art  جایگزین دالویک شوده است (اندروید ۴٫۴ آزمایشی و ۵ به‌طور کامل جایگزین شده‌است). گوگل در اندروید ۴٫۴ Art را در کنار دالویک قرار داد و کاربران می‌توانند با مراجعه به تنظیمات آن را فعال کنند.
از مزایای Art نسبت به دالویک می‌توان اجرای تند تر برنامه‌ها و عمر بیشتر باتری را نام برد. تنها ایراد این روش بالا رفتن فضای مورد نیاز برای ذخیره برنامه‌ها و زمان بیشتر برای کامپایل برنامه هاست.
این ماشین مجازی از روش «پس‌کامپایل»  بهره می‌برد که برنامه را قادر می‌ساز تا ترجمهٔ بایت‌کد را تا زمان نصب برنامه در سیستم به تأخیر اندازد. در حال حاضر این ماشین مجازی برتری محسوسی را به وجود نیاورده است و حتی در مواردی کندتر است اما این موضوع به شدت به نوع «آزمون» بستگی دارد. همچنین افزایش زمان نصب و افزایش ۱۰٪ تا ۲۰٪ حجم فایل نصب شاتول برگزیز سایر ویژگی‌های نامطلوب آن است.
در گوگل I/O ۲۰۱۴ اعلام شد که از نسخهٔ بعدی اندروید این ماشین مجازی جایگزین دالویک خواهد شد و ماشین زمانِ اجرای پیش‌فرض اندروید خواهد شد.

## پیوند
* http://code.google.com/p/dalvik/
* 
* اپکدهای دالویک
* YouTube|id=Ls0tM-c4Vfo|title=Google I/O 2010 - یک کامپایلر جی‌ای‌تی m/site/io/dalvik-vm-internals Dalvik VM Internals] - ارائه از سوی گوگل در مورد دالویک، از سوی بورنستین
* ماشنی مجازی دالویک بر روی جاوا پروژه‌ای با هدف پیاده‌سازی کامل و خالص دالویک با جاوا.

## منابع

رده:اندروید
رده:ماشین مجازی جاوا