جاوا چیه و چرا بهش نیاز داریم؟
جاوا یه زبان برنامه نویسی سطح بالا، کلاس محور و شی گرا هست که طوری طراحی شده که کمترین وابستگی به پیاده سازی داشته باشه. این یه زبان برنامه نویسی همه منظوره ست که به برنامه نویسا این امکان رو میده که یک بار بنویسن و همه جا اجرا کنن (WORA)، یعنی کد کامپایل شده جاوا میتونه روی هر پلتفرمی که از جاوا پشتیبانی میکنه، بدون نیاز به کامپایل مجدد اجرا بشه.برنامه های جاوا معمولا به بایت کد تبدیل میشن که روی ماشین مجازی جاوا (JVM) اجرا میشه، فارغ از اینکه معماری سخت افزاری سیستم چی باشه. سینتکس جاوا شبیه به C و C++ هست، ولی نسبت به اون ها امکانات سطح پایین کمتری داره. محیط اجرایی جاوا قابلیت های دینامیکی مثل رفلکشن (reflection) و تغییر کد در زمان اجرا رو فراهم میکنه که معمولا تو زبان های کامپایل شده سنتی وجود ندارن.
تاریخچه جاوا
جاوا یه زبان برنامه نویسی و یه پلتفرم محاسباتی هست که اولین بار تو سال 1995 توسط Sun Microsystems منتشر شد. از یه شروع ساده تبدیل شده به یکی از پایه های اصلی دنیای دیجیتال امروز و یه بستر قابل اعتماد برای ساخت خیلی از سرویس ها و برنامه ها شده. محصولات جدید و سرویس های دیجیتال آینده هم همچنان روی جاوا حساب باز میکنن.جاوا خیلی زود بعد از انتشارش محبوب شد و از اون زمان تا الان یکی از پرطرفدارترین زبان های برنامه نویسی بوده. توی سال 2022، جاوا سومین زبان برنامه نویسی محبوب توی GitHub بود. با این که جاوا هنوزم خیلی پرکاربرده، اما تو سال های اخیر به مرور میزان استفاده ازش کمتر شده و زبان های دیگه ای که روی JVM اجرا میشن دارن محبوبیت بیشتری پیدا میکنن.در حال حاضر، آخرین نسخه جاوا Java 23 هست که توی سپتامبر 2024 منتشر شده. نسخه های Java 20 و Java 22 دیگه پشتیبانی نمیشن، اما نسخه های Java 8، Java 11، Java 17 و Java 21 همچنان به عنوان نسخه های پشتیبانی بلندمدت (LTS) در حال پشتیبانی هستن.
اصول طراحی جاوا
پنج هدف اصلی برای طراحی زبان جاوا در نظر گرفته شده بود:
- باید ساده، شی گرا و آشنا باشه.
- باید قوی و ایمن باشه.
- باید مستقل از معماری و قابل حمل باشه.
- باید عملکرد بالایی داشته باشه.
- باید تفسیر شونده، چندنخی و پویا باشه.
نسخه های جاوا
تا نوامبر 2024، نسخه های Java 8، Java 11، Java 17 و Java 21 به عنوان نسخه های پشتیبانی بلندمدت (LTS) پشتیبانی میشن. نسخه بعدی LTS یعنی Java 25 قراره تو سپتامبر 2025 منتشر بشه. Oracle آخرین آپدیت عمومی و رایگان Java 8 LTS برای استفاده تجاری رو ژانویه 2019 منتشر کرد، اما همچنان برای استفاده شخصی به صورت نامحدود آپدیت های عمومی ارائه میده. علاوه بر Oracle، شرکت هایی مثل Adoptium هم نسخه های LTS متن باز OpenJDK رو به صورت رایگان منتشر میکنن که ممکنه شامل به روزرسانی های امنیتی و اصلاحات باگ ها هم باشه.
JVM و بایت کد جاوا
یکی از اهداف اصلی طراحی جاوا قابل حمل بودن (portability) هست، یعنی برنامه هایی که برای پلتفرم جاوا نوشته میشن باید روی هر ترکیبی از سخت افزار و سیستم عامل که از جاوا پشتیبانی میکنه، به یک شکل اجرا بشن. این قابلیت از طریق کامپایل کد جاوا به یک فرمت واسط به نام بایت کد جاوا (Java bytecode) بهدست میاد، به جای اینکه مستقیما به کد ماشین مخصوص یک معماری خاص تبدیل بشه.بایت کد جاوا مشابه کد ماشین هست، اما برای اجرا شدن روی ماشین مجازی جاوا (JVM) طراحی شده که مخصوص سخت افزار میزبان نوشته شده. کاربران معمولا برای اجرای برنامه های جاوا از Java Runtime Environment (JRE) نصب شده روی دستگاهشون استفاده میکنن، یا در گذشته از مرورگرهای وب برای اجرای اپلت های جاوا بهره میبردن.کتابخونه های استاندارد جاوا یه روش عمومی برای دسترسی به ویژگی های اختصاصی سیستم میزبان مثل گرافیک، پردازش چند نخی و شبکه ارائه میدن.استفاده از بایت کد یکسان باعث شده که جاوا به راحتی روی پلتفرم های مختلف اجرا بشه، اما تفسیر بایت کد و تبدیلش به دستورات ماشین معمولا اجرای کدهای جاوا رو کندتر از برنامه های نیتیو (native) میکنه. برای حل این مشکل، از همان ابتدا کامپایلرهای JIT (Just-In-Time) معرفی شدن که بایت کد جاوا رو در زمان اجرا به کد ماشین تبدیل میکنن.کامپایلر HotSpot جاوا در واقع شامل دو کامپایلر در یک پکیج هست و از GraalVM (که در Java 11 اضافه شد ولی از Java 16 حذف شد) پشتیبانی میکنه که باعث کامپایل مرحلهای (tiered compilation) میشه.در نهایت، خود جاوا یک زبان مستقل از پلتفرم هست و ماشین مجازی جاوا (JVM) وظیفه داره بایت کد جاوا رو به زبان ماشین مخصوص پلتفرم اجرا کننده ترجمه کنه تا برنامه بدون وابستگی به سخت افزار اجرا بشه.