انتشار جاوا SE 15

پس از شش ماه توسعه، اوراکل منتشر شد سکو جاوا SE 15 (پلتفرم جاوا، نسخه استاندارد 15)، پروژه منبع باز OpenJDK به عنوان پیاده سازی مرجع استفاده می شود. Java SE 15 سازگاری با نسخه های قبلی پلتفرم جاوا را حفظ می کند؛ تمام پروژه های جاوا که قبلاً نوشته شده بودند، در صورت اجرا تحت نسخه جدید بدون تغییر کار می کنند. ساخت‌های آماده برای نصب جاوا SE 15 (JDK، JRE و سرور JRE) آماده شده برای لینوکس (x86_64)، ویندوز و macOS. پیاده سازی مرجع توسعه یافته توسط پروژه OpenJDK جاوا 15 تحت مجوز GPLv2 کاملاً منبع باز است، با استثناهای GNU ClassPath که امکان پیوند پویا با محصولات تجاری را فراهم می کند.

Java SE 15 به عنوان نسخه پشتیبانی عمومی طبقه بندی می شود و تا نسخه بعدی به دریافت به روز رسانی ها ادامه خواهد داد. شاخه پشتیبانی طولانی مدت (LTS) باید جاوا SE 11 باشد که تا سال 2026 به دریافت به روز رسانی ادامه خواهد داد. شاخه قبلی LTS جاوا 8 تا دسامبر 2020 پشتیبانی می شود. نسخه بعدی LTS برای سپتامبر 2021 برنامه ریزی شده است. یادآوری می کنیم که با شروع انتشار جاوا 10، این پروژه به یک فرآیند توسعه جدید تبدیل شد که به معنای چرخه کوتاه تری برای شکل گیری نسخه های جدید است. عملکرد جدید اکنون در یک شاخه اصلی که دائماً به‌روز می‌شود، توسعه می‌یابد که شامل تغییرات آماده است و شاخه‌ها هر شش ماه یک‌بار برای تثبیت نسخه‌های جدید منشعب می‌شوند.

از نوآوری ها جاوا 15 می توان علامت:

  • ساخته شده در پشتیبانی از الگوریتم ایجاد امضای دیجیتال EdDSA (Edwards-Curve Digital Signature Algorithm) RFC 8032). پیاده‌سازی پیشنهادی EdDSA به پلتفرم‌های سخت‌افزاری بستگی ندارد، از حملات کانال جانبی محافظت می‌شود (زمان ثابت همه محاسبات تضمین می‌شود) و در عملکرد سریع‌تر از پیاده‌سازی ECDSA موجود که به زبان C نوشته شده است، با همان سطح حفاظت است. به عنوان مثال، EdDSA با استفاده از یک منحنی بیضوی با یک کلید 126 بیتی، عملکرد مشابه ECDSA با منحنی بیضوی secp256r1 و یک کلید 128 بیتی را نشان می دهد.
  • اضافه پشتیبانی آزمایشی برای کلاس‌ها و رابط‌های مهر و موم شده، که نمی‌توانند توسط کلاس‌ها و رابط‌های دیگر برای ارث بردن، گسترش یا لغو پیاده‌سازی استفاده شوند. کلاس‌های مهر و موم شده نیز بر اساس فهرست‌بندی صریح زیر کلاس‌های مجاز برای گسترش، روشی شفاف‌تر برای محدود کردن استفاده از سوپرکلاس نسبت به اصلاح‌کننده‌های دسترسی ارائه می‌کنند.

    بسته com.example.geometry;

    شکل کلاس مهر و موم شده عمومی
    مجوز com.example.polar.Circle،
    com.example.quad.Rectangle،
    com.example.quad.simple.Square {…}

  • اضافه پشتیبانی از کلاس های مخفی که نمی توانند مستقیماً توسط بایت کد کلاس های دیگر استفاده شوند. هدف اصلی کلاس‌های مخفی استفاده در چارچوب‌هایی است که به صورت پویا کلاس‌ها را در زمان اجرا تولید می‌کنند و از آنها به‌طور غیرمستقیم استفاده می‌کنند. بازتاب. چنین کلاس هایی معمولاً چرخه عمر محدودی دارند، بنابراین حفظ آنها برای دسترسی از کلاس های تولید شده به صورت ایستا توجیه پذیر نیست و تنها منجر به افزایش مصرف حافظه می شود. کلاس های مخفی همچنین نیاز به API غیر استاندارد sun.misc.Unsafe::defineAnonymousClass را که برای حذف در آینده برنامه ریزی شده است را برطرف می کند.
  • زباله جمع کن ZGC (Z Garbage Collector) تثبیت شده است و به عنوان آماده برای استفاده گسترده شناخته شده است. ZGC در حالت غیرفعال عمل می‌کند، تأخیر ناشی از جمع‌آوری زباله را تا حد امکان به حداقل می‌رساند (زمان توقف در هنگام استفاده از ZGC از 10 میلی‌ثانیه تجاوز نمی‌کند) و می‌تواند با انبوه‌های کوچک و بزرگ، از چند صد مگابایت تا چندین ترابایت کار کند.
  • تثبیت شده و برای استفاده عمومی آماده است
    زباله روب شناندو، کار با حداقل مکث (مکث کم-زمان جمع آوری زباله). Shenandoah توسط Red Hat توسعه داده شد و به دلیل استفاده از الگوریتمی که با اجرای پاکسازی موازی با اجرای برنامه های جاوا، زمان توقف در جمع آوری زباله را کاهش می دهد، قابل توجه است. اندازه تاخیرهای معرفی شده توسط زباله جمع کن قابل پیش بینی است و به اندازه پشته بستگی ندارد، یعنی. برای پشته های 200 مگابایت و 200 گیگابایت تاخیرها یکسان خواهد بود (بیرون نیای فراتر از 50 میلی ثانیه و معمولاً در 10 میلی ثانیه)؛

  • پشتیبانی تثبیت شده و به زبان معرفی شده است بلوک های متنی - شکل جدیدی از لفظ رشته ای که به شما امکان می دهد داده های متنی چند خطی را در کد منبع بدون استفاده از فرار از کاراکتر و حفظ قالب بندی متن اصلی در بلوک قرار دهید. بلوک با سه نقل قول دوتایی قاب شده است.

    مثلا به جای کد

    رشته html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"جاوا 1 اینجاست!\" » +
    "\n\t" + " » +
    "\n" + " "؛

    می توانید مشخص کنید:

    رشته html = """


    »جاوا 1\
    اینجاست!

    """؛

  • بازطراحی شد API Legacy DatagramSocket. پیاده سازی های قدیمی java.net.DatagramSocket و java.net.MulticastSocket با یک پیاده سازی مدرن جایگزین شده اند که اشکال زدایی و نگهداری آن آسان تر است و همچنین با جریان های مجازی توسعه یافته در پروژه سازگار است. Loom. در صورت ناسازگاری احتمالی با کد موجود، پیاده سازی قدیمی حذف نشده است و می توان با استفاده از گزینه jdk.net.usePlainDatagramSocketImpl آن را فعال کرد.
  • اجرای آزمایشی دوم پیشنهاد شده است تطبیق الگو در عملگر "instanceof"، که به شما امکان می دهد بلافاصله یک متغیر محلی برای دسترسی به مقدار بررسی شده تعریف کنید. برای مثال، می‌توانید بلافاصله بنویسید: «if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}» بدون اینکه صریحاً «String s = (String) obj» را تعریف کنید.

    این بود:

    if (obj instanceof Group) {
    گروه گروه = (گروه)obj;
    var entries = group.getEntries();
    }

    اکنون می توانید بدون تعریف "گروه گروه = (گروه) obj" انجام دهید:

    if (obj instanceof group group) {
    var entries = group.getEntries();
    }

  • پیشنهادی اجرای آزمایشی دوم کلمه کلیدی "رکورد"، که فرم فشرده ای را برای تعریف کلاس ها فراهم می کند و به شما امکان می دهد از تعریف صریح متدهای سطح پایین مختلف مانند ()quals()، hashCode() و ()toString در مواردی که داده ها فقط در فیلدهایی ذخیره می شوند که رفتار آنها تغییر نمی کند، اجتناب کنید. هنگامی که یک کلاس از پیاده سازی های استاندارد متدهای ()quals()، hashCode() و toString() استفاده می کند، می تواند بدون تعریف صریح آنها این کار را انجام دهد:

    سابقه عمومی تراکنش بانکی (تاریخ محلی،
    مقدار دو برابر
    شرح رشته) {}

    این اعلان به طور خودکار پیاده سازی های متدهای ()quals()، hashCode() و toString() را علاوه بر متدهای سازنده و دریافت کننده اضافه می کند.

  • پیشنهاد شده پیش‌نمایش دوم از Foreign-Memory Access API که به برنامه‌های جاوا اجازه می‌دهد تا با دستکاری انتزاع‌های MemorySegment، MemoryAddress و MemoryLayout به طور ایمن و کارآمد به مناطق حافظه خارج از پشته جاوا دسترسی داشته باشند.
  • معلول و تکنیک بهینه‌سازی Biased Locking را که در HotSpot JVM برای کاهش سربار قفل استفاده می‌شد، منسوخ کرد. این تکنیک ارتباط خود را با سیستم‌هایی با دستورالعمل‌های اتمی ارائه‌شده توسط CPU‌های مدرن از دست داده است و به دلیل پیچیدگی‌اش سخت‌تر از آن نگهداری می‌شود.
  • اعلام کرد مکانیسم منسوخ شده فعال سازی RMI، که در نسخه بعدی حذف خواهد شد. اشاره شده است که RMI Activation قدیمی است، به دسته یک گزینه در جاوا 8 تنزل داده شده است و تقریباً هرگز در عمل مدرن استفاده نمی شود.
  • حذف شده موتور جاوا اسکریپت کرگدن، که در جاوا SE 11 منسوخ شده بود.
  • حذف شده پورت برای پردازنده های Solaris OS و SPARC (Solaris/SPARC، Solaris/x64 و Linux/SPARC). حذف این پورت ها به جامعه این امکان را می دهد که توسعه ویژگی های جدید OpenJDK را بدون اتلاف وقت برای حفظ ویژگی های خاص Solaris و SPARC سرعت بخشد.

منبع: opennet.ru

اضافه کردن نظر