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