ความแตกต่างที่สำคัญ: Java เป็นภาษาการเขียนโปรแกรมซึ่งได้รับอิทธิพลจากภาษา C มันมาจากไวยากรณ์มากจาก C และ C ++ อย่างไรก็ตามมันมีสิ่งอำนวยความสะดวกระดับต่ำกว่าน้อยกว่า Java เป็นภาษาการเขียนโปรแกรมวัตถุประสงค์ทั่วไปที่ออกแบบมาเพื่อให้มีการพึ่งพาการใช้งานน้อยลงเมื่อเทียบกับภาษาก่อนหน้า C # หรือที่เรียกว่า C คมเป็นภาษาโปรแกรมเชิงวัตถุ C # เป็นภาษาการเขียนโปรแกรมแบบหลายกระบวนทัศน์ C # ขึ้นอยู่กับภาษาการเขียนโปรแกรม C เดิมพัฒนาโดย Anders Hejlsberg สำหรับ Microsoft เพื่อใช้ใน. NET Framework

Java ได้รับการพัฒนาโดย James Gosling ที่ Sun Microsystems และเปิดตัวในปี 1995 มันถูกปล่อยออกมาเป็นส่วนประกอบหลักของแพลตฟอร์ม Java ของ Sun Microsystem ซันได้รับอนุญาตให้ใช้เทคโนโลยีจาวาส่วนใหญ่อีกครั้งภายใต้สัญญาอนุญาตสาธารณะทั่วไปของกนู ซึ่งหมายความว่าเทคโนโลยีทั้งหมดที่ได้รับอนุญาตภายใต้สัญญาอนุญาตสาธารณะทั่วไปของกนูเป็นโอเพ่นซอร์สและโดยทั่วไปแล้วจะมีค่าใช้จ่าย ในที่สุด Sun Microsystems รวมเข้ากับ Oracle Corporation
Java ถูกออกแบบมาเพื่อให้โค้ดเดียวกันสามารถทำงานบนแพลตฟอร์มต่าง ๆ เช่นนักพัฒนาซอฟต์แวร์ได้รับอนุญาตให้ "เขียนครั้งเดียวทำงานได้ทุกที่" (WORA) ดังนั้นแอปพลิเคชัน Java จะถูกคอมไพล์โดย bytecode ไฟล์คลาสที่มี Java bytecode สามารถรันบน Java Virtual Machine (JVM) ใดก็ได้ สิ่งนี้จะไม่คำนึงถึงสถาปัตยกรรมคอมพิวเตอร์
ตั้งแต่ปี 2012 Java ได้กลายเป็นหนึ่งในภาษาการเขียนโปรแกรมยอดนิยมสำหรับการใช้งาน สิ่งนี้เป็นจริงอย่างยิ่งสำหรับเว็บไคลเอ็นต์เซิร์ฟเวอร์ ระบบอื่น ๆ อีกมากมายได้พัฒนาการใช้งานทางเลือกของเทคโนโลยี Sun เช่น GNU Compiler สำหรับ Java และ GNU Classpath
C # หรือที่เรียกว่า C คมเป็นภาษาโปรแกรมเชิงวัตถุ C # เป็นภาษาการเขียนโปรแกรมแบบหลายกระบวนทัศน์ มันรวมถึงการพิมพ์ที่แข็งแกร่ง, ความจำเป็น, การประกาศ, การทำงาน, ขั้นตอน, ทั่วไป, เชิงวัตถุ (ตามระดับ) และสาขาวิชาการเขียนโปรแกรมเชิงองค์ประกอบ
C # ขึ้นอยู่กับภาษาการเขียนโปรแกรม C เดิมพัฒนาโดย Anders Hejlsberg สำหรับ Microsoft เพื่อใช้ใน. NET Framework ภาษา C # ได้รับการรับรองในภายหลังว่าเป็นมาตรฐานโดย Ecma (ECMA-334) และ ISO (ISO / IEC 23270: 2006) C # เป็นหนึ่งในภาษาการเขียนโปรแกรมที่ออกแบบมาสำหรับโครงสร้างพื้นฐานภาษาทั่วไป C # มีวัตถุประสงค์เพื่อให้ง่ายในการเขียนโปรแกรมภาษาเชิงวัตถุ

- ภาษา C # มีวัตถุประสงค์เพื่อให้ง่ายในการเขียนโปรแกรมเชิงวัตถุ
- ภาษาและการนำไปใช้งานควรสนับสนุนหลักการด้านวิศวกรรมซอฟต์แวร์เช่นการตรวจสอบอย่างเข้มงวดการตรวจสอบขอบเขตของอาเรย์การตรวจสอบความพยายามในการใช้ตัวแปรที่ไม่กำหนดค่าเริ่มต้นและการรวบรวมขยะอัตโนมัติ ความทนทานของซอฟต์แวร์ความทนทานและผลผลิตของโปรแกรมเมอร์มีความสำคัญ
- ภาษามีไว้สำหรับใช้ในการพัฒนาส่วนประกอบซอฟต์แวร์ที่เหมาะสมสำหรับการปรับใช้ในสภาพแวดล้อมแบบกระจาย
- การพกพาซอร์สโค้ดมีความสำคัญมากเช่นเดียวกับการพกพาโปรแกรมเมอร์โดยเฉพาะอย่างยิ่งสำหรับโปรแกรมเมอร์ที่คุ้นเคยกับ C และ C ++
- การสนับสนุนความเป็นสากลเป็นสิ่งสำคัญมาก
- C # เหมาะสำหรับการเขียนแอพพลิเคชั่นสำหรับโฮสต์และระบบฝังตัวตั้งแต่ขนาดใหญ่มากที่ใช้ระบบปฏิบัติการที่ซับซ้อนจนถึงขนาดเล็กที่มีฟังก์ชั่นเฉพาะ
- แม้ว่าแอปพลิเคชั่น C # มีวัตถุประสงค์เพื่อประหยัดในเรื่องของหน่วยความจำและความต้องการพลังงานในการประมวลผลภาษาไม่ได้มีวัตถุประสงค์เพื่อแข่งขันโดยตรงกับประสิทธิภาพและขนาดด้วย C หรือภาษาแอสเซมบลี
มันขึ้นอยู่กับภาษา C มันค่อนข้างคล้ายกับมัน มันยังใช้ร่วมกับอนุสัญญาวากยสัมพันธ์กับ C อย่างไรก็ตามข้อเสียของ C # ก็คือเนื่องจากมันถูกพัฒนาโดย Microsoft สำหรับใช้ใน. NET Framework มันทำงานได้กับระบบปฏิบัติการ Microsoft เท่านั้น
ความแตกต่างบางอย่างระหว่าง Java และ C #:
- C # ให้ประเภทข้อมูลเพิ่มเติมเมื่อเทียบกับ Java
- C # มีชนิดข้อมูลดั้งเดิมมากกว่า Java
- C # รองรับการบรรทุกเกินพิกัดในขณะที่ Java ไม่รองรับ
- C # รองรับชนิด strut ในขณะที่ Java ไม่รองรับ
- ชนิดข้อมูล AII ใน C # เป็น strut
- C # ให้การกำหนดเวอร์ชันที่ดีกว่า Java
- C # อนุญาตให้พารามิเตอร์ถูกส่งผ่านโดยการอ้างอิงโดยใช้คีย์เวิร์ด ref ในขณะที่ Java อนุญาตให้พารามิเตอร์ถูกส่งผ่านโดยค่า
- C # อนุญาตให้มีจำนวนตัวแปรของพารามิเตอร์โดยใช้คำสำคัญพารามิเตอร์
- C # ให้ตัวสร้างแบบคงที่สำหรับการเริ่มต้น
- C # ให้คำสั่ง goto แทนคำสั่ง break
- การประกาศของอาร์เรย์มีความแตกต่างใน C # เมื่อเทียบกับ Java
- ระเบียบสำหรับ Java คือการวางคลาสพับลิกหนึ่งคลาสในแต่ละไฟล์และคอมไพเลอร์บางตัวต้องการสิ่งนี้ C # อนุญาตให้มีการจัดเรียงไฟล์ต้นฉบับ
- Java ไม่สนับสนุนกิจกรรมและผู้รับมอบสิทธิ์
- ใน Java วิธีการจะเป็นเสมือนโดยค่าเริ่มต้น แต่สามารถทำได้สุดท้าย ในขณะที่ใน C # พวกเขากำลังปิดผนึกโดยค่าเริ่มต้น แต่สามารถทำให้เสมือนจริง
- C # ไม่ได้ตรวจสอบข้อยกเว้น
- Java ไม่อนุญาตให้สร้างประเภทค่าที่ผู้ใช้กำหนด
- Java ไม่มีโอเปอเรเตอร์และการแปลงที่มากเกินไป
- จาวาไม่มีบล็อคตัววนซ้ำสำหรับการวนซ้ำอย่างง่าย
- Java ไม่มีอะไรที่เหมือนกับ LINQ
- ส่วนหนึ่งเนื่องจากไม่มีผู้รับมอบสิทธิ์ Java ไม่มีอะไรที่ค่อนข้างเหมือนวิธีนิรนามและการแสดงออกแลมบ์ดา
- Java ไม่มีต้นไม้แสดงผล
- C # ไม่มีคลาสภายในที่ไม่ระบุชื่อ
- Java ไม่มีประเภทเทียบเท่ากับ C # 3.0 ที่ไม่ระบุชื่อ
- Java ไม่ได้พิมพ์ตัวแปรโลคัลโดยนัย
- Java ไม่มีวิธีการขยาย
- Java ไม่มีนิพจน์เริ่มต้นของวัตถุและคอลเลกชัน
- Java ไม่มีคุณสมบัติเป็นส่วนหนึ่งของภาษา พวกเขากำลังประชุมของ get / set / เป็นวิธีการ
- Java ไม่มีรหัสเทียบเท่า "ไม่ปลอดภัย"
- enums ของ Java นั้นมีเชิงวัตถุมากกว่ามาก
- Java ไม่มีคำสั่ง preprocessor (#define, #if ฯลฯ ใน C #)
- Java ไม่มีการอ้างอิงค่า C # ในการส่งพารามิเตอร์โดยอ้างอิง
- Java ไม่มีประเภทเทียบเท่าบางส่วน
- อินเตอร์เฟส C # ไม่สามารถประกาศฟิลด์
- Java ไม่มีประเภทจำนวนเต็มที่ไม่ได้ลงนาม
- Java ไม่มีภาษารองรับประเภททศนิยม
- Java มีชนิดค่าที่ไม่เป็นโมฆะเทียบเท่า