ความแตกต่างระหว่าง C++ และ Java
ความแตกต่างที่สำคัญระหว่าง C++ และ Java
- C++ ใช้เฉพาะคอมไพเลอร์เท่านั้นในขณะที่ Java ใช้คอมไพเลอร์และล่ามทั้งคู่
- C++ รองรับทั้งการโอเวอร์โหลดตัวดำเนินการและการโอเวอร์โหลดวิธีการในขณะที่ Java รองรับการโอเวอร์โหลดวิธีการเท่านั้น
- C++ รองรับการจัดการวัตถุด้วยตนเองด้วยความช่วยเหลือของคำหลักใหม่และลบในขณะที่ Java มีระบบเก็บขยะอัตโนมัติในตัว
- C++ รองรับโครงสร้างในขณะที่ Java ไม่รองรับโครงสร้าง
- C++ สนับสนุนสหภาพแรงงานในขณะที่ Java ไม่สนับสนุนสหภาพแรงงาน
เป็นสิ่งที่ C++ ภาษา?
C++ เป็นภาษาโปรแกรมคอมพิวเตอร์ที่มีคุณลักษณะของภาษาโปรแกรม C และ Simula67 (ภาษาเชิงวัตถุตัวแรก) C++ แนะนำแนวคิดของคลาสและวัตถุ
มันสรุปคุณลักษณะภาษาระดับสูงและต่ำ จึงถือเป็นภาษาระดับกลาง ก่อนหน้านี้เรียกว่า "C พร้อมคลาส" เนื่องจากมีคุณสมบัติทั้งหมดของภาษา C
เป็นสิ่งที่ Java ภาษา?
Java เป็นภาษาโปรแกรมที่พัฒนาโดย Sun Microsystems ทีมพัฒนาซอฟต์แวร์ขนาดเล็กพัฒนาภาษานี้ พวกเขาเป็นที่รู้จักในนามทีมสีเขียวซึ่งเป็นผู้ริเริ่ม Java ภาษาในปี พ.ศ. 1991
ประวัติศาสตร์ของ C++
C++ ภาษา C ได้รับการพัฒนาโดย Bjarne Stroustrup ที่ AT & T Bell Laboratories Stroustrup เป็นผู้สนับสนุน C อย่างแข็งขันและเป็นผู้ชื่นชอบ Simula67 เขาต้องการรวมเอาสิ่งที่ดีที่สุดของทั้งสองภาษาเข้าด้วยกัน เขาตั้งเป้าที่จะสร้างภาษาที่รองรับคุณลักษณะการเขียนโปรแกรมเชิงวัตถุและยังคงรักษาพลังของ C ไว้ ผลลัพธ์ที่ได้คือ C++.
ประวัติศาสตร์ของ Java
รางวัล Java ภาษาเดิมเรียกว่า OAK เดิมทีได้รับการพัฒนาขึ้นเพื่อใช้กับอุปกรณ์และกล่องรับสัญญาณโทรทัศน์ Oak ถือเป็นความล้มเหลวครั้งใหญ่ ดังนั้นในปี 1995 บริษัท Sun จึงเปลี่ยนชื่อเป็น Java และปรับเปลี่ยนภาษาเพื่อใช้ประโยชน์จากธุรกิจการพัฒนาเวิลด์ไวด์เว็บที่กำลังเติบโต
Laterใน 2009 Oracle Corporation เข้าซื้อ Sun Microsystems และเป็นเจ้าของสินทรัพย์ซอฟต์แวร์หลักของ Sun สองรายการ: Java และ Solaris.
ความแตกต่างระหว่าง C++ และ Java
พารามิเตอร์ | C++ | Java |
---|---|---|
ความสัมพันธ์ | ไม่มีความสัมพันธ์ที่เข้มงวดระหว่างชื่อคลาสและชื่อไฟล์ ใน C++ไฟล์ส่วนหัวและไฟล์การใช้งานใช้สำหรับคลาสเฉพาะ | มีการบังคับใช้ความสัมพันธ์ที่เข้มงวด เช่น ซอร์สโค้ดสำหรับคลาส PayRoll จะต้องอยู่ใน PayRoll.java |
กลไกการป้อนข้อมูล | คำสั่ง I/O ใช้ in และ cout เช่น in » x; ศาล« คุณ; | กลไกการป้อนข้อมูล I/O ค่อนข้างซับซ้อนเนื่องจากอ่านข้อมูลครั้งละหนึ่งไบต์ (System.in) เอาต์พุตทำได้ง่าย เช่น System.out.println(x) |
คอมไพเลอร์และล่าม | C++ รองรับคอมไพเลอร์เท่านั้น | Java รองรับทั้งคอมไพเลอร์และล่าม |
ความเข้ากันได้กับภาษาอื่น ๆ | เข้ากันได้กับซอร์สโค้ด C ยกเว้นบางกรณีพิเศษ | ไม่มีความเข้ากันได้ย้อนหลังกับภาษาอื่นใดก่อนหน้า ไวยากรณ์ได้รับอิทธิพลจาก C/C++. |
การควบคุมการเข้าถึงและการป้องกันวัตถุ | มีรุ่นที่ยืดหยุ่นพร้อมการป้องกันอย่างต่อเนื่อง | แบบจำลองที่ยุ่งยากส่งเสริมการห่อหุ้มที่อ่อนแอ |
แนวคิด | เขียนครั้งเดียวคอมไพล์ได้ทุกที่ | เขียนครั้งเดียววิ่งได้ทุกที่ |
รองรับประเภทการเขียนโปรแกรม | อนุญาตทั้งการเขียนโปรแกรมตามขั้นตอนและการเขียนโปรแกรมเชิงวัตถุ | รองรับโมเดลการเขียนโปรแกรมเชิงวัตถุ |
อินเตอร์เฟซ | อนุญาตการโทรโดยตรงไปยังไลบรารีระบบดั้งเดิม | เพียงโทรผ่าน Java Native Interface และล่าสุด Java การเข้าถึงแบบเนทีฟ |
การจัดการหน่วยความจำ | โปรแกรมเมอร์สามารถเข้าถึงได้ | ระบบควบคุม |
ลำดับชั้นราก | C++ ไม่มีลำดับชั้นรูทดังกล่าว C++ รองรับทั้งการเขียนโปรแกรมเชิงขั้นตอนและเชิงวัตถุ จึงเรียกว่าภาษาลูกผสม | Java เป็นภาษาโปรแกรมเชิงวัตถุล้วนๆ นั่นก็คือ เหตุใดจึงเป็นไปตามลำดับชั้นรูทเดี่ยว |
คุณลักษณะที่ดีที่สุด | C++ รองรับคุณสมบัติเชิงวัตถุคุณสมบัติการเขียนโปรแกรมตามขั้นตอน | Java รองรับการเก็บขยะอัตโนมัติ มันไม่รองรับการทำลายล้างเหมือน C++ ไม่ |
ไปที่แถลงการณ์ | C++ มีคำสั่ง goto แม้ว่าจะไม่เหมาะที่จะใช้คำสั่ง goto | Java ไม่มีคำสั่ง goto ได้รับคีย์เวิร์ดแล้ว และ const จะถูกสงวนไว้แม้ว่าจะไม่ได้ใช้ก็ตาม |
การสืบทอดหลายรายการ | C++ ให้มรดกหลายรายการ คีย์เวิร์ด virtual ใช้เพื่อแก้ไขปัญหาระหว่างการสืบทอดหลายรายการ หากมี | Java ไม่ได้ให้มรดกหลายรายการ |
ผู้ดำเนินการแก้ไขขอบเขต | C++ มีตัวดำเนินการแก้ไขขอบเขต (: :) ซึ่งใช้เพื่อกำหนดวิธีการภายนอกคลาสและเข้าถึงตัวแปรโกลบอลภายในขอบเขตที่มีตัวแปรโลคัลอยู่ด้วยชื่อเดียวกัน |
ไม่มีผู้ดำเนินการแก้ไขขอบเขต (: :) in Java- คำจำกัดความของวิธีการจะต้องเกิดขึ้นภายในชั้นเรียน ดังนั้นจึงไม่จำเป็นต้องมีการแก้ไขขอบเขต |
วิธีการสนับสนุน | C++ รองรับทั้งการโอเวอร์โหลดวิธีและการโอเวอร์โหลดตัวดำเนินการ | Java รองรับเฉพาะการโอเวอร์โหลดเมธอดเท่านั้น ไม่รองรับการโอเวอร์โหลดตัวดำเนินการ |
Portability | แหล่งที่มาจะต้องได้รับการคอมไพล์ใหม่สำหรับแพลตฟอร์ม ดังนั้นโค้ดนี้จึงไม่สามารถพกพาได้ | คลาส Bytecode สามารถถ่ายโอนไปยัง JVM เฉพาะแพลตฟอร์มได้ |
พิมพ์ความหมาย | สอดคล้องกันระหว่างประเภทดั้งเดิมและประเภทวัตถุ | แตกต่างกันสำหรับประเภทดั้งเดิมและประเภทวัตถุ |
ห้องสมุด | ฟังก์ชั่นระดับต่ำเป็นส่วนใหญ่ | ชั้นเรียนขนาดใหญ่สำหรับบริการระดับสูง |
การตรวจจับข้อผิดพลาดรันไทม์ | ความรับผิดชอบของโปรแกรมเมอร์ | ความรับผิดชอบของระบบ |
ฟังก์ชั่นและข้อมูล | ฟังก์ชันและข้อมูลอาจมีอยู่ภายนอกคลาส ขอบเขตโกลบอลและเนมสเปซจะพร้อมใช้งาน | ฟังก์ชั่นและข้อมูลทั้งหมดมีอยู่ในคลาส มีขอบเขตแพ็คเกจให้เลือก |
ระบบปฏิบัติการ | C++ โปรแกรมขึ้นอยู่กับแพลตฟอร์ม จำเป็นต้องรวบรวมสำหรับแพลตฟอร์มเฉพาะ | Java โปรแกรมมีความเป็นอิสระจากแพลตฟอร์ม Java โปรแกรมที่เขียนขึ้นเพื่อ Java เครื่องเสมือน (JVM)- มันจะทำงานโดยไม่ต้องคอมไพล์ใหม่ |
การตรวจจับข้อผิดพลาดรันไทม์ | In C++,เป็นความรับผิดชอบของโปรแกรมเมอร์ในการตรวจสอบข้อผิดพลาด | ถือเป็นความรับผิดชอบของระบบในการตรวจสอบข้อผิดพลาดในโปรแกรม |
ตัวชี้ | C++ ตัวชี้สนับสนุน | Java ให้การสนับสนุนพอยน์เตอร์อย่างจำกัดเท่านั้น |
โครงสร้าง | มันรองรับโครงสร้าง | มันไม่รองรับโครงสร้างใดๆ |
สหภาพแรงงาน | C++ สนับสนุนสหภาพแรงงาน | Java ไม่สนับสนุนสหภาพแรงงาน |
การจัดการวัตถุ | C++ รองรับการจัดการวัตถุด้วยตนเองด้วยความช่วยเหลือของคำสำคัญใหม่และลบ | Java มีน้ำหนักมากขึ้นอยู่กับการเก็บขยะอัตโนมัติ มันไม่รองรับการทำลายล้าง |