ภาพรวมของเครื่องมือต่างๆ ที่อาจเป็นประโยชน์สำหรับนักพัฒนาซอฟต์แวร์ที่เน้น Java หรือ JVM และอื่นๆ

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

สภาพแวดล้อมการพัฒนาแบบผสมผสาน (aka IDE)

การเลือก IDE เป็นเรื่องของความชอบส่วนตัว ไม่มีตัวเลือกที่ดีหรือไม่ดี สิ่งที่ดีที่สุดคืออันที่เหมาะกับคุณที่สุด มีตัวเลือกมากมายในตลาดสำหรับ Java เช่น "IntelliJ IDEA", "NetBeans", "Eclipse" หรือ "Visual Studio Code" (พร้อม "ส่วนขยาย Java" บางส่วน) คุณยังสามารถพิจารณาการใช้งาน "Neovim" ได้ หากคุณเป็นผู้ชื่นชอบ VIM และต้องการประสบการณ์ที่ตรงตามความต้องการของคุณมากที่สุด

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

IntelliJ เป็น IDE ที่มีคุณสมบัติหลากหลายและทรงพลังมาก คุณอาจจะไม่ได้ใช้ทั้งหมด แต่คุณจะต้องชอบบางส่วนอย่างแน่นอน ให้การสนับสนุนที่ยอดเยี่ยมสำหรับเครื่องมือสร้างและทำให้การพัฒนาแอปพลิเคชันง่ายขึ้น สิ่งที่ฉันชอบคือความเป็นไปได้ที่ผู้ใช้ที่เน้นแป้นพิมพ์เป็นหลักและผู้ที่ชื่นชอบการนำทางด้วยเมาส์ คุณยังสามารถใช้กับโปรเจ็กต์ที่ไม่เกี่ยวข้องกับ Java เช่น แอปพลิเคชัน Node.js ซึ่งมีประโยชน์เช่นกันเนื่องจากคุณสามารถเก็บทุกอย่างไว้ในที่เดียว นอกจากนี้ยังมีระบบปลั๊กอินที่ยอดเยี่ยมที่สามารถให้ฟังก์ชันเพิ่มเติมฟรี/จ่ายเงินแก่คุณได้ คุณยังสามารถใช้ประโยชน์จากเครื่องมือการจัดการฐานข้อมูลในตัว (ซึ่งฉันชอบมาก) เทอร์มินัลในตัว การจัดการการควบคุมแหล่งที่มา การแสดงตัวอย่างเว็บไซต์ในตัว ไคลเอนต์ API และอีกมากมาย

อย่างไรก็ตาม ทุกอย่างมาพร้อมกับราคา คุณอาจรู้สึกว่ามีจำนวนปุ่ม/แท็บและตัวเลือกมากเกินไป JetBrains (บริษัทที่อยู่เบื้องหลังผลิตภัณฑ์ดังกล่าว) เพิ่งเสนอ UI ใหม่เพื่อช่วยลดความซับซ้อนของการมองเห็น นอกจากด้านภาพแล้ว ตัวเลือกมากมายยังทำให้ช่วงการเรียนรู้สูงขึ้นอีกด้วย คุณอาจไม่ค่อยพบกับการชะลอตัว และมันก็ชอบ RAM ของคุณด้วย ดังนั้นคาดว่าจะใช้ส่วนที่สังเกตได้ชัดเจน

นี่คือรายการปลั๊กอินที่คุณอาจพบว่ามีประโยชน์หากคุณตัดสินใจเลือกใช้ IntelliJ:

นี่คือรายการฟังก์ชัน IntelliJ ที่ฉันพบว่ามักถูกมองข้ามแต่มีประโยชน์มาก:

เจเชลล์

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

JShell เป็นบรรทัดคำสั่งที่ทำงานเป็น Read-Evaluate-Print Loop เมื่อใช้งาน คุณจะสามารถทำการทดลองหรือลองใช้คำสั่งต่างๆ ได้อย่างรวดเร็วโดยไม่จำเป็นต้องใช้โปรเจ็กต์ IDE หรือการคอมไพล์โค้ด
ที่สำคัญกว่านั้นคือ คุณไม่จำเป็นต้องติดตั้งแยกต่างหาก เริ่มต้นจาก JDK 9 ควรรวมเข้าด้วยกัน

ส่วนใหญ่ฉันใช้ฟังก์ชันพื้นฐานเท่านั้นสำหรับการสร้างต้นแบบบางส่วน อย่างไรก็ตาม มันยังรองรับสคริปต์เริ่มต้น การนำเข้าโค้ดภายนอก หรือมาโครแป้นพิมพ์ — โปรดดูรายละเอียดในเอกสารประกอบของ Oracle ที่เชื่อมโยง ดูภาพด้านล่างเพื่อดูวิธีการใช้เครื่องมือ

เอสดีเคแมน

SDKMAN เป็นเครื่องมือ CLI ที่ช่วยให้คุณจัดการและติดตั้ง SDK ประเภทต่างๆ (ชุดพัฒนาซอฟต์แวร์) อาจมีประโยชน์เมื่อทำงานในโครงการที่ต้องใช้ Java เวอร์ชันที่แตกต่างกัน ช่วยให้คุณติดตั้ง JDK เวอร์ชันต่างๆ จากผู้จำหน่ายต่างๆ ได้อย่างง่ายดาย (ดูรายการทั้งหมด ที่นี่) ด้วยเครื่องมือดังกล่าว คุณสามารถเปลี่ยนเครื่องมือที่ใช้อยู่ในปัจจุบันในบริบทของเชลล์หรือทั่วโลกได้ทันทีเพื่อให้ตรงกับความต้องการของโครงการของคุณ

เครื่องมือไม่ได้จำกัดอยู่เพียง JDK เท่านั้น นอกจากนี้ยังรองรับเครื่องมือสร้างต่างๆ ที่เกี่ยวข้องกับ JVM เช่น Ant, Maven หรือ Gradle คุณสามารถติดตั้ง SDK อื่นๆ เช่น Groovy/Kotlin/Scala และเครื่องมือต่างๆ เช่น Spring Boot CLI ได้ (มีรายการทั้งหมดให้เลือก ที่นี่)

ลองดู คู่มือการติดตั้ง อย่างเป็นทางการ หากคุณต้องการลองใช้ ออก. ต่อไปนี้เป็นคำสั่งที่มีประโยชน์ที่สุดบางส่วนที่จะช่วยคุณเริ่มต้นใช้งาน

แสดงรายการประเภท SDK หรือเวอร์ชันที่มีอยู่ทั้งหมดของ SDK ที่กำหนด:

sdk list
#sdk list [candidate]
sdk list java

ติดตั้งหรือถอนการติดตั้งเวอร์ชัน SDK ที่กำหนด:

#sdk install <candidate> [version]
sdk install java 17.0.8-graal

#sdk uninstall <candidate> [version]
sdk uninstall java 17.0.8-graal

ตั้งค่าเวอร์ชันที่ใช้อยู่ในปัจจุบันหรือเวอร์ชันเริ่มต้นสำหรับ SDK:

#sdk use <candidate> [version]
sdk use gradle 8.2

#sdk default <candidate> [version]
sdk defaut gradle 8.2

SDKMAN ยังมีแนวคิดเกี่ยวกับสิ่งที่เรียกว่าสภาพแวดล้อมอีกด้วย มันขึ้นอยู่กับไฟล์คอนฟิกูเรชันที่เรียกว่า .sdkman(พร้อมคู่คีย์=ค่า) ช่วยให้คุณสามารถจัดส่งการกำหนดค่าที่จำเป็นสำหรับโปรเจ็กต์ของคุณด้วยโค้ด ตั้งค่าโดยใช้คำสั่งเดียว และแบ่งปันกับนักพัฒนารายอื่น

#Initialize environment file
sdk env init
#Install all required SDKs for the environment
sdk env install
#Use project environement as current
sdk env

คุณยังสามารถตั้งค่าเครื่องมือให้เปลี่ยนสภาพแวดล้อมเป็นโปรเจ็กต์โดยอัตโนมัติโดยใช้คำสั่ง cd เมื่อเปิดไดเร็กทอรีโปรเจ็กต์ ในการทำเช่นนั้น ให้ใช้คำสั่ง sdk config และตั้งค่าสถานะ sdkman_auto_env ให้เป็นจริง

รันไทม์ของคอนเทนเนอร์

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

หากต้องการทำเช่นนั้น คุณจะต้องมีรันไทม์ของคอนเทนเนอร์ มีตัวเลือกมากมายที่คุณสามารถใช้ได้ บ่อยครั้งมาก นอกจากรันไทม์ที่ให้คุณหมุนคอนเทนเนอร์ได้ ยังมีฟีเจอร์เพิ่มเติม เช่น คลัสเตอร์ Kubernetes ที่ตั้งค่าได้ง่ายซึ่งคุณสามารถเรียกใช้บนเครื่องของคุณได้ นี่คือตัวเลือกอันดับต้น ๆ ของฉัน:

  • Colima — รันไทม์คอนเทนเนอร์แบบ CLI ที่ใช้งานง่ายและกำหนดค่าได้ พร้อมรองรับทั้งแล็ปท็อปที่ใช้ Intel และ ARM สามารถใช้ docker หรือ containerd เป็นเครื่องมือได้ นอกจากนี้ยังอนุญาตให้กำหนดค่าคลัสเตอร์ K8S ที่ทำงานอยู่ในเครื่องได้
  • Docker Desktop — ตัวเลือกแรกก่อนหน้าของฉันที่มีอินเทอร์เฟซ GUI ใหม่ทั้งหมดที่สร้างโดยผู้สร้างโปรเจ็กต์ Docker ใช้กลไกนักเทียบท่าและมีฟังก์ชันอื่นๆ เช่น การจัดการที่เก็บรูปภาพ ส่วนขยาย ฯลฯ อย่างไรก็ตาม บางครั้งจำเป็นต้องมีใบอนุญาตแบบชำระเงินสำหรับการใช้งานเชิงพาณิชย์
  • Podman — เป็นอีกทางเลือกยอดนิยมที่มีทั้งเวอร์ชัน CLI และ GUI สามารถใช้เอ็นจิ้นของ Podman ได้ แต่เวอร์ชันเดสก์ท็อปยังรองรับเอ็นจิ้นอื่น ๆ เช่น docker หรือ lima อีกด้วย

เครื่องมืออื่นๆ

มีเครื่องมืออีกสองอย่างที่คุณอาจพบว่ามีประโยชน์เป็นครั้งคราว

อย่างแรกคือ VisualVM — ตัวสร้างโปรไฟล์น้ำหนักเบาที่ให้คุณตรวจสอบขนาดฮีป รับเธรดดัมพ์ ฯลฯ ในบางครั้ง มันถูกรวมเข้ากับ JDK แต่ในปัจจุบัน คุณต้อง "ดาวน์โหลด" แยกต่างหาก

อันที่สองคือไคลเอนต์ API หากคุณไม่ชื่นชอบการใช้งานโดยตรง curl เพื่อส่งคำขอทดสอบไปยังจุดสิ้นสุด API บางตัว บุรุษไปรษณีย์หรือ Insomnia ก็เป็นเครื่องมือสำหรับคุณ

นั่นคือทั้งหมดที่ฉันอยากจะแบ่งปัน! ฉันหวังว่าคุณจะพบสิ่งที่มีประโยชน์ที่นี่หรือคุณได้เรียนรู้สิ่งใหม่ อย่าลังเลที่จะแสดงความคิดเห็น :)

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