Runtime سیستمی است که در آن یک برنامه در مراحل مختلف اجرا میشود. وقتی یک برنامه اجرا میشود، دستورالعملها را دنبال میکند تا عملیات مورد نظر را انجام دهد.
در توسعه نرمافزار، Runtime به زمانی اشاره دارد که یک برنامه به صورت فعال در حال اجراست.
همچنین به محیطی اشاره دارد که یک برنامه در آن اجرا میشود.
محیط Runtime شامل سیستم عامل و کتابخانههای کد متصل است. این مرحله زمانی است که برنامه در حال اجراست، و این با زمان کامپایل که برنامه در حال کامپایل شدن است، تفاوت دارد.
Runtime یک کتابخانه استاندارد و یک بستهبندی برای برنامهای است که به یک زبان خاص نوشته شده است. این محیط استانداردی را برای برنامه ایجاد میکند و رابطهای مورد نیاز را برای آن فراهم میکند.
کتابخانه "library" در برنامهنویسی چیست؟
Runtime چگونه کار میکند؟
هنگامی که یک کاربر برنامهای را اجرا میکند، یک Loader (بارگذار) شروع به کار میکند. این ابزار حافظه را تخصیص میدهد، برنامه را به کتابخانههای ضروری متصل میکند و سپس اجرای برنامه را آغاز میکند.
Runtime یکی از مراحل چرخه حیات برنامهنویسی است.
در زمان اجرا، یک برنامه تمامی دستورات خارجی مورد نیاز برای اجرای صحیح را در اختیار دارد.
کد شما صرفاً کدی است که به یک زبان خاص نوشته شده، و کامپیوتر آن را اجرا میکند.
یک برنامه در حال اجرا از طریق یک سیستم Runtime با محیط Runtime تعامل دارد.
به عنوان مثال، فرض کنید برنامه شما به زبان جاوااسکریپت نوشته شده است. جاوااسکریپت یک زبان سطح بالا است که محیط Runtime سطح بالای آن Node.js است. Node.js دارای قابلیتهای پیشرفتهای مانند صف بازگشتی (Callback Queue)، حلقه رویداد (Event Loop) و استخر رشتهها (Thread Pool) است.
به عنوان یک محیط Runtime، خود Node نیز دارای محیط Runtime خاص خود است. وقتی فایل باینری Node را برای لینوکس دانلود میکنید، متوجه میشوید که یک فایل اجرایی ELF است که سیستمعامل آماده اجرای آن است.
محیط Runtime جاوااسکریپت، Node.js است و محیط Runtime Node نیز سیستمعامل است.
مراحل چرخه حیات برنامه
زمان ویرایش (Edit Time)
زمانی که کد منبع برنامه در حال ویرایش است. این مرحله شامل رفع اشکالات، بازآرایی (Refactoring) و افزودن ویژگیهای جدید میشود. در این مرحله برنامهنویس کد را اصلاح میکند، اشکالات را برطرف میکند و تغییرات لازم را اعمال میکند.
زمان کامپایل (Compile Time)
در این مرحله، کامپایلر کد منبع را به کد ماشین ترجمه کرده و یک فایل اجرایی تولید میکند. این مرحله زمانی است که کد به زبانی سادهتر (مانند کد ماشین) تبدیل میشود.
زمان لینکدهی (Link Time)
این مرحله زمانی است که اجزای کد برنامه، مانند کتابخانههای خارجی، به هم متصل میشوند. این کار میتواند توسط کامپایلر (لینکدهی ایستا) یا سیستمعامل (لینکدهی پویا) انجام شود. زمان لینکدهی پس از اتمام کامپایل رخ میدهد.
زمان توزیع (Distribution Time)
اغلب کاربران برنامه را به صورت فایل اجرایی یا کد منبع از اینترنت دانلود میکنند. همچنین برنامه میتواند از طریق سیدی یا فلش USB توزیع شود. این مرحله به معنای انتقال نسخهای از کد است که برای اجرا در برنامه آماده است.
زمان نصب (Installation Time)
این زمانی است که برنامه توزیع شده روی کامپیوتر کاربر نصب میشود. وقتی برنامه قابل اجرا میشود، این مرحله زمان نصب نامیده میشود.
زمان بارگذاری (Load Time)
زمانی که سیستمعامل فایل اجرایی را در حافظه فعال بارگذاری میکند. در این مرحله، محتوای برنامه قبل از اجرا خوانده میشود.
چرا به محیط Runtime نیاز داریم؟
ما هر روز از برنامههای مختلف کامپیوتری برای انجام وظایفی مانند ویرایش عکس، پردازش متن، محاسبات، برنامهنویسی و ویرایش ویدئو استفاده میکنیم.
انتظار میرود این برنامهها تحت شرایط مختلف، سریع و روان اجرا شوند.
سیستمعاملها میتوانند به شکل قابلتوجهی متفاوت باشند و حتی یک سیستمعامل خاص دارای نسخههای متعددی است. توسعهدهندگان برای سازگار کردن برنامهها با هر سیستمعامل، از محیطهای Runtime استفاده میکنند.
مزایای محیط Runtime:
قابلیت عملکرد بین پلتفرمی:
برنامهها میتوانند در پلتفرمهای مختلف کار کنند، که این امر توسعه را سادهتر میکند زیرا نیازی به سازگار کردن برنامه با سیستمعاملهای مختلف نیست.
رابط کاربری یکسان:
این قابلیت به برنامهها اجازه میدهد تا رابط کاربری مشابهی را ارائه دهند، چه روی ویندوز، macOS یا لینوکس اجرا شوند.
صرفهجویی در منابع:
این قابلیت به برنامههای مشابه اجازه میدهد تا از یک محیط Runtime استفاده کرده و اجزای مشترک را به اشتراک بگذارند.
خطاهای زمان اجرا (Runtime Errors) چیست؟
خطاهای زمان اجرا میتوانند اشکالهای مختلفی داشته باشند. خطای زمان اجرا چیزی جز یک اشکال در برنامه یا کد در حین فرآیند اجرا نیست. اگر یک برنامه پس از شروع اجرا با خطا مواجه شود، به عنوان یک خطای زمان اجرا گزارش میشود.
برنامهها ممکن است با خطاهایی مانند تقسیم بر صفر، خطاهای دامنه (Domain Errors) و کمبود محاسباتی (Arithmetic Underflow) روبرو شوند. محیط زمان اجرا به طور کلی به محیطی اشاره دارد که برنامه در آن اجرا میشود.
محیط Runtime شامل سیستمعامل (OS)، سختافزار و حافظه است. این محیطها بیشتر در عملیات فناوری اطلاعات (IT) مورد استفاده قرار میگیرند تا در توسعه برنامهها. برخی زبانهای برنامهنویسی دارای قابلیت مدیریت استثنا (Exception Handling) داخلی هستند که برای مدیریت خطاهای زمان اجرا در کد استفاده میشود.
مدیریت استثنا میتواند خطاهای پیشبینیشده و پیشبینینشده را بدون نیاز به بررسی دستی زیاد شناسایی و مدیریت کند. وجود یک خطای زمان اجرا ممکن است زمانی شناسایی شود که برنامه کند اجرا شود یا نرمافزار دچار خرابی شود. عوامل مختلفی میتوانند این خطاها را ایجاد کنند.
دلایل اصلی خطاهای زمان اجرا:
خطاهای کدنویسی:
اشکالات موجود در برنامه معمولاً دلیل این نوع خطاها هستند. حتی یک اشتباه دستی نیز میتواند باعث خرابی برنامه شود. یک اشکال نرمافزاری میتواند منجر به خطای زمان اجرا شود.
نشت منابع (Resource Leakage):
هنگامی که یک برنامه اجرا میشود، نیاز به کامپایل شدن دارد و نتیجه باید انتظارات را برآورده کند. اگر منابع سیستم کافی در دسترس نباشد، خطاهای زمان اجرا ممکن است رخ دهد. اگر برنامه حافظه کافی برای اجرا نداشته باشد، ممکن است به درستی کار نکند و این میتواند منجر به توقف برنامه و نمایش پیام خطا شود. این وضعیت که در آن کمبود منابع در حین اجرا وجود دارد، نشت منابع نامیده میشود.
نشت حافظه (Memory Leak):
نشت حافظه زمانی اتفاق میافتد که برنامهنویس فراموش میکند منابعی را که دیگر برای اجرا نیاز نیستند آزاد کند.
سرریز بافر (Buffer Overflow):
این وضعیت زمانی رخ میدهد که کد یا برنامه از حافظه یا کد محل حافظه مجاور فراتر برود.
وابستگیهای شکسته (Broken Dependency):
اگر ارتباط با برنامه دیگری که برنامه برای اجرا به آن وابسته است دچار مشکل شود، ممکن است خطا رخ دهد.
اشکالزدایی (Debugging)
برنامهنویسان به طور مداوم از اصطلاح "اشکالزدایی" استفاده میکنند. اشکالزدایی به معنای پیدا کردن و رفع خطاها یا اشکالات موجود در یک برنامه در حین اجرا است.
محیط زمان اجرا (Runtime Environment - RTE) چیست؟
این اصطلاحات در زمینههای مختلف توسعه نرمافزار معانی متفاوتی دارند و ممکن است باعث سردرگمی شوند.
استفاده از واژه "Runtime" به عنوان اختصاری برای "Runtime Environment" نیز میتواند این سردرگمی را بیشتر کند. بنابراین، میتوان گفت که سردرگمی در این زمینه کاملاً قابل توجیه است.
برنامه در یک محیط گستردهتر که به عنوان محیط زمان اجرا شناخته میشود، اجرا میشود. محیط زمان اجرا شامل سیستمعامل، سختافزار و حافظه است. محیطهای زمان اجرا بیشتر در عملیات فناوری اطلاعات (IT) نسبت به توسعه برنامهها مورد استفاده قرار میگیرند.
نمونههایی از محیطهای زمان اجرا:
Node.js Runtime
Android Runtime
Edge Runtime
Java Virtual Machine (JVM)
Common Language Runtime (CLR)
Adobe Flash Player
نتیجهگیری
در فاز زمان اجرا، یک برنامه اجرا شده و به طور فعال در حال اجرا باقی میماند که این مرحله نقشی حیاتی در چرخه حیات آن دارد. سایر مراحل شامل زمان ویرایش، زمان کامپایل، زمان لینکدهی، زمان توزیع، زمان نصب، و زمان بارگذاری هستند.
توسعهدهندگان برنامهها را در محیطهای زمان اجرا (RTE) پیش از عرضه به تولید آزمایش میکنند. این فرآیند به شناسایی مشکلات عملکردی و خطاهای زمان اجرا کمک میکند.
در بسیاری از زبانها از جمله جاوااسکریپت، میتوانید خطاهای زمان اجرا را شخصیسازی کنید. برای مثال، میتوانید در جاوااسکریپت با استفاده از دستور throw در یک بلوک خطای استاندارد، پیام خطای شخصیسازی شدهای نمایش دهید.
Runtime بخش مهمی از نرمافزار است که برای اجرای برنامهها ضروری است، همانطور که در این مقاله توضیح داده شد. این محیط به برنامهنویسان کمک میکند تا اشکالات را در حین اجرای برنامه شناسایی کنند.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید