J'ai comparé les caractéristiques de Java et .NET

Préambule

Le but de la rédaction de cet article n'est pas de comparer Java avec «.NET» pour faire une différence technologique. Il y a souvent une guerre religieuse contre la langue dans la communauté des ingénieurs. Les ingénieurs Java se plaignent que «.NET» ne fonctionne que sur Windows, et les ingénieurs «.NET» se plaignent que Java est bruyant. Je pense qu'un tel conflit est improductif et dénué de sens.

Nous espérons qu'en écrivant cet article, les ingénieurs qui n'en ont expérimenté que l'un pourront comprendre les caractéristiques techniques de l'autre en comparant à la fois les systèmes de langage, les frameworks Web et les méthodes de déploiement.

Outils de développement

Kou, si vous voulez bien faire cela, vous utiliserez certainement le navire. (Si un artisan veut faire du bon travail, affûtez d'abord les outils).

Dans un premier temps, je vais vous expliquer les outils indispensables au développement.

Cadre outil Commentaire
.NET Visual Studio, Visual Studio Code, Rider Visual Studio, l'IDE officiel de Microsoft.NETCompatible avec toutes les plateformes.
Java Intellij, Eclipse, Visual Studio Code Rôle d'exécution de code et de débogage, en fonction du JDK
Java Mavan, Gradle Le rôle de la gestion des modèles et du packaging. Dépend de JDK
Java JDK A le rôle de compiler et d'exécuter (Runtime)

Le développement de .NET peut être démarré en installant Visual Studio (ci-après abrégé en VS). Vous ne pouvez pas simplement installer l'EDI pour Java, vous devez installer et configurer JDK et Maven. Il existe un IDE (Intellij) qui installe automatiquement le JDK et Maven, mais il est préférable de l'installer et de le configurer vous-même si possible. Sinon, vous marcherez sur une mine que vous ne comprenez pas.

Si vous dites simplement la facilité de création d'un environnement, vous serez mieux dans .NET. Il vous suffit de cliquer l'un après l'autre sans utiliser votre tête. Java doit d'abord comprendre et configurer les caractéristiques et les responsabilités de l'outil.

Pour les débutants, la première barrière à Java peut sembler un peu étroite. Cependant, Java a du mal à créer l'environnement, vous pouvez donc comprendre les détails du projet.

Eh bien, les deux peuvent être développés à l'aide de Visual Studio Code (ci-après abrégé en Vscode), donc Vscode est recommandé pour la construction de l'environnement dans le but de comprendre systématiquement la technologie.

Ensuite, j'expliquerai les différents outils un peu plus en détail.

Responsabilités .NET Java Commentaire
gestion de projet VS,Vscode,Rider Intellij, Eclipse, Vscode Ce n'est pas très différent si vous utilisez Vscode, mais il est un peu plus efficace d'acheter des idées et des cavaliers moyennant des frais. Éclipse~~des ordures~~
Gestion des modèles IDE+MSBuild or IDE+SDK IDE+Maven or IDE+Gradle .NETLe projet est sln+Se compose d'un fichier csproj. Java est pom.Se compose d'un fichier xml.
Compiler / déboguer IDE+MSBuild+SDK or IDE+SDK IDE+Maven+SDK or IDE+Gradle+SDK .NETLe compilateur est indépendant. Le compilateur Java est intégré au JDK et le projet Maven est pom.Il se compose de xml, mais le compilateur est pom.Maven doit compiler car il ne reconnaît pas xml
Gestion des packages Nuget Mavan, Gradle Nuget est facile. Java Mavan et Gradle sont flexibles et puissants.
Emballage et déploiement IDE+MSBuild+SDK or IDE+SDK IDE+Maven+SDK or IDE+Gradle+SDK .NETLe compilateur est indépendant. Le compilateur Java est intégré au JDK et le projet Maven est pom.Il se compose de xml, mais le compilateur est pom.Maven est obligé de créer un package car il ne reconnaît pas le XML.

Les modèles riches fournis par le SDK .NET sont simples et faciles à utiliser. Maven en Java est flexible et puissant, mais gérer plusieurs projets semble plus gênant que «.NET».

Cette différence vient du compilateur et du modèle.

Les projets Java n'ont pas de modèles standard officiels, donc l'EDI organise uniquement les dossiers de projet. Vous pouvez choisir n'importe quel répertoire comme SourceRoot ou ResourceRoot par vous-même, ce qui est très flexible. Cependant, en raison de sa flexibilité, il a également l'inconvénient d'augmenter la charge de la gestion de projet dans le développement d'équipe. Eh bien, grâce à Maven et Gradle, l'ère du chaos de Java est terminée.

Caractéristiques linguistiques

Classification .NET Java
Structure de classe namespace :L'espace de dénomination ne doit pas nécessairement correspondre à la structure de répertoire réelle Package :L'espace de dénomination et le répertoire doivent correspondre
classe fichier cs:C'est OK même si le nom de la classe et le nom du fichier ne correspondent pas fichier java:Ce n'est pas grave si le nom de la classe et le nom du fichier ne correspondent pas, mais une seule classe publique peut être définie dans une classe
Sortie compilée .dll, .exeFichier .jar, .warFichier

Cadre Web

Le framework Web officiel de Microsoft pour «.NET» est le standard de facto. Java a une API Servlet officielle, mais le standard de facto est Spring. Je voudrais comparer avec le framework MVC.

une fonction .NET Java Commentaire
Fonction principale ASP.NET Servlet
Cadre MVC ASP.NET MVC Spring MVC
Moteur de modèle Razor Thymeleaf Razor est intuitif et facile à utiliser, Spring ne fournit pas de moteur de modèle et vous pouvez mettre Thymeleaf de Maven
Couche de persistance des données Entity Framework Hibernate or MyBatis EF est facile et facile à apprendre. Hibernate en Java est facile mais décalé, MyBatis a besoin d'écrire du SQL.

Le framework Web .NET fournit un moteur de modèle et une couche de persistance des données dès le début, il est donc facile à comprendre et à apprendre. Le cadre Web de Java offre de nombreux choix pour le moteur de modèle et la couche de persistance des données, et peut être configuré de manière flexible en fonction des caractéristiques du projet. Hibernate est populaire en Europe et aux États-Unis pour la couche de persistance des données de Java, et il existe de nombreux utilisateurs de MyBatis en Asie. (* Selon la recherche Google Drain)

Personnellement, s'il s'agit d'une couche de persistance des données, l'Entity Framework .NET est confortable à utiliser, tirant parti d'Hibernate et de MyBatis.

Déployer

Grâce à .NET Core, .NET est enfin libre de la malédiction de Windows uniquement, et je suis très heureux d'avoir plus de choix. Pour être honnête, il n'y a pas de grande différence entre .NET et Java en matière de déploiement.

Responsabilités .NET Java
OS Window, Linux Windows, Linux
serveur Web IIS, Kestrel Tomcat

Comme IIS est une interface graphique, il peut être facilement déployé, mais il présente l'inconvénient de ne pouvoir être utilisé que sous Windows.

Résumé

Java et «.NET» ont tous deux leurs propres mérites et ne peuvent être comparés.

Les cadres ne sont qu'un moyen et la compréhension des caractéristiques des deux cadres vous aidera à faire les meilleurs choix pour atteindre vos objectifs.

Cependant, Java a un avantage écrasant en termes d'écosystème. Le nombre de committers n'est pas non plus le rapport de «.NET». Je viens du champ .NET, donc je suis définitivement attaché à .NET. Cependant, si un nouveau venu demande: «Que devrais-je étudier,« NET »ou Java?», Je recommande Java, «Si vous ne vous souciez pas de Windows, Java est meilleur.»

Après tout, la technologie est temporaire et l'écosystème est éternel. C'est pourquoi PHP est toujours actif.

Recommended Posts

J'ai comparé les caractéristiques de Java et .NET
J'ai résumé les types et les bases des exceptions Java
J'ai comparé Java et Ruby FizzBuzz.
Je n'ai pas vraiment compris le comportement de Java Scanner et .nextLine ()
J'ai essayé de résumer les bases de kotlin et java
[Java] J'ai réfléchi aux mérites et aux utilisations de "interface"
[jour: 5] J'ai résumé les bases de Java
J'ai essayé de résumer les méthodes de Java String et StringBuilder
[Java] La partie déroutante de String et StringBuilder
J'ai essayé de traduire la grammaire de R et Java [Mis à jour de temps en temps]
Essayez Progate Free Edition [Java I]
J'ai reçu les données du voyage (application agenda) en Java et j'ai essayé de les visualiser # 001
La comparaison d'énumération est ==, et equals est bonne [Java]
Organiser l'état actuel de Java et envisager l'avenir
Langage Java du point de vue de Kotlin et C #
[Java] J'ai essayé d'implémenter la combinaison.
Avantages et inconvénients de Java
J'ai étudié le constructeur (java)
[Note] Sortie Java de la somme des éléments pairs et impairs
Commande pour vérifier le nombre et l'état des threads Java
Les débutants en Java ont brièvement résumé le comportement de Array et ArrayList
J'ai essayé JAX-RS et pris note de la procédure
Récapitulatif des valeurs renvoyées par la méthode des caractéristiques Spliterator #java
Que dois-je faire après janvier 2019 concernant le problème du paiement Java et le problème de la fin du support Java 8?
J'ai essayé de comparer et de correspondre à des méthodes avec des fonctions similaires pour la différence entre le tableau Java et ArrayList.
[Java] Supprimer les éléments de la liste
À propos de Biocontainers fastqc et Java
[Édition Java] Histoire de la sérialisation
J'ai lu la source d'Integer
Ceci et cela de JDK
J'ai lu la source de Long
J'ai essayé le framework Java "Quarkus"
J'ai lu la source de Short
J'ai lu la source de Byte
Différences entre Java et .NET Framework
J'ai lu la source de String
L'origine des expressions Java lambda
J'ai essayé d'utiliser Google HttpClient de Java
[Java] Divers résumés joints aux chefs de classe et aux membres
[Java] Obtenez les dates des derniers lundi et dimanche dans l'ordre
Je veux revenir à l'écran précédent avec kotlin et java!
J'ai essayé le type d'entrée / sortie de Java Lambda ~ Map edition ~
Mécanisme et caractéristiques de la classe d'implémentation Collection souvent utilisés en Java
Lire les 4 premiers octets du fichier de classe Java et générer CAFEBABE
De Java naissant (3 ans) à Node.js (4 ans). Et l'impression de retourner à Java
Depuis que j'ai réussi l'Oracle Java Bronze, j'ai résumé les grandes lignes du test.
Obtenez le résultat de POST en Java
Une collection de phrases qui impressionne le "sentiment différent" de Java et de JavaScript
En vérifiant le fonctionnement de Java sous Linux, j'ai pu comprendre la compilation et la hiérarchie.
Vérifiez le contenu du magasin de certificats Java
Examiner l'utilisation de la mémoire des éléments Java
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
[Java] Obtenez le jour d'un jour spécifique
Après 3 mois de formation Java et Spring
Mémo: [Java] Vérifiez le contenu du répertoire
J'ai essayé le nouveau yuan à Java
J'ai essayé de résumer les points clés de la conception et du développement de gRPC