Listen Sie einige der Unterschiede auf, die ich gelernt habe
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.
Java ist "-1" .NET Framework ist "0". (Nur die readByte () -Methode ist "-1")
Die CopyTo-Methode (distStream) von .NET Framework 4 oder höher ist praktisch
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
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.
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)
Java ist in Ordnung
Einheitlich behandelt
Basisklasse
System.Security.Cryptography.ICryptoTransform, das der obigen Klasse als Schnittstelle zugewiesen wurde
HMAC unter HashAlgorithm
Es gibt.
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
Java ist vielseitig
--Protocol / Cipher Suites, die als JavaVM unterstützt werden
.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
System.IO.StreamReader.ReadToEnd () ist praktisch.
In der Nähe von ReadAll () für Dateivorgänge in VisualBASIC6.0 (Scripting.FileSystemObject). Sehr angenehm.
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
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
Java ist grundlegend wie int, long (nur notwendig und ausreichend)
.NET Framework ist verschieden wie Int32, UInt32 ,,,
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
Java kann statische Methoden in instanziierte Objekte einfügen → kann damit aufgerufen werden
.NET Framework kann damit nicht aufgerufen werden
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
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
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
Der Java-String-Vergleich ist die Methode equals ()
Sie können in Java nicht mit einer Zeichenfolge () wechseln (). → Mit Java 8 gelöst !?
So führen Sie die Komprimierung synchron (in Echtzeit) mit C # /. NET Framework durch
Java ist die Methode javax.xml.parsers.DocumentBuilder # setEntityResolver () .sax.EntityResolver)))
.NET Framework ist System.Xml.XmlDocument # XmlResolver-Eigenschaft
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).
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
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" **.
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.
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.
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.
Für Java gibt es normalerweise etwas in Apache-Commons
.NET Framework ... ich weiß es nicht
Classless.Hasher war praktisch
Rei no Hut C # Zufallsbibliothek war praktisch
Die Legion der Hüpfburg ist möglicherweise eine kryptografische Standardbibliothek für Java / .NET Framework
Recommended Posts