Ich habe J2SE vor kurzem gelernt, nachdem ich J2SE von Herrn Ma Bingbing gelesen hatte. Ich habe das Gefühl, dass dieser Lehrer so humorvoll ist, dass ich mich nicht ablenken lasse, wenn ich seine Vorlesungen höre. Ich gebe der Lehrerin Ma Bingbing aufrichtig einen Daumen hoch und zwei weitere Daumen hoch der Lehrerin Mi, die uns dazu gebracht hat, dieses Video zu lernen! (Es gibt viele schöne Dinge auf der Welt, aber was fehlt, sind die Augen, um schöne Dinge zu entdecken!).
Schauen wir uns ohne weitere Umschweife an, was in diesem Video tatsächlich gesagt wird. Wie unten gezeigt:
Leute, die vielleicht eine beliebige objektorientierte Sprache studiert haben (ich habe C# studiert, das Java nachempfunden und Java weiter verbessert hat), ist der erste Eindruck, wenn sie dieses Bild sehen, dass sie im Grunde all diese Dinge studiert haben. Es scheint, dass es nur eine grafische Benutzeroberfläche gibt , JDBC ist eine neue Sache.
Tatsächlich sind sie sich wirklich ähnlich. Die meisten Leute denken, dass sie gleich sind. Vergleichen Sie sie unten!
In Bezug auf die Syntax haben beide viele auffällige Stellen wie die konstante Änderung von Funktionen und ihren Parametern in C++, Makrosubstitution, globale Variablen und globale Funktionen aufgegeben.
In Bezug auf die Vererbung übernehmen beide die Single-Root-Vererbung und Implementierungslösungen mit mehreren Schnittstellen, die einfacher zu verstehen und zu erstellen sind. Im Hinblick auf die Organisation des Quellcodes wurde eine bessere logische Kapselung vorgeschlagen, die Deklaration und Implementierung integriert.
Im Hinblick auf die Typvereinheitlichung zwischen Basistypen und Single-Root-geerbten Objekten ist die von C# vorgeschlagene Box/Unbox intelligenter und effizienter als die Verpackungsklasse von Java.
Komponentenorientiert ist zweifellos der Mainstream der heutigen Softwareentwicklung. C# ist sogar „besessen“ von der Komponentenprogrammierung, was sich völlig von Java unterscheidet, das vor 6 Jahren auf den Markt kam – das ist natürlich eine Frage der Zeit. C# implementiert seine direkte Unterstützung für die Komponentenprogrammierung durch Eigenschaften, Indexer, Delegation, Ereignisse, Operatorüberladung, Merkmale, Versionen usw. Obwohl diese indirekt über Methoden, Schnittstellen oder Adapter in Java implementiert werden können, zeigt uns die Geschichte der Softwareindustrie, dass dies einen großen Schaden für die Programmiereffizienz oder das Logikdesign darstellt – das erste, mit dem Hochsprachen konfrontiert sind, sind Menschen, nicht Maschinen. Zusätzlich zu diesen Komponentenunterstützungsmechanismen auf Sprachebene bietet die .NET-Plattform auch eine Paketlösung für Komponentenkonfiguration, -betrieb, -verwaltung usw., und Visual Studio.NET, das auf die Komponentenentwicklung zugeschnitten ist, ist noch spannender Das ist alles für die C#-Komponentenprogrammierung, die eine riesige Welt eröffnet. In Bezug auf andere Technologien sind die schwachen Nachteile von Java vernachlässigbar, aber in Bezug auf die Komponentenprogrammierung weist Java im Vergleich zu C# unheilbare Mängel auf. Besonders für Entwickler mit C++- und Visual Basic-Hintergrund übt C# in dieser Hinsicht einen unwiderstehlichen Reiz und eine Versuchung aus.
Im Hinblick auf die plattformübergreifende Nutzung werden die Unterstützung und Implementierung von Java gelobt, obwohl die Geschwindigkeit von JVM immer noch Kopfzerbrechen bereitet. Obwohl C# die Portabilität im Hinblick auf die zugrunde liegende Struktur vollständig berücksichtigt hat, gibt es zumindest noch kein ausgereiftes und getestetes Produkt. C# scheint mehr an der Interoperabilität von XML-Webdiensten als an plattformübergreifender Programmierung interessiert zu sein. Allerdings hat die Interoperabilitätsunterstützung von C# auf Objektebene für mehr als 20 gängige Sprachen durch sein grundlegendes Sprachkonstrukt (CLI) den technischen Status von C# erheblich verbessert. Auch die günstige Interoperabilität mit COM-Komponenten bringt C# viele Punkte ein – die Aufrechterhaltung eines kompatiblen Systems ist für die moderne Softwareindustrie sehr wichtig und für die Mehrheit der Entwickler auch ein Zeichen der Verantwortung.
Natürlich ist eine umfassende technische Bewertung der beiden Sprachen keineswegs nur eine einfache Auflistung und ein Vergleich der oben genannten Punkte. Ihre Back-End-Plattformen (C# für .NET, Java für J2EE), die Unterstützung ihrer Programmier-Frameworks , und die Implementierung relevanter Tools für jede Sprache sind jetzt Einige Systemgrundlagen usw. haben erhebliche Auswirkungen auf die Entwicklung von Programmiersprachen. Aus rein technischer Sicht ist C# zweifellos wettbewerbsfähiger als Java. Es hat keinen Sinn, darüber zu streiten, wer wen kopiert hat – die Entwicklung von Technologie ist von Natur aus ein Prozess des gegenseitigen Lernens. Der rein technische Wettbewerb kann nicht über den Ausgang dieser Debatte entscheiden – wenn es schon ein Showdown sein muss. Die Softwareindustrie freut sich über den Wettbewerb. Nur eine vom Markt gemilderte Technologie kann uns besser dienen.