NET sont populaires auprès de nombreux développeurs et Java semble les implémenter bientôt. Bien sûr, il s'agit d'une fonctionnalité de langage et non d'une fonctionnalité d'exécution. Je pense que celui des deux que vous choisirez en fin de compte dépend de vos préférences personnelles et des opportunités de carrière locales. Les fonctionnalités de fermeture de .NET sont populaires auprès de nombreux développeurs, et Java semble les implémenter bientôt. Bien sûr, il s'agit d'une fonctionnalité de langage et non d'une fonctionnalité d'exécution. Je pense que celui des deux que vous choisirez en fin de compte dépend de vos préférences personnelles et des opportunités de carrière locales.
1. Que se passera-t-il lorsque Java SE 7 rencontrera .NET CLR ?
Comme vous pouvez le voir dans la liste des fonctionnalités de Java SE 7, il s'est grandement amélioré par rapport aux versions précédentes. Alors, est-ce que cela change la donne, je ne pense pas. Au cours des dernières années, de nombreuses améliorations ont été apportées à la JVM et au .NET CLR ; de nombreuses choses qui dans le passé ne pouvaient être accomplies que par des programmeurs très qualifiés sont désormais à la portée des programmeurs ordinaires grâce aux améliorations apportées à la JVM. et le .NET CLR obtenir.
Bien que la JVM et le .NET CLR n'aient pas implémenté la même idée en même temps, si une bonne idée apparaît d'un côté, l'autre fera rapidement un suivi. Cela ne se reflète pas seulement au niveau de l'exécution. Par exemple, pour Java, après que le projet Hibernate ait connu un grand succès, .NET a également rapidement lancé NHibernate. Les fonctions de fermeture de .NET sont très populaires parmi de nombreux développeurs, et Java semble les implémenter bientôt. Bien entendu, il s'agit d'une fonctionnalité de langage et non d'une fonctionnalité d'exécution.
Les fermetures .NET sont un succès, et Java suivra bientôt
2. Un runtime va-t-il carrément vaincre l’autre dans un avenir prévisible ?
Bien que la JVM et le .NET CLR soient très similaires sur le plan technique, ils ont chacun leur propre marché, et aucun des deux n'est très flexible. Si l'on a créé son infrastructure autour du serveur .NET et d'IIS, il n'y a aucun moyen de se réveiller le lendemain et de migrer tout cela vers Java, et vice versa. Même si une entreprise décide de changer de plateforme de développement, elle devra peut-être remplacer toute son équipe de développement ou la former à partir de zéro. Même une fois la formation terminée, il existe encore de graves lacunes en termes de compétences ; après tout, il est impossible pour un développeur .NET senior de devenir soudainement un développeur Java senior après 3 mois de formation.
De plus, l'entreprise doit conserver le personnel technique existant pour maintenir le code existant. Pensez-vous que ces employés vont rester les bras croisés et voir leurs postes être supprimés, ou que leurs compétences deviennent inutiles ou dévalorisées. Bien sûr que non ? Pour une entreprise, passer complètement de Java à .NET ou passer complètement de .NET à Java est un acte de suicide. Tout au plus, les salariés seront rééduqués à travers un projet pluriannuel. La migration de VB6 vers .NET a pris 8 ans depuis la sortie de .NET.
La transformation des programmeurs et des projets prend du temps
3. Le coût du développement Java est-il plus économique que celui du développement .NET ? Si tel est le cas, les gens se tourneront-ils vers Java pour économiser leurs investissements ?
Si vous regardez simplement les outils, ma réponse est « à la fois bonne et mauvaise ». En effet, vous pouvez exécuter Java sur un package entièrement open source si vous le souhaitez. Vous pouvez utiliser une combinaison Linux/Tomcat/MySQL/Java, ou utiliser une combinaison SpringSource côté serveur et Eclipse ou NetBeans sur l'ordinateur du développeur. Mais il est important de souligner que vous ne serez pas un grand fan des alternatives open source pour une raison quelconque, et je ne dis pas que les alternatives sont mauvaises ; si c'est le cas, le prix des outils Java par rapport à celui des outils Java est élevé. Outils .NET Assez, et dans de nombreux cas encore plus chers. Et en regardant ce que font des entreprises comme Oracle et IBM, il est clair que de nombreuses entreprises ressentent le besoin de payer pour des outils Java propriétaires. En termes de prix, Microsoft est presque toujours le fournisseur d'entreprise le moins cher dans un segment de marché donné.
De plus, vous devez considérer combien d’argent l’entreprise économiserait s’il n’y avait pas de frais de changement. Le coût d'une copie de Visual Studio est bien inférieur au salaire hebdomadaire et à la prime d'assurance d'un développeur à revenu modéré. De plus, le temps qu'il faut à un même développeur pour apprendre Java et atteindre le niveau où il est bon en .NET est bien plus long qu'une semaine.
Pour être honnête, cette analyse s'applique également au passage de Java à .NET. Comparé aux difficultés liées au changement de plate-forme, le coût des outils de développement est vraiment négligeable. Bien entendu, il existe deux exceptions. La première situation consiste à créer une nouvelle entreprise, il n’y a donc pas de problème de coût de migration. Dans ce cas, Java n'a toujours pas d'avantage en termes de coût, car Microsoft a également lancé une version gratuite de Visual Studio (version Express), et si votre entreprise est une nouvelle entreprise, vous pouvez l'obtenir gratuitement pendant trois ans via BizSpark. plan sous licence MSDN et Microsoft, ils sont pas mal. Une autre exception est une entreprise avec un ratio serveur/développeur très élevé, comme Google ou Yahoo. Ces entreprises peuvent avoir de nombreux développeurs travaillant sur une application exécutée sur des milliers de serveurs. Dans ce cas, les outils de développement ne sont pas le principal facteur d’économies de coûts, mais l’espace serveur l’est. Pour les entreprises confrontées à cette situation, Java (et d’autres technologies open source) peut présenter un avantage décisif en termes de coûts.
4. Quelle quantité de langage de script un développeur Java doit-il connaître pour être efficace dans .NET ?
Tout d’abord, travaillez-vous dans le développement Web ? Si oui, vous souhaiterez peut-être connaître quelques notions de JavaScript et vous familiariser avec les frameworks correspondants. Pour le travail backend, la connaissance d'un langage dynamique ou de script n'est ni obligatoire ni obligatoire. Néanmoins, il existe de nombreuses bonnes options à cet effet dans l’espace Java. Pour quelqu'un qui n'est pas actuellement développeur Java, je n'ai aucune expérience réelle dans ce domaine, mais j'ai entendu beaucoup de bonnes critiques sur Groovy et Scala. Si vous souhaitez choisir certaines des technologies les plus courantes, JRuby et Jython sont de bons choix.
Il existe différentes manières d'améliorer les performances des applications Java
Au cours des dernières années, la JVM a commencé à prendre en charge un grand nombre de langages non Java, et les développeurs ont désormais de nombreux choix. Apprendre l’un d’entre eux vous aidera certainement à devenir un meilleur développeur (même si vous ne les utilisez pas dans des projets de production réels) et pourra vous fournir une direction alternative lorsque votre projet sera bloqué.
Java remplacera-t-il .NET ? Il est trop tôt pour le dire. Dans le même temps, .NET ne tuera pas Java. Les deux ont leurs propres avantages et inconvénients. Je pense que celui des deux que vous choisirez en fin de compte dépend de vos préférences personnelles et des opportunités de carrière locales.