تاریخچه نگارش جاوا

زبان جاوا از زمان عرضهٔ جی‌دی‌کا ۱٫۰ تغییرات بیشماری را پشت سر گذاشته‌است که شامل اضافه‌شدن کلاس‌هایی به کتاب‌خانه‌ی استاندارد آن بوده‌است. از زمان J2SE ۱٫۴ توسعهٔ جاوا بر عهدهٔ فرایند جمعیت جاوا (ف.ج. ج) قرار گرفته‌است که از درخواست‌های خصوصیات جاوا (جی‌اس‌آرها) برای ارایهٔ و تعیین تغییرات صورت گرفته بر روی سکوی جاوا استفاده می‌نماید.

علاوه بر تغییرات زبان، تغییرات زیادی در طول سالیان متمادی بر روی کتابخانهٔ جاوا صورت گرفته‌است. از چند صد کلاس در جاوا ۱٫۰ به بیش از هزاران کلاس در جاوای نگارش استاندارد ۵٫۰ رسیده‌است. تمام رابط‌های برنامه‌نویس کاربردی مانند سوینگ و جاوای دوبعدی به جاوا اضافه شده و بسیاری از کلاس‌های جی‌دی‌کا ۱٫۰ بازنشسته شده‌اند. برخی از برنامه به کابرانش این اجازه را می‌دهد تا برنامه‌ها را از یک نگارش سکوی جاوا به نگارش‌های قدیمی‌تر تبدیل نمایند. برای مثال تبدیل برنامه‌ایی از جاوا ۵٫۰ به جاوای نگارش ۱٫۴ که به آن عقبگرد جاوا می‌گویند.

جی‌دی‌کا ۱٫۰ (۳ بهمن ۱۳۷۴) ویرایش

با نام رمزی اواآک (به انگلیسی: Oak) انتشار آغازین بود.[۱][۲] اولین انتشار پایدار به نام جاوا ۱٫۰ صورت گرفت.[۲]

جی‌دی‌کا ۱٫۱jdk (۱ اسفند ۱۳۷۵) ویرایش

اضافه‌شدن‌هایی عظیمی صورت گرفت، از قبیل:[۳]

جی۲ اس‌ایی ۱٫۲ (۱۷ آذر ۱۳۷۷) ویرایش

این کیت توسعه با نام رمزی زمین بازی (به انگلیسی: PlayGround) عرضه شد. این نگارش و انتشارهای بعدی بعدی آن تا زمان J2SE ۵٫۰ با نام جاوا ۲ و نامِ نگارشی J2SE (سکوی ۲ جاوا، نگارش استاندارد) برای ایجاد تمایز بین سکوی پایه از سکوی جاوا، نسخه سازمانی، سکوی جاوا، نسخه میکرو مزین گردید. سایر تغییرات اساسی عبارتند از:[۴]

جی۲ اس‌ایی ۱٫۳ (۱۹ اردیبهشت ۱۳۷۹) ویرایش

با نام رمزی کسترل. تغییرات مهم عبارتند از:[۵][۶]

جی۲ اس‌ایی ۱٫۴ (۱۷ بهمن ۱۳۸۰) ویرایش

مرلین نام رمزی این انتشار بود. اولین انتشار جاوا بود که تحت فرایند جمعیت جاوا در قالب جی‌اس‌ار ۵۹ منتشر شد. تغییرات عمدهٔ آن عبارتند بودند از:[۷][۸]

تغییران زبان

بهبود کتابخانه

جی۲ ای‌ایی ۵٫۰ (۹ مهر ۱۳۸۳) ویرایش

نام رمزی ببر (به انگلیسی: Tiger)، که با عدد ۱٫۵ نمایش داده می‌شود.[۹] این نگارش تحت جی‌اس‌ار ۱۷۶ توسعه داده‌شد. این نگارش در تاریخ ۲۰ فروردین ۱۳۸۷ به پایان عمر خود رسید و از تاریخ ۱۲ آبان ۱۳۸۸ دیگر مورد پشتیبانی قرار نگرفت.[۱۰] تغییرات زیادی در ویژگی‌های زبانیِ این نگارش صورت گرفت[۱۱][۱۲]

  • عمومی سازی: به مجموعه‌ها امکان ترجمهٔ در زمان (ایستا) را داده و اطمینان نوع را با حذف تبدیل نوع را می‌دهد. (در جی‌اس‌ار ۱۴ شرح داده‌شده‌است)
  • فرا داده: که یادداشت جاوا نیز نامیده می‌شود. این ویژگی به زبان این امکان را می‌دهد تا سازندهٔ کلاس و متدهای به فراداده‌هایی پیوست شده که می‌توانید توسط ابزارهای خاصی مورد پردازش قرار گیرند. (در جی‌اس‌ار ۱۷۵ شرح داده‌شده‌است).
  • بهبود حلقهٔ for each : عبارت حلقهٔ for به صورت خاصی توسعه داده‌شد تا بتواند برای هر عضو از آرایه یا هر چیز قابل پیمایشی مانند مجموعه، شناسایی نموده و عملیات را بر روی آن‌ها انجام دهد.
void displayWidgets (Iterable<Widget> widgets) {
     for (Widget w: widgets) {
         w.display();
     }
}

جاوا ای‌ایی ۶(۲۰ آذر ۱۳۸۵) ویرایش

نام رمز اسب وحشی (به انگلیسی: Mustang). از این نگارش به بعد عبارت جی۲اس‌ایی به عبارت جاوا اس‌ایی جایگزین شد(J2SE به Java SE تبدیل شد) و از بخش عددی نگارش، «.۰» حذف شد.[۱۳] اگرچه روش شماره‌گذاری به منظور توسعه به همان روش سابق باقی‌ماند، ۱٫۶٫۰.[۱۴] این نگارش تحت جی‌اس‌ار ۲۷۰ توسعه یافت. در طول فاز توسعه، کارهای جدیدی از قبیل بهبود و یافتن خطا و رفع آن‌ها صورت گرفت. این کار به صورت هفته‌ای انجام شد. نگارش بتا، در بهمن ۱۳۸۴و خرداد ۱۳۸۵ منتشر شد. این رویه تا ارایهٔ کامل در تاریخ ۱۱ آذر ۱۳۸۵ ادامه یافت. نگارش کنونی که روزآمدی ۲۶م است در خرداد ۱۳۹۰ منتشر شد تغییرات عمدهٔ صورت گرفته در این نگارش عبارتند از:[۱۵][۱۶]

  • پشتیبانی از نگارش‌های ویندوز۹.X متوقف شد. به صورت غیررسمی روزآمدی هفتم نگارش ۶، آخرین جاوایی بود که بر روی آن‌های کار می‌کرد.
  • بهبود شگفت‌انگیز در هستهٔ برنامه و سوینگ.[۱۷][۱۸]
  • پشتیبانی از جی‌دی‌بی‌سی (جی‌اس‌از ۲۲۱)
  • بهبودهای چشمگیر در واسط گرافیکی که از آن میان می‌توان به سوینگ‌ورکر در رابط برنامه‌نویسی اشاره نمود، اعمال فیلتر و مرتب‌سازی در جداول.
  • بهبود جی‌وی‌ام: افزایش کارایی در همزمان سازی و ترجمه و نیز ارائه یک الگوریتم جدید به همراه بهینه‌سازی زباله‌جمع کن از دیگر بهبود سازی‌های صورت گرفته بود. افزایش کارایی برنامه در زمان اجرا نیز از تغییرات مهم بود.[۱۹]

جاوا اس‌ایی ۷ (۶ مرداد ۱۳۹۰) ویرایش

جاوا ۷ با کد رمزی دولفین[۲۰] تغییر مهمی بود که در تاریخ جاوا در روز ۱۶ تیر سال ۱۳۹۰ از سوی اوراکل صورت گرفت.[۲۱] و از تاریخ ۶ مرداد در دسترس علاقه‌مندان قرار گرفت.[۲۲] زمان توسعه در ۱۳ مرحلهٔ اساسی تقسیم شد، که در ۲۹ بهمن ۱۳۸۹ آخرین مرحلهٔ اساسی خود را طی نمود [۲۳][۲۴][۲۴] فهرست ویژگی‌های جاوا ۷[۲۵][۲۶]:

که در جاوا ۶ با استفاده از -XX:+UseCompressedOops امکان‌پذیر است.

تغییرات زبان [۲۸]

  • استفاده از رشته (به انگلیسی: String) در سویچ [۲۹] ((به انگلیسی: Switch)) که از ۱۰ سال پیش قول آن داده شده‌بود.
  • مدیریت خودکار منابع در عبارات try-catch[۳۰]
  • بهبود در رابط عمومی‌سازی ایجاد نمونه‌ها (به انگلیسی: Instance) [۳۱]
  • ساده‌سازی فراخوانی متغیرهای آرگومانی متدها [۳۲]
  • لیترال‌های عددی دودویی [۳۳]
  • کش کردن چندین استثنا و باز پرتاب آن‌ها به کنترل نوع مناسب [۳۴]

جاوا اس‌ایی ۸ (۹۲–۱۳۹۱) ویرایش

جاوا ۸ اواخر سال ۲۰۱۲(۱۳۹۲) منتشر شد.[۳۵] و حداقل شامل ویژگی‌هایی بود که در جاوا ۷ قول داده‌شده بود ولی عملی نشد.

  • پیمانه‌ای نمودن جی‌دی‌کا تحت پروژه جیگ‌ساو (به انگلیسی: Jigsaw)[۳۶][۳۷] این انتشار شامل ویژگی‌هایی بود که برای نسخهٔ ۷ برنامه‌ریزی شده اما بعداً حذف و در این نسخه منتشر شد.[۳۸]
  • JSR 335 و JEP 126: شاملِ پشتیبانی در سطح زبان برایِ عبارات لامبدا که به صورت رسمی «عبارات لامبدا» نام گرفته ولی به صورت غیررسمی از آن به عنوانِ کلژور تحت پروژهٔ لامبدا یاد می‌شود.[۳۹] و متدهای پیشفرض (متدهای افزونهٔ مجازی)[۴۰][۴۱][۴۲] که ارث‌بری چندگانه در جاوا را ممکن می‌سازد. این موضوع موجب بحث‌هایی در جامعهٔ جاوا شد که آیا اساساً لامبدا به جاوا اضافه شود یا خیر.[۴۳][۴۴] سان بعداً اعلام کرد که بعدا عبارات جاوا در جاوا قرار خواهد کرد و در اینباره از جامعه جاوا نظر خواهی خواهد کرد.[۴۵] پشتیبانی از لامبدا همچنین اجازه می‌دهد تا عملیات‌هایی تابع-مانند بر روی المان‌های مانندِ نگاشت‌کاهش که تبدیلاتی بر روی مجموعه را فراهم کرد. متدها پیش‌فرض این امکان را فراهم می‌کند که نویسندهٔ API (فاصل برنامه کمکی) متدهایی را به فاصل اضافه نماید بدون آنکه کد قبلی دستکاری شود.

جاوا اس‌ایی 10 (۹6–۱۳۹5) ویرایش

جاوا 10 اواخر سال 2016(۱۳۹5) منتشر شد.[۳۵] و حداقل شامل ویژگی‌هایی بود که در جاوا 9 قول داده‌شده بود ولی عملی شد.

  • پیمانه‌ای نمودن جی‌دی‌کا تحت پروژه جیگ‌ساو (به انگلیسی: Jigsaw)[۳۶][۳۷] این انتشار شامل ویژگی‌هایی بود که برای نسخهٔ 8 برنامه‌ریزی شده اما بعداً حذف و در این نسخه منتشر شد.[۳۸]
  • JSR 335 و JEP 126: شاملِ پشتیبانی در سطح زبان برایِ عبارات لامبدا که به صورت رسمی «عبارات لامبدا» نام گرفته ولی به صورت غیررسمی از آن به عنوانِ کلژور تحت پروژهٔ لامبدا یاد می‌شود.[۳۹] و متدهای پیشفرض (متدهای افزونهٔ مجازی)[۴۰][۴۱][۴۲] که ارث‌بری چندگانه در جاوا را ممکن می‌سازد. این موضوع موجب بحث‌هایی در جامعهٔ جاوا شد که آیا اساساً لامبدا به جاوا اضافه شود یا خیر.[۴۳][۴۴] سان بعداً اعلام کرد که بعدا عبارات جاوا در جاوا قرار خواهد کرد و در اینباره از جامعه جاوا نظر خواهی خواهد کرد.[۴۵] پشتیبانی از لامبدا همچنین اجازه می‌دهد تا عملیات‌هایی تابع-مانند بر روی المان‌های مانندِ نگاشت‌کاهش که تبدیلاتی بر روی مجموعه را فراهم کرد. متدها پیش‌فرض این امکان را فراهم می‌کند که نویسندهٔ API (فاصل برنامه کمکی) متدهایی را به فاصل اضافه نماید بدون آنکه کد قبلی دستکاری شود.

جستارهای وابسته ویرایش

منابع ویرایش

  1. پیش انتشار نگارش ۱٫۰ سان بود.
  2. ۲٫۰ ۲٫۱ http://www.oracle.com/technetwork/java/chapter1-159190.pdf
  3. پیش انتشار نگارش ۱٫۱، سان.
  4. نگارش ۱٫۲ منتشر شد، سان.
  5. نگارش ۱٫۳ منتشر شد، سان.
  6. تمام تغییرات نگارش ۱٫۳، سان.
  7. نگارش ۱٫۴ منتشر شد.
  8. فهرست کامل تغییرات نگارش ۱٫۴.
  9. نکات مربوط به نگارش ۵ ، سان.
  10. جاوا اس‌ایی، دانلود نگارشهای قبلی جی‌دی‌کا
  11. نگارش ۱٫۵ منتشر شد.
  12. تمام تغییرات صورت گرفته در نگارش ۱٫۵.
  13. نام گذاری نشان تجاری جاوا.
  14. نگارش ۶، جاوا وب‌نوشته، سان.
  15. نگارش ۱٫۶ منتشر شد.
  16. فهرست کامل تغییرات نگارش ۱٫۶.
  17. جاوا لابی بایگانی‌شده در ۱۳ اکتبر ۲۰۰۸ توسط Wayback Machine.
  18. هات اسپاتِ موستانگ بایگانی‌شده در ۲ ژانویه ۲۰۰۷ توسط Wayback Machine، وبلاگ سان
  19. «مقالهٔ کارایی جاوا اس‌ایی ۶». ۳ آبان ۱۳۸۶. دریافت‌شده در ۲۲ مرداد ۱۳۹۰.
  20. جی‌دی‌کا ۷ بایگانی‌شده در ۱۵ دسامبر ۲۰۱۶ توسط Wayback Machine، سان.
  21. Introducing Java 7 Webcast: Moving Java Forward
  22. «زمان‌بندی جی‌دی‌کا ۷».
  23. "جی‌دی‌کا ۷ بر روی جی‌دی‌کای باز" (به انگلیسی). جی‌دی‌کا باز. ۶ مرداد ۱۳۹۰. Retrieved 22 مرداد 1390. {{cite web}}: Check date values in: |تاریخ بازدید= و |تاریخ= (help)
  24. ۲۴٫۰ ۲۴٫۱ "مراحل اساسی جی‌دی‌کا ۷" (به انگلیسی). جی‌دی‌کا باز. ۶ مرداد ۱۳۹۰. Retrieved 22 مرداد 1390. {{cite web}}: Check date values in: |تاریخ بازدید= و |تاریخ= (help)
  25. "فهرست کامل ویژگی‌های جی‌دی‌کای باز ۷" (به انگلیسی). جی‌دی‌کا باز. Retrieved 22 مرداد 1390. {{cite web}}: Check date values in: |تاریخ بازدید= (help)
  26. «جاوا ۷». دریافت‌شده در ۹ خرداد ۱۳۸۶.
  27. «فشرده‌سازی اشاره‌گرهای در ماشین‌مجازی هات‌اسپات». جی‌دی‌کا باز. بایگانی‌شده از اصلی در ۳۱ اوت ۲۰۰۹. دریافت‌شده در ۱۴ اوت ۲۰۱۱. از پارامتر ناشناخته |تاریخ بازیدید= صرف‌نظر شد (کمک)
  28. «جاوا ۷». دریافت‌شده در ۹ خرداد ۱۳۸۶.
  29. «رشته در عبارات سویچ». دریافت‌شده در ۹ خرداد ۱۳۸۶.
  30. [>http://download.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html «عبارت try در منایع»] مقدار |نشانی= را بررسی کنید (کمک). دریافت‌شده در ۹ خرداد ۱۳۸۶.
  31. «کنترل نوع در ایجاد نمونه». دریافت‌شده در ۹ خرداد ۱۳۸۶.
  32. Improved Compiler Warnings When Using Non-Reifiable Formal Parameters with Varargs Methods
  33. Binary Literals
  34. Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking
  35. ۳۵٫۰ ۳۵٫۱ «محتوای انتشار جاوا اس‌ایی ۸». جی‌دی‌کا باز.
  36. ۳۶٫۰ ۳۶٫۱ «پروژه جیگ‌ساو». جی‌دی‌کا باز.
  37. ۳۷٫۰ ۳۷٫۱ «نیازمندی‌های سامانهٔ پیمانه‌ای جاوا- درافت ۱۲». اوراکل.
  38. ۳۸٫۰ ۳۸٫۱ "ویژگی‌های JDK 8". OpenJDK. 2014-01-28. Retrieved 2014-01-28.
  39. ۳۹٫۰ ۳۹٫۱ "ویژگی‌های جاوا ۷". سان مایکروسیستمز. 2010-02-09. Retrieved 2010-04-16.
  40. ۴۰٫۰ ۴۰٫۱ "تکامل فاصل از طریق متدهای افزونهٔ مجازی" (PDF). برایان گوئتز. 2011-07-20. Retrieved 2014-03-27.
  41. ۴۱٫۰ ۴۱٫۱ "عبارات‌های لامبدا برای زبان برنامه‌نویسی جاوا". برایان گوئتز. 2012-10-23. Retrieved 2014-03-27.
  42. ۴۲٫۰ ۴۲٫۱ "راهنمای جاوا: متدهای پیش‌فرض". اوراکل. Archived from the original on 23 May 2017. Retrieved 2014-03-27.
  43. ۴۳٫۰ ۴۳٫۱ Gafter, Neal (2006-08-18). "کلوژور در جاوا". Retrieved 2008-03-09.
  44. ۴۴٫۰ ۴۴٫۱ Gosling, James (2008-01-31). "Closures". Archived from the original on 22 July 2011. Retrieved 2008-03-09.
  45. ۴۵٫۰ ۴۵٫۱ Reinhold, Mark (2009-11-28). "Closures for Java". Retrieved 2009-11-24.

پیوند به بیرون ویرایش