Node.js กับ Java: การต่อสู้ครั้งยิ่งใหญ่สำหรับผู้พัฒนา Mindshare

ในประวัติศาสตร์คอมพิวเตอร์ปี 1995 เป็นช่วงเวลาที่บ้าคลั่ง Java ปรากฏตัวครั้งแรกจากนั้นปิดด้วยส้นเท้า JavaScript ชื่อนี้ทำให้พวกเขาดูเหมือนฝาแฝดที่เพิ่งถูกแยกออกจากกัน แต่ก็ไม่สามารถแตกต่างไปมากกว่านี้ หนึ่งในนั้นถูกรวบรวมและพิมพ์แบบคงที่ อีกฝ่ายตีความและพิมพ์แบบไดนามิก นั่นเป็นเพียงจุดเริ่มต้นของความแตกต่างทางเทคนิคระหว่างสองภาษาที่แตกต่างกันอย่างดุเดือดซึ่งนับตั้งแต่นั้นได้เปลี่ยนไปสู่การปะทะกันของรูปแบบต่างๆด้วย Node.js

หากคุณอายุมากพอที่จะย้อนเวลากลับไปได้คุณอาจจำจุดสูงสุดในยุคแรก ๆ ของ Java ได้ มันออกจากห้องทดลองและตรึงมิเตอร์โฆษณาไว้ ทุกคนมองว่าเป็นการปฏิวัติที่จะหยุดเพียงแค่การครอบครองคอมพิวเตอร์ทั้งหมด การคาดการณ์นั้นถูกต้องเพียงบางส่วน ปัจจุบัน Java ครอบครองโทรศัพท์ Android การประมวลผลระดับองค์กรและโลกที่ฝังตัวบางอย่างเช่นดิสก์ Blu-ray

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

ในขณะเดียวกันสิ่งที่โปรแกรมเมอร์เข้าใจผิดในตอนแรกว่าแฝดใบ้มาเป็นของตัวเอง แน่นอนว่า JavaScript ติดแท็กมาสองสามปีแล้วในขณะที่ HTML และเว็บดึง Borg มาสู่โลก แต่สิ่งนั้นเปลี่ยนไปด้วย AJAX ทันใดนั้นแฝดใบ้ก็มีพลัง

จากนั้น Node.js ก็ถูกสร้างขึ้นโดยเปลี่ยนหัวของนักพัฒนาด้วยความเร็ว ไม่เพียง แต่ JavaScript บนเซิร์ฟเวอร์เร็วกว่าที่ใคร ๆ คาดคิด แต่มันมักจะเร็วกว่า Java และตัวเลือกอื่น ๆ การขอข้อมูลที่มีขนาดเล็กรวดเร็วและไม่มีที่สิ้นสุดทำให้ Node.js เป็นเรื่องปกติมากขึ้นเนื่องจากหน้าเว็บมีการเติบโตอย่างต่อเนื่องมากขึ้น

แม้ว่าจะเป็นเรื่องที่คิดไม่ถึงเมื่อ 20 ปีก่อน แต่ตอนนี้ฝาแฝดทั้งสองถูกขังอยู่ในการต่อสู้เพื่อควบคุมโลกแห่งการเขียนโปรแกรม ด้านหนึ่งเป็นรากฐานที่ลึกซึ้งของวิศวกรรมและสถาปัตยกรรมที่มั่นคง ในอีกด้านหนึ่งคือความเรียบง่ายและแพร่หลาย โลก Java ที่ขับเคลื่อนด้วยคอมไพเลอร์ในโรงเรียนเก่าจะมีพื้นฐานหรือไม่หรือความเร็วและความยืดหยุ่นของ Node.js จะช่วยให้ JavaScript สามารถกอบโกยทุกสิ่งที่ขวางหน้าได้ต่อไป?

ที่ Java ชนะ: รากฐานที่มั่นคง

ฉันได้ยินเสียงนักพัฒนาหัวเราะ บางคนอาจถึงขั้นหัวใจล้มเหลวเสียชีวิต ใช่ Java มีข้อบกพร่องและข้อบกพร่อง แต่ค่อนข้างพูดได้ว่าเป็น Rock of Gibraltar ความเชื่อเดียวกันใน Node.js ปิดอยู่หลายปี ในความเป็นจริงอาจเป็นเวลาหลายสิบปีก่อนที่ทีมงาน JavaScript จะเขียนการทดสอบการถดถอยได้เกือบเท่าที่ Sun / Oracle พัฒนาขึ้นเพื่อทดสอบ Java Virtual Machine เมื่อคุณบูต JVM คุณจะได้รับประสบการณ์ 20 ปีจากผู้ดูแลที่มั่นคงซึ่งมุ่งมั่นที่จะครองเซิร์ฟเวอร์ขององค์กร 

โลกของ JavaScript กำลังตามมาอย่างรวดเร็ว เมื่อส่วนใหญ่ของเว็บทั้งหมดขึ้นอยู่กับกลไกการเรียกใช้งาน JavaScript ชั่วโมงของนักพัฒนาพันล้านคนจะเข้าสู่การขัดขอบทั้งหมด แต่นวัตกรรมทั้งหมดมีข้อเสียเนื่องจากคุณลักษณะใหม่อาจแพร่หลายเร็วเกินกว่าที่ฐานของนักพัฒนาจะสามารถดูดซับได้ นักพัฒนาโรงเรียนเก่ามักสับสนกับโค้ดที่เต็มไปด้วยการปรับปรุงไวยากรณ์ ECMAScript ที่ใหม่กว่าและโค้ดใหม่เดียวกันนี้จะทำให้เบราว์เซอร์รุ่นเก่าบางตัวขัดข้องอย่างเงียบ ๆ การจัดหาพรีโปรเซสเซอร์ที่เป็นนวัตกรรมใหม่อย่างไม่มีที่สิ้นสุดเช่น CoffeeScript และ JSX อาจเป็นประโยชน์อย่างยิ่งสำหรับนักพัฒนาที่ต้องการคุณสมบัติเหล่านั้น แต่พวกเราที่เหลือจะเปิดไฟล์แบบสุ่มและทำความเข้าใจได้ยากขึ้น

Java มีคุณสมบัติและตัวเลือกใหม่ ๆ ร่วมกัน แต่ส่วนใหญ่เป็นแพลตฟอร์มที่เสถียร นั่นทำให้ชีวิตง่ายขึ้นมากสำหรับนักพัฒนาที่กำลังสร้างบางสิ่งให้คงอยู่

ที่ Node.js ชนะ: Ubiquity

ด้วย Node.js JavaScript จะค้นหาบ้านบนเซิร์ฟเวอร์และในเบราว์เซอร์ โค้ดที่คุณเขียนสำหรับหนึ่งโค้ดมักจะทำงานในลักษณะเดียวกันทั้งสองอย่าง ไม่มีอะไรรับประกันได้ในชีวิต แต่สิ่งนี้ใกล้เคียงกับธุรกิจคอมพิวเตอร์ การใช้ JavaScript สำหรับทั้งสองฝั่งของไคลเอนต์ / เซิร์ฟเวอร์นั้นง่ายกว่าการเขียนบางอย่างใน Java และอีกครั้งใน JavaScript ซึ่งคุณอาจต้องทำหากคุณตัดสินใจที่จะย้ายตรรกะทางธุรกิจที่คุณเขียนใน Java สำหรับ เซิร์ฟเวอร์ไปยังเบราว์เซอร์ หรือบางทีเจ้านายอาจยืนยันว่าตรรกะที่คุณสร้างขึ้นสำหรับเบราว์เซอร์จะถูกย้ายไปที่เซิร์ฟเวอร์ ไม่ว่าจะในทิศทางใด Node.js และ JavaScript ช่วยให้โยกย้ายโค้ดได้ง่ายขึ้นมาก

ผู้นำของ Node ในโลกนี้ดูเหมือนจะขยายตัวมากขึ้นเท่านั้น เว็บเฟรมเวิร์กที่ซับซ้อนที่สุดเช่น React จะตัดสินใจในวินาทีสุดท้ายว่าจะรันโค้ดบนเซิร์ฟเวอร์หรือไคลเอนต์ วันหนึ่งมันจะทำงานบนไคลเอนต์และในวันอื่นมันจะทำงานบนเซิร์ฟเวอร์ ตรรกะที่ชาญฉลาดบางอย่างจะทำให้การตัดสินใจในการบินขึ้นอยู่กับโหลดหรือ RAM สำรองหรืออย่างอื่น บางเฟรมเวิร์กจะส่ง JavaScript ไปยังฐานข้อมูลเป็นคิวรีที่เรียกใช้ รหัสของคุณอาจทำงานได้ทุกที่และการเก็บรักษาก็ยากขึ้นเพราะไม่ได้ส่งโปสการ์ดกลับบ้าน เพียงแค่มีความสุขเพราะคุณไม่จำเป็นต้องคิดถึงรายละเอียด

ที่ Java ชนะ: Better IDEs

นักพัฒนา Java มี Eclipse, NetBeans หรือ IntelliJ ซึ่งเป็นเครื่องมือชั้นยอดสามตัวที่รวมเข้ากับดีบักเกอร์ตัวถอดรหัสและเซิร์ฟเวอร์ แต่ละปีมีการพัฒนาผู้ใช้โดยเฉพาะและระบบนิเวศที่มั่นคงซึ่งเต็มไปด้วยปลั๊กอิน

ในขณะเดียวกันนักพัฒนา Node.js ส่วนใหญ่พิมพ์คำลงในบรรทัดคำสั่งและโค้ดลงในโปรแกรมแก้ไขข้อความที่ชื่นชอบ ใช่โปรแกรมแก้ไขข้อความที่ดีที่สุดบางตัวเช่น Atom มีคอลเล็กชันปลั๊กอินที่ซับซ้อนซึ่งทำเกือบทุกอย่าง แต่ถึงอย่างนั้นก็รู้สึกว่า Node.js เป็นโรงเรียนเก่ามากกว่า Eclipse เร็ว ๆ นี้เราจะเปลี่ยนเมาส์ของเราเป็นจอยสติ๊ก Atari

นักพัฒนาบางรายใช้ Eclipse หรือ Visual Studio ซึ่งทั้งสองอย่างนี้รองรับ Node.js แน่นอนความสนใจที่เพิ่มขึ้นอย่างมากใน Node.js หมายถึงเครื่องมือใหม่ ๆ กำลังมาถึงซึ่งบางส่วนเช่น Node-RED ของ IBM มีแนวทางที่น่าสนใจ แต่ก็ยังคงอยู่อีกยาวไกลจากความสมบูรณ์หรือโดดเด่นเท่ากับ Eclipse หรือ IntelliJ

สิ่งที่แปลกคือนักพัฒนาดูเหมือนจะไม่ใช้เครื่องมือเหล่านี้ บรรทัดคำสั่งควรจะหายไปเมื่อ 35 ปีก่อนพร้อมกับการมาถึงของ Mac แต่ไม่มีใครบอกนักพัฒนา Node.js ตัวเลือกอยู่ที่นั่น ตัวอย่างเช่น WebStorm เป็นเครื่องมือเชิงพาณิชย์ที่มั่นคงจาก JetBrains ที่รวมเครื่องมือสร้างบรรทัดคำสั่งจำนวนมาก

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

ที่ Node.js ชนะ: แบบสอบถามฐานข้อมูล

ข้อความค้นหาสำหรับฐานข้อมูลรุ่นใหม่บางส่วนเช่น CouchDB และ MongoDB จะเขียนด้วย JavaScript การผสม Node.js และการเรียกฐานข้อมูลไม่จำเป็นต้องมีการเปลี่ยนเกียร์นับประสาอะไรกับความจำเป็นในการจดจำความแตกต่างของไวยากรณ์ 

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

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

ที่ Java ชนะ: ประเภท 

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

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

จุดที่ Node.js ชนะ: ความยืดหยุ่นทางไวยากรณ์

JavaScript เคยเป็นภาษาง่ายๆสำหรับการเปิดกล่องการแจ้งเตือนที่ไม่ต้องการและตรวจสอบการป้อนข้อมูลแบบฟอร์ม จากนั้นชุมชนนักพัฒนาได้สร้างภาษาเวอร์ชันต่างๆมากมายที่สามารถแปลงเป็นบางอย่างสำหรับเบราว์เซอร์ได้ มีฝูงชนของ CoffeeScript ที่นำเสนอไวยากรณ์ที่แตกต่างกันจำนวนหนึ่งซึ่งออกแบบมาเพื่อตอบสนองรสนิยมของเครื่องหมายวรรคตอนที่สะอาดยิ่งขึ้น มีกลุ่ม React / Vue ที่ผสมผสาน HTML และ JavaScript เข้าด้วยกันเพียงเพราะมันสะอาดกว่า มี TypeScript สำหรับผู้ชื่นชอบประเภทและ LiveScript สำหรับผู้ที่ชื่นชอบภาษาที่ใช้งานได้

คุณจะพบกับความคิดสร้างสรรค์จำนวนมหาศาลในโลก Java เช่นกัน แต่ด้วยเหตุผลบางประการมันไม่ได้แสดงออกมาพร้อมกับโปรเซสเซอร์ล่วงหน้าจำนวนมาก มีหลายภาษาเช่น Kotlin, Scala และ Clojure ที่กลายเป็นรหัสไบต์สำหรับ JVM แต่อย่างใดก็ให้ความรู้สึกแตกต่างกันมากพอที่จะแยกออกจากกันเป็นภาษาแยก พรีโพรเซสเซอร์ทั้งหมดทำให้ชีวิตสนุกขึ้นสำหรับโปรแกรมเมอร์ JavaScript ที่ชื่นชอบวิธีการต่างๆในการกำหนดหรือเว้นวรรคโค้ดของตน

ที่ Java ชนะ: กระบวนการสร้างอย่างง่าย 

เครื่องมือสร้างที่ซับซ้อนเช่น Ant และ Maven ได้ปฏิวัติการเขียนโปรแกรม Java แต่มีปัญหาเดียว คุณเขียนข้อกำหนดใน XML ซึ่งเป็นรูปแบบข้อมูลที่ไม่ได้ออกแบบมาเพื่อรองรับตรรกะการเขียนโปรแกรม แน่นอนว่ามันค่อนข้างง่ายที่จะแสดงการแตกแขนงด้วยแท็กที่ซ้อนกัน แต่มีบางอย่างที่น่ารำคาญเกี่ยวกับการเปลี่ยนเกียร์จาก Java เป็น XML เพียงเพื่อสร้างบางสิ่ง ด้วย JavaScript ไม่มีการเปลี่ยนเกียร์ 

Node.js เคยมีการสร้างที่ง่ายกว่า คุณเพียงแค่แก้ไขโค้ดจากนั้นกด "run" นั่นคือตอนนั้น เนื่องจากนักพัฒนาโหนดได้ "ปรับปรุง" กระบวนการพวกเขาได้เพิ่มตัวประมวลผลล่วงหน้าที่ใช้การเลือก JavaScript ย่อยที่คุณชื่นชอบและเปลี่ยนเป็นสิ่งที่รันได้ จากนั้นตัวจัดการแพ็กเกจโหนดจะต้องค้นหาไลบรารีที่เหมาะสม เวลาส่วนใหญ่ใช้งานได้ แต่บางครั้งก็ไม่เป็นเช่นนั้นคุณใช้เวลาในการค้นหาหมายเลขเวอร์ชันที่ถูกต้องของสิ่งประดิษฐ์บางอย่างที่คุณกำลังสร้างขึ้นเองในขั้นตอนที่แยกต่างหาก และถ้าคุณทำผิดพลาดกับที่เก็บอาร์ติแฟกต์หมายเลขเวอร์ชันนั้นจะถูกยิงและคุณจะต้องหมุนวงล้อมาตรวัดระยะทางอีกครั้ง

Java ยังมีกระบวนการสร้างที่ซับซ้อนซึ่งค่อนข้างคล้ายกับวิธีการ Node.js แต่ก็ไม่ได้รู้สึกว่ามันซับซ้อนไปกว่านี้แล้ว อย่างไรก็ตาม Maven และ Ant ดูเหมือนเป็นส่วนหนึ่งของรากฐาน Java ในตอนนี้ ขอบขรุขระจำนวนมากหายไปนานและงานสร้างก็ทำงานบ่อยขึ้น หากมีความยุ่งยากในการสร้างแบบสัมบูรณ์ภาษาทั้งสองอาจคล้ายกัน แต่ความซับซ้อนของ JavaScript ที่เพิ่มขึ้นอย่างรวดเร็วหมายความว่า Java ชนะ

วิดีโอที่เกี่ยวข้อง: คำแนะนำและคำแนะนำเกี่ยวกับ Node.js

ในวิดีโออธิบายนี้เรียนรู้เทคนิคต่างๆที่สามารถปรับปรุงประสบการณ์การพัฒนาโหนดของคุณ

ที่ Node.js ชนะ: JSON

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

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

ที่ Java ชนะ: การดีบักระยะไกล

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

ที่ Node.js ชนะ: เดสก์ท็อป

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

ที่ Java ชนะ: อุปกรณ์พกพา

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

แน่นอนว่ามีความสับสนเล็กน้อย นักพัฒนาจำนวนมากกำลังเขียนเว็บแอป Node.js ที่กำหนดเป้าหมายไปที่เบราว์เซอร์มือถือทั้งบน iPhone และ Android หากทำได้ดีประสิทธิภาพมักจะดีพอ