การเปิดตัวคุณลักษณะ Java 9 และ Java 9 ถือเป็นก้าวสำคัญสำหรับระบบนิเวศของ Javaการติดตามข่าวสารใหม่ ๆ เป็นสิ่งสำคัญในการติดตามเทคโนโลยีและทำความเข้าใจถึงความจำเป็นเบื้องหลังสิ่งที่ได้รับการแนะนำจะช่วยให้คุณใกล้ชิดกับ .เฟรมเวิร์กแบบโมดูลาร์ที่พัฒนาภายใต้ Project Jigsaw จะเป็นส่วนหนึ่งของ Java SE รุ่นนี้และคุณสมบัติหลัก ๆ ในนี้คือ JShell (เครื่องมือ REPL) การเปลี่ยนแปลง API ที่สำคัญและการเปลี่ยนแปลงระดับ JVM เพื่อปรับปรุงประสิทธิภาพและความสามารถในการดีบั๊กของ JVM
ก่อนที่เราจะเปิดเผยรายละเอียดคุณสมบัติ Java 9 ให้เราดู Java เวอร์ชันก่อนหน้าและดูว่ามีข้อบกพร่องอะไรบ้างและ Java 9 ช่วยเอาชนะความผิดปกติเหล่านั้นได้อย่างไร: -
- แพลตฟอร์ม Java Standard Edition และ JDK ไม่สามารถนำทางได้สำหรับอุปกรณ์คอมพิวเตอร์ขนาดเล็ก
- ไม่มีการรักษาความปลอดภัยโดยรวมและการบำรุงรักษาของ JDK
- ไม่มีการปรับปรุงประสิทธิภาพของแอปพลิเคชันโดยรวม
- เป็นเรื่องยากสำหรับนักพัฒนา Java ในการสร้างและรักษาไลบรารีโค้ดและแอปพลิเคชันขนาดใหญ่สำหรับทั้งแพลตฟอร์ม Java SE และ EE
วิธีจบโปรแกรม java
ในบล็อกโพสต์นี้ฉันจะแบ่งประเภทคุณสมบัติของ Java 9 ในลักษณะต่อไปนี้:
- อัปเดตประมวลผล API ใน Java 9
- ไคลเอ็นต์ HTTP / 2 ใน Java 9
- Java Shell Scripting (Read-Eval-Print-Loop) ใน Java 9
- คุณสมบัติไฟล์ JAR แบบหลายรีลีสใน Java 9
- คุณลักษณะการอัปเดตพร้อมกันเพิ่มเติมใน Java 9
- จิ๊กซอว์โครงการใน Java 9
มีอะไรใหม่ใน Java 9?
ฉันได้เลือกคุณสมบัติใหม่ของ Java 9 ซึ่งฉันรู้สึกว่าควรค่าแก่การรู้ มาดูกันว่าคุณสมบัติเหล่านี้มีอะไรบ้าง: -
อัปเดตประมวลผล API ใน Java 9
Process API ของ Java นั้นค่อนข้างดั้งเดิมด้วยการสนับสนุนเพื่อเปิดตัวกระบวนการใหม่เท่านั้นเปลี่ยนเส้นทางผลลัพธ์ของกระบวนการและสตรีมข้อผิดพลาด ในรุ่นนี้การอัปเดตสำหรับ Process API เปิดใช้งานสิ่งต่อไปนี้:
- รับ PID ของกระบวนการ JVM ปัจจุบันและกระบวนการอื่น ๆ ที่สร้างโดย JVM
- แจกแจงกระบวนการที่ทำงานในระบบเพื่อรับข้อมูลเช่น PID ชื่อและการใช้ทรัพยากร
- การจัดการแผนผังกระบวนการ
- การจัดการกระบวนการย่อย
มาดูโค้ดตัวอย่างซึ่งพิมพ์ PID ปัจจุบันรวมทั้งข้อมูลกระบวนการปัจจุบัน:
คลาสสาธารณะ NewFeatures {public static void main (String [] args) {ProcessHandle currentProcess = ProcessHandle.current () System.out.println ('PID:' + currentProcess.getPid ()) ProcessHandle.info currentProcessInfo = currentProcess.info () System.out.println ('ข้อมูล:' + currentProcessInfo)}
ไคลเอ็นต์ HTTP / 2 ใน Java 9
คุณลักษณะ Java 9 นี้คาดว่าจะเปลี่ยนแปลงในรุ่นต่อ ๆ ไปและอาจถูกลบออกทั้งหมด
ก่อนหน้านี้ นักพัฒนามักใช้ไลบรารีของบุคคลที่สามเช่น Apache HTTP, Jersey เป็นต้น นอกจากนี้ HTTP API ของ Java ยังมีข้อกำหนดของ HTTP / 1.1 มาก่อนและเป็นแบบซิงโครนัสและดูแลรักษายาก ข้อ จำกัด เหล่านี้เรียกร้องให้ต้องเพิ่ม API ใหม่ HTTP ไคลเอ็นต์ API ใหม่มีดังต่อไปนี้:
- API ที่เรียบง่ายและรัดกุมเพื่อจัดการกับคำขอ HTTP ส่วนใหญ่
- รองรับข้อกำหนด HTTP / 2
- ประสิทธิภาพที่ดีขึ้น
- ความปลอดภัยที่ดีขึ้น
- การปรับปรุงเพิ่มเติมเล็กน้อย
มาดูโค้ดตัวอย่างเพื่อสร้างคำขอ HTTP GET โดยใช้ API ใหม่ ด้านล่างนี้คือข้อกำหนดของโมดูลที่กำหนดไว้ในไฟล์ module-info.java:
คุณสมบัติใหม่ของโมดูล {ต้องใช้ jdk.incubator.httpclient}
รหัสต่อไปนี้ใช้ HTTP Client API ซึ่งเป็นส่วนหนึ่งของโมดูล jdk.incubator.httpclient:
นำเข้า jdk.incubator.http. * import java.net.URI คลาสสาธารณะ Http2Feature {public static void main (String [] args) พ่น Exception {HttpClient client = HttpClient.newBuilder (). build () HttpRequest request = HttpRequest .newBuilder ( URI ใหม่ (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String response = client.send (request, HttpResponse.BodyHandler.asString ()) System.out.println ('รหัสสถานะ:' + response.statusCode ())
System.out.println ('Response Body:' + response.body ())}}}
Java Shell Scripting (Read-Eval-Print-Loop) ใน Java 9
คุณต้องเคยเห็นภาษาต่างๆเช่น Ruby, Scala, Groovy, Clojure และอื่น ๆ ที่จัดส่งด้วยเครื่องมือซึ่งมักเรียกว่า REPL ( อ่าน - ประเมิน - พิมพ์ - วนซ้ำ ). เครื่องมือ REPL นี้มีประโยชน์อย่างยิ่งในการทดลองใช้คุณสมบัติภาษา ตัวอย่างเช่นใน Scala เราสามารถเขียนโปรแกรม Hello World อย่างง่ายเป็นไฟล์ scala> println (“ Hello World”)
ข้อดีบางประการของ JShell REPL มีรายละเอียดดังนี้:
- นักพัฒนาที่มีประสบการณ์สามารถสร้างต้นแบบและทดลองได้อย่างรวดเร็วก่อนที่จะนำไปใช้ในฐานรหัสหลักของตน
- นักพัฒนา Java สามารถอวด REPL ได้แล้ว
มาเรียกใช้คำสั่ง JShell ดังที่แสดงในภาพต่อไปนี้:
วิธีการติดตั้ง hadoop บน linux
คุณสมบัติไฟล์ JAR แบบหลายรีลีสใน Java 9
ณ ตอนนี้ไฟล์ JAR สามารถมีคลาสที่สามารถรันบนเวอร์ชัน Java ที่คอมไพล์ไว้เท่านั้น ในการใช้ประโยชน์จากคุณสมบัติใหม่ของแพลตฟอร์ม Java ในเวอร์ชันที่ใหม่กว่านักพัฒนาไลบรารีต้องเปิดตัวไลบรารีเวอร์ชันที่ใหม่กว่า เร็ว ๆ นี้จะมีไลบรารีหลายเวอร์ชันที่ได้รับการดูแลโดยนักพัฒนาซึ่งอาจเป็นฝันร้าย เพื่อเอาชนะข้อ จำกัด นี้คุณลักษณะ Java 9 เหล่านี้ของไฟล์ JAR แบบหลายรีลีสช่วยให้นักพัฒนาสามารถสร้างไฟล์ JAR ด้วยไฟล์คลาสเวอร์ชันต่างๆสำหรับเวอร์ชัน Java ที่แตกต่างกันตัวอย่างต่อไปนี้ทำให้ชัดเจนยิ่งขึ้น
นี่คือภาพประกอบของไฟล์ JAR ปัจจุบัน:
โถราก - ห้องเรียน - บีคลาส - คลาส C.
ลักษณะของไฟล์ JAR แบบหลายรุ่นมีดังนี้
โถราก - ห้องเรียน - บีคลาส - คลาส C. - META-INF - รุ่น - 9 - ห้องเรียน - 10 - บีคลาส
ในภาพประกอบก่อนหน้านี้ไฟล์ JAR สนับสนุนไฟล์คลาสสำหรับ Java สองเวอร์ชัน - 9 และ 10
ดังนั้นเมื่อ JAR ก่อนหน้านี้ถูกเรียกใช้บน Java 9 จะมีการเลือก A.class ภายใต้เวอร์ชัน - 9 โฟลเดอร์เพื่อดำเนินการ
บนแพลตฟอร์มที่ไม่รองรับไฟล์ JAR แบบหลายรุ่นจะไม่มีการใช้คลาสภายใต้ไดเร็กทอรีเวอร์ชัน ดังนั้นหากคุณเรียกใช้ไฟล์ JAR แบบหลายรีลีสบน Java 8 ก็จะดีพอ ๆ กับการเรียกใช้ไฟล์ JAR แบบธรรมดา
คุณลักษณะการอัปเดตพร้อมกันเพิ่มเติมใน Java 9
ในการอัปเดตนี้คลาสใหม่ java.util.concurrent.Flow ได้รับการแนะนำซึ่งมีอินเทอร์เฟซแบบซ้อนกันที่สนับสนุนการใช้งานเฟรมเวิร์กการสมัครสมาชิก เฟรมเวิร์กการสมัครสมาชิกเผยแพร่ช่วยให้นักพัฒนาสามารถสร้างส่วนประกอบที่สามารถใช้สตรีมข้อมูลสดแบบอะซิงโครนัสได้โดยการตั้งค่าผู้เผยแพร่ที่สร้างข้อมูลและสมาชิกที่ใช้ข้อมูลผ่านการสมัครสมาชิกซึ่งจะจัดการ อินเทอร์เฟซใหม่สี่รายการมีดังนี้:
ข้อมูลเบื้องต้นเกี่ยวกับเซิร์ฟเวอร์ sql สำหรับผู้เริ่มต้น
- java.util.concurrent.Flow.Publisher
- java.util.concurrent.Flow.Subscriber
- java.util.concurrent.Flow.Subscription
- java.util.concurrent.Flow.Processor (ซึ่งทำหน้าที่เป็นทั้ง Publisher และ Subscriber)
จิ๊กซอว์โครงการใน Java 9
จุดมุ่งหมายหลักของโครงการนี้คือการแนะนำแนวคิดของ ความเป็นโมดูลาร์ สนับสนุน สำหรับการสร้างโมดูลใน Java 9 จากนั้นใช้สิ่งเดียวกันกับ JDK นั่นคือ, โมดูลาร์ JDK .
บางส่วนของ ประโยชน์ ของ ความเป็นโมดูลาร์ มีรายละเอียดดังนี้:
- การห่อหุ้มที่แข็งแกร่ง : โมดูลสามารถเข้าถึงได้เฉพาะส่วนของโมดูลที่มีให้ใช้งานเท่านั้น ดังนั้นคลาสสาธารณะในแพ็กเกจจึงไม่เป็นแบบสาธารณะเว้นแต่ว่าแพ็กเกจจะถูกเอ็กซ์พอร์ตอย่างชัดเจนในไฟล์ข้อมูลโมดูล
- ล้างการพึ่งพา : โมดูลจะต้องประกาศว่าจะใช้โมดูลอื่นใดผ่านข้อกำหนดที่จำเป็น
- การรวมโมดูลเพื่อสร้างรันไทม์ที่เล็กลงซึ่งสามารถปรับขนาดให้เหมาะกับอุปกรณ์คอมพิวเตอร์ขนาดเล็กได้อย่างง่ายดาย
- เชื่อถือได้ : แอปพลิเคชันมีความน่าเชื่อถือมากขึ้นโดยการกำจัด เวลาทำงาน ข้อผิดพลาด . ตัวอย่าง:- คุณต้องพบว่าแอปพลิเคชันของคุณล้มเหลวในระหว่างรันไทม์เนื่องจากไม่มีคลาสส่งผลให้ ClassNotFoundException .
มีหลากหลาย JEPs ซึ่งเป็นส่วนหนึ่งของโครงการนี้ดังนี้:
- JEP 200 - JDK แบบแยกส่วน : สิ่งนี้ใช้ระบบโมดูลแพลตฟอร์ม Java เพื่อโมดูลาร์ JDK เป็นชุดของโมดูลที่สามารถรวมกันได้ในเวลาคอมไพล์เวลาสร้างหรือรันไทม์
- JEP 201 - ซอร์สโค้ดแบบโมดูลาร์ : สิ่งนี้จะปรับซอร์สโค้ด JDK เป็นโมดูลและปรับปรุงเครื่องมือสร้างเพื่อคอมไพล์โมดูล
- JEP 220 - อิมเมจรันไทม์แบบโมดูลาร์ : นี่เป็นการปรับโครงสร้างอิมเมจรันไทม์ JDK และ JRE เพื่อรองรับโมดูลและเพื่อปรับปรุงประสิทธิภาพความปลอดภัยและการบำรุงรักษา
- JEP 260 - ห่อหุ้ม API ภายในส่วนใหญ่ : ช่วยให้เข้าถึง API ภายในจำนวนมากได้โดยตรงหรือผ่านการสะท้อนกลับ การเข้าถึง API ภายในที่ผูกพันกับการเปลี่ยนแปลงนั้นค่อนข้างเสี่ยง เพื่อป้องกันการใช้งานพวกเขาจะถูกห่อหุ้มไว้ในโมดูลและเฉพาะ API ภายในที่ใช้กันอย่างแพร่หลายเท่านั้นที่จะพร้อมใช้งานจนกว่าจะมี API ที่เหมาะสม
- JEP 261 - ระบบโมดูล : สิ่งนี้ใช้ข้อกำหนด Java ของระบบโมดูลโดยการเปลี่ยนภาษาการเขียนโปรแกรม Java, JVM และ API มาตรฐานอื่น ๆ
- JEP 282: jlink, Java linker : สิ่งนี้ช่วยให้โมดูลบรรจุภัณฑ์และการอ้างอิงมีเวลาทำงานน้อยลง
ทั้งหมดนี้เป็นข้อมูลเกี่ยวกับ Java 9 และคุณสมบัติใหม่ของ Java 9
ตอนนี้คุณเข้าใจคุณสมบัติของ Java 9 แล้วลองดูไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก
ช หากมีคำถามสำหรับเรา โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก 'Java 9' นี้แล้วเราจะติดต่อกลับโดยเร็วที่สุด