JavaRush /จาวาบล็อก /Random-TH /Java Trends ในปี 2022: JDK 18 และ 19, Project Loom และ Da...

Java Trends ในปี 2022: JDK 18 และ 19, Project Loom และ Data mesh

เผยแพร่ในกลุ่ม
ปี 2022 ได้เริ่มต้นขึ้นแล้ว ในขณะที่คนส่วนใหญ่ยังคงอยู่ในวันหยุดปีใหม่พร้อมกับแชมเปญและโอลิเวียร์ เราจะพูดถึงเทรนด์ในโลกของชวา บางทีนี่อาจช่วยคุณวิเคราะห์อาชีพของคุณ เรียนรู้เทคโนโลยีใหม่ หรือวางแผนการพัฒนาสำหรับปีต่อๆ ไป แนวโน้ม Java ในปี 2022: JDK 18 และ 19, Project Loom และ Data mesh - 1ผู้เชี่ยวชาญด้านภาษา Java และผู้บรรยาย Andrey Rodionov รวมถึงสถาปนิกโซลูชันที่ EPAM และหัวหน้าคณะกรรมการโครงการ Devoxxยูเครน Oleg Tsal-Tsalko พูดคุยเกี่ยวกับสิ่งที่รอคอย Java ในปี 2022 และอนาคตอันใกล้นี้

แนวโน้มของ Java ในปี 2565 คืออะไร?

แนวโน้ม Java ในปี 2022: JDK 18 และ 19, Project Loom และ Data mesh - 2ในปีนี้เราคาดว่าจะเปิดตัวสองเวอร์ชันถัดไป: JDK 18 (ในเดือนมีนาคม) และ JDK 19 (ในเดือนกันยายน) สิ่งที่น่าสนใจสำหรับนักพัฒนา Java ส่วนใหญ่ใน JDK 18 อาจเป็น:
  • Simple Web Server ในตัว โดยไม่รองรับคอนเทนเนอร์เซิร์ฟเล็ต ซึ่งสามารถใช้สำหรับการสร้างต้นแบบและการทดสอบอย่างรวดเร็ว คล้ายกับมินิเว็บเซิร์ฟเวอร์ที่คล้ายกันใน Python, Ruby, PHP
  • การจับคู่รูปแบบยังคงปรับปรุงอย่างต่อเนื่อง
สำหรับ JDK 19 นั้น มีรุ่น Early-Access อยู่แล้ว แต่ยังไม่มีรายการอย่างเป็นทางการเกี่ยวกับสิ่งที่วางแผนจะรวมไว้ในนั้น ฉันอยากจะเชื่อว่า JDK 19 อย่างน้อยจะรวมต้นแบบที่เสถียรตัวแรกของ Project Loom ซึ่งข้อกำหนดแบบร่างได้ปรากฏขึ้นเมื่อเร็ว ๆ นี้และรุ่นล่าสุดอิงจาก JDK 19 เราจะพูดถึง Project Loom ในรายละเอียดเพิ่มเติมด้านล่าง

Java ยังคงเป็นโซลูชันเดียวสำหรับพื้นที่ใด และควรใช้ที่ไหน

อันเดรย์ โรดิโอนอฟ:

โชคดีที่เราไม่สามารถพูดได้ว่าไม่มีทางเลือกอื่นนอกจาก Java ในด้านใดๆ แต่เราสามารถพูดถึง Java ว่าเป็นช่องทางทองสำหรับการพัฒนาแอปพลิเคชันระดับองค์กร แบ็กเอนด์ และไมโครเซอร์วิส นอกจากนี้ยังเป็นที่น่าสังเกตว่าจำนวนการกระจาย JDK ที่แตกต่างกันเพิ่มขึ้นจากผู้ขายหลายราย (ยกเว้น Oracle): Amazon, Microsoft, Alibaba, Red Hat, Bellsoft (ก่อตั้งโดยบุคคลจาก Oracle Development Center ในเซนต์ปีเตอร์สเบิร์ก) และอื่น ๆ มี จำหน่ายชุดเต็มที่นี่ แนวโน้ม Java ในปี 2022: JDK 18 และ 19, Project Loom และ Data mesh - 3มีทางเลือกอื่นอยู่เสมอ แต่ Java พบว่ามีประโยชน์สูงสุดกับแบ็กเอนด์ในการพัฒนาองค์กร บริษัทขนาดใหญ่ส่วนใหญ่เลือก Java สำหรับระบบที่ใหญ่และซับซ้อน เหตุผลเหมือนกัน: จำนวนนักพัฒนาและความเชี่ยวชาญในตลาด ระบบนิเวศขนาดใหญ่ และแพลตฟอร์ม JVM ที่ทรงพลัง

อะไรคือโอกาสสำหรับภาษา jvm อื่น ๆ โดยเฉพาะ Kotlin เมื่อเปรียบเทียบกับ Java?

อันเดรย์ โรดิโอนอฟ:

เพื่อทำความเข้าใจว่าภาษา JVM ภาษาใดที่ได้รับความนิยม เพียงเปิดเอกสารสำหรับ Spring, Micronaut, Vert.x และดูว่าตัวอย่างโค้ดที่ให้ไว้ในภาษาใด - Java และ Kotlin จะเป็นภาษาทั่วไป ไม่สามารถพูดได้ว่ามีการเปลี่ยนแปลงครั้งใหญ่ของโครงการไปยัง Kotlin แต่ความนิยมสำหรับแบ็กเอนด์ยังคงเติบโตและหลายเฟรมเวิร์กพยายามรวมไว้ในระบบนิเวศของพวกเขา สำหรับ Scala นั้น มีการเปิดตัวเวอร์ชันใหม่ และมีการใช้อย่างแข็งขันเพิ่มเติมสำหรับ ML, การประมวลผลข้อมูล และจุดที่กระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชันสะดวกยิ่งขึ้น

โอเลก ซาล-ซาลโก้:

ภาษา JVM อื่นๆ ค่อนข้างน่าสนใจ และในปัจจุบันเป็นเรื่องปกติที่โปรเจ็กต์จะใช้ภาษาการเขียนโปรแกรมหลายภาษา สำหรับฉันแล้วดูเหมือนว่าสาเหตุที่ภาษา JVM แบบใหม่ไม่สามารถแทนที่ Java ได้มีดังนี้:
  • พวกเขาไม่ได้เจ๋งมากจนทุกคนจะพาพวกเขาไปเปลี่ยนมาใช้
  • ใช้ในส่วนเดียวกับ Java
  • Java ค่อย ๆ ดึงเอาสิ่งที่ดีที่สุดจากภาษาอื่น ๆ ออกมาและดีขึ้นเรื่อย ๆ

คุณภาพของ Java จะลดลงเนื่องจากช่วงเวลาการเผยแพร่สั้นลงหรือไม่?

โอเลก ซาล-ซาลโก้:

ฉันคิดว่าไม่ อย่างน้อยตอนนี้ฉันก็สามารถระบุสิ่งดีๆ ได้มากขึ้นจากการเผยแพร่บ่อยครั้ง เราพบว่าคุณสมบัติเจ๋งๆ ใหม่ปรากฏบ่อยขึ้นมาก ตอนนี้คุณไม่จำเป็นต้องรอถึง 5 ปีก่อนที่สิ่งใหม่จะปรากฏในภาษานี้ แน่นอนว่าตอนนี้คุณไม่ควรคาดหวังการเปิดตัวที่ยิ่งใหญ่เช่น Java 8 เนื่องจากฟีเจอร์ต่างๆ จะปรากฏในรูปแบบซ้ำเล็กน้อย

มีคุณสมบัติใน Java เวอร์ชันใหม่ที่สำคัญต่อนักพัฒนาเป็นพิเศษหรือไม่?

โอเลก ซาล-ซาลโก้:

Java เวอร์ชันล่าสุดได้นำเสนอคุณสมบัติที่น่าสนใจหลายประการ เช่น การจับคู่รูปแบบ คลาสที่ปิดผนึก และบันทึก ฉันอยากจะแนะนำให้ดูความสามารถของพวกเขา แน่นอนว่าฟีเจอร์ที่จริงจังและคาดหวังมากที่สุดนั้นได้รับการวางแผนไว้ภายใน Project Loom และ Project Valhalla แต่ฉันคิดว่าฟีเจอร์ภายในโปรเจ็กต์เหล่านี้จะค่อยๆ เปิดตัวเช่นกัน

Spring Framework: จะขยายระบบนิเวศต่อไปเพื่อตอบสนองความต้องการที่หลากหลายหรือไม่?

อันเดรย์ โรดิโอนอฟ:

สำหรับ Spring Framework นั้น การพัฒนามุ่งเน้นไปที่การสนับสนุนฟีเจอร์ต่างๆ ของ Spring Cloud และความสามารถในการคอมไพล์ Spring Boot ลงในไบนารีดั้งเดิม นั่นคือโปรเจ็กต์ Spring Native ซึ่งวางแผนไว้ว่าจะเป็นส่วนหนึ่งของ Spring Core ในอนาคต ในเรื่องนี้ Spring ล้าหลัง Micronaut และ Quarkus เนื่องจากการใช้งานการสะท้อนและการสร้างโค้ดแบบไดนามิก เกี่ยวกับ Spring Framework 6 ฉันแนะนำให้คุณดูรายงานSpring 6 and Beyond มีอะไรใหม่ใน Spring Framework 6 จากการประชุม Joker (จาก Oleg Dokuka และ Alexey Nesterov) สิ่งสำคัญคือการเปลี่ยนไปใช้ JDK 17 การละทิ้งการกำหนดค่า XML และ Autowire ผ่านตัวตั้งค่า การพัฒนาเพิ่มเติมของการรองรับ Kotlin และโครงการ Spring Fu

โอเลก ซาล-ซาลโก้:

Spring ซึ่งเป็น Java FW ที่ได้รับความนิยมมากที่สุดในปัจจุบันไม่ต้องการยอมแพ้ ฉันแน่ใจว่าทีมพัฒนาจะพยายามอย่างเต็มที่ในการพัฒนา Spring ฤดูใบไม้ผลิเติมเต็มช่องว่างมากขึ้นเรื่อยๆ ตัวอย่างเช่น Spring ได้ทำอะไรมากมายในพื้นที่ Reactive Streams/Reactive Programming ด้วย Project Reactor ขณะนี้พวกเขากำลังส่งเสริมโปรโตคอล RSoket ซึ่งดูมีแนวโน้มดีเช่นกัน

บอกเราเกี่ยวกับโครงการ Loom หน่อยสิ: มีไว้เพื่ออะไร มันแก้ปัญหาอะไร?

อันเดรย์ โรดิโอนอฟ:

Project Loom น่าจะเป็นนวัตกรรมที่น่าสนใจที่สุด ซึ่งอาจกลายเป็นการเปลี่ยนแปลงทางเปลือกโลกใหม่สำหรับแพลตฟอร์ม JVM ทั้งหมดและทุกภาษาที่อยู่ด้านบนของ JVM Project Loom อาจไม่ส่งผลกระทบต่อ Developer ทั่วไปมากนัก แต่จะส่งผลกระทบต่อ Ecosystem, Libraries, Frameworks และภาษา JVM อื่นๆ ที่ใช้ Multithreading ทั้งหมดอย่างแน่นอน Project Loom ขอแนะนำ thread abstraction ใหม่ - virtual threads (คล้ายกับ coroutines) หากก่อนหน้านี้เธรด Java เชื่อมโยงโดยตรงกับเธรดระบบปฏิบัติการ (OS) และการสร้างเธรดใหม่ใน Java นำไปสู่การสร้างเธรด OS ใหม่ ดังนั้นด้วยเธรดเสมือนความสัมพันธ์แบบหนึ่งต่อหนึ่งนี้จะใช้งานไม่ได้ เมื่อสร้างเธรดเสมือนใหม่ เธรด OS ใหม่จะไม่ถูกสร้างขึ้น และหนึ่งในเธรดผู้ให้บริการที่เรียกว่า (อะนาล็อกบางประเภทของเธรดพูล OS) จะถูกนำมาใช้ซ้ำเพื่อทำการคำนวณโดยตรง ดังนั้น เธรดเสมือนหลายรายการจึงสามารถทำงานบนเธรดระบบปฏิบัติการเดียวได้ สำหรับงานด้านการคำนวณ เธรดเสมือนโมเดลนี้ไม่ได้ให้ข้อดีใดๆ เลย แต่จะทำให้ความเร็วในการคำนวณช้าลง แต่สำหรับการบล็อกการดำเนินการ เช่น การประมวลผลคำขอ HTTP การรอการตอบกลับจากฐานข้อมูลหรือจากไมโครเซอร์วิส โมเดลนี้จะเป็น ข้อได้เปรียบที่สำคัญ ความจริงก็คือด้วยโมเดลเธรดปัจจุบัน การบล็อก/รอบนเธรด Java ทำให้เกิดเธรด OS ที่ไม่ได้ใช้งาน - นี่เป็นการสิ้นเปลืองทรัพยากรและจำเป็นต้องสร้างเธรด OS เพิ่มเติม ในโมเดลเธรดเสมือน การบล็อก/รอบนเธรดเสมือนจะทำให้เธรดผู้ให้บริการที่อยู่ด้านบนซึ่งเธรดเสมือนกำลังทำงานอยู่ถูกปล่อยออกมา และเธรดเสมือนอื่นทำงานบนเธรดนั้น ด้วยวิธีนี้ เธรด OS จะถูกใช้อย่างเหมาะสมมากขึ้น และจำเป็นต้องใช้เธรดน้อยลงในการทำงานที่คล้ายกัน ดังนั้น ผู้ผลิตไลบรารี เฟรมเวิร์ก และภาษา JVM จะต้องปรับโค้ดของตนสำหรับเธรดเสมือน ดังนั้นจึงมีการเขียนใหม่ครั้งใหญ่สำหรับพวกเขา :) นอกเหนือจากโมเดลเธรดเสมือนแล้ว ยังมีแผนที่จะแนะนำ API ใหม่เพื่อลดความซับซ้อนของการประสานเธรด - สิ่งที่เรียกว่าการทำงานพร้อมกันที่มีโครงสร้าง ตัวอย่างเช่น ปัจจุบันมีการใช้การทำงานพร้อมกันอย่างมีโครงสร้างใน Kotlin coroutines และ Scala ZIO น่าเสียดายที่เวอร์ชัน JDK และแม้แต่ปีที่วางจำหน่ายของ Project Loom ยังไม่ทราบแน่ชัด เมื่อถามถึงวันวางจำหน่าย Brian Goetz หัวหน้าสถาปนิกของแพลตฟอร์ม Java ตอบด้วยวลีเชิงปรัชญาว่า “มันจะพร้อม และเมื่อไรจะพร้อม” ดังนั้นเราจึงรอและสามารถทดลองbuild ของ Project Loomได้

โอเลก ซาล-ซาลโก้:

Loom เป็นโปรเจ็กต์หลักขนาดใหญ่ ซึ่งภายในทีม OpenJDK และ Oracle กำลังทำงานเกี่ยวกับนวัตกรรม Concurrency ใน Java และ JVM: virtual threads, fibre และความต่อเนื่อง เป็นไปได้มากว่าการเปิดตัวฟีเจอร์เหล่านี้จะค่อยเป็นค่อยไป ในขณะนี้ มีเพียงรุ่น Early Access ที่รองรับ Virtual threads เท่านั้น หากพูดถึงเธรดเสมือนโดยเฉพาะ เป้าหมายหลักคือการลดความซับซ้อนของโมเดลการพัฒนาแบบมัลติเธรดใน Java โดยใช้เธรดขนาดเล็กหลายล้านเธรดที่มีความหมายเดียวกันกับเธรดแพลตฟอร์มทั่วไป ภายใต้ประทุน เธรดเหล่านี้จะได้รับการจัดการภายใน ForkJoinPool และนำกลับมาใช้ใหม่โดยเธรดของแพลตฟอร์ม

การคาดการณ์สำหรับการพัฒนา Java ในโลกของแนวโน้มระดับโลก - ไมโครเซอร์วิส, สถาปัตยกรรมคลาวด์, บล็อกเชน, AI คืออะไร

อันเดรย์ โรดิโอนอฟ:

ถ้าเราพูดถึงกระแสโลกก็ไม่ได้เปลี่ยนแปลงมากนัก เช่นเคย แนวโน้มหลักยังคงเป็น Kubernetes และโครงสร้างพื้นฐานที่อยู่รอบๆ ในรูปแบบของService mesh Data meshยังได้รับความนิยมในฐานะนามธรรมในการจัดการแหล่งข้อมูลและการจัดเก็บข้อมูลแบบกระจาย
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION