زبان برنامهنویسی Java در ابتدا توسط شرکت Sun Microsystems توسعه داده شد. این پروژه توسط جیمز گاسلینگ (James Gosling) آغاز شد و در سال ۱۹۹۵ بهعنوان جزء اصلی پلتفرم Java شرکت Sun Microsystems (Java 1.0 [J2SE]) منتشر گردید. حتی تاریخچه نامگذاری Java نیز بسیار جالب است. این زبان در طول زمان نامهای مختلفی به خود گرفته است.
تاریخچه نامگذاری Java
GreenTalk
جیمز گاسلینگ رهبری تیمی به نام تیم “Green” را بر عهده داشت. هدف این تیم ایجاد یک زبان جدید بود که بتواند بدون مشکل روی دستگاههای الکترونیکی مختلف کار کند. در ابتدا زبان C++ گزینه اصلی برای توسعه پروژه بود. جیمز گاسلینگ میخواست C++ را برای رسیدن به هدف توسعه دهد، اما بهدلیل استفاده بالای حافظه، این ایده رد شد و تیم با زبان جدیدی شروع کرد که در ابتدا GreenTalk نام داشت. پسوند فایلهای این زبان .gt بود. بعدها این زبان به Oak تغییر نام یافت و در نهایت به Java تبدیل شد.
Oak
جیمز گاسلینگ زبان را به Oak تغییر نام داد. دلیل این نامگذاری وجود یک درخت بلوط (Oak) در مقابل دفتر کار او بود. گاسلینگ این نام را انتخاب کرد زیرا درخت بلوط نماد استواری است و همچنین درخت ملی کشورهای مختلفی مانند آمریکا، فرانسه، رومانی و… بهشمار میرود. اما شرکت Oak Technologies قبلاً نام Oak را بهعنوان علامت تجاری (Trademark) ثبت کرده بود، بنابراین تیم جیمز مجبور شد برای زبان نام دیگری انتخاب کند.
در نهایت Java
تیم، نامهای مختلفی مانند DNA، Silk، Ruby و Java را مطرح کرد. در نهایت Java بهعنوان نام نهایی انتخاب شد. جیمز گاسلینگ نام Java را بر اساس نوعی دانه قهوه اسپرسو پیشنهاد داد. Java نام جزیرهای در اندونزی است که نوعی قهوه جدید در آن کشف شد و به نام قهوه جاوا (Java Coffee) شناخته میشود. به گفته گاسلینگ، Java در کنار Silk یکی از نامهای مورد علاقه او بود. در نهایت نام Java انتخاب شد چون منحصربهفرد، پویا، انقلابی و تلفظ آن جذاب و سرگرمکننده بود.
انتشار عمومی Java
شرکت Sun در سال ۱۹۹۵ اولین نسخه عمومی Java را با نام Java 1.0 منتشر کرد. این نسخه شعار “Write Once, Run Anywhere (WORA)” یعنی “یک بار بنویس، همهجا اجرا کن” را به همراه داشت و امکان اجرای رایگان Java در پلتفرمهای مختلف را فراهم میکرد.
متنباز شدن Java
در تاریخ ۱۳ نوامبر ۲۰۰۶، شرکت Sun بیشتر بخشهای Java را تحت مجوز GNU General Public License (GPL) بهصورت رایگان و متنباز منتشر کرد.
در تاریخ ۸ مه ۲۰۰۷، شرکت Sun این فرآیند را به پایان رساند و تمام کدهای اصلی Java (بهجز بخشی از کدها که حق کپیرایت آن متعلق به Sun نبود) را آزاد و متنباز کرد.
آخرین نسخه Java
آخرین نسخه منتشر شده از Java Standard Edition، نسخه Java SE 21 است. با پیشرفت Java و محبوبیت فراوان آن، پیکربندیهای متعددی برای آن ایجاد شد تا برای پلتفرمهای مختلف قابل استفاده باشد. برای مثال:
- J2EE برای برنامههای سازمانی (Enterprise Applications)
- J2ME برای برنامههای موبایلی (Mobile Applications)
تاریخچه نسخههای Java
در طول نزدیک به ۳۰ سال، Java نسخههای کوچک و بزرگ زیادی را تجربه کرده است. در ادامه، مروری مختصر بر نسخههای مختلف Java ارائه خواهد شد.
حتماً! در ادامه، جدول نسخههای مختلف Java را به صورت متن پیوسته و روان برایت آوردهام، به زبان فارسی و با ساختار مرتب:
تاریخچه نسخههای مختلف Java به همراه ویژگیها:
-
JDK Beta (سال ۱۹۹۵): این نسخه، پیشنویس اولیه زبان برنامهنویسی جاوا بود و بهعنوان اولین نسخه آزمایشی معرفی شد.
-
JDK 1.0 (۲۳ ژانویه ۱۹۹۶): اولین نسخه پایدار جاوا منتشر شد و نسخه JDK 1.0.2 بهعنوان نسخه نهایی و پایدار JDK 1 شناخته شد.
-
JDK 1.1 (۱۹ فوریه ۱۹۹۷): ویژگیهای مهمی مانند JavaBeans، RMI، JDBC و کلاسهای داخلی (Inner Classes) به جاوا اضافه شدند.
-
JDK 1.2 (۸ دسامبر ۱۹۹۸): اجزایی مثل Swing، کامپایلر JIT، ماژولهای Java و مجموعهها (Collections) به جاوا افزوده شدند و این نسخه بسیار موفق بود.
-
JDK 1.3 (۸ مه ۲۰۰۰): موتور HotSpot JVM، ابزارهای JNDI، JPDA، JavaSound و پشتیبانی از کلاسهای پراکسی مصنوعی به جاوا اضافه شد.
-
JDK 1.4 (۶ فوریه ۲۰۰۲): API مربوط به خواندن و نوشتن تصاویر JPEG/PNG افزوده شد. همچنین تجزیهگر XML و پردازشگر XSLT (JAXP) و API تنظیمات (Preferences) نیز معرفی شدند.
-
JDK 1.5 یا J2SE 5 (۳۰ سپتامبر ۲۰۰۴): ویژگیهای جدیدی مثل حلقه foreach، پارامترهای متغیر (var-args)، و genericها به زبان اضافه شد.
-
JAVA SE 6 (۱۱ دسامبر ۲۰۰۶): ساختار نامگذاری تغییر یافت و عدد 1. حذف شد. نسخه جدید شامل پشتیبانی از JAXB 2.0، JSR 269 و JDBC 4.0 بود.
-
JAVA SE 7 (۷ ژوئیه ۲۰۱۱): پشتیبانی از زبانهای داینامیک به JVM افزوده شد. همچنین ویژگیهایی مانند استفاده از رشته در دستور switch و اشارهگرهای ۶۴ بیتی فشرده اضافه شدند.
-
JAVA SE 8 (۱۸ مارس ۲۰۱۴): برنامهنویسی تابعی (Functional Programming) وارد جاوا شد. ویژگیهایی مثل Lambda، Streamها، متدهای پیشفرض، و API جدید تاریخ و زمان معرفی شدند.
-
JAVA SE 9 (۲۱ سپتامبر ۲۰۱۷): سیستم ماژولار معرفی شد که امکان ساخت برنامههای ماژولار و سبکتر را فراهم کرد.
-
JAVA SE 10 (۲۰ مارس ۲۰۱۸): پسوندهای زبان Unicode، گواهیهای ریشه، handshakeهای ThreadLocal و پشتیبانی از تخصیص heap در دستگاههای حافظه جایگزین افزوده شدند.
-
JAVA SE 11 (۵ سپتامبر ۲۰۱۸): ویژگیهایی مانند کلاسفایلهای داینامیک، Garbage Collector بدون عملیات (Epsilon)، پشتیبانی از متغیر محلی در پارامترهای Lambda و پروفایل حافظه با سربار کم افزوده شدند.
-
JAVA SE 12 (۱۹ مارس ۲۰۱۹): Garbage Collector آزمایشی Shenandoah، مجموعه آزمایشی Microbenchmark و API ثابت JVM معرفی شدند.
-
JAVA SE 13 (۱۷ سپتامبر ۲۰۱۹): ویژگیهایی مانند بلوکهای متنی (رشتههای چندخطی) و handshakeهای Thread-local بهبود یافته اضافه شدند.
-
JAVA SE 14 (۱۷ مارس ۲۰۲۰): نوع جدید کلاس به نام Records، تطابق الگو با instanceof، و مدیریت بهتر خطای NullPointerException معرفی شد.
-
JAVA SE 15 (۱۵ سپتامبر ۲۰۲۰): کلاسهای بسته (Sealed)، کلاسهای پنهان (Hidden Classes) و API توابع خارجی و حافظه (بهصورت آزمایشی) افزوده شدند.
-
JAVA SE 16 (۱۶ مارس ۲۰۲۱): نسخههای پیشنمایش Records، تطابق الگو در switch و کانال Unix Domain Socket معرفی شدند.
-
JAVA SE 17 (۱۴ سپتامبر ۲۰۲۱): کلاسهای بسته نهایی شدند، تطابق الگو با instanceof تقویت شد، و کپسولهسازی داخلی JDK بهصورت پیشفرض فعال شد. همچنین pipeline رندر جدید برای macOS ارائه شد.
-
JAVA SE 18 (۲۲ مارس ۲۰۲۲): UTF-8 بهصورت پیشفرض تنظیم شد، قطعهکدها در مستندات API افزوده شدند، و نسخه سوم آزمایشی Vector API ارائه شد.
-
JAVA SE 19 (۲۰ سپتامبر ۲۰۲۲): الگوهای Record، نسخه چهارم Vector API و همزمانی ساختاریافته (Structured Concurrency) معرفی شدند.
-
JAVA SE 20 (۲۱ مارس ۲۰۲۳): ویژگیهایی مانند Scoped Values، الگوهای Record (پیشنمایش دوم)، تطابق الگو برای switch (پیشنمایش چهارم)، و API توابع و حافظه خارجی (پیشنمایش دوم) افزوده شدند.
-
JAVA SE 21 (۱۹ سپتامبر ۲۰۲۳): قالبهای متنی (String Templates)، مجموعههای مرتبشده، جمعآوری زباله نسلمحور (Generational ZGC)، الگوهای Record و تطابق الگو برای switch معرفی شدند.
-
JAVA SE 22 (۱۹ مارس ۲۰۲۴): پشتیبانی از پین کردن ناحیهها در G1 GC، API توابع و حافظه خارجی، پشتیبانی از برنامههای چندفایلی، قالبهای متنی، نسخه هفتم Vector API، متغیرهای نامگذاری نشده، الگوها، و جمعکنندههای Stream (پیشنمایش اول) افزوده شدند.
-
JAVA SE 23 (۱۷ سپتامبر ۲۰۲۴): پشتیبانی از نوعهای اولیه در الگوها، API کلاسفایل، نسخه هشتم Vector API، جمعکنندههای Stream (پیشنمایش دوم)، ZDC و حالت نسلمحور بهصورت پیشفرض معرفی شدند.