การเลือก Java IDE ของคุณ

Updated: ธันวาคม 2018

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

IDE สามตัวที่เลือกใช้บ่อยที่สุดสำหรับการพัฒนา Java ฝั่งเซิร์ฟเวอร์ ได้แก่ IntelliJ IDEA, Eclipse และ NetBeans อย่างไรก็ตามนี่ไม่ใช่ทางเลือกเดียวและบทวิจารณ์นี้จะรวม IDE ที่มีน้ำหนักเบาบางส่วนด้วย

สำหรับบทสรุปนี้ฉันได้ทำการติดตั้ง IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 สำหรับ Java EE Developers และ Apache NetBeans (incubating) IDE 9 ใหม่บนเครื่อง Mac ฉันยังตรวจสอบโครงการ Java โอเพ่นซอร์สหลายโครงการเพื่อที่ฉันจะได้ทดสอบ IDE ทั้งหมดในโปรเจ็กต์เดียวกัน

เกี่ยวกับการอัปเดตนี้

รีวิว IDE นี้เผยแพร่ครั้งแรกในเดือนกันยายน 2016 และได้รับการอัปเดตในเดือนธันวาคม 2018 ในช่วงหลายปีที่ผ่านมาภาษา Java, APIs, ระบบนิเวศ JVM และเฟรมเวิร์กบางส่วนได้พัฒนาไปอย่างมาก Java EE 8 แนะนำหรืออัปเดตข้อกำหนดเทคโนโลยี Java จำนวนมากรวมถึง JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 และ JSF (JavaServer Faces) 2.3 สำหรับการสร้างส่วนต่อประสานผู้ใช้ฝั่งเซิร์ฟเวอร์ Java EE 8 ยังเป็นรุ่นสุดท้ายของ Java สำหรับองค์กรจาก Oracle: The Eclipse Foundation ได้รับหน้าที่ดูแลเทคโนโลยีซึ่งได้เปลี่ยนชื่อเป็น Jakarta EE ในขณะเดียวกัน JUnit ได้ก้าวไปสู่เวอร์ชัน 5 ซึ่งเป็นการทำลายการผสานรวม IDEA และ Eclipse ทั้งสองมีการสนับสนุนดั้งเดิมสำหรับ JUnit 5 แต่ในขณะที่เขียนนี้ NetBeans ไม่มี

การเปลี่ยนแปลงทั้งหมดนี้ควรเป็นส่วนหนึ่งของการประเมิน IDE ของคุณไม่ว่าจะเพื่อการใช้งานทั่วไปหรือสำหรับโครงการใดโครงการหนึ่ง

NetBeans 10 เพิ่มการรองรับ JUnit 5 และ JDK 11

NetBeans 10 เปิดตัวในเดือนมกราคม 2019 เพิ่มการรองรับ JDK 11 และ JUnit 5

พื้นฐาน: สิ่งที่คุณต้องการจาก Java IDE

อย่างน้อยที่สุดคุณหวังว่า IDE ของคุณจะรองรับ Java 8 และ / หรือ 11 (เวอร์ชัน LTS), Scala, Groovy, Kotlin และภาษา JVM อื่น ๆ ที่คุณใช้เป็นประจำ นอกจากนี้คุณยังต้องการให้รองรับเซิร์ฟเวอร์แอปพลิเคชันหลักและเว็บเฟรมเวิร์กยอดนิยมเช่น Spring MVC, JSF, Struts, GWT, Play, Grails และ Vaadin IDE ของคุณควรเข้ากันได้กับระบบควบคุมบิลด์และเวอร์ชันที่ทีมพัฒนาของคุณใช้ ตัวอย่าง ได้แก่ Apache Ant กับ Ivy, Maven และ Gradle พร้อมด้วย Git, SVN, CVS, Mercurial และ Bazaar สำหรับเครดิตเพิ่มเติม IDE ของคุณควรสามารถจัดการกับไคลเอ็นต์และเลเยอร์ฐานข้อมูลของสแต็กของคุณได้โดยรองรับ JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate และ Java Persistence API

สุดท้ายนี้คุณหวังว่า Java IDE ของคุณจะช่วยให้คุณแก้ไขสร้างดีบักและทดสอบระบบของคุณได้อย่างง่ายดายและสง่างาม ตามหลักการแล้วคุณไม่เพียง แต่มีการเติมโค้ดอัจฉริยะเท่านั้น แต่ยังมีการปรับโครงสร้างและเมตริกโค้ดอีกด้วย หากคุณอยู่ในร้านค้าที่ทำการพัฒนาด้วยการทดสอบคุณต้องการการสนับสนุนสำหรับกรอบการทดสอบและการลอกแบบ หากกลุ่มของคุณใช้ระบบตั๋วและ CI / CD จะเป็นการดีที่สุดหาก IDE ของคุณสามารถเชื่อมต่อกับพวกเขาได้ หากคุณต้องการปรับใช้และดีบักบนคอนเทนเนอร์และคลาวด์ IDE ของคุณควรช่วยคุณได้

ด้วยรากฐานดังกล่าวให้เราพิจารณาคู่แข่งขัน

IntelliJ IDEA

IntelliJ IDEA ซึ่งเป็น Java IDE ชั้นนำทั้งในแง่ของคุณสมบัติและราคามีให้เลือกสองรุ่น: รุ่นชุมชนฟรีและรุ่น Ultimate ที่ต้องชำระเงินซึ่งมีคุณสมบัติเพิ่มเติม

ฉบับชุมชนมีไว้สำหรับการพัฒนา JVM และ Android รองรับ Java, Kotlin, Groovy และ Scala; Android; Maven, Gradle และ SBT; และ Git, SVN, Mercurial, CVS และ TFS

รุ่น Ultimate ซึ่งมีไว้สำหรับการพัฒนาเว็บและองค์กรรองรับ Perforce นอกเหนือจากระบบควบคุมเวอร์ชันอื่น ๆ รองรับ JavaScript และ TypeScript; รองรับ Java EE, Spring, GWT, Vaadin, Play, Grails และเฟรมเวิร์กอื่น ๆ และรวมถึงเครื่องมือฐานข้อมูลและการสนับสนุน SQL

แนวคิดก็คือรุ่นเชิงพาณิชย์ (Ultimate) จะได้รับตำแหน่งบนเดสก์ท็อปของมืออาชีพโดยแสดงให้เห็นถึงการสมัครสมาชิกแบบชำระเงินผ่านการเพิ่มผลผลิตของโปรแกรมเมอร์ หากคุณมีรายได้ $ 50K- $ 100K ต่อปีในฐานะนักพัฒนา Java การเพิ่มประสิทธิภาพการทำงานไม่ได้ใช้เวลามากนักเพื่อให้คุณได้ ROI อย่างรวดเร็วจากการสมัครสมาชิก IDEA ธุรกิจ $ 500 / ปี ราคาจะลดลงในปีต่อ ๆ มาสำหรับธุรกิจต่ำกว่ามากสำหรับสตาร์ทอัพและบุคคลทั่วไปและฟรีสำหรับนักเรียนครู "แชมป์ Java" และนักพัฒนาโอเพ่นซอร์ส

IntelliJ นำเสนอ IDEA สำหรับข้อมูลเชิงลึกเกี่ยวกับโค้ดของคุณการยศาสตร์ของนักพัฒนาซอฟต์แวร์เครื่องมือสำหรับนักพัฒนาในตัวและประสบการณ์การเขียนโปรแกรมหลายภาษา มาดูรายละเอียดกันว่าคุณลักษณะเหล่านี้มีความหมายอย่างไรและจะช่วยคุณได้อย่างไร

มาร์ตินเฮลเลอร์

ข้อมูลเชิงลึกเกี่ยวกับรหัสของคุณ

การระบายสีไวยากรณ์และการเติมโค้ดอย่างง่ายเป็นสิ่งที่กำหนดสำหรับโปรแกรมแก้ไข Java IDEA มีมากกว่านั้นในการจัดทำ "การเติมเต็มอย่างชาญฉลาด" ซึ่งหมายความว่าสามารถแสดงรายการสัญลักษณ์ที่เกี่ยวข้องมากที่สุดที่สามารถใช้ได้ในบริบทปัจจุบัน สิ่งเหล่านี้จัดอันดับตามความถี่ในการใช้งานส่วนบุคคลของคุณ "การเติมโซ่" ให้ลึกยิ่งขึ้นและแสดงรายการสัญลักษณ์ที่เกี่ยวข้องซึ่ง  สามารถเข้าถึงได้ผ่านวิธีการหรือ getters  ในบริบทปัจจุบัน IDEA ยังกรอกสมาชิกแบบคงที่หรือค่าคงที่โดยเพิ่มคำสั่งนำเข้าที่จำเป็น ในการกรอกโค้ดทั้งหมด IDEA จะพยายามเดาประเภทสัญลักษณ์รันไทม์ปรับแต่งตัวเลือกจากสิ่งนั้นและเพิ่มคลาสคาสต์ตามต้องการ

โค้ด Java มักมีภาษาอื่นเป็นสตริง IDEA สามารถแทรกส่วนของ SQL, XPath, HTML, CSS และ / หรือโค้ด JavaScript ลงในตัวอักษร Java String สำหรับเรื่องนั้นมันสามารถ refactor รหัสในหลายภาษา ตัวอย่างเช่นหากคุณเปลี่ยนชื่อคลาสในคำสั่ง JPA IDEA จะอัปเดตคลาสเอนทิตีและนิพจน์ JPA ที่เกี่ยวข้อง

เมื่อคุณปรับโครงสร้างโค้ดใหม่สิ่งหนึ่งที่คุณมักต้องการทำก็คือ refactor รายการที่ซ้ำกันทั้งหมดของรหัสนั้น IDEA Ultimate สามารถตรวจจับรายการที่ซ้ำกันและชิ้นส่วนที่คล้ายกันและใช้การปรับโครงสร้างใหม่กับพวกมันด้วย

IntelliJ IDEA วิเคราะห์โค้ดของคุณเมื่อโหลดและเมื่อคุณพิมพ์ มีการตรวจสอบเพื่อชี้ให้เห็นปัญหาที่เป็นไปได้และรายการการแก้ไขปัญหาที่ตรวจพบหากคุณต้องการ

การยศาสตร์ของนักพัฒนา

IntelliJ ออกแบบ IDEA โดยคำนึงถึงขั้นตอนการสร้างสรรค์ของนักพัฒนา - หรือที่เรียกว่า  "อยู่ในโซน" หน้าต่างเครื่องมือโครงการที่แสดงทางด้านซ้ายในรูปที่ 1 จะหายไปจากมุมมองด้วยการคลิกเมาส์เพียงครั้งเดียวเพื่อให้คุณสามารถมีสมาธิกับตัวแก้ไขโค้ด ทุกสิ่งที่คุณต้องการทำในขณะแก้ไขมีแป้นพิมพ์ลัดรวมถึงการแสดงคำจำกัดความสัญลักษณ์ในหน้าต่างป๊อปอัป ในขณะที่การเรียนรู้ทางลัดต้องใช้เวลาและฝึกฝนในที่สุดก็กลายเป็นธรรมชาติที่สอง แม้จะไม่รู้ทางลัดนักพัฒนาก็สามารถเรียนรู้การใช้ IDEA ได้อย่างง่ายดายและรวดเร็ว

การออกแบบดีบักเกอร์ IDEA นั้นดีเป็นพิเศษ ค่าตัวแปรจะปรากฏในหน้าต่างตัวแก้ไขถัดจากซอร์สโค้ดที่เกี่ยวข้อง เมื่อสถานะของตัวแปรเปลี่ยนไปสีของไฮไลต์ก็จะเปลี่ยนไปเช่นกัน

เครื่องมือสำหรับนักพัฒนาในตัว

IntelliJ IDEA มีอินเทอร์เฟซแบบรวมสำหรับระบบควบคุมเวอร์ชันหลัก ๆ ส่วนใหญ่รวมถึง Git, SVN, Mercurial, CVS, Perforce และ TFS คุณสามารถจัดการการเปลี่ยนแปลงทั้งหมดได้ใน IDE ขณะที่ฉันทดสอบ IDEA ฉันหวังว่าการเปลี่ยนแปลงล่าสุดในบล็อกซอร์สโค้ดจะปรากฏขึ้นในหน้าต่างตัวแก้ไขเป็นคำอธิบายประกอบ (เช่นเดียวกับใน Visual Studio) ปรากฎว่ามีปลั๊กอินสำหรับสิ่งนั้น

IDEA ยังรวมเครื่องมือสร้างนักวิ่งทดสอบและเครื่องมือครอบคลุมตลอดจนหน้าต่างเทอร์มินัลในตัว IntelliJ ไม่มีโปรไฟล์ของตัวเอง แต่รองรับผู้สร้างโปรไฟล์บุคคลที่สามหลายคนผ่านปลั๊กอิน สิ่งเหล่านี้รวมถึง YourKit ซึ่งสร้างโดยอดีตนักพัฒนานำของ IntelliJ และ VisualVM ซึ่งเป็น NetBeans profiler เวอร์ชันบรรจุใหม่

การดีบัก Java อาจเป็นเรื่องเจ็บปวดเมื่อมีสิ่งลึกลับเกิดขึ้นในคลาสที่คุณไม่มีซอร์สโค้ด IDEA มาพร้อมกับตัวถอดรหัสสำหรับกรณีเหล่านั้น

การเขียนโปรแกรมเซิร์ฟเวอร์ Java มักเกี่ยวข้องกับการทำงานกับฐานข้อมูลดังนั้น IDEA Ultimate จึงมีเครื่องมือฐานข้อมูล SQL และ NoSQL หากคุณต้องการมากกว่านั้น SQL IDE (DataGrip) เฉพาะจะพร้อมใช้งานเป็นส่วนหนึ่งของการสมัครสมาชิกผลิตภัณฑ์ทั้งหมดซึ่งมีราคาแพงกว่าการสมัครสมาชิก IDEA Ultimate เพียงเล็กน้อย

IntelliJ IDEA รองรับแอปพลิเคชันเซิร์ฟเวอร์ JVM ที่สำคัญทั้งหมดและสามารถปรับใช้และดีบักในเซิร์ฟเวอร์แก้ไขจุดเจ็บปวดที่สำคัญสำหรับนักพัฒนา Enterprise Java IDEA ยังรองรับ Docker ผ่านปลั๊กอินที่เพิ่มหน้าต่างเครื่องมือ Docker (เมื่อพูดถึงปลั๊กอิน IntelliJ มีจำนวนมาก)

การเขียนโปรแกรมหลายภาษา

IDEA ได้ขยายความช่วยเหลือด้านการเข้ารหัสสำหรับ Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS และเฟรมเวิร์กอื่น ๆ ไม่ใช่ทั้งหมดนี้เป็นเฟรมเวิร์ก Java นอกเหนือจาก Java แล้ว IDEA ยังเข้าใจภาษาอื่น ๆ อีกมากมายเช่น Groovy, Kotlin, Scala, JavaScript, TypeScript และ SQL หากคุณต้องการมากกว่านั้นปัจจุบันมีปลั๊กอินภาษา IntelliJ หลายร้อยรายการรวมถึงปลั๊กอินสำหรับ R, Elm, Go, Rust และ D

Eclipse IDE

Eclipse ซึ่งเป็น Java IDE ที่ได้รับความนิยมมากที่สุดนั้นฟรีและเป็นโอเพ่นซอร์สและส่วนใหญ่เขียนด้วย Java แม้ว่าสถาปัตยกรรมปลั๊กอินจะอนุญาตให้ขยาย Eclipse ในภาษาอื่นได้ Eclipse เกิดขึ้นในปี 2544 โดยเป็นโปรเจ็กต์ของ IBM เพื่อแทนที่ IDE ในตระกูล IBM Visual Age ที่ใช้ Smalltalk ด้วย IDE ที่ใช้ Java แบบพกพา เป้าหมายของโครงการคือคราส Microsoft Visual Studio ดังนั้นชื่อนี้

การพกพาของ Java ช่วยให้ Eclipse สามารถข้ามแพลตฟอร์มได้: Eclipse ทำงานบน Linux, MacOS X, Solaris และ Windows Java Standard Widget Toolkit (SWT) อย่างน้อยก็มีส่วนรับผิดชอบต่อรูปลักษณ์ของ Eclipse ไม่ว่าจะดีหรือไม่ดี ในทำนองเดียวกัน Eclipse เป็นหนี้ผลการดำเนินงาน (หรือบางคนบอกว่าไม่มี) ให้กับ JVM Eclipse มีชื่อเสียงในด้านการทำงานช้าซึ่งกลับไปใช้ฮาร์ดแวร์รุ่นเก่าและ JVM ที่เก่ากว่า แม้ในปัจจุบันจะรู้สึกช้า แต่โดยเฉพาะอย่างยิ่งเมื่อมีการอัปเดตตัวเองในพื้นหลังพร้อมกับปลั๊กอินจำนวนมาก

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

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

Eclipse เวอร์ชันปัจจุบันคือ 2018‑09 ฉันติดตั้ง Eclipse IDE สำหรับ Java EE Developers แต่มีแพ็คเกจการติดตั้งอื่น ๆ อีกมากมายรวมถึงตัวเลือกในการติดตั้ง Eclipse SDK ขั้นต่ำและเพิ่มปลั๊กอินตามที่จำเป็นเท่านั้น ตัวเลือกสุดท้ายไม่เหมาะสำหรับคนใจร้อน แต่มันไม่ยากที่จะแนะนำความขัดแย้งระหว่างปลั๊กอินที่ไม่ได้  บอกว่า  เข้ากันไม่ได้จริงๆ

มาร์ตินเฮลเลอร์

การสนับสนุนเครื่องมือที่ขยายได้

ระบบนิเวศของปลั๊กอินเป็นจุดแข็งอย่างหนึ่งของ Eclipse และยังเป็นที่มาของความไม่พอใจในบางครั้ง ตลาด Eclipse มีโซลูชันมากกว่า 1,600 รายการในปัจจุบันและปลั๊กอินที่สนับสนุนโดยชุมชนอาจทำงานหรือไม่ทำงานตามที่โฆษณาไว้ ถึงกระนั้นปลั๊กอิน Eclipse ยังรองรับภาษาการเขียนโปรแกรมมากกว่า 100 ภาษาและเฟรมเวิร์กการพัฒนาแอปพลิเคชันเกือบ 200 รายการ

นอกจากนี้ยังรองรับเซิร์ฟเวอร์ Java ส่วนใหญ่: หากคุณกำหนดการเชื่อมต่อเซิร์ฟเวอร์ใหม่จาก Eclipse คุณจะเข้าสู่รายการโฟลเดอร์ผู้จำหน่ายซึ่งด้านล่างคุณจะพบเซิร์ฟเวอร์แอปพลิเคชันประมาณ 30 รายการรวมถึง Apache Tomcat เก้าเวอร์ชัน ผู้ขายเชิงพาณิชย์มักจะรวมข้อเสนอเข้าด้วยกัน: ตัวอย่างเช่นมีเพียงรายการเดียวภายใต้ Red Hat JBoss Middleware ซึ่งรวมถึง WildFly และ EAP Server Tools และ JBoss AS

การแก้ไขการเรียกดูการปรับโครงสร้างและการดีบัก

ประสบการณ์ครั้งแรกของนักพัฒนากับ Eclipse อาจทำให้สับสนและสับสนได้ นี่เป็นเพราะงานแรกของคุณคือการปรับให้เข้ากับสถาปัตยกรรมแนวความคิดของพื้นที่ทำงานมุมมองและมุมมองของ Eclipse ซึ่งฟังก์ชันต่างๆจะถูกกำหนดโดยปลั๊กอินที่คุณติดตั้งไว้ ตัวอย่างเช่นสำหรับการพัฒนาเซิร์ฟเวอร์ Java คุณมีแนวโน้มที่จะใช้มุมมองการท่องเว็บ Java, Java EE และ Java มุมมองโปรแกรมสำรวจแพ็คเกจ มุมมองการแก้ไขจุดบกพร่อง มุมมองการประสานทีม เครื่องมือเว็บ มุมมองการพัฒนาฐานข้อมูล และมุมมองการดีบักฐานข้อมูล ในทางปฏิบัติสิ่งเหล่านี้ทั้งหมดจะเริ่มมีเหตุผลเมื่อคุณเปิดมุมมองที่คุณต้องการ

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

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