جاوا چگونه ساخته می شود؟ بیایید به روند معرفی ویژگیهای جدید به پلتفرم و برخی از پروژههای بزرگ بهبود JDK در افق نگاهی بیندازیم.
جاوا به طور گسترده مورد استفاده قرار می گیرد و به زبان ساده به شدت به آن متکی است. این بخش عمده ای از زیرساخت نرم افزار ما است. علیرغم داشتن تعهد سنگین به ثبات، پلت فرم جاوا توانسته است به شرایط متغیر پاسخگو باشد. خلاقیت افرادی که از جاوا استفاده می کنند بخشی از دلیل آن است. جاوا دارای یک فرآیند رسمی برای ترکیب تغییرات در پلتفرم و در عین حال دستیابی به درجه بالایی از ثبات است.
بیایید مروری بر نحوه بهبود پلت فرم جاوا داشته باشیم. ما همچنین به برخی از برجسته ترین ویژگی های جدید در افق نگاه خواهیم کرد.
JCP: فرآیند انجمن جاوا
حتی یک توسعه دهنده قدیمی جاوا نیز ممکن است درک خوبی از نحوه توسعه و نگهداری پلتفرم نداشته باشد. قبل از اینکه وارد پروژه های بزرگ آینده شویم، بیایید درک کنیم که فرآیند جاوا چگونه کار می کند. نکته اصلی در اینجا این است که واقعاً یک فرآیند باز است. اگر تمایل به مشارکت دارید، ممکن است: با یک مشارکت کننده صحبت کنید، به یک گروه بپیوندید، یک پیشنهاد ارسال کنید، یک اشکال را برطرف کنید.
ریشه توسعه جاوا فرآیند جامعه جاوا (JCP) است. این یک نوع سند بنیادی خودآگاه است که نحوه ایجاد تغییرات در پلتفرم را تعریف می کند و همچنین امکان اصلاح خود فرآیند را فراهم می کند. آخرین نسخه JCP 2.11 است که در سال ۲۰۱۹ تصویب شد.
JCP نحوه پیشنهاد، بررسی و تأیید ویژگیها و تغییرات جدید در جاوا (به عنوان مثال، مشخصات فنی) را رسمیت میدهد، از جمله نقشهای مختلفی که افراد میتوانند در آن زندگی کنند. این نقشها به ارائه مکانی برای جامعه کاربران جاوا کمک میکنند تا در مدیریت پلتفرم شرکت کنند.
JSR: درخواست مشخصات جاوا
برای پیشنهاد ویژگیها و تغییرات جدید، JCP اجازه ایجاد (“شروع”) درخواستهای مشخصات جاوا (JSR) را میدهد. این کار از طریق فرم استاندارد انجام می شود. برای دسترسی به فرم، باید برای یک حساب JCP رایگان ثبت نام کنید.
جای تعجب نیست که فرم یک چیز قابل توجه و تحمیل کننده است. به هر حال، مشخصات Java SE در حال حاضر ۸۵۲ صفحه دارد. – و این فقط نسخه استاندارد است!
با این وجود، این جایی است که فرآیند شروع می شود. از اینجا، تغییرات زیادی، کوچک یا غیرمستقیم، به فناوریهای جاوا که ما هر روز استفاده میکنیم راه پیدا میکنند.
وقتی یک JSR وارد می شود، وارد فرآیند بررسی JSR می شود. این یک فرآیند چند مرحلهای است که در آن تغییرات پیشنهادی در JSR به تدریج جدیتر مورد توجه قرار میگیرند، اصلاح میشوند، نگرانتر میشوند، و در نهایت پذیرفته میشوند یا به حالت خفتگی منتقل میشوند.
JEP: پیشنهاد افزایش JDK
فرآیند تولید یک JSR امیدوارکننده غیر ضروری است. چند راه وجود دارد که از طریق آنها ایده ها برای تبدیل شدن به JSR هدایت می شوند. برجسته ترین آنها JEP است. بسیاری از جاه طلبانه ترین تغییرات در جاوا (مانند lambdas) از JEP ها منشا می گیرند. در اینجا فهرست JEPهای غیرفعال است. این یک سند جالب برای مرور در یک لحظه بیکار است.
فرآیند ارائه یک JDK جدید به جهان خود یک JEP است. همچنین یک رویداد مهم جامعه است. پوشش از اینجا شروع میشود.
پروژه های JDK
وقتی تلاشی به اندازه کافی گسترده باشد، یک پروژه JDK در نظر گرفته می شود. این چتری برای طیف وسیعی از مصنوعات از اسناد گرفته تا کد است، که اغلب شامل یک یا چند JEP است. پروژه ها شامل یک یا چند گروه در حال کار است. گروه ها به مناطق مختلف پلت فرم جاوا اختصاص داده شده اند. یک پروژه معمولاً دارای چندین نفر فعال در نقش نویسنده است.
پروژه های عمده JDK در حال انجام
صفحه اصلی OpenJDK اشاره میکند که پروژههای فعال کلیدی کهربا، لوم ، پاناما، و والهالا. بیایید درک کنیم که هر کدام درباره چیست.
کهربا
Project Amber مجموعه ای از پروژه های کوچکتر است. در نظر گرفته شده است تا به این پروژه ها در فرآیند تبدیل شدن به ویژگی های واقعی کمک کند. بنابراین این یک نوع انکوباتور است.
Amber شامل دو پروژه فعال است، ۹ پروژه تحویل داده شده، سه پروژه در حالت تعلیق، و یکی که پس گرفته شده است.
- ۴۲۰: تطبیق الگو برای سوئیچ
- ۴۰۹: کلاسهای مهر و موم شده
- ۴۰۶: تطبیق الگو برای سوئیچ
- ۳۹۵: رکوردها
- ۳۹۴: تطبیق الگو برای نمونه
- ۳۷۸: بلوکهای متن
- ۳۶۱: تغییر عبارات
- ۳۲۳: نحو متغیر محلی برای پارامترهای Lambda
- ۲۸۶: استنتاج نوع متغیر محلی
- ۳۲۶: حرفهای رشتهای خام (به نفع بلوکهای متن حذف شده است؛ به اینجا برای توضیح)
میتوانید ببینید که بسیاری از ویژگیهای جالبتر در JDKهای اخیر – مانند رکوردها و بلوکهای متنی – بخشی از Amber بودند. Project Amber را برای پیشرفتهای نحوی آتی مانند تطبیق الگو برای سوئیچ تماشا کنید.
لوم
پروژه Loom احتمالاً بلندپروازانهترین و گستردهترین پروژه در بین پروژههای فعلی است. هدف Loom این است که کل مدل threading را برای JVM بازسازی کند. همانطور که گفتم، جاه طلب است.
Loom هنوز بسیار در حال پیشرفت است، با جزئیاتی که در حال تغییر شکل هستند. ایده اصلی یکسان باقی میماند: مدل رشتههای جاوای سنتی را که اساساً پوششی پیرامون فرآیندهای سیستمعامل بوده است، با چیزی سبکتر جایگزین کنید. معنای آن در عمل ایجاد یک لایه انتزاعی بین رشتهسازی هسته سیستمعامل و رشتهسازی JVM است. در آن لایه جدید، Loom میتواند بهینهسازیهای مختلفی را ارائه کند که فقط JVM میتواند در مورد آنها مذاکره کند.
به روشهای هوشمندانهتر برای اشتراکگذاری منابع در سراسر رشتهها فکر کنید. استفاده از بهینه سازی به نام “حذف تماس دنباله دار” در نقشه راه برای گنجاندن احتمالی است.
Loom همچنین به دنبال راههایی برای کنترل شفافتر و واضحتر جریان کد، از طریق ادامهها است. اینجاست که برنامه نویسان جاوا تغییرات نحوی را مشاهده خواهند کرد.
من درباره Loom با جزئیات بیشتر اینجا نوشتهام.
پاناما
پروژه پاناما بر بهبود توانایی JVM برای تعامل با APIهای غیر جاوا متمرکز است. این ممکن است شما را به یاد JNI (واسط بومی جاوا< /a>)، که در حال حاضر امکان فراخوانی کدهای “بومی” مانند C یا ++C کامپایل شده را فراهم می کند. هدف پروژه پاناما بهبود رویکرد JNI (به ویژه تجربه توسعهدهندگان) تا حدی است که JNI است جایگزین شد. اهداف عبارتند از حذف دیگ بخار، ارائه یک جایگزین ByteBuffer، و معرفی برخی از اجزای اساسی قابل استفاده.
به طور کلی، پاناما هدفش ایجاد چیزی است که به عنوان FFI شناخته می شود (واسط تابع خارجی) اصطلاحی تر را فراخوانی می کند.
یک نوع اسپین آف از پاناما Vector API است. این تلاش برای بهبود توانایی جاوا برای تعامل با پشتیبانی برداری CPU است. (کسی تصور می کند که فرصت بهبود در اینجا در حین غرق شدن در قسمت های داخلی سیستم عامل کشف شده است.)
والهالا
بیانیه ماموریت
پروژه والهالا این است که “مدل شی جاوا را با اشیاء ارزش و کاربر تقویت کند. -اولیه های تعریف شده، ترکیبی از انتزاعات برنامه نویسی شی گرا با ویژگی های عملکردی اولیه های ساده.”
به یک معنا، Valhalla در تلاش است تا انواع جاوا را یکپارچه کند، و این امکان را فراهم میکند تا به کلاسها و ابتداییها به روشی عمومی پرداخته شود. در واقع، شما قادر خواهید بود از ژنریک ها در موارد اولیه استفاده کنید.
کلاس مقدار کلاسی است که مانند یک کلاس معمولی اجازه ارجاع را می دهد، اما همه متغیرهای عضو را نهایی می کند. به عبارت دیگر، “کم عمق تغییر ناپذیر” است. یک کلاس مقدار با اصلاح کننده value
در مقابل کلمه کلیدی class
اعلان می شود. برخلاف انواع ابتدایی جدید تعریف شده توسط کاربر، کلاس های ارزش می توانند تهی باشند.
اولیه های تعریف شده توسط کاربر نمی توانند تهی باشند – این همان چیزی است که آنها را بدوی می کند. علاوه بر این، آنها نمی توانند هیچ مرجعی داشته باشند. در اصل، آنها یک گروه بندی سفارشی از بدوی هستند. اصلاحکننده کلاس primitive
برای اعلام آنها معرفی میشود.
بنابراین ما شاهد نوعی پل زدن بین انواع اولیه و سفارشی هستیم. بهعنوان بخشی از این تلاش، برنامههای جاوا میتوانند ژنریکها را هم برای کلاسها و هم برای کلاسهای ابتدایی به کار ببرند و از مزایای عملکرد آنها بهره ببرند.
با پروژه های JDK همگام باشید
Oracle جامعه جاوا را در مورد تغییرات در جریان قرار داده است، به خصوص که بسیاری از این تلاش ها نزدیک به اتمام هستند. اینجا و اینجا مکان های خوبی برای کسب اطلاعات بیشتر است.
پست های مرتبط
جاوا بهتر: پیشنهادات بهبود JDK توضیح داده شده است
جاوا بهتر: پیشنهادات بهبود JDK توضیح داده شده است
جاوا بهتر: پیشنهادات بهبود JDK توضیح داده شده است