ฉันได้เรียนรู้ J2SE เมื่อเร็วๆ นี้ หลังจากผ่านไปประมาณ 20 วัน ฉันอ่าน J2SE ของ Mr. Ma Bingbing จบ ฉันรู้สึกว่าครูคนนี้มีอารมณ์ขันมากจนฉันจะไม่เสียสมาธิเมื่อฟังการบรรยายของเขา การใช้เวลาให้เป็นประโยชน์มีสูงมาก ฉันยกนิ้วให้ครู Ma Bingbing อย่างจริงใจ และยกนิ้วให้ครู Mi อีกสองคนที่ทำให้พวกเราได้เรียนรู้วิดีโอนี้! (มีสิ่งสวยงามมากมายในโลก แต่สิ่งที่ขาดไปคือดวงตาที่จะค้นพบสิ่งสวยงาม!)
เพื่อเป็นการไม่ให้เสียเวลา เรามาดูสิ่งที่พูดจริงในวิดีโอนี้กันดีกว่า ดังที่แสดงด้านล่าง:
ผู้ที่อาจเคยศึกษาภาษาเชิงวัตถุใดๆ (ฉันศึกษา C# ซึ่งจำลองมาจาก Java และปรับปรุง Java เพิ่มเติม) ความประทับใจแรกเมื่อเห็นภาพนี้คือพวกเขาได้ศึกษาสิ่งเหล่านี้โดยพื้นฐานแล้วดูเหมือนว่ามีเพียง GUI เท่านั้น , JDBC เป็นสิ่งใหม่
จริงๆ แล้วมันก็คล้ายกันจริงๆ นะ คนส่วนใหญ่คิดว่าพวกเขาก็เหมือนกันอยู่แล้ว เปรียบเทียบด้านล่าง!
ในแง่ของไวยากรณ์ ทั้งคู่ได้ละทิ้งตำแหน่งที่ฉูดฉาดหลายแห่ง เช่น การแก้ไขฟังก์ชัน const และพารามิเตอร์ใน C++ การแทนที่มาโคร ตัวแปรโกลบอล และฟังก์ชันโกลบอล
ในแง่ของการสืบทอด ทั้งสองใช้โซลูชันการสืบทอดรูทเดี่ยวและการใช้งานหลายอินเทอร์เฟซที่เข้าใจและสร้างง่ายกว่า ในแง่ของการจัดระเบียบซอร์สโค้ด มีการเสนอการห่อหุ้มเชิงตรรกะที่ดีขึ้นซึ่งรวมการประกาศและการนำไปใช้
ในแง่ของการรวมประเภทระหว่างประเภทพื้นฐานและออบเจ็กต์ที่สืบทอดมาแบบรูตเดียว box/unbox ที่เสนอโดย C# นั้นฉลาดกว่าและมีประสิทธิภาพมากกว่าคลาสแพ็คเกจของ Java
ไม่ต้องสงสัยเลยว่าการมุ่งเน้นส่วนประกอบถือเป็นกระแสหลักของการพัฒนาซอฟต์แวร์ร่วมสมัย C# กลายเป็น "หมกมุ่น" กับการเขียนโปรแกรมส่วนประกอบซึ่งแตกต่างจาก Java ซึ่งเปิดตัวเมื่อ 6 ปีที่แล้วอย่างสิ้นเชิง - แน่นอนว่านี่เป็นเรื่องของเวลา C# ใช้การสนับสนุนโดยตรงสำหรับการเขียนโปรแกรมส่วนประกอบผ่านคุณสมบัติ ตัวสร้างดัชนี การมอบหมาย กิจกรรม การโอเวอร์โหลดของตัวดำเนินการ ลักษณะ เวอร์ชัน ฯลฯ แม้ว่าสิ่งเหล่านี้สามารถนำไปใช้ทางอ้อมผ่านวิธีการ อินเทอร์เฟซ หรืออะแดปเตอร์ใน Java แต่ประวัติศาสตร์ของอุตสาหกรรมซอฟต์แวร์บอกเราว่านี่เป็นความเสียหายอย่างใหญ่หลวงต่อประสิทธิภาพการเขียนโปรแกรมหรือการออกแบบลอจิก สิ่งแรกที่ภาษาระดับสูงต้องเผชิญคือผู้คน ไม่ใช่ เครื่องจักร นอกเหนือจากกลไกการสนับสนุนส่วนประกอบระดับภาษาเหล่านี้แล้ว แพลตฟอร์ม .NET ยังมีโซลูชันแพ็คเกจสำหรับการกำหนดค่าส่วนประกอบ การดำเนินการ การจัดการ ฯลฯ และ Visual Studio.NET ซึ่งออกแบบมาเฉพาะสำหรับการพัฒนาส่วนประกอบนั้นน่าตื่นเต้นยิ่งกว่าเดิม ทั้งหมดนี้สำหรับการเขียนโปรแกรม C# Component เปิดโลกอันกว้างใหญ่ ในแง่ของเทคโนโลยีอื่น ๆ ข้อเสียเปรียบที่อ่อนแอของ Java นั้นน้อยมาก แต่ในแง่ของการเขียนโปรแกรมส่วนประกอบ Java มีข้อบกพร่องที่รักษาไม่หายเมื่อเทียบกับ C# โดยเฉพาะอย่างยิ่งสำหรับนักพัฒนาที่มาจากพื้นหลัง C++ และ Visual Basic C# มีเสน่ห์และความล่อลวงที่ไม่อาจต้านทานได้ในเรื่องนี้
ในแง่ของการข้ามแพลตฟอร์ม การสนับสนุนและการใช้งานของ Java ได้รับการยกย่อง แม้ว่าความเร็วของ JVM จะยังคงเป็นเรื่องที่น่าปวดหัวก็ตาม แม้ว่า C# จะพิจารณาความสามารถในการพกพาอย่างเต็มที่ในแง่ของโครงสร้างพื้นฐาน แต่อย่างน้อยก็ยังไม่มีผลิตภัณฑ์ที่ผ่านการทดสอบและสมบูรณ์แล้ว ดูเหมือนว่า C# จะสนใจการทำงานร่วมกันของ XML Web Services มากกว่าการเขียนโปรแกรมข้ามแพลตฟอร์ม อย่างไรก็ตาม การสนับสนุนการทำงานร่วมกันระดับออบเจ็กต์ของ C# สำหรับภาษากระแสหลักมากกว่า 20 ภาษาผ่านโครงสร้างภาษาพื้นฐาน (CLI) ได้ปรับปรุงสถานะทางเทคนิคของ C# อย่างมาก ความสามารถในการทำงานร่วมกันในราคาถูกกับส่วนประกอบ COM ยังได้รับคะแนน C# มากมาย การรักษาระบบที่เข้ากันได้เป็นสิ่งสำคัญมากสำหรับอุตสาหกรรมซอฟต์แวร์สมัยใหม่ และยังถือเป็นสัญญาณของความรับผิดชอบสำหรับนักพัฒนาส่วนใหญ่อีกด้วย
แน่นอนว่าการประเมินทางเทคนิคที่ครอบคลุมของทั้งสองภาษาไม่ได้เป็นเพียงรายการง่ายๆ และการเปรียบเทียบประเด็นข้างต้นเท่านั้น แพลตฟอร์มแบ็คเอนด์ (C# สำหรับ .NET, Java สำหรับ J2EE) ซึ่งสนับสนุนเฟรมเวิร์กการเขียนโปรแกรมของพวกเขา และการใช้งานเครื่องมือที่เกี่ยวข้องสำหรับแต่ละภาษาในขณะนี้ รากฐานของระบบบางอย่างและอื่นๆ มีผลกระทบอย่างมากต่อการพัฒนาภาษาการเขียนโปรแกรม จากมุมมองทางเทคนิคล้วนๆ C# มีความสามารถในการแข่งขันมากกว่า Java อย่างไม่ต้องสงสัย ไม่มีประโยชน์ที่จะเถียงว่าใครลอกเลียนแบบใคร การพัฒนาเทคโนโลยีถือเป็นกระบวนการเรียนรู้ร่วมกันโดยเนื้อแท้ การแข่งขันทางเทคนิคล้วนๆ ไม่สามารถระบุผลลัพธ์ของการอภิปรายนี้ได้ หากจะต้องเป็นการประลองกัน อุตสาหกรรมซอฟต์แวร์ดีใจที่ได้เห็นการแข่งขัน มีเพียงเทคโนโลยีที่ได้รับการควบคุมจากตลาดเท่านั้นที่จะให้บริการเราได้ดีขึ้น ให้เรารอดูกัน!