Différences entre Java et .NET Framework

Énumérez quelques-unes des différences que j'ai apprises


courant

Java est InputStream (java.io.InputStream) et OutputStream (java.io.OutputStream http://docs.oracle.com/javase/jp/6/api/org/omg/CORBA/portable/OutputStream.html)) Il est divisé en deux parties, entrée et sortie.

En revanche, dans le .NET Framework, il s'appelle Stream (System.IO.Stream). Comme vous pouvez le voir, l'entrée et la sortie sont unifiées.

Mais,

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

Si vous le faites, le système de sortie (écriture) est bon, mais si vous essayez d'entrer (lire), une erreur se produira, donc cela fera mal si vous pensez que vous pouvez toujours entrer et sortir.


Fin du flux

java est "-1" .NET Framework vaut "0". (Seule la méthode readByte () vaut "-1")


Stream (Copier vers)

La méthode CopyTo (distStream) de .NET Framework 4 ou version ultérieure est pratique


Filtrer le flux

En Java, il existe des classes du concept de flux de filtre (java.io.FilterInputStream et java.io. FilterOutputStream), alors faites-le en héritant

Il n'y a rien de tel dans le .NET Framework, il est créé en héritant de Stream


Flux de mémoire

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

.NET Framework est System.IO.MemoryStream

Les deux Java / .NET Framework sont difficiles à utiliser dans les situations où les données sont générées en temps réel → read () se termine.


Flux mémoire (correspondant au chorochoro)

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

.NET Framework ne connaît pas de telles classes Qu'il suffise de dire, la classe de canal anonyme (System.IO.Pipes.AnonymousPipeClientStream. aspx) et System.IO.Pipes.AnonymousPipeServerStream)


Cryptographie / Hash etc. (Java)

Java c'est bien


Cryptographie / hachage, etc. (.NET Framework)

Traités de manière unifiée

Classe de base

System.Security.Cryptography.ICryptoTransform Attribué à la classe ci-dessus en tant qu'interface

HMAC est sous HashAlgorithm

Il y a.


compression

Ni Java / .NET Framework n'avait de fonction pour compresser en temps réel, mais à partir de Java 7, [java.util.zip.Deflater # SYNC_FLUSH](http://docs.oracle.com/javase/jp/8/docs/api/ java / util / zip / Deflater.html) a été ajouté pour activer la compression zlib en temps réel.

Pour le .NET Framework, je pense que vous pouvez utiliser zlib.NET.dll. Comment effectuer une compression synchrone (en temps réel) avec C # /. NET Framework


SSL

Java a hérité de java.net.Socket javax.net.ssl.SSLSocket //docs.oracle.com/javase/jp/6/api/javax/net/ssl/SSLSocket.html)

.NET Framework hérite de System.IO.Stream System.Net .Security.SslStream

Le .NET Framework hérite de Stream, tandis que Java se branche dans InputStream / OutputStream!? Socket hérite


Option SSL (Java)

Java est polyvalent

--Suites de protocole / chiffrement prises en charge en tant que JavaVM


Option SSL (.NET Framework)

Contrôle de protocole .NET Framework uniquement!?


Reader/Writer

Les deux Java / .NET Framework sont unifiés avec le code de caractère interne UTF16

Java est essentiellement préparé pour chaque implémentation AudioFileReader, FileReader, FilterReader, InputStreamReader, LineNumberReader, PipedReader, PushbackReader, Reader, XMLStreamReader .... trop nombreux

Le .NET Framework comprend System.IO.StreamReader et System.IO. StreamWriter


Lecteur ReadToEnd ()

System.IO.StreamReader.ReadToEnd () est pratique.

Près de ReadAll () pour les opérations sur les fichiers dans VisualBASIC6.0 (Scripting.FileSystemObject). Très pratique.


Multidiffusion UDP

Dans les deux .NET Framework / Java, la multidiffusion est implémentée en tant que UDP

Java hérite de java.net.DatagramSocket qui est la substance d'UDP [java.net.MulticastSocket] ](Http://docs.oracle.com/javase/jp/6/api/java/net/MulticastSocket.html)

Le .NET Framework est l'entité d'UDP [System.Net.Sockets.UdpClient](https://msdn.microsoft.com/ja-jp/library/system.net.sockets.udpclient (v = vs.110). aspx) lui-même


du son

En Java, c'est javax.sound.sampled.AudioInputStream qui hérite de Stream, l'enregistrement est donc facile. ça peut.

La sortie (lecture du son sur le haut-parleur) n'est pas Stream, mais vous pouvez facilement créer un wrapper qui hérite de Stream.

Le .NET Framework n'a pas d'autre choix que d'utiliser Managed DirectX (MDX) ou SlimDX du tiers, mais le codage peut être assez difficile.


Web(HttpClient)

Java a hérité de java.net.URLConnection [java.net.HttpURLConnection](http: / /docs.oracle.com/javase/jp/6/api/java/net/HttpURLConnection.html) "http uniquement" et ses enfants javax.net.ssl.HttpsURLConnection /javase/jp/6/api/javax/net/ssl/HttpsURLConnection.html) "Pour https"

.NET Framework hérite de System.Net.WebRequest System.Net .HttpWebRequest "Utilisation combinée http / https"

Android a la classe org.apache.http.client.HttpClient


Type de type

Java est basique comme int, long (seulement nécessaire et suffisant)

.NET Framework est divers comme Int32, UInt32 ,,,


type d'octet

Java est compris entre -128 et 127 (soyez prudent lors de la conversion vers et depuis JRuby / Jython)

.NET Framework 0-255

Personnellement, je ne comprends pas la signification des nombres négatifs en octet


Méthode statique

Java peut mettre des méthodes statiques dans des objets instanciés → peut être appelé avec ceci

.NET Framework ne peut pas être appelé avec ceci


fil

Java appelle la classe elle-même java.lang.Thread class (java.lang.Runnable //docs.oracle.com/javase/jp/6/api/java/lang/Runnable.html) Hériter et implémenter l'interface) → Les threads peuvent être considérés comme des unités de classe

Le .NET Framework enregistre les méthodes dans System.Threading.Thread → On peut dire que le fil est une unité de méthode


Traitement de verrouillage

Le verrou Java est "synchronisé"

Divers verrous .NET Framework (avec l'évolution de Windows ...)


Base64

Java.util.Base64 à partir de JDK8

.NET Framework Base64 dans de nombreux endroits


Encodage d'URL

Encodage URL Java (java.net.URLEncoder et [java.net.URLDecoder](http: //docs.oracle.com/javase/jp/6/api/java/net/URLDecoder.html)) est une chaîne de caractères → Ne peut pas être utilisé


Comparaison de chaînes

La comparaison de chaînes Java est la méthode equals ()


instruction switch

Vous ne pouvez pas basculer () avec une chaîne en Java. → Résolu avec Java 8!?


Compression en temps réel Zlib

Comment effectuer une compression synchrone (en temps réel) avec C # /. NET Framework


Xréf XML

Java est la [méthode javax.xml.parsers.DocumentBuilder # setEntityResolver ()](https://docs.oracle.com/javase/jp/6/api/javax/xml/parsers/DocumentBuilder.html#setEntityResolver (org.xml) .sax.EntityResolver)))

.NET Framework est Propriété System.Xml.XmlDocument # XmlResolver


Comportement NULL des xréfs XML

Non seulement la différence entre la méthode et la propriété ci-dessus, mais également le comportement lorsque NULL est spécifié.

Java adopte l'objet par défaut (c'est-à-dire le même que l'analyse XML sans appeler de méthode).

Le .NET Framework est un objet NULL (c'est-à-dire pas de xréfs / pas de xréfs).


Objet Xréf XML

L'objet qui spécifie le résolveur de la xréf ci-dessus est

Pour Java, interface org.xml.sax.EntityResolver

Pour .NET Framework, Classe abstraite System.Xml.XmlResolver


La seule classe qui nécessite l'implémentation d'un objet xréf XML

Évidemment, la seule chose qui doit être implémentée dans l'objet qui spécifie le résolveur de xréf ci-dessus est ** "une méthode qui renvoie le contenu de l'URI qui pointe vers la xréf" **.


La seule classe (Java) qui nécessite une implémentation d'un objet xréf XML

Pour Java, [méthode org.xml.sax.InputSource.InputSource resolutionEntity (String publicId, String systemId)](https://docs.oracle.com/javase/jp/6/api/org/xml/sax/EntityResolver .html # resolutionEntity (java.lang.String,% 20java.lang.String))

Le deuxième argument est un type String, mais un URI indiquant une référence externe vient et [classe org.xml.sax.InputSource.InputSource](https://docs.oracle.com/javase/jp/6/api/org/xml /sax/InputSource.html) est renvoyé.


La seule classe qui nécessite l'implémentation d'un objet xréf XML (.NET Framework)

Pour .NET Framework, [méthode objet GetEntity (Uri absoluUri, rôle de chaîne, 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_) uniquement.

Le premier argument est l'URI indiquant la référence externe dans la classe System.Uri. , Classe System.IO.Stream vient d'être renvoyée.

Il existe un troisième argument qui indique le type / la classe que vous souhaitez renvoyer, mais la réalité est [Classe System.IO.Stream](https://docs.microsoft.com/ja-jp/dotnet/api/system.io.stream? Il semble que seul view = netframework-4.7.2) est donné, donc après tout [classe System.IO.Stream](https://docs.microsoft.com/ja-jp/dotnet/api/system.io.stream?view? Il suffit de retourner = netframework-4.7.2).


Quelle est la classe InputSource renvoyée par un objet xréf XML?

Pour le .NET FrameWork ci-dessus, utilisez la classe System.IO.Stream C'est chouette car il revient juste, mais pour Java, la classe org.xml.sax.InputSource.InputSource Qu'est-ce que /InputSource.html)? classe java.io.InputStream et [classe java.io.Reader](https: // docs .oracle.com / javase / jp / 6 / api / java / io / Reader.html) (et le code de caractère) peut être exprimé sous forme de résumé.


Bibliothèque tierce classique

Pour Java, il y a généralement quelque chose dans Apache-Commons

.NET Framework ... je ne sais pas


Bibliothèque tierce classique (hachage .NET Framework)

Classless.Hasher était pratique


Bibliothèque tierce classique (nombre aléatoire .NET Framework)

Rei no Hut C # Random Library était pratique


Bibliothèque tierce classique (.NET Framework / cryptage Java)

The Legion of the Bouncy Castle peut être une bibliothèque cryptographique standard pour Java / .NET Framework

Recommended Posts

Différences entre Java et .NET Framework
[Java] Différences entre les variables d'instance et les variables de classe
Résumer les différences entre l'écriture C # et Java
[Java] Différence entre == et égal
Différences entre IndexOutOfBoundsException et ArrayIndexOutOfBoundsException
[Apprentissage Java Bronze] Différence entre l'encapsulation, le masquage des données et le masquage des informations
[Java] Différence entre Hashmap et HashTable
framework java
[JAVA] Différence entre abstrait et interface
À propos de la différence entre la classe Applet et la classe JApplet
[Java] Différence entre array et ArrayList
Pensez aux différences entre les fonctions et les méthodes (en Java)
Différences dans la gestion des chaînes entre Java et Perl
[Java] Différence entre fermable et fermable automatiquement
[Java] Différence entre StringBuffer et StringBuilder
[Java] Différence entre longueur, longueur () et taille ()
Conversion entre Kotlin nullable et Java facultative
Relation entre les modificateurs d'accès kotlin et java
Différence entre final et immuable en Java
Différence entre la préface et le suffixe des opérateurs
[Pour les débutants] Différence entre Java et Kotlin
[Note] Coopération entre Java et DB (basique)
Différence entre les chaînes de caractères et les symboles Ruby [Débutant]
[Java] Différence entre la plage Intstream et la plageClosed
Différence entre int et Integer en Java
HashMap # putAll () se comporte différemment entre Java 7 et Java 8
Une note sur les différences entre les interfaces et les classes abstraites en Java
Comparaison du framework Java
Java et JavaScript
XXE et Java
[Java] Cadre de collection
[Java] Comprendre la différence entre List et Set
Différences entre Spring Initializr Packaging JAR et WAR
Différence entre next () et nextLine () dans Java Scanner
J'ai comparé les caractéristiques de Java et .NET
[Comprendre] Différence entre le hachage et le tableau dans Ruby
Différences dans l'écriture des classes Java, C # et Javascript
Distinguer les nombres positifs et négatifs en Java
[Java] Différence entre "variable finale" et "objet immuable"
Différence entre Java, C # et JavaScript (comment trouver le degré d'obésité)
Organisez la différence de confort d'écriture entre l'expression lambda Java et l'expression lambda Kotlin.
Conseils pour Play Framework2.5 (Java)
Getter et Setter (Java)
[Java] Thread et exécutable
Java vrai et faux
[Java] Comparaison des chaînes de caractères et && et ||
[Java] Différence entre statique final et final dans les variables membres
[JAVA] Quelle est la différence entre interface et abstract? ?? ??
Java - Sérialisation et désérialisation
[Java] Arguments et paramètres
Voyons les différences entre les sous-chaînes Java et les sous-chaînes C #, et comment les porter.
Différences entre Fetch Type LAZY et EAGER dans Hibernate
[Java] Branchement et répétition
[Développement] Comparaison du framework Java
Différence entre vh et%
Conversion entre objets Java et JSON à l'aide de Moshi
[Java] Types de variables et types