ทุกอย่างเกี่ยวกับ Java12 – คุณลักษณะใหม่ ความปลอดภัย และคำสั่งนิพจน์สวิตช์ (ตัวอย่าง)

เผยแพร่แล้ว: 2019-04-07

Java 12 - ของใหม่ทั้งหมด - รายละเอียดโดย Crunchify

เมื่อวันที่ 19th March 2019 Java12 เปิดตัว อย่างที่เราทราบดีว่า Java12 เป็นส่วนหนึ่งของการรีลีสอย่างรวดเร็ว มันถูกปล่อยออกมาภายใน 6 เดือนหลังจาก Java11 ออกวางจำหน่าย

ในบทช่วยสอนนี้ เราจะพูดถึงการเปลี่ยนแปลงทั้งหมดและคุณสมบัติใหม่เกี่ยวกับ Java12

โดยส่วนตัวแล้วฉันเปลี่ยนมาใช้ Java12 สำหรับการพัฒนาทั้งหมดของฉัน แต่สำหรับวงจรการผลิต มันเร็วเกินไป เก็บบุ๊กมาร์กบทช่วยสอนนี้ไว้เมื่อคุณต้องการเปลี่ยนไปใช้ Java12 สำหรับโปรเจ็กต์ที่ใช้งานจริงทั้งหมดของคุณ

มีอะไรใหม่ใน Java12 คุณสมบัติใหม่ใน Java12:

มีคุณลักษณะที่เกี่ยวข้องกับเวิร์กโฟลว์ภายในและผู้ใช้ค่อนข้างน้อยใน Java12 ซึ่งมีการเปลี่ยนแปลง มาดูกันว่ามีอะไรอยู่ใน Java 12

Change-1) การยกเลิกการโหลดคลาสพร้อมกัน

Normal Garbage Collector มักจะยกเลิกการโหลดตัวแปรที่ไม่ได้ใช้ระหว่างรอบ GC และเรามักจะสังเกตเห็นการหยุด/หยุดชั่วคราวในกระบวนการ หรือ CPU เพิ่มขึ้นในช่วงเวลานั้น ปกติเราไม่ทันสังเกตว่า

ด้วย ZGC (Z Garbage Collector) - Java12 รองรับการขนถ่ายคลาสพร้อมกันด้วย เนื่องจากสิ่งนี้เกิดขึ้นระหว่างรอบ GC ปกติ จึงไม่มีการหยุดชั่วคราวและไม่มีการใช้หน่วยความจำเพิ่มเติมด้วย

โดยค่าเริ่มต้น ZGC จะเปิดใช้งานใน Java12 ไม่ต้องดำเนินการใดๆ อีกต่อไป

จะปิดการใช้งาน ZGC ได้อย่างไร?

  • เพียงเริ่มแอปพลิเคชันของคุณด้วยอาร์กิวเมนต์บรรทัดคำสั่ง JVM -XX:-ClassUnloading

การเปลี่ยนแปลง-2) รับรายละเอียดเพิ่มเติมเกี่ยวกับ JVM Crash

เมื่อมีข้อผิดพลาด OOM (หน่วยความจำไม่เพียงพอ) หรือ JVM ขัดข้อง โดยปกติ Java จะสร้างไฟล์ดัมพ์พร้อมรายละเอียดทั้งหมด

ด้วยพารามิเตอร์ JVM นี้ ไฟล์ดัมพ์จะถูกสร้างขึ้นภายใต้โฟลเดอร์ /tmp/crunchify/ บนข้อผิดพลาด OOM

มีการเพิ่มอีกหนึ่งตัวเลือกใน Java12:

ไฟล์บันทึกใหม่จะถูกสร้างขึ้นชื่อ hs_err<pid>.log พร้อมรายละเอียดทั้งหมดเกี่ยวกับความผิดพลาดของ JVM สิ่งนี้มีประโยชน์มากสำหรับสภาพแวดล้อมการผลิตของคุณ หากคุณพบข้อขัดข้องบ่อยครั้งและต้องการแก้ไขจุดบกพร่องเพิ่มเติม

โดยค่าเริ่มต้น จะถูกปิดใช้งาน แต่คุณสามารถเปิดใช้งานรายงานข้อขัดข้องที่ครอบคลุมได้โดยการเพิ่มพารามิเตอร์บรรทัดคำสั่ง JVM ด้านบน

Change-3) การจัดรูปแบบตัวเลขขนาดกะทัดรัด

java.text เพิ่มการรองรับรูปแบบตัวเลขขนาดกะทัดรัด 100o สามารถถูกกล่าวถึงเป็น 1K และ 100000 สามารถกล่าวถึงเป็น 100K

ผลลัพธ์:

Change-4) การปรับปรุงความปลอดภัยของ Java

การเปลี่ยนแปลง security-libs/java.security :

  • ไม่อนุญาตและอนุญาตตัวเลือกสำหรับ java.security.manager
    • ถ้า disallow แล้วระบบ ไม่สามารถใช้ setSecurityManager เพื่อตั้งค่าตัวจัดการความปลอดภัย
  • -groupname ตัวเลือกที่เพิ่มไปยัง keytool การสร้างคู่คีย์
    • ผู้ใช้สามารถระบุกลุ่มที่มีชื่อเมื่อสร้างคู่คีย์
  • การปรับแต่งการสร้าง PKCS12 keystore
    • รวมถึงอัลกอริทึมและพารามิเตอร์สำหรับ
      • การป้องกันกุญแจ
      • การคุ้มครองใบรับรอง
      • MacData
  • เหตุการณ์ความปลอดภัย JFR ใหม่
    • JFR คืออะไร (Java Flight Recorder)
    • เพิ่มกิจกรรม JFR ใหม่ 4 รายการ
      • jdk.X509ใบรับรอง
      • jdk.X509การตรวจสอบความถูกต้อง
      • jdk.TLS จับมือ
      • jdk.SecurityPropertyModification

เปลี่ยน-5) JEP 325: เปลี่ยนนิพจน์

JEP 325 บทช่วยสอนการเปลี่ยนนิพจน์โดย Crunchify

รองรับคำสั่ง Enhanced Switch statement ใน Java12 แล้ว

  • case L -> syntax ที่นี่ไม่จำเป็นต้องหยุดพัก
  • การใช้นิพจน์สวิตช์
    • นี่คือคำสั่งสวิตช์แบบง่าย
    • หากป้ายกำกับตรงกัน นิพจน์ทางด้านขวาของป้ายกำกับลูกศรเท่านั้นที่จะถูกดำเนินการ
    • ไม่จำเป็นต้องมีคำสั่งแบ่ง

CrunchifyJava12SwitchExample.java

ผลลัพธ์ของ IntelliJ IDEA:

ผลการสอนคำสั่งสวิตช์ Java 12 - Crunchify

เปลี่ยน-6) ค่าคงที่ JVM API

java.lang.invoke.constant : อย่างที่คุณอาจทราบ คลาส Java มีพูลคงที่ซึ่งเก็บตัวถูกดำเนินการทั้งหมดที่รันไทม์

Java12 เพิ่ม API สำหรับการเรียกใช้ค่าคงที่ที่รันไทม์

คุณสมบัติที่ถูกลบออกจาก Java12:

ลบคุณสมบัติออกจาก Java12 - Crunchify Tips

คุณลักษณะที่เลิกใช้จาก Java12:

คุณลักษณะที่เลิกใช้จาก Java12 - Crunchify Tips

แจ้งให้เราทราบหากคุณมีบทช่วยสอนที่มีประโยชน์เกี่ยวกับ Java12 ซึ่งคุณต้องการรวมไว้ที่นี่