7 पॉइंट द्वारा GN⁺ 2025-03-19 | 4 टिप्पणियां | WhatsApp पर शेयर करें
  • Oracle ने Java 24 (JDK 24) की आधिकारिक घोषणा की है
  • JDK 24, JCP के JSR 399 में निर्दिष्ट Java SE Platform version 24 का reference implementation है, और इसे JDK release process (JEP 3) के माध्यम से जारी किया गया है

[JEP के अनुसार सारांश]

  • JEP 404: Generational Shenandoah (प्रायोगिक)

    • Shenandoah GC में generational collection सपोर्ट जोड़कर performance में सुधार
  • JEP 450: Compact Object Headers (प्रायोगिक)

    • HotSpot JVM में object header का आकार 96~128-bit से 64-bit तक घटाया गया
    • इससे heap size कम होने, deployment density बढ़ने और data locality बेहतर होने की उम्मीद
  • JEP 472: Prepare to Restrict the Use of JNI

    • JNI (Java Native Interface) के उपयोग पर warning जोड़ी गई
    • Foreign Function & Memory (FFM) API में भी एकसमान warning दी जाती है
    • भविष्य में JNI और FFM API के उपयोग पर प्रतिबंध की तैयारी के लिए warning प्रदान की गई
    • ज़रूरत होने पर application में interface को वैकल्पिक रूप से enable किया जा सकता है
  • JEP 475: Late Barrier Expansion for G1

    • G1 garbage collector के Barrier implementation को सरल बनाया गया
    • C2 JIT compiler के शुरुआती चरण से बाद के चरण में Barrier expansion का समय समायोजित किया गया
  • JEP 478: Key Derivation Function API (preview)

    • cryptographic key derivation के लिए Key Derivation Function (KDF) API पेश किया गया
    • secret key और अन्य data के आधार पर अतिरिक्त keys derive की जा सकती हैं
  • JEP 483: Ahead-of-Time Class Loading & Linking

    • HotSpot JVM startup के समय application classes तुरंत उपयोग के लिए उपलब्ध
    • एक बार execution में load और link की गई स्थिति cache में सहेजकर बाद की runs में तेज startup संभव
  • JEP 484: Class-File API

    • Java class files के parsing, generation और transformation के लिए standard API उपलब्ध
  • JEP 485: Stream Gatherers

    • Stream API में user-defined intermediate operations का समर्थन
    • ऐसे data transformations संभव जो मौजूदा intermediate operations से करना कठिन था
  • JEP 486: Permanently Disable the Security Manager

    • Security Manager, client-side code में मुख्य security mechanism नहीं रहा
    • Java 17 (JEP 411) में इसे हटाने की दिशा में disable किया गया था
    • Security Manager API को भविष्य की release में पूरी तरह हटाया जाएगा
  • JEP 487: Scoped Values (चौथा preview)

    • thread के भीतर immutable data को child threads के साथ साझा करने के लिए Scoped Values पेश किए गए
    • thread-local variables की तुलना में memory और time cost कम हो सकती है
    • virtual threads और structured concurrency के साथ उपयोग पर performance बेहतर होने की उम्मीद
  • JEP 488: Primitive Types in Patterns, instanceof, and switch (दूसरा preview)

    • pattern matching में primitive types का समर्थन
    • instanceof और switch में सभी primitive types का उपयोग संभव
  • JEP 489: Vector API (नौवां incubator)

    • vector operations के लिए API पेश किया गया
    • vector instructions में compile होकर scalar operations की तुलना में बेहतर performance की उम्मीद
  • JEP 490: ZGC: Remove the Non-Generational Mode

    • ZGC का non-generational mode हटाकर generational mode को default बनाया गया
  • JEP 491: Synchronize Virtual Threads without Pinning

    • synchronized statements में virtual threads को platform thread छोड़ने योग्य बनाया गया
    • virtual threads को platform threads पर pin होने से रोककर performance और scalability में सुधार
  • JEP 492: Flexible Constructor Bodies (तीसरा preview)

    • explicit constructor invocation (super(..), this(..)) से पहले statements की अनुमति
    • instance के पूरी तरह initialize होने से पहले fields initialize की जा सकती हैं
  • JEP 494: Module Import Declarations (दूसरा preview)

    • modules द्वारा export किए गए packages को सरल तरीके से import करने के लिए declaration जोड़ा गया
    • modular libraries के reuse को सरल बनाता है
  • JEP 495: Simple Source Files and Instance Main Methods (चौथा preview)

    • शुरुआती उपयोगकर्ताओं के लिए आसान simple source files और methods का समर्थन
    • जटिल code के बिना सरल program लिखना संभव
  • JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism

    • quantum-resistant Module-Lattice-Based Key Encapsulation Mechanism (ML-KEM) पेश किया गया
    • symmetric key security को मजबूत करता है और quantum computing attacks की तैयारी करता है
  • JEP 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm

    • quantum-resistant Module-Lattice-Based Digital Signature Algorithm (ML-DSA) पेश किया गया
    • data tampering रोकने और signer authentication को मजबूत करने में मदद
    • भविष्य के quantum computing attacks के खिलाफ तैयारी
  • JEP 498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe

    • sun.misc.Unsafe के memory-access methods के उपयोग पर warning दी जाती है
    • VarHandle API और FFM API पर migration की सिफारिश
  • JEP 499: Structured Concurrency (चौथा preview)

    • संबंधित task groups को एक single work unit की तरह संभालने के लिए structured concurrency पेश की गई
    • error handling और cancellation को सरल बनाती है, साथ ही reliability और visibility में सुधार करती है

[JDK 24 की नई सुविधाओं का सारांश]

  • Configurable New Session Tickets Count for TLSv1.3

    • नया system property jdk.tls.server.newSessionTicket जोड़ा गया
    • JSSE server में TLSv1.3 resume tickets की संख्या सेट की जा सकती है (0~10 की सीमा)
    • default value 1 है
    • command example:
      java -Djdk.tls.server.newSessionTicket=2  
      
  • Mechanism to Disable TLS Cipher Suites by Pattern Matching

    • java.security config file में jdk.tls.disabledAlgorithms property के जरिए TLS cipher suites को disable किया जा सकता है
    • pattern matching का समर्थन (_ wildcard इस्तेमाल किया जा सकता है)
    • उदाहरण: "TLS_RSA_*" से TLS_RSA से शुरू होने वाले सभी cipher suites disable हो जाएंगे
  • New Option to Extract a JAR File to a Specific Directory Using the jar Tool

    • jar tool में नए --dir और -C options जोड़े गए
    • JAR file की सामग्री को किसी specific directory में extract किया जा सकता है
    • उदाहरण:
      jar -xf foo.jar -C /tmp/bar/  
      jar --extract --file foo.jar --dir /tmp/bar/  
      
  • New Reader.of(CharSequence) Method

    • नया static factory method java.io.Reader.of(CharSequence) जोड़ा गया
    • String, StringBuilder आदि से efficient reading का समर्थन
  • New Method Process.waitFor(Duration)

    • java.lang.Process#waitFor(Duration) method जोड़ा गया
    • मौजूदा waitFor() में unit सेटिंग से जुड़ी उलझन को कम करता है
  • Support for Unicode 16.0

    • Unicode 16.0 का समर्थन जोड़ा गया
    • कुल 154,998 characters और 7 नई scripts जोड़ी गईं
      • Garay (पश्चिम अफ्रीका)
      • Gurung Khema, Kirat Rai, Ol Onal, Sunuwar (भारत और नेपाल)
      • Todhri (अल्बानिया)
      • Tulu-Tigalari (दक्षिण-पश्चिम भारत)
  • New JAR Command Option to Not Overwrite Existing Files

    • jar tool में --keep-old-files और -k options जोड़े गए
    • मौजूदा files को overwrite होने से रोका जा सकता है
    • उदाहरण:
      jar xkf foo.jar  
      jar --extract --keep-old-files --file foo.jar  
      
  • New MXBean to Monitor and Manage Virtual Thread Scheduler

    • jdk.management.VirtualThreadSchedulerMXBean interface जोड़ा गया
    • virtual thread scheduler की स्थिति और parallelism की निगरानी संभव
    • scheduler के target parallelism को dynamically बदला जा सकता है
  • New jcmd Commands Thread.vthread_scheduler and Thread.vthread_pollers

    • jcmd tool में नए commands जोड़े गए
      • Thread.vthread_scheduler: thread scheduler की स्थिति दिखाता है
      • Thread.vthread_pollers: I/O pollers की स्थिति दिखाता है
  • Support for Including Security Properties Files

    • java.security config file में दूसरी property files शामिल की जा सकती हैं
    • include <file path> का उपयोग करें
    • include keyword को property name के रूप में इस्तेमाल नहीं किया जा सकता
  • Document Standard Hash and MGF Algorithms for RSASSA-PSS Signature

    • RSASSA-PSS signature में उपयोग होने वाले standard hash और message generation functions का documentation जोड़ा गया
  • SunPKCS11 Provider Is Enhanced to Use CKM_AES_CTS Mechanism

    • SunPKCS11 provider में AES/CTS transformation का समर्थन जोड़ा गया
    • नई config property cipherTextStealingVariant जोड़ी गई (CS1, CS2, CS3)
    • NSS के लिए default value CS1 है
  • New Summary Page for External Specifications

    • Java SE और JDK API द्वारा संदर्भित external specifications को एक साथ दिखाने वाला summary page जोड़ा गया
  • jpackage Supports WiX Toolset v4 and v5 on Windows

    • jpackage में WiX Toolset v4 और v5 का समर्थन जोड़ा गया
    • latest installer version अपने आप चुना जाता है
    • WiX v3 format के custom resources को v4 format में अपने आप convert किया जाता है
  • Add W3C DTDs and XSDs to the JDK Built-in Catalog

    • JDK के built-in XML catalog में W3C के DTDs और XSDs जोड़े गए
    • network के बिना local loading संभव
    • जोड़ी गई items:
      • xml namespace
      • XML Schema Part 1 & 2
      • XHTML 1.0 & 1.1
      • W3C XML specification DTD

4 टिप्पणियां

 
clickin 2025-03-20

Project Valhalla काफ़ी लंबे समय से डेवलपमेंट में है, उम्मीद है कि इसका अच्छा नतीजा देखने को मिलेगा.
व्यक्तिगत रूप से, मुझे उम्मीद है कि value class की flat संरचना pointer references को कम करेगी, जिससे memory access speed में काफ़ी फ़ायदा मिलेगा.

 
tsboard 2025-03-20

लगता है कि इस पर Kotlin का (सकारात्मक) असर काफी पड़ा है। इन दिनों Kotlin भाषा का इस्तेमाल करके मैं सच में बहुत संतुष्ट हूँ, लेकिन इसकी मूलधारा कहे जा सकने वाली Java का भी समर्थन करता हूँ।

 
carnoxen 2025-03-19

Structured Concurrency और Scoped Value को लेकर उम्मीदें बहुत ज़्यादा हैं।

 
GN⁺ 2025-03-19
Hacker News की राय
  • SecurityManager चुपचाप हटा दिया गया। पहले Java के वैकल्पिक पाठ्यक्रम पढ़ाने वाले एक प्रोफेसर अक्सर SecurityManager के फ़ायदों पर ज़ोर देते थे। उस समय मैं काफी संशय में था, और अब यह देखकर संतोष है कि मेरा संशय सही साबित हुआ

  • मैं structural concurrency का preview खत्म होते देखना चाहता हूँ। इससे Java को golang की तुलना में concurrency programming की सहजता में जो आख़िरी अंतर है, उसे कम करने में मदद मिलेगी। Go channels और wait groups को आसान बनाता है। structural concurrency इन बुनियादी तत्वों का उपयोग करके ऊँचे स्तर के कामों को लिखना और समझना आसान बनाती है

  • virtual thread pinning का खत्म होना बहुत बड़ा फ़ायदा है। अब virtual threads को लगभग बिना किसी सीमा के इस्तेमाल किया जा सकता है

  • यह देखकर अच्छा लगता है कि Streams अब भी पसंद किए जा रहे हैं। हमारी कंपनी में fizzbuzz स्टाइल के इंटरव्यू बहुत होते हैं, और जो लोग Java चुनकर streams का इस्तेमाल करते हैं, वे आम तौर पर पास हो जाते हैं। यह भाषा की ergonomics, सहजता और abstraction की ताकत दिखाता है। Java streams, Ruby की functional style operation chains जितनी ताकतवर हैं, लेकिन वास्तव में अच्छा performance भी देती हैं

  • नई सुविधाएँ: OpenJDK 24 project link

  • ARM32 और Risc-V रिलीज़ जल्द ही यहाँ पर उपलब्ध होंगी

  • Raspberry 2 और Vision Five 2 ऐसे बहुत future-oriented hardware हैं जिन्हें Oracle और OpenJDK नज़रअंदाज़ कर रहे हैं

  • OpenJDK और आधिकारिक Oracle JDK रिलीज़ के उपयोग के बीच licensing differences को लेकर सवाल

  • हैरानी की बात है कि JEP 491 का अभी तक ज़िक्र नहीं हुआ। यह सुनिश्चित करता है कि "synchronized" keyword virtual threads को खराब न करे। virtual threads पर मौजूदा code चलाने के लिए यह बड़ा फ़ायदा है

  • पिछले कुछ वर्षों में Java के version progression को देखना दिलचस्प रहा है। Java 9, 10, 11 LTS के बाद भी मैं अब तक Java 8 इस्तेमाल कर रहा हूँ। करने के लिए बहुत कुछ है

  • Java और Kotlin के नवीनतम versions की तुलना करें तो Java लगातार बेहतर हो रहा है और Kotlin की कुछ विशेषताएँ अपना रहा है, लेकिन Kotlin भी अपनी तरफ़ से लगातार सुधार कर रहा है

  • GraalVM भी Java 24 के लिए उपलब्ध है। इसमें कई अच्छे फीचर्स हैं

  • virtual threads के लिए pinning आखिरकार खत्म हो गई