Unterschiede zwischen Java und .NET Framework

Listen Sie einige der Unterschiede auf, die ich gelernt habe


Strom

Java ist InputStream (java.io.InputStream) und OutputStream (java.io.OutputStream. http://docs.oracle.com/javase/jp/6/api/org/omg/CORBA/portable/OutputStream.html)) Es ist in zwei Teile unterteilt, Eingabe und Ausgabe.

In .NET Framework heißt es dagegen Stream (System.IO.Stream). Wie Sie sehen können, sind Eingabe und Ausgabe einheitlich.

Aber,

// C # Beispielcode DeflateStream compressionStream = ne w DeflateStream(compressedFileStream, CompressionMode.Compress));

Wenn Sie dies tun, ist das Ausgabesystem (Schreiben) gut, aber wenn Sie versuchen, einzugeben (Lesen), tritt ein Fehler auf, der weh tut, wenn Sie glauben, dass Sie immer eingeben und ausgeben können.


Ende der Übertragung

Java ist "-1" .NET Framework ist "0". (Nur die readByte () -Methode ist "-1")


Stream (Kopieren nach)

Die CopyTo-Methode (distStream) von .NET Framework 4 oder höher ist praktisch


Stream filtern

In Java gibt es Klassen des Konzepts der Filterströme (java.io.FilterInputStream und java.io. FilterOutputStream), also machen Sie es, indem Sie es erben

In .NET Framework gibt es so etwas nicht. Es wird durch Erben von Stream erstellt


Speicherstrom

Java ist java.io.ByteArrayInputStream und [java.io.ByteArrayOutputStream](http: // docs .oracle.com / javase / jp / 6 / api / java / io / ByteArrayOutputStream.html)

.NET Framework ist System.IO.MemoryStream

Beide Java / .NET Frameworks sind in Situationen, in denen Daten in Echtzeit generiert werden, schwierig zu verwenden → read () endet.


Speicherstrom (entsprechend Chorochoro)

Java ist java.io.PipedInputStream und [java.io.PipedOutputStream](http: // docs) .oracle.com / javase / jp / 6 / api / java / io / PipedOutputStream.html)

.NET Framework kennt solche Klassen nicht Es genügt zu sagen, die anonyme Pipe-Klasse (System.IO.Pipes.AnonymousPipeClientStream. aspx) und System.IO.Pipes.AnonymousPipeServerStream)


Kryptographie / Hash etc. (Java)

Java ist in Ordnung


Kryptographie / Hash usw. (.NET Framework)

Einheitlich behandelt

Basisklasse

System.Security.Cryptography.ICryptoTransform, das der obigen Klasse als Schnittstelle zugewiesen wurde

HMAC unter HashAlgorithm

Es gibt.


Kompression

Weder Java / .NET Framework hatte eine Funktion zum Komprimieren in Echtzeit, sondern von Java 7 aus java.util.zip.Deflater # SYNC_FLUSH. java / util / zip / Deflater.html) wurde hinzugefügt, um die Zlib-Komprimierung in Echtzeit zu ermöglichen.

Ich denke, Sie können für .NET Framework zlib.NET.dll verwenden. So führen Sie die Komprimierung synchron (in Echtzeit) mit C # /. NET Framework durch


SSL

Java hat [java.net.Socket] geerbt (http://docs.oracle.com/javase/jp/6/api/java/net/Socket.html) javax.net.ssl.SSLSocket //docs.oracle.com/javase/jp/6/api/javax/net/ssl/SSLSocket.html)

.NET Framework erbt System.IO.Stream System.Net .Security.SslStream

Das .NET Framework erbt Stream, während Java in InputStream / OutputStream! Verzweigt.? Socket erbt


SSL-Option (Java)

Java ist vielseitig

--Protocol / Cipher Suites, die als JavaVM unterstützt werden


SSL-Option (.NET Framework)

.NET Framework nur Protokollsteuerung !?


Reader/Writer

Beide Java / .NET Frameworks sind mit dem internen Zeichencode UTF16 vereinheitlicht

Java ist grundsätzlich für jede Implementierung vorbereitet AudioFileReader, FileReader, FilterReader, InputStreamReader, LineNumberReader, PipedReader, PushbackReader, Reader, XMLStreamReader ... zu viele

Das .NET Framework enthält System.IO.StreamReader und System.IO. StreamWriter


Reader ReadToEnd ()

System.IO.StreamReader.ReadToEnd () ist praktisch.

In der Nähe von ReadAll () für Dateivorgänge in VisualBASIC6.0 (Scripting.FileSystemObject). Sehr angenehm.


Multicast-UDP

In beiden .NET Framework / Java ist Multicast als UDP implementiert

Java erbt java.net.DatagramSocket, die die Substanz von UDP [java.net.MulticastSocket] ist. ](Http://docs.oracle.com/javase/jp/6/api/java/net/MulticastSocket.html)

Das .NET Framework ist die Entität von UDP [System.Net.Sockets.UdpClient](https://msdn.microsoft.com/ja-jp/library/system.net.sockets.udpclient (v = vs.110). aspx) selbst


Klang

In Java erbt javax.sound.sampled.AudioInputStream Stream, sodass die Aufzeichnung einfach ist. es kann.

Die Ausgabe (Wiedergabe von Ton auf dem Lautsprecher) ist nicht Stream, aber Sie können einfach einen Wrapper erstellen, der Stream erbt.

Das .NET Framework hat keine andere Wahl, als Managed DirectX (MDX) oder SlimDX des Drittanbieters zu verwenden. Die Codierung kann jedoch recht schwierig sein.


Web(HttpClient)

Java hat java.net.URLConnection [java.net.HttpURLConnection](http: / /docs.oracle.com/javase/jp/6/api/java/net/HttpURLConnection.html) "nur http" und seine untergeordneten Elemente javax.net.ssl.HttpsURLConnection /javase/jp/6/api/javax/net/ssl/HttpsURLConnection.html) "Für https"

.NET Framework erbt System.Net.WebRequest System.Net .HttpWebRequest "http / https kombinierte Verwendung"

Android hat die Klasse org.apache.http.client.HttpClient


Art des Typs

Java ist grundlegend wie int, long (nur notwendig und ausreichend)

.NET Framework ist verschieden wie Int32, UInt32 ,,,


Bytetyp

Java ist -128 bis 127 (Seien Sie vorsichtig beim Konvertieren von und nach JRuby / Jython)

.NET Framework 0-255

Persönlich verstehe ich die Bedeutung negativer Zahlen im Bytetyp nicht


Statische Methode

Java kann statische Methoden in instanziierte Objekte einfügen → kann damit aufgerufen werden

.NET Framework kann damit nicht aufgerufen werden


Faden

Java ruft die Klasse selbst auf java.lang.Thread class (java.lang.Runnable //docs.oracle.com/javase/jp/6/api/java/lang/Runnable.html) Die Schnittstelle erben und implementieren) → Threads können als Klasseneinheiten bezeichnet werden

Das .NET Framework registriert Methoden in System.Threading.Thread → Thread kann als Methodeneinheit bezeichnet werden


Verarbeitung sperren

Java-Sperre ist "synchronisiert"

Verschiedene .NET Framework-Sperren (mit der Entwicklung von Windows ...)


Base64

Java.util.Base64 von JDK8

.NET Framework Base64 an vielen Stellen


URL-Codierung

Java-URL-Codierung (java.net.URLEncoder und [java.net.URLDecoder](http: //docs.oracle.com/javase/jp/6/api/java/net/URLDecoder.html)) ist eine Zeichenfolge → Kann nicht verwendet werden


Zeichenfolgenvergleich

Der Java-String-Vergleich ist die Methode equals ()


switch-Anweisung

Sie können in Java nicht mit einer Zeichenfolge () wechseln (). → Mit Java 8 gelöst !?


Zlib-Echtzeitkomprimierung

So führen Sie die Komprimierung synchron (in Echtzeit) mit C # /. NET Framework durch


XML xref

Java ist die Methode javax.xml.parsers.DocumentBuilder # setEntityResolver () .sax.EntityResolver)))

.NET Framework ist System.Xml.XmlDocument # XmlResolver-Eigenschaft


NULL-Verhalten von XML-XRefs

Nicht nur der Unterschied zwischen der obigen Methode und der Eigenschaft, sondern auch das Verhalten, wenn NULL angegeben wird.

Java übernimmt das Standardobjekt (dh das Parsen von XML ohne Aufrufen einer Methode).

Das .NET Framework ist ein NULL-Objekt (dh keine XRefs / keine XRefs).


XML-XRef-Objekt

Das Objekt, das den Resolver der obigen XRef angibt, ist

Für Java org.xml.sax.EntityResolver-Schnittstelle

Für .NET Framework System.Xml.XmlResolver Abstract Class


Die einzige Klasse, die die Implementierung eines XML-XRef-Objekts erfordert

Offensichtlich ist das einzige, was in dem Objekt implementiert werden muss, das den obigen XRef-Resolver angibt, ** "eine Methode, die den Inhalt des URI zurückgibt, der auf das XRef verweist" **.


Die einzige Klasse (Java), die die Implementierung eines XML-XRef-Objekts erfordert

Für Java die Methode org.xml.sax.InputSource.InputSource resolveEntity (String publicId, String systemId) .html # resolveEntity (java.lang.String,% 20java.lang.String))

Das zweite Argument ist ein String-Typ, aber ein URI, der eine externe Referenz angibt, kommt und org.xml.sax.InputSource.InputSource-Klasse /sax/InputSource.html) wird zurückgegeben.


Die einzige Klasse, die die Implementierung eines XML-XRef-Objekts erfordert (.NET Framework)

Für .NET Framework [Objekt GetEntity (Uri absoluteUri, Zeichenfolgenrolle, Type ofObjectToReturn)](https://docs.microsoft.com/ja-jp/dotnet/api/system.xml.xmlresolver.getentity?view= netframework-4.7.2 # System_Xml_XmlResolver_GetEntity_System_Uri_System_String_System_Type_) nur.

Das erste Argument ist der URI, der die externe Referenz in [System.Uri-Klasse] angibt (https://docs.microsoft.com/ja-jp/dotnet/api/system.uri?view=netframework-4.7.2). , System.IO.Stream-Klasse wird gerade zurückgegeben.

Es gibt ein drittes Argument, das den Typ / die Klasse angibt, den Sie zurückgeben möchten, aber die Realität ist [System.IO.Stream-Klasse](https://docs.microsoft.com/ja-jp/dotnet/api/system.io.stream? Es scheint, dass nur view = netframework-4.7.2) angegeben ist, also immerhin [System.IO.Stream-Klasse](https://docs.microsoft.com/ja-jp/dotnet/api/system.io.stream?view? Geben Sie einfach = netframework-4.7.2) zurück.


Was ist die InputSource-Klasse, die von einem XML-XRef-Objekt zurückgegeben wird?

Verwenden Sie für das obige .NET FrameWork System.IO.Stream-Klasse. Es ist ordentlich, weil es nur zurückkehrt, aber für Java [org.xml.sax.InputSource.InputSource-Klasse](https://docs.oracle.com/javase/jp/6/api/org/xml/sax Was ist /InputSource.html)? java.io.InputStream-Klasse und [java.io.Reader-Klasse](https: // docs .oracle.com / javase / jp / 6 / api / java / io / Reader.html) (und der Zeichencode) können als Zusammenfassung ausgedrückt werden.


Klassische Bibliothek von Drittanbietern

Für Java gibt es normalerweise etwas in Apache-Commons

.NET Framework ... ich weiß es nicht


Klassische Drittanbieter-Bibliothek (.NET Framework-Hash)

Classless.Hasher war praktisch


Klassische Drittanbieter-Bibliothek (.NET Framework-Zufallszahl)

Rei no Hut C # Zufallsbibliothek war praktisch


Klassische Drittanbieter-Bibliothek (.NET Framework / Java-Verschlüsselung)

Die Legion der Hüpfburg ist möglicherweise eine kryptografische Standardbibliothek für Java / .NET Framework

Recommended Posts

Unterschiede zwischen Java und .NET Framework
[Java] Unterschiede zwischen Instanzvariablen und Klassenvariablen
Fassen Sie die Unterschiede zwischen C # - und Java-Schrift zusammen
[Java] Unterschied zwischen == und gleich
Unterschiede zwischen IndexOutOfBoundsException und ArrayIndexOutOfBoundsException
[Java Bronze-Lernen] Unterschied zwischen Kapselung, Ausblenden von Daten und Ausblenden von Informationen
[Java] Unterschied zwischen Hashmap und HashTable
Java-Framework
[JAVA] Unterschied zwischen Abstract und Interface
[Java] Unterschied zwischen Array und ArrayList
Denken Sie über die Unterschiede zwischen Funktionen und Methoden nach (in Java)
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
[Java] Unterschied zwischen Closeable und AutoCloseable
[Java] Unterschied zwischen StringBuffer und StringBuilder
[Java] Unterschied zwischen Länge, Länge () und Größe ()
Konvertierung zwischen Kotlin nullable und Java Optional
Beziehung zwischen Kotlin- und Java-Zugriffsmodifikatoren
Unterschied zwischen final und Immutable in Java
Unterschied zwischen Vorwort und Postfix von Operatoren
[Für Anfänger] Unterschied zwischen Java und Kotlin
[Hinweis] Zusammenarbeit zwischen Java und DB (Basic)
Unterschied zwischen Ruby-Zeichenketten und Symbolen [Anfänger]
[Java] Unterschied zwischen Intstream-Bereich und rangeClosed
Unterschied zwischen int und Integer in Java
HashMap # putAll () verhält sich zwischen Java 7 und Java 8 unterschiedlich
Ein Hinweis zu den Unterschieden zwischen Schnittstellen und abstrakten Klassen in Java
Java Framework Vergleich
Java und JavaScript
XXE und Java
[Java] Sammlungsframework
[Java] Verstehe den Unterschied zwischen List und Set
Unterschiede zwischen Spring Initializr Verpackung JAR und WAR
Unterschied zwischen next () und nextLine () in Java Scanner
Ich habe die Eigenschaften von Java und .NET verglichen
[Verständnis] Unterschied zwischen Hash und Array in Ruby
Unterschiede beim Schreiben von Java-, C # - und Javascript-Klassen
Unterscheiden Sie in Java zwischen positiven und negativen Zahlen
[Java] Unterschied zwischen "endgültiger Variable" und "unveränderlichem Objekt"
Unterschied zwischen Java, C # und JavaScript (wie man den Grad der Fettleibigkeit findet)
Organisieren Sie den Unterschied im Schreibkomfort zwischen dem Java-Lambda-Ausdruck und dem Kotlin-Lambda-Ausdruck.
Spielen Sie Framework2.5 (Java) -Tipps
Getter und Setter (Java)
[Java] Thread und ausführbar
Java wahr und falsch
[Java] Vergleich von Zeichenketten und && und ||
[Java] Unterschied zwischen statischem final und final in Mitgliedsvariablen
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
Java - Serialisierung und Deserialisierung
[Java] Argumente und Parameter
Lassen Sie uns die Unterschiede zwischen Java-Teilzeichenfolgen und C # -Substrings und deren Portierung untersuchen.
Unterschiede zwischen Fetch Type LAZY und EAGER im Ruhezustand
[Java] Verzweigen und Wiederholen
[Entwicklung] Java Framework Vergleich
Unterschied zwischen vh und%
Konvertieren Sie mit Moshi zwischen Java-Objekten und JSON
[Java] Variablen- und Typtypen