ประสิทธิภาพ - สม่ำเสมอ
แพลตฟอร์มทั้งสองทำงานได้ดีอย่างยิ่งสำหรับแอปพลิเคชันแทบทั้งหมด
ไม่มากที่จะแยกพวกเขาออกจากกันแม้ว่าประสบการณ์ส่วนตัวของฉันคือ Java มีความได้เปรียบเล็กน้อยสำหรับแอปพลิเคชั่นที่รันเป็นเวลานานในขณะที่. Net นั้นเร็วกว่าสำหรับเวลาเริ่มต้นแอปพลิเคชัน
เครื่องมือที่มี (แม้เครื่องมือของบุคคลที่สาม) - เป็นที่ถกเถียงกัน
ขึ้นอยู่กับเครื่องมือที่คุณต้องการและสิ่งที่คุณคุ้นเคย
. Net มีเครื่องมือที่ยอดเยี่ยมจาก Microsoft ในทางกลับกันมีเครื่องมือที่ดีพอ ๆ กันในโลกของ Java เช่นใน Eclipse, Netbeans ของสภาพแวดล้อม IntelliJ
ความเข้ากันได้ข้ามแพลตฟอร์ม - Java win
.Net เชื่อมโยงกับแพลตฟอร์มของ Microsoft (Windows, Xbox และอื่น ๆ ) การใช้งานที่สมบูรณ์แบบจะไม่สามารถใช้ได้สำหรับการใด ๆ แพลตฟอร์มที่ไม่ใช่ไมโครซอฟท์
Mono เป็นสิ่งที่ดี แต่จริงๆแล้วมันไม่ได้ให้ความสามารถข้ามแพลตฟอร์มอย่างเต็มที่เพราะมันไม่รองรับไลบรารี. Net ทั้งหมด (ตัวอย่างเช่นคุณไม่สามารถคาดหวังว่าทุกสิ่งที่ Windows GUI จะทำงานได้อย่างถูกต้องดังนั้นถ้าคุณไม่เปลี่ยนเป็น ชุดเครื่องมือข้ามแพลตฟอร์มเช่น GTK # คุณจะไม่สามารถเรียกใช้แอปของคุณบนแพลตฟอร์มที่แตกต่างกัน)
Java เป็นแบบพกพาอย่างแท้จริง ไม่ใช่แค่ภาษา แต่ที่สำคัญกว่านั้นคือไลบรารี Java ทั้งหมดเป็นแบบพกพา ให้คุณติดกับห้องสมุด Java บริสุทธิ์ (เช่น Swing for GUI) จากนั้นโค้ดของคุณจะทำงานทุกที่ที่คุณมีสภาพแวดล้อมรันไทม์ของ Java
ไลบรารี (โดยเฉพาะอย่างยิ่งไลบรารีบุคคลที่สาม) - Java win
อาจเป็นจุดแข็งที่ดีที่สุดของแพลตฟอร์ม Java คือระบบนิเวศที่กว้างใหญ่ของไลบรารีโดยเฉพาะอย่างยิ่งไลบรารีโอเพนซอร์ส ตัวอย่างบางส่วน:
- ไลบรารีและเครื่องมือ Apache ทั้งหมด
- ห้องสมุดทั้งหมดในระบบนิเวศ Eclipse อันกว้างใหญ่
- ห้องสมุดทั้งหมดมีส่วนร่วม / ดูแลโดย Google
- JBoss และเครื่องมือขององค์กรที่เกี่ยวข้องทั้งหมดดูแลโดย Red Hat
ราคา (Oracle ดูเหมือนจะลองและสร้างรายได้ Java) - Java ชนะถ้าคุณไปเปิดแหล่งที่มามิฉะนั้นแม้
คุณสามารถมี Java stack โอเพ่นซอร์ส 100% ซึ่งฟรีและไม่ผูกคุณกับแพลตฟอร์มเฉพาะใด ๆ ฟรี 100%
หรือคุณสามารถซื้อ IntelliJ IDEA, รัน Java บน Windows และใช้ฐานข้อมูลที่เป็นกรรมสิทธิ์ซึ่งในกรณีนี้มันค่อนข้างคุ้มค่าเหมือนกันกับ Microsoft .NET stack ทั่วไป
กระบวนการพัฒนา (ง่ายที่สุด / เร็วที่สุด) - เป็นที่ถกเถียงกัน
สิ่งนี้อาจขึ้นอยู่กับประสบการณ์ของนักพัฒนาของคุณกับแต่ละแพลตฟอร์มมากกว่าที่มาจากแพลตฟอร์ม
. Net มีเครื่องมือที่ยอดเยี่ยมที่สามารถทำให้คุณทำงานได้อย่างมีประสิทธิภาพสำหรับแอพ GUI อย่างง่ายบน Windows ไม่น่าแปลกใจเพราะนี่คือ "จุดหวาน" สำหรับการพัฒนา. Net
ในทางกลับกันฉันชอบ Java stack สำหรับการพัฒนาฝั่งเซิร์ฟเวอร์ ด้วยเครื่องมือเช่น Maven และความสามารถในการปรับใช้ / การรวมอย่างต่อเนื่องคุณสามารถสร้างกระบวนการพัฒนาที่มีประสิทธิภาพมากสำหรับแอปฝั่งเซิร์ฟเวอร์ที่แข็งแกร่ง
ภาษาที่ชาญฉลาด C # มีข้อได้เปรียบด้านการเพิ่มประสิทธิภาพมากกว่า Java แต่ในทางกลับกันหากคุณกำลังพัฒนาบนแพลตฟอร์ม Java ทุกวันนี้เทรนด์ไม่ได้ใช้ Java เอง แต่ใช้ภาษา JVM ใหม่เช่น Scala, Groovy หรือ Clojure - ถ้าคุณทำเช่นนั้นคุณจะมีประสิทธิผลมากกว่า มากกว่า C # หรือ Java