Pourquoi Java est-il fréquemment utilisé pour les applications d’entreprise?

En tant que débutant Java, je me demande: de toutes les langues du monde, pourquoi Java est-il fréquemment utilisé pour les applications d’entreprise? Qu’est-ce qui fait que c’est comme ça par rapport aux autres langues? Est-ce que ça va continuer comme ça dans les années à venir?

J’apprécierais vos idées. Merci d’avance 🙂

Un mot: les bibliothèques. Java dispose d’une vaste gamme d’excellentes bibliothèques pour résoudre la plupart des problèmes courants à résoudre lors du développement d’applications d’entreprise. Dans de nombreux cas, il y a plus d’un bon choix pour répondre à un besoin particulier, et souvent ces bibliothèques sont gratuites et open source sous une licence professionnelle.

Certains ont fait valoir qu’il y avait en fait trop de choix dans l’écosystème Java et que le développement de logiciels d’entreprise en Java nécessitait que les développeurs prennent un grand nombre de décisions susceptibles d’avoir un impact considérable sur le produit final. Cela a probablement consortingbué à la popularité d’alternatives telles que .NET, qui a la réputation d’offrir moins de choix, mais avec les avantages d’un ensemble d’applications et d’outils plus bien intégrés. Je suppose que la direction que vous choisissez dépend si vous accordez plus de valeur à la “liberté de choix” ou à la “liberté de choix”.

Il existe de nombreuses raisons pour lesquelles une grande entreprise (le type de solutions d’entreprise) choisit Java. Remarque: je ne dis pas que toutes ces raisons sont correctes ou valides. Mais le point pertinent est qu’ils semblent valables pour un CTO de MegaCorp.

Courbe d’apprentissage

Java est un langage simple, sans beaucoup de flexibilité pour les autres membres de la famille C, ce qui coupe les deux sens, mais il est considéré comme un langage simple à utiliser par une armée de programmeurs. Les projets d’entreprise ont tendance à impliquer un grand nombre de développeurs (à tort ou à raison) et il est beaucoup plus facile d’amener un développeur à un niveau de compétence minimum en Java que C ++. Vous avez également toute une génération de diplômés qui ont probablement été en grande partie scolarisés à Java.

Choix

Java dispose d’une vaste gamme de bibliothèques, de frameworks, d’outils et d’EDI, ainsi que de fournisseurs de serveurs. Pour une entreprise, il est bon d’avoir le choix, même si cela ne sert que de monnaie d’échange lors de la négociation des prix. Le langage se prête à des outils de qualité de code permettant d’appliquer les normes de l’entreprise (et comme mentionné, il en existe de nombreux outils).

Indépendance de la plate-forme

Java est une écriture, une exécution (bien, un débogage) partout. Sun a activement encouragé les normes ouvertes permettant à plusieurs fournisseurs d’implémenter leurs solutions. Ces normes donnent au client le confort qu’il peut migrer d’un fournisseur à l’autre si un fournisseur donné passe ou commence à facturer davantage. Bien sûr, la réalité est que chaque fournisseur fait de son mieux pour fournir des fonctionnalités de «valeur ajoutée» qui les relient très bien au client.

Maturité

Cela fait longtemps, beaucoup de serveurs tournent. Si votre application Web doit être “6 sigma” ou similaire et que vous êtes le CTO de MegaCorp, vous n’allez pas regarder ça avec Joe, le développeur qui veut le faire dans RoR.

Timing / Marketing

Java est sorti lorsque la programmation évoluait vers le Web. Elle s’est positionnée intelligemment et a acquis une position solide au début du développement Web. En raison des normes ouvertes, de très grandes entresockets produisent ces plates-formes et commercialisent assez difficilement Java pour vendre ces plates-formes.

Inertie

Les grandes entresockets progressent à un rythme glacial (beaucoup utilisent encore Java 1.4 cinq ans après la publication de la version 5). Une fois qu’elles ont choisi Java, il faut un investissement massif pour migrer vers une autre plate-forme. Avec chaque jour qui passe, ils créent plus de Java à migrer. La plupart de ces entresockets ne sont pas principalement des magasins de codage. Il est donc très difficile de convaincre l’entreprise de dépenser quelques dizaines de millions de dollars pour réécrire l’intégralité de son code sans bénéfice commercial immédiat.

Une autre raison pourrait être le soin apporté par Sun à maintenir la compatibilité avec Java. La grande majorité du code Java peut être exécutée sans problème sur la dernière version de la machine virtuelle Java. C’est tout un exploit, compte tenu de l’âge de Java. D’un autre côté, vous pourriez soutenir que Java n’a pas tellement changé durant toutes ces années.

Les entresockets aiment la stabilité dans une plate-forme.

Sun a ciblé Java pour répondre aux besoins des entresockets dès le début. Il pousse les normes qui favorisent l’indépendance des fournisseurs à tous les niveaux. Plate-forme indépendante, firebase database indépendante, serveur d’applications indépendant, etc.

En outre, ils ont fait la promotion d’outils au niveau de l’entreprise, en termes de messagerie, de gestion des transactions et d’autres choses qui préoccupent l’entreprise.

Avant Java, les tâches au niveau de l’entreprise étaient généralement effectuées en C ++ (il y avait beaucoup d’exceptions (est-ce que quelqu’un se souvient de PowerBuilder?) Mais c’était la règle) et Java était le successeur de C ++ pour les applications professionnelles. n’est pas quelque chose qui vaut la peine de payer.

En plus de tout cela, le langage lui-même parle aux entresockets en évitant les constructions difficiles à obtenir qui peuvent vraiment perturber une base de code, telle que la surcharge des opérateurs. Les applications au niveau de l’entreprise ont tendance à être manipulées par de nombreuses mains différentes, toutes n’étant pas les programmeurs haut de gamme, et il est souhaitable d’avoir des filets de sécurité pour éviter de se tirer dans le pied.

Il est également arrivé au bon moment. Un nouveau paradigme (celui-ci existait bien avant .NET) qui promettait de combiner plusieurs fournisseurs dans une capacité à rivaliser avec Microsoft, qui a intégré IBM et Oracle, ce qui a comblé un nouveau problème, à savoir l’exigence émergente. développer des applications Web, où le C ++ n’était plus un choix évident.

Les affaires concernent le temps, l’argent et les opportunités.

Utiliser Java signifie que le nombre d’erreurs dans le code diminue, simplement parce que les pointeurs sont difficiles. Vous utilisez un GC et vous supprimez instantanément toute une classe d’erreurs de votre code.

Deuxièmement, Java était l’un des premiers langages à être livré avec une bibliothèque de fonctions pré-écrite, qui couvrait réellement une grande partie de la phase de développement. Cela limitait la façon dont les choses étaient faites, mais cela signifiait que les gens pouvaient apprendre plus rapidement, avaient plus d’outils à leur disposition et disposaient d’un grand nombre de bibliothèques pour faire des choses comme le réseau, l’interface graphique, le Web, le cryptage, etc. n’était pas si spécial, mais Java plus Java API était.

Donc, si vous avez un langage qui contient moins d’erreurs et plus d’infrastructure gratuitement, vous obtenez plus de code en moins de temps. Bien que le code ne guérisse pas le cancer, ce n’est pas aussi rapide que le code C ++ pour accomplir la même tâche, mais il permettra à l’entreprise d’obtenir une application.

Si vous créez plus de code, pour moins d’argent, vous pouvez rechercher plus de possibilités. Vous mettez ensuite l’inertie à la table en termes de code qui a déjà été implémenté en Java et vous commencez à comprendre pourquoi l’entreprise ne veut pas s’éloigner de sa zone de confort.

Je ne devrais pas dire ça, mais …

La vraie raison est parce qu’elle porte le nom du café!

Personnellement, je pense que l’une des principales raisons est la question multi-plateforme.

Les programmes Java écrits “correctement” (sans hypothèses du système d’exploitation sous-jacent) peuvent s’exécuter sur n’importe quelle machine virtuelle Java. Cela signifie que vous n’êtes pas lié à une plate-forme particulière, contrairement à .NET qui vous associe à Windows.

J’ai vu du code Java fonctionner sur des mainframes, des routeurs Linux, dans une firebase database Oracle, et naturellement sur des PC.

C’est bon marché, RAD, multiplateforme et les développeurs ne manquent pas.

Le développement en C ++ est trop lent et coûteux et .NET n’a pas existé depuis assez longtemps. L’inertie des entresockets est énorme, rappelez-vous.

Les entresockets veulent des langues qui sont soutenues par un fournisseur professionnel (par exemple, une entreprise comme Sun) et qui restnt souvent à l’écart des langues Open Source pour la simple raison qu’elles n’ont pas été écrites par une entreprise.

En outre, pour les applications client-serveur, vous disposez de nombreux choix pour les serveurs d’applications de qualité de production dotés de la même interface J2EE (IBM WebSphere, BEA Weblogic, JBoss). Vous pouvez également utiliser le framework Spring sur n’importe quel serveur tel qu’Apache Tomcat conforme à l’API Servlet si vous êtes convaincu de ne pas avoir besoin d’EJB. Contrairement à .NET, il est difficile de trouver des choix par rapport aux serveurs d’applications.

Il existe une multitude de choix en ce qui concerne les frameworks pour une tâche donnée, qu’il s’agisse d’un outil ORM, de la journalisation, des collections, de la mise en cache, des interfaces utilisateur Web, etc.

Enfin, bien qu’il soit à la mode ces jours-ci de déplorer les défauts très réels du langage Java, c’est un langage où les gens savent comment faire avancer les choses et comment éviter certains anti-modèles.

Les autres réponses sont toutes bonnes. Deux choses doivent être ajoutées, les normes d’entreprise et l’effet d’entraînement. Si vous voulez créer un système d’entreprise, vous devez avoir des arguments convaincants pour ne pas utiliser les normes de votre entreprise, et c’est principalement JavaEE. Et si vous avez besoin de ressources pour un projet, il est beaucoup plus facile de recruter un programmeur Java que, par exemple, Erlang.