Pourquoi Java est-il fréquemment utilisé pour les applications d'entreprise? [fermé]
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 le rend ainsi comparé aux autres langues? Cela continuera-t-il dans les années à venir?
J'apprécierais vos idées. Merci d'avance :)
11 réponses
Un mot: bibliothèques. Java dispose d'une vaste gamme d'excellentes bibliothèques pour résoudre la plupart des problèmes que l'on doit 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 libres et open source sous une licence favorable aux entreprises.
Certains ont fait valoir qu'il y a, en fait, trop de choix dans L'écosystème Java, et que le développement de logiciels D'entreprise en Java nécessite les développeurs de prendre un grand nombre de décisions qui peuvent avoir un impact de grande envergure sur le produit final pour le meilleur ou pour le pire. Cela a probablement contribué à propulser la popularité des alternatives comme.net, qui a la réputation d'offrir moins de choix, mais avec les avantages d'une pile d'applications et d'un ensemble d'outils plus intégrés. La direction que vous choisissez dépend, je suppose, si vous accordez plus de valeur à la "liberté de choix" ou à la "liberté de choix".
Il y a beaucoup de raisons pour lesquelles une grande entreprise (le type à utiliser pour les solutions d'entreprise) choisirait Java. Notez que je ne dis pas que toutes ces raisons sont correctes ou valides. Mais le point pertinent est qu'ils semblent valables pour un CTO chez MegaCorp.
La Courbe D'Apprentissage
Java est un langage simple sans beaucoup de flexibilité des autres membres de la famille C, cela coupe dans les deux sens, mais il est considéré comme un langage simple à utiliser par une armée de programmeurs. Des projets d'entreprise ont tendance à impliquer un grand nombre de développeurs (à tort ou à raison) et il est beaucoup plus facile d'obtenir un développeur à un niveau minimum de compétence en Java que C++. Vous avez aussi 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'IDE, ainsi que de fournisseurs de serveurs. Pour une entreprise, il est bon d'avoir le choix, même si c'est juste pour servir de monnaie d'échange lors de la négociation du prix. Le le langage se prête à des outils de qualité de code qui permettent l'application des normes de l'entreprise (et comme mentionné il y a beaucoup de ces outils).
Indépendance De La Plateforme
Java est écrit une fois, exécuté (bien, debug) partout. Sun a activement encouragé les normes ouvertes qui permettent à plusieurs fournisseurs de mettre en œuvre leurs solutions. Ces normes donnent au client le confort qu'ils peuvent migrer d'un fournisseur à un autre si un fournisseur donné va sous ou commence à charger plus. De bien sûr, la réalité est que chaque fournisseur fait de son mieux pour fournir des fonctionnalités de "valeur ajoutée" qui lient le client à eux très bien.
La Maturité
Il existe depuis longtemps, exécutant beaucoup de serveurs. Si votre application web doit être "6 sigma" ou similaire et que vous êtes le CTO MegaCorp, vous n'allez pas regarder cela gentiment sur Joe le développeur qui veut le faire dans RoR.
Calendrier/Marketing
Java est sorti lorsque la programmation était en mouvement vers le web. Il a été placé intelligemment et a obtenu une position forte au début du développement web. En raison des normes ouvertes, il y a de très grandes entreprises produisant ces plates-formes et elles commercialisent Java assez difficile à vendre ces plates-formes.
L'Inertie
Les grandes entreprises avancent à un rythme glacial (beaucoup utilisent encore Java 1.4 cinq ans après la sortie de 5), donc une fois qu'elles ont choisi Java, il faut un investissement massif pour passer à une autre plate-forme. Avec chaque le jour qui passe, ils sortent plus de Java qui devrait être migré. La plupart de ces entreprises 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 réécrire toute leur base de code pour aucun avantage commercial immédiat.
Une autre raison pourrait être le soin que Sun a pris pour garder Java rétrocompatible. La grande majorité du code Java peut être exécuté sur la dernière version de la JVM sans problème. C'est tout un exploit, étant donné L'âge de Java. D'un autre côté, vous pourriez soutenir que Java n'a pas beaucoup changé au cours de toutes ces années.
Les entreprises aiment la stabilité dans une plate-forme.
Sun a ciblé Java pour répondre aux besoins des entreprises dès le début. Il pousse les normes qui favorisent l'indépendance des fournisseurs à tous les niveaux. Indépendant de la plate - forme, indépendant de la base de données, indépendant du serveur d'applications, etc.
En outre, ils ont promu des outils au niveau de l'entreprise pour l'informatique, en termes de messagerie, de gestion des transactions et d'autres choses dont l'entreprise s'inquiète.
Avant Java, les choses au niveau de l'entreprise avaient tendance à être faites en C++ (il y avait beaucoup d'exceptions (fait quelqu'un se souvient PowerBuilder?) mais c'était la règle) et Java s'intègre bien en tant que successeur de C++ pour les applications métier, où ce type de gestion de la mémoire ne vaut pas la peine d'être payé.
En plus de tout cela, le langage lui-même parle aux entreprises en termes d'éviter les constructions difficiles à obtenir qui peuvent vraiment gâcher une base de code, comme la surcharge de l'opérateur. Les applications au niveau de l'entreprise ont tendance à être manipulées par de nombreuses mains différentes, qui ne sont pas toutes au sommet de les programmeurs de ligne, et ayant des filets safty pour éviter de se tirer dans le pied est une chose souhaitable.
Il est aussi arrivé au bon moment. Un nouveau paradigme (c'était bien avant L'existence de. net) qui promettait de combiner plusieurs fournisseurs en une capacité de rivaliser avec Microsoft, qui a obtenu les goûts D'IBM et Oracle à bord, qui est arrivé à combler un nouveau trou, qui était l'exigence émergente pour développer des applications web, où C++ n'était plus un choix évident.
Les affaires sont une question de temps, d'argent et d'opportunité.
L'utilisation de Java signifie que votre nombre d'erreurs dans le code diminue, simplement parce que les pointeurs sont durs. Vous utilisez un GC et vous supprimez instantanément une classe entière d'erreurs de votre code.
Deuxièmement, Java a été l'un des premiers langages à être livré avec une bibliothèque de fonctions pré-écrite, qui a vraiment couvert 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 vite, avaient plus d'outils à leur disposition et avait un grand ensemble de bibliothèques pour faire des choses comme le réseau, L'interface graphique, le web, le cryptage, etc. Java seul en tant que langage n'était vraiment pas si spécial, mais Java plus L'API Java l'était.
Donc, si vous avez une langue qui a moins d'erreurs et plus d'infrastructures pour gratuit, puis vous vous retrouvez avec plus de code en moins de temps. Bien sûr, le code ne guérit pas le cancer, il n'est pas aussi rapide que le code C++ pour atteindre la même tâche, mais il atteindra l'objectif de l'entreprise d'obtenir un application.
Si vous faites plus de code, pour moins d'argent, vous pouvez poursuivre plus d'opportunités. Vous apportez ensuite de l'inertie à la table en termes de code déjà implémenté en Java et vous commencez à voir 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'il est nommé d'après le café!
Personnellement, je crois que l'une des principales raisons est le problème 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 JVM. Cela signifie que vous n'êtes pas lié à une plate-forme particulière, contrairement à.net qui vous marie à Windows.
J'ai vu du code Java fonctionner sur des ordinateurs centraux, des routeurs Linux, dans la base de données Oracle, et naturellement sur des PC.
Il est pas cher, RAD, multi-plateforme, et les développeurs abondent.
Le développement en c++ est trop lent et coûteux et. NET n'existe pas depuis assez longtemps. L'inertie des entreprises est énorme, rappelez-vous.
Les entreprises veulent des langues qui sont soutenues par un fournisseur professionnel (ie. une entreprise comme Sun) et souvent rester à l'écart des langues Open Source pour la simple raison qu'il n'a pas été écrit par une entreprise.
Aussi pour les applications client-serveur, vous avez une abondance de choix pour les serveurs d'applications de qualité de production qui ont la même interface J2EE (IBM WebSphere, BEA Weblogic, JBoss). Alternativement, vous pouvez utiliser le Framework Spring sur n'importe quel serveur comme Apache Tomcat conforme à L'API Servlet si vous êtes convaincu que vous n'avez pas besoin D'EJB. Contrairement à. NET, il est difficile de trouver des choix en ce qui concerne les serveurs d'applications.
Il y a une abondance de choix en ce qui concerne les cadres pour un tâche donnée que ce soit un outil ORM, la journalisation, les collections, la mise en cache, les interfaces utilisateur web, etc. Il n'y a guère besoin de réinventer la roue.
Enfin, bien qu'il soit à la mode ces jours-ci de déplorer les défauts très réels de Java le langage, c'est un langage où les gens savent comment faire avancer les choses et comment éviter certains anti-patterns.
Les autres réponses sont toutes bonnes. Deux choses doivent être ajoutées, les normes d'entreprise et l'effet de train en marche. Si vous voulez construire un système d'entreprise, vous devez avoir des arguments assez solides pour ne pas utiliser les normes enracinées 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, disons, Erlang.