Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> อินเทอร์เน็ต

ความแตกต่างระหว่าง Java และ JavaScript คืออะไร?

ตามที่นักพัฒนาเว็บ Jeremy Keith กล่าวในปี 2009 ว่า "Java ต่อ JavaScript เหมือน ham (แฮม) ต่อ hamster (แฮมสเตอร์)" ความแม่นยำของสำนวนนี้อาจถูกต้องได้แค่บางส่วน แต่จิตใจเบื้องหลังมันถูกต้อง: Java และ JavaScript ถึงจะมีรากศัพท์ร่วมกัน แต่เป็นภาษาโปรแกรมที่ต่างกันอย่างสิ้นเชิง ตลอดหลายปีที่ผ่านมา พวกมันทับซ้อนกันมากขึ้น แต่ JavaScript ยังคงเป็นภาษา front-end หลักที่ทำให้เว็บไซต์มีปฏิสัมพันธ์ ส่วน Java ยังคงเป็นที่นิยมสำหรับการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์และแอปพลิเคชัน หากคุณกำลังพยายามจ้างนักพัฒนา เรียนรู้การเขียนโค้ด หรือสร้างเว็บไซต์/แอปพลิเคชัน การรู้ความแตกต่างระหว่าง Java และ JavaScript จึงสำคัญมาก

ประวัติที่แตกต่างกัน

สรุปสั้นๆ: Java มาก่อน JavaScript ซึ่งคล้ายกับ Java แต่ไม่ได้เกี่ยวข้องทางเทคนิค แล้วก็ปรากฏขึ้นเพื่อตอบสนองความต้องการที่ต่างกัน

Java ถูกพัฒนาเป็นเวลา 4 ปีโดย James Gosling และทีมวิจัยที่ Sun Microsystems เริ่มในปี 1991 และเผยแพร่ในปี 1995 พวกเขาพัฒนาภาษาเชิงวัตถุที่สามารถรันบนระบบปฏิบัติการหลายระบบ ตั้งแต่นั้นมา Java ถูกใช้ในอุปกรณ์หลากหลาย ตั้งแต่โทรศัพท์มือถือไปจนถึงยานสำรวจของ NASA และยังเป็นเทคโนโลยีเว็บมัลติมีเดีย (เหมือน Flash และ JavaScript) ผ่าน Java Applets จนถึงปี 2016 ที่ Java หยุดรองรับอย่างเป็นทางการ

JavaScript ก็ถูกเผยแพร่ในปี 1995 เช่นกัน แต่สร้างขึ้นในแค่ 10 วันโดย Brendan Eich ที่ Netscape เพื่อเป็นวิธีทำให้หน้าเว็บมีปฏิสัมพันธ์หลังจากโหลดในเบราว์เซอร์ มันถูกเรียกว่า Mocha ในเดือนพฤษภาคม 1995 แต่ส่งมอบพร้อม Netscape Navigator เป็น LiveScript ในเดือนกันยายน และเปลี่ยนชื่อเป็น JavaScript ในเดือนธันวาคม 1995 ทั้งนี้ เนื่องจากภาษานี้ถูกสร้างขึ้นเพื่อคล้ายกับ Java เป็น counterpart (คู่หู) สคริปต์ที่เบาgewicht ชื่อจึงสมเหตุสมผล และเป็นการตลาดที่ดีมาก ตั้งแต่นั้นมา มันเติบโตเป็นหนึ่งในสามองค์ประกอบหลักของอินเทอร์เน็ตสมัยใหม่ พร้อมกับ HTML และ CSS

ความแตกต่างทางเทคนิค

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

นั่นคือความคล้ายคลึงที่ใหญ่ที่สุด แต่ความแตกต่างสะสมขึ้นมาตั้งแต่จุดนั้น

1. Java ถูกคอมไพล์ JavaScript ถูกแปล (Interpreted)

Java มีระบบ "write once, run anywhere" (เขียนครั้งเดียว รันได้ทุกที่) ทำงานดังนี้:

  1. เขียนโค้ดใน Java
  2. คอมไพล์โค้ดเป็น bytecode ที่คอมพิวเตอร์อ่านได้
  3. รันโค้ดบน Java Virtual Machine (JVM) ซึ่งเป็นคอมพิวเตอร์เสมือนที่รัน Java bytecode บนอุปกรณ์ต่างๆ

นั่นหมายความว่าเมื่อใดที่คุณต้องการเปลี่ยนโปรแกรม คุณต้องทำการเปลี่ยนแปลงในโค้ด Java และแปลงโปรแกรมทั้งหมดเป็น bytecode ใหม่

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

2. Static Typing (Java) vs Dynamic Typing (JavaScript)

ส่วนสำคัญของภาษาโปรแกรมคือการเก็บค่าในตัวแปร Java เป็น statically-typed หมายความว่าคุณต้องระบุว่าตัวแปรแต่ละตัวมีประเภทข้อมูลอะไร และมันจะถูกกำหนดคงที่ ตัวอย่าง:

int a_number = 42; char a_letter = 'z';

"int" ต้องเป็นตัวเลข และ "char" ต้องเป็นตัวอักษร

JavaScript อย่างไรก็ตาม เป็น dynamically-typed ดังนั้นตัวแปรใดๆ ก็ตามสามารถเก็บข้อมูลประเภทใดก็ได้ และสามารถเปลี่ยนแปลงได้โดยไม่มีปัญหา โค้ดด้านล่างทำงานได้ดี:

let number = 42; let a_letter = "z";

Java มีข้อได้เปรียบด้านความเร็วและการดีบัก: การประกาศประเภทตัวแปรทำให้หาปัญหาได้เร็วขึ้น และยังทำให้โค้ดรันเร็วขึ้น JavaScript เร็วกว่าสำหรับนักพัฒนาส่วนใหญ่ในการทำงาน

3. Concurrency (การทำงานพร้อมกัน)

Java สามารถรันเธรด (threads) หลายตัวพร้อมกันได้ หมายความว่ามันสามารถทำหลายอย่างพร้อมกัน JavaScript ใช้ event loop แทน โดยพื้นฐานแล้วทำงานผ่านสแต็กของสิ่งที่ต้องทำจนถึงจุดสิ้นสุด อีกครั้ง Java มีข้อได้เปรียบด้านประสิทธิภาพ

4. Java มี Classes, JavaScript มี Prototypes

จำไว้ว่า Java และ JavaScript ใช้วัตถุในการเก็บข้อมูล ทั้งคู่ยังใช้ "inheritance" (การสืบทอด) ซึ่งช่วยให้วัตถุได้รับคุณสมบัติจากที่อื่น ใน Java พวกมันได้คุณสมบัติจาก classes ซึ่งเป็นแผนผังพร้อมคำแนะนำวิธีสร้างวัตถุ ใน JavaScript วัตถุใหม่ถูกสร้างโดยใช้ prototypes หรือวัตถุที่สามารถคัดลอกเพื่อสร้างวัตถุใหม่

โดยพื้นฐานแล้ว หมายความว่าวัตถุใดๆ ใน JavaScript สามารถกลายเป็น prototype ได้ ในขณะที่ Java ต้องการให้คุณสร้าง class ที่สามารถสร้างวัตถุได้ กล่าวอีกนัยหนึ่ง Java ให้คำแนะนำวิธีสร้างแมว ส่วน JavaScript แค่โคลนมัน

คุณต้องการอันไหน?

ถ้ารายละเอียดทางเทคนิคทำให้คุณเบื่อ ให้เริ่มสนใจอีกครั้งเลย! ถ้าคุณกำลังพยายามตัดสินใจระหว่าง Java และ JavaScript มันจริงๆ แล้วไม่ยากเลย

โดยทั่วไปคุณจะต้องการ JavaScript สำหรับ:

  • เว็บไซต์ เว็บแอป และอินเทอร์เฟซ front-end อื่นๆ
  • เว็บเซิร์ฟเวอร์ง่ายๆ / งาน back-end (กับ Node.js)
  • การสร้างเกมและแอนิเมชันบนเบราว์เซอร์
  • แอป/เกม/โปรแกรมที่สร้างบน Electron หรือกรอบงานข้ามแพลตฟอร์มอื่นๆ

อย่างไรก็ตาม คุณอาจจะต้องการใช้ Java สำหรับ:

  • แอป Android
  • แอปพลิเคชันเดสก์ท็อป
  • แอปพลิเคชันฝั่งเซิร์ฟเวอร์
  • การเขียนโค้ดสำหรับโทรศัพท์ อุปกรณ์ IoT และฮาร์ดแวร์อื่นๆ

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

อย่างไรก็ตาม ถ้าคุณต้องการเข้าสู่การพัฒนาเว็บ หรือวางแผนทำงานบนเว็บไซต์และเว็บแอปเป็นหลัก JavaScript น่าจะเป็นทักษะ "must-have" (จำเป็นต้องมี) ในระยะยาว การเรียนทั้งสองภาษาก็ไม่ได้ทำให้เสียหายอะไร เนื่องจากทั้งคู่ครอบคลุมแนวคิดที่ทำให้คุณกลายเป็นนักเขียนโปรแกรมที่ดีกว่า (และมีมูลค่าตลาดมากขึ้น!)

หากคุณมองหาเข้าสู่การพัฒนาเกม ภาษาโปรแกรมเหล่านี้จะเหมาะกับคุณมากกว่า