การถกเถียงเรื่องประสิทธิภาพของ Java ปะทุขึ้นอีกครั้ง: ชุมชนนักพัฒนาตั้งคำถามเรื่องการใช้ทรัพยากรในแอปพลิเคชันองค์กร

BigGo Editorial Team
การถกเถียงเรื่องประสิทธิภาพของ Java ปะทุขึ้นอีกครั้ง: ชุมชนนักพัฒนาตั้งคำถามเรื่องการใช้ทรัพยากรในแอปพลิเคชันองค์กร

การประกาศเปิดตัว Kronotop ฐานข้อมูลที่รองรับ Redis ที่พัฒนาด้วย Java ได้จุดประเด็นการถกเถียงอย่างเข้มข้นในชุมชนนักพัฒนาเกี่ยวกับบทบาทและประสิทธิภาพของ Java ในแอปพลิเคชันองค์กรสมัยใหม่ แม้ว่าฐานข้อมูลใหม่นี้จะสัญญาว่าจะมี ACID transactions และการผสานรวมกับ FoundationDB แต่การเลือกใช้ Java เป็นภาษาในการพัฒนากลับกลายเป็นประเด็นถกเถียงหลัก

ความย้อนแย้งด้านประสิทธิภาพของ Java

แม้ว่า Java จะมีชื่อเสียงในด้านการมีรันไทม์ที่มีประสิทธิภาพสูงรองจากภาษาระดับระบบอย่าง C, C++ และ Rust แต่นักพัฒนายังคงแสดงความกังวลเกี่ยวกับการใช้ทรัพยากรในสภาพแวดล้อมการผลิตจริง การอภิปรายเผยให้เห็นถึงความแตกต่างอย่างชัดเจนระหว่างความสามารถด้านประสิทธิภาพในทฤษฎีของ Java กับประสบการณ์การใช้งานจริง สมาชิกในชุมชนชี้ให้เห็นตัวอย่างที่มีชื่อเสียงหลายกรณีที่การใช้งาน Java ถูกแทนที่ด้วยทางเลือกใน C++ เพื่อประสิทธิภาพที่ดีขึ้น เช่น การเขียน Zookeeper ใหม่ของ Clickhouse และการพัฒนา Cassandra ใหม่ของ Scylla

Java สามารถมีประสิทธิภาพได้หากคุณคำนึงถึงประสิทธิภาพในขณะที่เขียนโค้ด แต่นั่นต้องใช้ความพยายามมากกว่าการเขียนด้วย Rust/Go มาก

การพัฒนาระบบทดแทน Java ที่น่าสนใจ:

  • Clickhouse Keeper (ภาษา C++) ที่พัฒนามาทดแทน Zookeeper
  • Scylla (ภาษา C++) ที่พัฒนามาทดแทน Cassandra
  • มีทางเลือกที่รองรับการทำงานเข้ากันได้กับ Redis ในหลากหลายภาษาโปรแกรมมิ่ง

ผลกระทบของ Spring Framework

ส่วนสำคัญของการถกเถียงมุ่งเน้นไปที่ผลกระทบของ Spring Framework ต่อแอปพลิเคชัน Java นักพัฒนาแยกความแตกต่างระหว่างประสิทธิภาพของ Java แบบดั้งเดิมกับแอปพลิเคชันที่ใช้ Spring โดยแอปพลิเคชันหลังมักถูกวิจารณ์เรื่องการใช้ทรัพยากรที่มากเกินไป สิ่งที่เห็นได้ชัดคือการพัฒนา Java สมัยใหม่มักจะเป็นที่เข้าใจว่าต้องใช้ Spring ซึ่งแม้แต่ endpoint ง่ายๆ ก็ต้องการทรัพยากรระบบมาก โดยรายงานว่าต้องใช้หลาย CPU core และหน่วยความจำ RAM หลายกิกะไบต์สำหรับงานที่ไม่ซับซ้อน

ปัญหาด้านประสิทธิภาพที่พบบ่อยใน Java:

  • การใช้หน่วยความจำสูงในสภาพแวดล้อมการใช้งานจริง
  • แอปพลิเคชันที่ใช้ Spring Framework มีการใช้ทรัพยากรสูง
  • มีค่าโสหุ้ยในการเริ่มต้นระบบสูง
  • มีขนาดไฟล์ในการติดตั้งใหญ่
  • มีความซับซ้อนในการกำหนดค่าการตั้งค่าต่างๆ

การแยกตัวของ Java ในองค์กร

การอภิปรายชี้ให้เห็นถึงความแตกแยกทางวัฒนธรรมในโลกการพัฒนาซอฟต์แวร์ นักพัฒนา Java ในองค์กรมักถูกมองว่าทำงานแยกตัวจากแนวโน้มและแนวปฏิบัติของอุตสาหกรรมในวงกว้าง การแยกตัวนี้นำไปสู่การพึ่งพาเครื่องมือและเฟรมเวิร์กที่เสถียรแต่ใช้ทรัพยากรมาก สร้างระบบนิเวศที่เสริมแรงตัวเองและอาจต่อต้านทางเลือกที่ใช้ทรัพยากรน้อยกว่าอย่าง Quarkus

เกณฑ์วัดประสิทธิภาพและการแลกเปลี่ยน

การถกเถียงในชุมชนยังกล่าวถึงความซับซ้อนในการวัดประสิทธิภาพ โดยระบุว่าเกณฑ์วัดต่างๆ เช่น การใช้ CPU การใช้หน่วยความจำ และประสิทธิภาพในการพัฒนาต้องถูกชั่งน้ำหนักซึ่งกันและกัน แม้ว่า Java อาจจะโดดเด่นในด้านประสิทธิภาพบางด้าน แต่การใช้ทรัพยากรโดยรวมและความซับซ้อนในการดำเนินงานมักทำให้นักพัฒนาหันไปหาทางเลือกในภาษาอย่าง Go, Rust หรือ C++

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

อ้างอิง: Kronotop: ฐานข้อมูลเอกสารแบบกระจายและรองรับธุรกรรมที่เข้ากันได้กับ Redis โดยใช้ FoundationDB