Java ได้รับการพัฒนาโดย James Gosling ที่ Sun Microsystems | C++ ได้รับการพัฒนาโดย Bjarne Stroustrup ที่ Bell Labs เพื่อเป็นส่วนขยายของภาษา C |
ได้รับอิทธิพลจาก Ada 83, Pascal, C++, C# | ได้รับอิทธิพลจาก Ada, ALGOL 68, C, ML, Simula, Smalltalk |
Java bytecode ทำงานบนระบบปฏิบัติการใด ๆ | ใช้ไม่ได้กับทุกระบบปฏิบัติการเนื่องจากไลบรารีในระบบต่างกัน |
สามารถทำงานได้บนทุก OS | มีการคอมไพล์ต่างกันบนแพลตฟอร์มต่างๆ ไม่สามารถรันบน OS ใดๆ ได้ |
พกพาสะดวก | ไม่สามารถพกพาได้ |
เป็นภาษาตีความ | เป็นภาษาที่เรียบเรียง |
จัดการหน่วยความจำโดยอัตโนมัติ | การจัดการหน่วยความจำทำได้ด้วยตนเอง |
ไม่มีคีย์เวิร์ด "เสมือน" | มีคีย์เวิร์ด 'เสมือน' |
รองรับการสืบทอดเดียวเท่านั้น สามารถรับมรดกได้หลายส่วนโดยใช้อินเทอร์เฟซ (บางส่วนเท่านั้น) | รองรับการสืบทอดเดี่ยวและหลายรายการ |
ไม่รองรับโอเปอเรเตอร์โอเวอร์โหลด | รองรับการโอเวอร์โหลดโอเปอเรเตอร์ |
รองรับพอยน์เตอร์อย่างจำกัด | รองรับการทำงานของตัวชี้ |
มีฟังก์ชันระดับสูง | มีฟังก์ชันระดับต่ำ |
ไม่รองรับการเรียกไลบรารีเนทีฟโดยตรง | รองรับการเรียกไลบรารีระบบโดยตรง |
รองรับความคิดเห็นของเอกสาร (/**.. */) สำหรับซอร์สโค้ด | ไม่รองรับความคิดเห็นในเอกสารสำหรับซอร์สโค้ด |
รองรับการทำงานของเธรด | ไม่รองรับเธรดตามการออกแบบ สามารถทำได้โดยใช้ไลบรารีเธรดของบุคคลที่สาม |
มันใช้คลาส 'ระบบ' เช่น System.in สำหรับอินพุต | มันใช้ 'cin' สำหรับการดำเนินการอินพุต |
มันใช้ System.out สำหรับเอาต์พุต | มันใช้ 'cout' สำหรับการดำเนินการเอาท์พุต |
มันใช้ System.out สำหรับเอาต์พุต | มันใช้ 'cout' สำหรับการดำเนินการเอาท์พุต |
ไม่รองรับขอบเขตทั่วโลก | รองรับขอบเขตสากลและขอบเขตเนมสเปซ |
ไม่รองรับโครงสร้างและสหภาพแรงงาน | รองรับโครงสร้างและสหภาพแรงงาน |
ไม่มีคีย์เวิร์ด "goto" | รองรับคีย์เวิร์ด 'goto' |
รองรับวิธี Pass by Value เท่านั้น | รองรับ Pass by Value และ pass โดยวิธีอ้างอิง |
จัดการวัตถุโดยอัตโนมัติโดยใช้ตัวรวบรวมขยะ | ดำเนินการจัดการวัตถุด้วยตนเองโดยใช้ "ใหม่" และ "ลบ" |