สิ่งที่คุณจะเลือกสำหรับโครงการของคุณระหว่าง. NET และ Java ณ เวลานี้? [ปิด]


13

คุณเพิ่งเริ่มโครงการใหม่และคุณมีเทคโนโลยีทั้งสองนี้ให้เลือก ได้แก่ Java และ. NET โครงการที่คุณกำลังทำงานไม่เกี่ยวข้องกับการมีคุณสมบัติที่จะทำให้ง่ายต่อการเลือกระหว่างสองเทคโนโลยี (เช่น. NET มีสิ่งนี้ที่ฉันต้องการและ Java ไม่) และทั้งสองอย่างนี้จะทำงานได้ดีสำหรับคุณ ต้องการหนึ่งแน่นอน) คำนึงถึง:

  • ประสิทธิภาพ
  • เครื่องมือที่มี (เครื่องมือของบุคคลที่สาม)
  • ความเข้ากันได้ข้ามแพลตฟอร์ม
  • ห้องสมุด (โดยเฉพาะอย่างยิ่งห้องสมุดบุคคลที่สาม)
  • ราคา (Oracle ดูเหมือนจะลองและสร้างรายได้ Java)
  • กระบวนการพัฒนา (ง่ายที่สุด / เร็วที่สุด)

โปรดจำไว้ว่า Linux ไม่ใช่แพลตฟอร์มหลักของคุณ แต่คุณต้องการที่จะพอร์ตโครงการของคุณไปยัง Linux / MacO เช่นกัน คุณควรระลึกไว้เสมอว่าปัญหาที่หมุนรอบ Oracle และชุมชน Java และข้อ จำกัด ของ Mono และ Java เช่นกัน มันจะได้รับการชื่นชมมากถ้าคนที่มีประสบการณ์ในทั้งสองสามารถให้ภาพรวมและมุมมองส่วนตัวของพวกเขาเกี่ยวกับสิ่งที่พวกเขาจะเลือกและทำไม

java  .net  mono 

มีข้อมูลไม่เพียงพอเกี่ยวกับข้อกำหนดในการตอบคำถามนี้อย่างมีประสิทธิภาพ
ดินสีแดง

3
โมโนเป็นความเจ็บปวด (เช่นเวลาหมด) แม้แต่ผู้ออกแบบ WinForm ขั้นพื้นฐานก็ไม่อยู่ที่นั่น
งาน

@Job ที่จริงแล้วMonoDevelopมีนักออกแบบ GUI สำหรับ GTK # เนื่องจาก WinForms ยังไม่ได้เป็นโอเพ่นซอร์ส
Mahmoud Hossam

ใช่ แต่ Mono กับห้องสมุดบุคคลที่สามเป็นอย่างไร พวกเขา "แค่ทำงาน" หรือไม่? และ (อาจสำคัญที่สุด) ผู้ขายจะให้การสนับสนุนถ้าคุณใช้พวกเขากับ Mono หรือไม่?
TMN

คำตอบ:


26

การตัดสินใจ (แก้ไข: เทคนิค) ที่สำคัญที่สุดเพียงอย่างเดียวคือ:

  • ในเวลานี้คุณจะยอมรับ 100% เพื่อใช้ Windows เป็นแพลตฟอร์มการปรับใช้ในอนาคตของคุณหรือไม่

ถ้าไม่เช่นนั้นคุณควรไปกับ Java


บทสรุปจากMono มักใช้เพื่อพูดว่า "ใช่แล้ว. NET เป็นแพลตฟอร์มข้าม" การอ้างสิทธิ์นั้นถูกต้องแค่ไหน? นั่นคือโมโนเป็นเพียงตัวเลือกIFF ที่คุณพัฒนาเทียบกับมัน!

คุณไม่สามารถคาดหวังแอปพลิเคชัน. NET ให้ทำงานนอกกรอบได้


@Basic กล่าวว่านี่เป็นความคิดเห็นมากกว่าคำตอบ เพื่อความถูกต้องฉันคิดว่ามันเป็นคำถามที่จะอยู่ด้านบนของรายการเพราะนี่อาจเป็นการตัดสินใจทางเทคนิคที่สำคัญที่สุดที่คุณต้องทำเมื่อต้องจัดการกับ. NET ตามที่ Basic บอกว่าเขาจะทดสอบกับ Mono จากนั้นไม่เป็นไปตามที่คาดหวังและฉันจะถือว่า Java และ. NET เหมาะสมอย่างเท่าเทียมกัน ฉันมีประสบการณ์น้อยมากกับ. NET แต่ใน Java ค่อนข้างน้อย

  • ประสิทธิภาพ - Java ทำงานได้ค่อนข้างดี แต่ก็ยังมีเวลาเริ่มต้นค่อนข้างน้อย นี่เป็นเพราะ JVM เริ่มต้นตั้งแต่เริ่มต้นเมื่อเริ่มต้นและการเข้าถึงแบบสุ่มของไฟล์ jar ไลบรารีรันไทม์ค่อนข้างช้าเมื่อจำเป็นต้องอ่านจากดิสก์ Java 6 ล่าสุดมีกระบวนการพื้นหลังเพื่อพยายามเก็บไฟล์ jar ไลบรารีรันไทม์ในแคชดิสก์เพื่อให้สามารถเข้าถึงได้อย่างรวดเร็วเมื่อต้องการ

  • เครื่องมือที่มี มีเครื่องมือมากมายและมีให้เลือกมากมายเช่นโอเพ่นซอร์สคุณภาพสูง IBM มีเครื่องมือขั้นสูงบางอย่างที่มีให้ แต่พวกเขายังใช้เงินค่อนข้างมากสำหรับพวกเขา คุณอาจต้องการดู MyEclipse ที่ทำให้มีชีวิตจากการรวมส่วนที่ดีที่สุดในโลก Java และทำให้พวกเขาสามารถเข้าถึงได้ในราคาต่ำเพื่อดูว่ามีอะไรบ้าง Netbeans มีตัวแก้ไข GUI ที่ดีมาก JDeveloper มีดีบั๊กดีบั๊ก Sun 6 JDK มี VisualVM ซึ่งเป็น profiler ระดับเริ่มต้นที่ดีซึ่งสามารถวิเคราะห์โปรแกรมที่กำลังรันอยู่ (ซึ่งเป็นคุณสมบัตินักฆ่า)

  • ความเข้ากันได้ข้ามแพลตฟอร์ม ดีมากมีแนวโน้มที่ดีเยี่ยม JVM นั้นน่าเชื่อถือและคาดการณ์ได้มาก ปัญหาจะแสดงเฉพาะเมื่อความแตกต่างของระบบปฏิบัติการเป็นตัวคั่นไฟล์เช่นความไวของชื่อไฟล์และลักษณะการทำงานของเมนู

  • ห้องสมุด มีจำนวนมากและส่วนมากของพวกเขามีอิสระและใช้งานได้ แต่เขียนเป็นหลักใน Java เพราะมันค่อนข้างยากที่จะดึงในรหัสที่เขียนในภาษาที่ไม่ใช่ JVM

  • ราคา Java นั้นมีให้ใช้อย่างอิสระ สิ่งที่ออราเคิลระบุไว้คือเครื่องมือไฟฟ้าซึ่งมีแนวโน้มว่ามาจาก JRocket ส่วนใหญ่จะมีค่าใช้จ่าย นอกจากนี้โปรดทราบว่าการสนับสนุนที่เกินขอบเขต ("Java for Business") ก็มีราคาเช่นกัน แพลตฟอร์มที่ไม่ใช่ x86 นั้นเป็นสายพันธุ์ที่กำลังจะตาย แต่ IBM มีจำนวนมากและ IBM ให้การใช้งาน Java ที่ยอดเยี่ยมสำหรับพวกเขา ราคานี้เป็นส่วนหนึ่งของระบบปฏิบัติการซึ่งส่วนใหญ่มีแนวโน้มที่จะนำไปใช้ที่ดีขึ้น

  • กระบวนการพัฒนา. เวลากับ Java ใช้เวลาค้นคว้าและเลือกเทคโนโลยีที่เหมาะสมและเรียนรู้มัน แต่เมื่อทำเสร็จแล้วฉันคิดว่ามีเทคโนโลยีมากมายที่พัฒนาได้ค่อนข้างเร็ว Java EE เวอร์ชันล่าสุดมีไว้สำหรับการเขียนหน้าเว็บที่มีประสิทธิภาพมากโดยใช้ Facelets ซึ่งสามารถโหลดใหม่ได้อย่างน้อยเท่ากับหน้า PHP

ฉันคิดว่าถ้าคุณไม่ชำนาญใน Java หรือ. NET คุณจะประหยัดเวลาและเงินด้วยการเลือกเทคโนโลยีที่คุณและองค์กรของคุณคุ้นเคย


14
ใครรับประกันได้ว่าโปรแกรม Java ที่คุณเขียนบน Windows จะทำงานได้จากทุกที่ ใช้การเรียก JNI เพียงครั้งเดียวเพื่อทำลายการรับประกันนั้น ปัญหาเดียวกันกับ CLI - หากคุณใช้ plaform API ที่ไม่ข้ามคุณจะสูญเสียความสะดวกในการพกพา ดังนั้นบุคคลเดียวที่สามารถรับประกันการพกพาได้ก็คือตัวคุณเอง - โปรแกรมเมอร์ไม่ว่าคุณจะใช้กรอบงานใด
Mark H

3
@ Thorbjørnคุณจะไว้วางใจ Oracle ในสภาพอากาศปัจจุบันหรือไม่?
radekg

12
+1 เพราะThorbjørnกล่าวว่าหากคุณไม่ได้ตั้งใจ 100% กับ Windows ที่คุณควรไปกับ Java ไม่ใช่ว่าคุณจะต้องไปกับ Java และฉันเห็นด้วย - ใช่ Mono มีทางเลือก แต่ถ้าแผนปัจจุบันของคุณไม่ได้มุ่งมั่นกับ Windows ให้ช่วยตัวเองให้เจ็บปวดและไปกับเทคโนโลยีที่ตั้งใจจะใช้บนแพลตฟอร์มอื่น และฉันพูดแบบนี้ในฐานะนักพัฒนา. NET และผู้ที่กระตือรือร้น. NET
Carson63000

4
ฉันสงสัยว่ามี "mono-exist-on-other" -downvoters คนใดที่พยายามทำมันจริงๆ ...

4
"Java เป็นพื้นใช้ได้อย่างอิสระ ( ... ) เครื่องมือไฟฟ้าจะอยู่ที่ค่าใช้จ่าย ( ... ) สนับสนุน exended ยังมาในราคา" เหมือนกัน for.NET เดียวกันใช่ไหม
Konamiman

19

ตกลงให้ลองทำลายสิ่งนี้ลง:

คำนึงถึง:

มีเครื่องมือประสิทธิภาพ (เครื่องมือของบุคคลที่สาม)

ทั้งแพลตฟอร์ม Java และ. NET มีเครื่องมือทดสอบประสิทธิภาพที่ดีมากมายฉันรู้ว่าในพื้นที่ Java ที่มีเครื่องมือโอเพนซอร์สฟรีมากมายที่เพียงพอสำหรับสถานการณ์ส่วนใหญ่ ฉันไม่สามารถพูดสำหรับด้าน. NET

ความเข้ากันได้ข้ามแพลตฟอร์ม

Java มีข้อได้เปรียบที่นี่ - โครงการโมโน (หรือคล้ายกัน) จำเป็นต้องใช้เพื่อให้. NET ทำงานบนบางแพลตฟอร์ม ฉันไม่แน่ใจว่าโมโนจะเป็นระบบกันกระสุนและนักแสดง 100% หวังว่าจะมีบางคนที่สามารถพูดสอดต่อได้

ห้องสมุด (โดยเฉพาะอย่างยิ่งห้องสมุดบุคคลที่สาม)

ทั้งสองมีการสนับสนุนที่ดีที่นี่ เริ่มแรกระบบนิเวศ Java นำหนทาง (มีตัวอักษรโอเพ่นซอร์สฟรีสำหรับทุกสิ่งที่คุณนึกถึง) แต่ฉันบอกว่า. NET ได้ติดตามอย่างแน่นอนในเรื่องที่สำคัญ (NHiberante สำหรับการคงอยู่, NUnit สำหรับการทดสอบหน่วย เพื่อตั้งชื่อคนพื้นฐานสองคน + ฉันแน่ใจว่ามีเมตริกบรรทุกจำนวนมากขึ้น)

ราคา (Oracle ดูเหมือนจะลองและสร้างรายได้ Java)

บริษัท ทุกแห่งพยายามที่จะสร้างรายได้ในระดับหนึ่ง แต่ในกรณีของ Java ฉันคิดว่าคำพูดของคุณนั้นสร้างความเข้าใจผิดเล็กน้อย Java ได้เปิดแหล่งที่มาเป็นรุ่น 6 (โครงการ OpenJDK) และ Oracle ไม่แสดงความโน้มเอียงที่จะสร้างรายได้จากจาวามากกว่าที่ Sun กำลังทำอยู่ ใช่แล้วพวกเขาขายแอปเซิร์ฟเวอร์และส่วนขยายให้กับ JVM (โดยเฉพาะส่วนขยายการจัดการ) แต่เป็นจาวาหลัก ไม่และพวกเขาจะไม่ (นี้ได้รับการกล่าวต่อสาธารณชนหลายครั้ง)

ฉันคิดว่าทั้ง MS และ Oracle ได้รับประโยชน์อย่างมากเนื่องจากรายได้ทางอ้อมด้วยแพลตฟอร์มที่ใช้ซ้ำ

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

กระบวนการพัฒนา (ง่ายที่สุด / เร็วที่สุด)

ขึ้นอยู่กับสิ่งที่คุณกำลังพยายามสร้าง! ฉันเองยืนยันว่าพวกเขาค่อนข้างมากแม้ว่า C # มีคุณสมบัติพิเศษบางอย่างในภาษาหลักมากกว่า Java ในขณะนี้ อย่างไรก็ตามด้วย (หลายภาษาทำงานร่วมกับ Java) ใน JVM (Groovy, Scala, Clojure ฯลฯ ) คุณสามารถมีคุณสมบัติทั้งหมดที่คุณต้องการ

.NET มีข้อได้เปรียบที่แตกต่างกันสำหรับการสร้าง 'หน้าเว็บ' สำหรับ 'ชั่วครู่ (การพัฒนาแอปพลิเคชันอย่างรวดเร็วถ้าคุณต้องการ) แต่ฉันคิดว่า JEE6 และ / หรือ Spring และเฟรมเวิร์กเว็บ / แอปอื่น ๆ

โปรดจำไว้ว่า Linux ไม่ใช่แพลตฟอร์มหลักของคุณ แต่คุณต้องการที่จะพอร์ตโครงการของคุณไปยัง Linux / MacO เช่นกัน คุณควรระลึกไว้เสมอว่าปัญหาที่หมุนรอบ Oracle และชุมชน Java และข้อ จำกัด ของ Mono และ Java เช่นกัน มันจะได้รับการชื่นชมมากถ้าคนที่มีประสบการณ์ในทั้งสองสามารถให้ภาพรวมและมุมมองส่วนตัวของพวกเขาเกี่ยวกับสิ่งที่พวกเขาจะเลือกและทำไม

หากคุณต้องการพอร์ตไปยัง Linux, UNIX และโดยเฉพาะอย่างยิ่ง Mac OS แล้วตามที่ระบุไว้ข้างต้น Java มีขอบมี

หวังว่าจะช่วย!


4

เมื่อคำนึงถึงรายการคะแนนของคุณฉันจะถูกแยกออกและมันก็ขึ้นอยู่กับสิ่งที่ฉันต้องการสร้าง

.Net ชนะด้านนี้:

  • ประสิทธิภาพ
  • กระบวนการพัฒนา (ง่ายที่สุด / เร็วที่สุด)

Java ชนะด้านนี้:

  • ความเข้ากันได้ข้ามแพลตฟอร์ม
  • ห้องสมุด (โดยเฉพาะอย่างยิ่งห้องสมุดบุคคลที่สาม)

มันคือการเสมอสำหรับแง่มุมเหล่านี้:

  • ราคา (Oracle ดูเหมือนจะลองและสร้างรายได้ Java)
  • เครื่องมือที่มี (เครื่องมือของบุคคลที่สาม)

.Net คือสแต็กเทคโนโลยีแพลตฟอร์มเดียว ใช่มันมี Mono แต่จนกว่า Mono จะเข้ากันได้ 100% กับการติดตั้ง Windows มันไม่ได้ให้ประสบการณ์ข้ามแพลตฟอร์มที่แท้จริง ชุดย่อยเดียวที่คุณอาจเชื่อถือได้สำหรับการสนับสนุนข้ามแพลตฟอร์มคือสิ่งที่จะพอดีกับ Silverlight

ที่กล่าวว่า. Net มีการรับรู้ประสิทธิภาพที่ดีขึ้น (การวัดจริง TBD) ในสายตาของผู้ใช้การรับรู้ประสิทธิภาพเป็นสิ่งเดียวที่สำคัญ หลังจากที่ได้พัฒนาใน Java มามากกว่า 12 ปีที่ผ่านมาและเมื่อเร็ว ๆ นี้ที่ทำ. Net ฉันสามารถชื่นชมพลังของแพลตฟอร์ม

Java ในอีกทางหนึ่งมีชุด IDE ที่สมบูรณ์ยิ่งขึ้นให้เลือกและค่าใช้จ่ายของ IDE ที่เหนือกว่าเหล่านี้จะน้อยกว่าค่าใช้จ่ายของการเปลี่ยนแปลง. Net ในทางกลับกันค่าใช้จ่ายของเครื่องยนต์ J2EE แบบมืออาชีพจะช่วยลดต้นทุนการพัฒนาสภาพแวดล้อม ใน. สุทธิฉันมีการรับรู้ของการเป็นนิคและสลัวไปสู่ความตาย ใน Java มีวิธีแก้ไขปัญหาค่าใช้จ่ายจำนวนมาก - ซึ่งสามารถแก้ไขได้โดยง่ายด้วยเวลาของนักพัฒนาในการตั้งค่า นอก IDE สำหรับเครื่องมือที่มีความสำคัญ (ผู้สร้างโปรไฟล์ความครอบคลุม ฯลฯ ) ค่าใช้จ่ายเท่ากัน

ในท้ายที่สุดจริงๆมันขึ้นอยู่กับความจำเป็นในการ ถ้าฉันจะปรับใช้บน Windows ต่อไปแล้ว. Net เป็นเกมง่ายๆ ฉันมีลูกค้าที่เป็นร้านค้า Windows เท่านั้น หากฉัน giong ที่จะปรับใช้กับ Unix หรือต้องการสนับสนุนระบบที่แตกต่างกันแล้ว Java เป็นเกมง่ายๆ ฉันอาจจะรุนแรงและแนะนำกองซ้อนเทคโนโลยีผสม ท้ายที่สุดเพียงเพราะลูกค้าต้องการให้เซิร์ฟเวอร์เป็น Unix ไม่ได้หมายความว่าพวกเขาเรียกใช้บนเดสก์ท็อป ไม่ใช่ทุกแอปพลิเคชันที่ทำลงในเว็บแอปได้ดีที่สุด


4

ประสิทธิภาพ - สม่ำเสมอ

แพลตฟอร์มทั้งสองทำงานได้ดีอย่างยิ่งสำหรับแอปพลิเคชันแทบทั้งหมด

ไม่มากที่จะแยกพวกเขาออกจากกันแม้ว่าประสบการณ์ส่วนตัวของฉันคือ 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


3

.สุทธิ

เป็นการยากที่จะตอบคำถามนี้โดยไม่ใช้ความรู้สึกส่วนตัวหรือมีเหตุผลอื่น (ฉันมีความรู้สึกว่าฉันกำลังถูกลดระดับลง) แต่. Net เป็นภาษาที่เกี่ยวกับการแกว่งขึ้นและ Java ดูเหมือนจะจมอยู่กับปัญหาทางกฎหมาย

นอกจากนี้. net ทุกวันนี้เป็นภาษาที่มีความเหนียวแน่นและทันสมัยมากยิ่งขึ้นด้วยการสนับสนุนมัลติคอร์ (Parallel.net) และการเขียนโปรแกรม asynchrounous (ส่วนขยายรีแอกทีฟ) ไม่ต้องพูดถึง LINQ ที่ฉันขาดไม่ได้ .Net ยังมีเครื่องมือฟรีมากมาย แต่ Visual Studio Express, SQL Server Express, Web Matrix เป็นต้น

เป็นความจริงที่ว่า Java มีประโยชน์หลายอย่าง คุณมีตัวเลือกบางอย่างสำหรับ. Net กับ mono ฯลฯ ซึ่งอาจทำเพื่อการใช้งานแบบดั้งเดิมหรือส่วนประกอบแบ็กเอนด์ แต่บางคนได้รับไม่แน่นอนถ้าคุณกำลังทำบางสิ่งที่พิเศษมาก (และอย่ามาคุยกันเรื่อง WPF)

อีกทางเลือกหนึ่งถ้าแพลตฟอร์มข้ามแพลตฟอร์มมีความสำคัญจริง ๆ คือ Silverlight ฉันไม่ได้กระตือรือร้นกับ Silverlight "แอปพลิเคชัน" แต่อย่างน้อยก็ใช้งานได้

Crossplatform เป็นจุดปวดถามตัวเองว่ามันจำเป็นจริงๆหรืออย่างน้อยก็ในตอนนี้


การชอบ. Net ไม่ใช่เรื่องเลวร้าย ที่จริงผมค่อนข้างชอบมัน. ไม่ต้องสงสัยเลยว่า Java กำลังเผชิญกับวิกฤติตัวตนในขณะนี้ซึ่งเป็นความอัปยศ - ฉันก็ชอบแพลตฟอร์มดังกล่าว ฉันดีใจที่คุณยอมรับการปรับปรุงบันทึกการติดตามของ Java สำหรับข้ามแพลตฟอร์ม (+1) ลูกค้าบางรายต้องการการปรับใช้ Unix และอื่น ๆ ต้องการการปรับใช้ Windows Java folks สามารถให้บริการทั้งสองแพลตฟอร์มในขณะที่. Net จำกัด อยู่ที่ Windows เท่านั้น ที่กล่าวว่ามี Windows ลูกค้าจำนวนมากเท่านั้นที่ออกมี
Berin Loritsch

1

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.