เรื่องเขียนโปรแกรม มักกระโดดไปภาษาใหม่ hot แม้ดูเหมือนมีมานานใน internet time Go ยังค่อนข้างใหม่ แต่ใช้กว้างขวางในหลายสาขา
ยังมีข้อดีในการคงอยู่ Java ไม่เก่าครึ่งหนึ่งของภาษาที่ส่งผลต่อมัน แต่อายุมากกว่า Go มาก เข้รากลึกในอุตสาหกรรมหลายอย่าง ยังมีคนเลือก Java มาก มาดูเปรียบเทียบ
Golang vs Java: บทนำ
Go ออกแบบที่ Google เริ่มโปรเจกต์ 2007 Robert Griesmar, Rob Pike, Ken Thompson เป็น key designers มุ่ง: readable ง่าย กลาย productive เร็ว ยังคง fast เริ่มงาน 2007 แต่ release สาธารณะ 2012
Java ประวัติแปลก: ออกแบบสำหรับ interactive TV ไปก่อนคุ้ม cable เปลี่ยน focus ไปคอมพิวเตอร์ทั่วไปและ internet ต้นๆ Feature ใหญ่: "write once, run anywhere" deal ใหญ่ตอน Sun Microsystems release Java 1996 Sun ให้ Java runtime บน platform ยอดนิยม สัญญา developers: ไม่ต้อง port code หลายระบบ
Golang vs Java: Language Features
ทั้งคู่มาจาก C รากเหมือนกัน (พูดได้ของภาษาหลายตัว) แต่ Go และ Java ต่างกันมากกว่าคล้ายกัน
Go มุ่ง simplicity และ scalability: code อ่านง่าย error-checking แข็งแกร่ง: errors จับได้และ expose เร็วและบ่อย "goroutines" ทำ concurrency ง่าย ภาษาอื่นทำซับซ้อน
Java stable และ entrenched มากกว่า ตาม object-oriented principles OOP ไม่นิยมเท่าเดิม แต่มีประโยชน์: reflection - ความสามารถโปรแกรมตรวจสอบตัวเอง runtime Reflection ใน Go ทำได้แต่ไม่ accessible เท่า Java
Golang vs Java: Performance
มักคิด Java ช้า แต่ JIT (just-in-time) compiler compile machine code สำหรับระบบที่รัน ไม่ได้ช้าจริง แต่ benchmarks มากแสดง Go มีข้อได้เปรียบความเร็ว
ส่วนใหญ่เพราะ Go focus concurrency ระดับภาษา แต่ benchmarks หลายตัวแสดง Java เทียบเท่าหรือชนะ Go ด้าน performance กรณีต้องดู performance ในพื้นที่เฉพาะว่าอันไหน performant กว่าสำหรับคุณ
Golang vs Java: Community
แม้แค่ไม่กี่ปี community ใหญ่รอบ Go: example code, open source libraries, users มาก เจอปัญหา มีคนแก้และ document ไว้แล้ว
Java นำหน้า 16 ปี รู้จักดี มีคนใช้เยอะ โดยเฉพาะภาษาหลัก Android apps Go community มี excitement Java community มี veterans ช่วย newcomers และ pros ได้
สรุป
เหมือนเดิม: ไม่มีชนะชัดเจน Golang เก่งบางด้าน Java ดีกว่าอีกบางด้าน เลือกสำหรับโปรเจกต์ใหม่: คิด requirements และ platforms ถ้าไม่ช่วยตัดสิน ทำคนเดียว/ทีมเล็ก: เลือกภาษาที่คุ้นเคยกว่า