web-dev-qa-db-fra.com

Pourquoi Java n'est-il pas utilisé pour le développement d'applications Web modernes?

En tant que programmeur professionnel Java, j'ai essayé de comprendre - pourquoi la haine envers Java pour les applications Web modernes?

J'ai remarqué une tendance selon laquelle, parmi les startups Web modernes, un pourcentage relativement faible d'entre elles semble utiliser Java (par rapport à la popularité globale de Java). Quand j'en ai posé quelques questions sur cela, j'ai généralement reçu une réponse comme, "Je déteste Java avec passion." Mais personne ne semble vraiment être en mesure de donner une réponse définitive.

J'ai également entendu cette même communauté de démarrage Web se référer négativement aux développeurs Java - ce qui implique plus ou moins qu'ils sont lents, pas créatifs, anciens.

En conséquence, j'ai passé du temps à ramasser Ruby/Rails, essentiellement pour savoir ce qui me manque. Mais je ne peux m'empêcher de penser: "Je pourrais le faire beaucoup plus rapidement si j'utilisais Java", principalement en raison de mon niveau d'expérience relatif.

Mais aussi parce que je n'ai rien vu de "manquant" critique de Java, m'empêchant de construire la même application.

ce qui m'amène à ma (mes) question (s):

Pourquoi Java n'est-il pas utilisé dans les applications Web modernes?

  • Est-ce une faiblesse de la langue?

  • Est-ce un stéréotype injuste de Java parce qu'il existe depuis si longtemps (il a été injustement associé à ses anciennes technologies et ne reçoit pas de reconnaissance pour ses capacités "modernes")?

  • Le stéréotype négatif de Java sont-ils trop forts? (Java n'est tout simplement plus "cool"))

  • Les applications écrites dans d'autres langues sont-elles vraiment plus rapides à construire, plus faciles à maintenir et fonctionnent-elles mieux?

  • Java n'est-il utilisé que par les grandes entreprises trop lentes pour s'adapter à un nouveau langage?

393
Cliff

Les startups modernes doivent arriver sur le marché dès que possible. Ils n'ont pas besoin de passer environ six mois pour publier leur Java application Web.

Twitter, par exemple, a été construit à l'aide de Rails/Ruby, mais une fois devenu non évolutif, ils ont migré vers la JVM.

Sans oublier que le processus de développement n'est pas productif: code -> compiler -> déployer alors qu'il est dans des frameworks comme (Rails/Django/Grails): lancez testing server -> code -> changez les choses et voyez ce qui se passe.

La bonne nouvelle est que JRebel vous permet de voir instantanément les changements de code.

174
Chiron

D'après mon expérience, Java pour les applications Web est excessif pour les petites applications. Un blog simple avec une table de base de données contient des entrées de blog, par exemple, pourrait être fait de manière beaucoup plus simple.

J'ai généralement vu Java faire beaucoup mieux dans des applications Web beaucoup plus grandes (pensez aux banques et aux compagnies d'assurance) qui communiquent avec un certain nombre d'autres systèmes (tels que les bases de données et les bases de données mainframe et les sites Web pairs). services d'arrière-plan des systèmes de traitement par lots ... tous dans la même application).

D'après ce que j'ai vu, l'architecture d'une application Web JavaEE est généralement plus que nécessaire pour les applications Web petites/simples.

136

J'ai programmé Java applications Web pendant 10 ans avant de passer au python, il y a 4 ans et plus. Je sens que je suis beaucoup plus productif en utilisant python et que je peux faire beaucoup plus en moins de temps, et pour être honnête, je suis beaucoup plus heureux quand je développe en python. Voici quelques-unes des raisons pour lesquelles je pense que python est mieux que Java en fonction de mon expérience personnelle, votre kilométrage peut très bien.

Cadres Web:

Lorsque j'ai commencé à programmer des applications Web en Java, Struts vient de sortir, et ce n'était pas génial, mais c'était la meilleure chose disponible. J'ai créé un tas d'applications Struts, et quelques autres dans d'autres cadres en cours de route. Chaque fois qu'un nouveau framework sortait (Tapestry, Wicket, GWT, stripe, grails, AppFuse, Play, RichFaces, Spring, etc.), je l'essayais et je voyais si c'était mieux, et la plupart du temps c'était seulement un peu mieux , et parfois pas mieux du tout. Je dois dire que le cadre de jeu est un pas dans la bonne direction.

Piles non incluses:

L'une des parties les plus ennuyeuses de Java était le fait que la plupart des bibliothèques que vous utilisez n'étaient pas incluses dans Java lui-même, vous deviez inclure une tonne de bibliothèques tierces provenant d'endroits comme Apache commons. Si vous utilisez quelque chose comme hibernate avec n'importe quelle autre grande bibliothèque, vous vous retrouvez dans l'enfer de la dépendance Jar, où hibernate a besoin d'une version d'un bocal et quelque chose d'autre a besoin d'une autre version. Si vous chargez les fichiers jar dans le mauvais ordre, vous n'avez pas de chance. Vous devez dépendre d'outils comme maven et ivy pour gérer vos dépendances, et cela apporte simplement plus de dépendances dans votre projet, ce qui se traduit par des projets énormes. J'avais des fichiers de guerre de 100 Mo + fichiers de guerre pour les applications Web les plus simples.

Trop d'options:

Pour une raison quelconque, il semble y avoir beaucoup trop de façons différentes de faire la même chose en Java. Il existe plus de 38 cadres Web différents pour Java selon wikipedia ( http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) et 23 ORM différents ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#Java ) pour n'en citer que quelques exemples. Si vous regardez d'autres langues, elles ont un nombre plus raisonnable. Certaines personnes pensent qu'avoir beaucoup d'options est une bonne chose, mais cela ne mène pas à beaucoup d'efforts gaspillés dans la communauté des développeurs, tout le monde réinvente la même roue, et si vous êtes une nouvelle personne dans la langue que vous avez trop de choix.

Serveurs d'applications:

Les applications Web Java sont très lourdes et nécessitent beaucoup de ressources pour fonctionner. Ils ont particulièrement faim de mémoire. Comme tout logiciel, ils peuvent être réglés pour réduire leur empreinte sur les ressources, mais par rapport à d'autres langues, leur configuration prête à l'emploi est horrible. Dans mon passé, j'ai utilisé weblogic, websphere, Jboss, Tomcat et jetty. Je n'ai utilisé les trois premiers que lorsque j'ai été obligé d'utiliser des EJB, mais même si vous n'utilisez pas les EJB, ils étaient de grands serveurs d'applications et parfois difficiles à configurer et à exécuter correctement. Tomcat et Jetty sont bien meilleurs et plus faciles à configurer, mais sont toujours des porcs de ressources.

Hébergement d'applications:

Si vous n'utilisez pas votre propre serveur, il est très difficile de trouver un hébergement partagé pour vos applications Java à un prix raisonnable. La raison principale est que les applications Java nécessitent beaucoup plus de mémoire que les autres langues, il n'est donc pas logique pour un hébergeur partagé de dépenser leur précieux RAM pour exécuter un Java site, quand ils pouvaient exécuter 5 sites php au même endroit. Cela signifie qu'il y a moins de fournisseurs offrant Java l'hébergement, ce qui signifie à son tour des coûts plus élevés pour faire fonctionner votre site Web.

Temps de développement:

Quand je développais en Java, je me suis retrouvé beaucoup plus lent que ce que je peux faire en python. J'aurais besoin de faire un changement, de compiler, de redéployer puis de tester, ce qui ralentit le processus itératif. Je sais qu'il existe des moyens d'accélérer cela, mais même dans le meilleur des cas, je me sentais beaucoup plus lent que ce que je pouvais faire en python.

Il y a aussi beaucoup moins de code passe-partout pour faire la même chose en python, donc je passe aussi moins de temps à développer le code.

Java se sent juste trop conçu dans de nombreuses parties, Beaucoup d'API et d'interfaces sont simplement trop compliquées pour ce que vous voulez faire. Et tout le monde et leur frère pensent qu'ils sont un architecte Java et cela se traduit par de gros systèmes compliqués qui sont difficiles à utiliser et à développer.

IDE:

Quand je développais en Java, je me sentais collé à l'IDE, j'étais perdu sans lui. IntelliJ est le meilleur IDE du marché, et il était difficile de passer à python car il n'y avait rien de tel pour python. Donc, au lieu d'un IDE, j'ai juste utilisé textmate, qui est juste un éditeur de texte normal. C'était difficile au début, mais comme c'était juste un éditeur de texte, c'était une application vraiment rapide et réactive. Je pouvais ouvrir tout mon projet en quelques secondes, alors que quand je veux ouvrir un projet dans un IDE ça pouvait prendre une minute ou plus, avec une machine avec une tonne de RAM. Les créateurs d'IntelliJ sont sortis avec un éditeur python appelé pycharm, je l'ai acheté lors de sa sortie et c'est génial. Mais ce que j'ai réalisé, c'est que je n'ai pas besoin d'un IDE pour python, je vais bien avec un éditeur de texte. Quand je recommence à travailler sur les applications Web Java que je dois faire de temps en temps, j'essaie d'utiliser l'éditeur de texte, mais je n'ai pas encore tout à fait maîtrisé cela. Personnellement, j'ai besoin de IDE pour Java plus car si je gâche quelque chose, il faut plus de temps pour recompiler et redéployer, ce qui me ralentit.

ORM:

Quand j'ai commencé à utiliser Hibernate comme ORM, je pensais que c'était génial, qu'il y avait des problèmes et que ce n'était pas parfait, mais c'était mieux que ce que je faisais auparavant. J'en étais satisfait, jusqu'à ce que je fasse une application avec l'ORM de Django sur un projet python, et cela m'a ouvert les yeux, c'est ainsi qu'un ORM est censé fonctionner. Après ce projet, je suis retourné en hibernation, et je me suis senti déçu et je voulais ardemment retourner à l'ORM de Django. Un autre grand python ORM est sqlalchemy, qui est similaire à l'ORM de Django, mais un peu différent. J'ai une expérience limitée avec l'ORM de ROR, mais d'après ce que je me souviens, c'était assez bien aussi.

Modèles:

Les systèmes de modèles Web dans Java ne sont pas si bons, et je pense que je les ai tous essayés (tuiles, freemarker, vélocité, etc.). La plupart d'entre eux n'offrent que des fonctionnalités de base et sont difficiles à travailler. Du côté [Python, mes deux favoris sont Django modèles et Jinja2, ils ont tout ce dont j'ai besoin dans un moteur de création de modèles et sont vraiment faciles à utiliser.

135
Ken Cochrane

Les Start Ups veulent du brillant. Quel que soit le brillant: RoR, Groovy, Grails, OOP w/PHP, Foobar, Wibble, Narf, etc.

L'entreprise veut stable, fiable et évolutif: Java et .NET correspondent à cette facture (quand c'est fait correctement).

Concert actuel: Financial Services. Plateforme: ColdFusion (essentiellement une Java Tag Library) et Java.

Concerts précédents:

  1. Services de test pédagogique - ColdFusion
  2. Assurance à haut risque - ColdFusion et Java
  3. 401k - ColdFusion et Java
  4. Voyage - Java w/applications ColdFusion internes
  5. Valeurs mobilières - ColdFusion (version pré-Java)

Ce sont tous des sites à volume élevé et à haute sécurité. Personne dans aucune de ces sociétés n'a jamais considéré PHP, certains ont regardé RoR et ont vu trop de problèmes. La société 401k avait une société sœur exécutant une application .NET avec des développeurs compétents, l'application ne cessait de planter chaque semaine. Ils l'ont finalement converti en Java et ont gagné en stabilité.

Les seules personnes qui méprisent Java sont celles qui n’ont pas ou peu d’expérience réelle ou qui ont été impliquées dans des implémentations médiocres et sont maintenant timides. Elles voient le brillant et les enfants cool l'utilisent, pourquoi pas moi?

94
Adrian J. Moreno

Un ajout à la réponse FrustratedWithFormsDesigner's : Étant donné que je suppose que votre question cible davantage les sites plus petits, il y a un aspect important que vous devez prendre en compte pour beaucoup de gens: L'hébergement est omniprésent pour PHP mais c'est plus difficile pour Java ou ASP sites Ce n'est cependant pas un défaut de ces langues.

73
sebastiangeiger

Java absolument est utilisé pour le développement d'applications Web modernes. Particulièrement une fois que vous arrivez à l'extrémité légèrement plus grande/plus complexe/évolutive du spectre des applications Web.

Si vous êtes intéressé par des outils et des cadres modernes et productifs, jetez un œil à:

Mais je pense que le développement Web le plus véritablement moderne sur la plate-forme JVM est susceptible d'être fait dans l'un des nouveaux langages JVM plutôt que d'utiliser Java directement, avec Java fournissant simplement le backbone en termes de bibliothèques sous-jacentes et d'infrastructure back-end. Il y a beaucoup de développement web en cours dans Groovy ( Grails ), Scala ( Lift et Play ), JRuby ( JRuby on Rails ) et Clojure ( Noir , Ring/Enlive + beaucoup de frameworks personnalisés) pour n'en nommer que quelques-uns.

Avec toutes les innovations qui se produisent dans le nouvel espace de langage JVM, je soupçonne personnellement que Java deviendra finalement "l'assembleur de la programmation côté serveur".

70
mikera

Google, Amazon ou LinkedIn sont-ils considérés comme modernes?

Java est utilisé pour les applications Web modernes. Si vous regardez dans l'entreprise, c'est la langue la plus utilisée pour les applications Web (internes).

Cela dit, Java a traversé une période où ses normes de développement Web ont essayé d'être tout pour tout le monde (sans doute le font toujours). "Ne vous répétez pas" était une réponse à l'enfer xml et long des cycles de construction de Java développement Web. En conséquence, Java (EJB, Struts, JSF, etc.) est devenu la chose que tous les nouveaux paradigmes étaient essayer de surmonter.

Java, le langage est verbeux. C'est un pro et un con (super pour l'entretien, ça craint pour les dev). Il existe un certain nombre de fonctionnalités de langage moderne qui ne sont pas encore entrées dans Java qui peut réduire considérablement le temps de codage (propriétés, événements, fermetures, générateurs, compréhension de liste, etc.). peut être frustrant en venant d'un langage plus moderne. Cela dit, ils sont difficiles à ajouter à un langage mature sans devenir le nid de rats que le C # est en train de devenir.

De nombreux langages utilisés dans le développement Web moderne sont typés dynamiquement. Cela permet un outillage qui peut recharger dynamiquement le code au fur et à mesure qu'il est écrit (c'est plus difficile à réaliser dans un langage statique - jrebel). Étant donné que le développement Web se prête à des itérations rapides, le rechargement dynamique est une énorme victoire. Il réduit considérablement le cycle de développement des projets entièrement nouveaux et facilite l'obtention de l'interface utilisateur et de l'interface utilisateur (essais et erreurs par nature).

Les langages statiques ont aussi leur place. Pour la logique de backend qui est complexe, doit fonctionner pendant des années, doit évoluer sans problème, doit être très rapide et doit être complètement exempte d'erreurs, les langages typés statiquement (comme Java ou même C) sont préférés .

De plus, à mesure que le nombre de développeurs/chiffre d'affaires augmente et que les produits mûrissent, il est probable que des personnes bien intentionnées introduisent des bogues en flèche. La rigueur et la discipline qu'un projet bien conçu Java (interfaces, modèles et eau bénite pour ces vampires php :)) applique permet de réduire les risques à long terme. Bien que cela puisse également être réalisé via des tests unitaires, le filet de sécurité dérivé de la vérification statique (et des analyseurs statiques comme findbugs et clang) offre un niveau de couverture de code intégré qui est difficile à reproduire avec des tests manuscrits. Ne vous méprenez pas, il devrait y avoir des tests unitaires et des tests fonctionnels, mais les vraies organisations n'atteignent jamais une couverture à 100%. Pour ce qu'ils vérifient, les analyseurs statiques font.

Ainsi, dans les grands projets (définis plus par la taille de l'équipe que par la taille du code), où il existe une interaction complexe entre des morceaux de code développés indépendamment, des langages tels que Java sont toujours préférés. Les exemples incluent les grands/complexes applications web comme celles des courtiers financiers (ameritrade), des échanges financiers (nasdaq, nyse, peut-être londres après l'échec du .net), les services bancaires en ligne (presque tous), les e-mails (google), les enchères (ebay), etc.

Du point de vue des performances et de l'échelle, rien ne dépasse la plate-forme Java pour sa combinaison d'évolutivité et de performances pour les applications Web (selon la façon dont vous comptez le partitionnement des applications de Facebook). Twitter, par exemple, a dû réécrire de grandes portions de son infrastructure Ruby dans Scala sur le Java VM dans l'ordre pour remettre la baleine échouée en mer. J'ai entendu parler d'autres grands exemples, mais ils m'échappent en ce moment.

Cela vaut également la peine d’envisager la sécurité. Alors que Java ont subi leur part de vulnérabilités de sécurité, la plate-forme Java elle-même est l'une des plates-formes les plus sécurisées créées. Java Les applications Web ont la réputation d'être très sécurisées. Ses pratiques de codage, ses bibliothèques et son architecture ont longtemps découragé les erreurs qui rendent possibles des attaques telles que l'injection SQL ou les débordements de tampon. Alors que d'autres plates-formes Web (Rails) ont une bonne réputation de sécurité, aucun ne dépasse Java.

En résumé, la plupart des applications Web sont simples sur le plan technique. Pour simple, Java est souvent exagéré (tout comme dans le temps où nous les écrivions en C :)). Si, cependant, la webapp est complexe (backend ou autre) ou devrait avoir plus de 100 développeurs, Java est difficile à battre.

-

Sur une note personnelle, j'utilise beaucoup Grails car cela me donne le meilleur des deux mondes (on peut en dire autant de JRuby qui, je l'entends, devient de plus en plus populaire dans le monde Ruby) .

BTW - Je trouve que l'augmentation de PHP est vraiment déroutante. PHP en tant que langage est l'équivalent approximatif de Perl en termes de lisibilité et VB dans la qualité des résultats. Il encourage les pratiques horribles, est presque impossible à maintenir, les bibliothèques tierces fonctionnent rarement comme prévu, et il a une syntaxe qui ferait monter Larry Wall ... eh bien ... a mur. La seule explication que je peux invoquer est qu'elle se prête à l'apprentissage incrémentiel (comme VB). En d'autres termes, vous pouvez accomplir quelque chose d'utile en sachant très peu de choses sur la programmation/l'administration et vous pouvez étendre vos connaissances un petit morceau à la fois. Il y a beaucoup à dire à cet égard du point de vue de l'adoption. Cependant, pour toute personne qui a dû supporter ou remplacer l'un des milliards d'applications VB écrites par des "programmeurs" dans le monde de l'entreprise/mfg, vous secouez probablement la tête et planifiez votre retraite. :)

41
user56365

Eh bien, j'ai récemment rencontré un gars de Java qui était vraiment excité par le nouveau projet Spring Data, en raison du peu de code nécessaire pour obtenir un accès CRUD de base à votre base de données.

Je peux construire un CRUD app en utilisant Rails (pas seulement l'accès db, mais les vues et les contrôleurs) avec quelques commandes.

(Du haut de ma tête: nouveau projet, 1 commande d'échafaudage par entité, 1 commande pour migrer la base de données, 1 commande pour démarrer le serveur.)

Cela n'a rien à voir avec la langue, c'est une question d'outils. Et il semble que les langages dynamiques aient généralement les outils et les frameworks qui suppriment beaucoup de code standard. (Pour compenser notre manque d'IDE puissants qui génèrent du passe-partout pour nous.)

Je pense également que les langages dynamiques ont tendance à faciliter l'écriture de tels outils et frameworks. Je peux grok le code pour disons, Padrino ou Rails (frameworks Ruby web) beaucoup plus facilement que je peux grok le code pour dire Spring Roo. Cela pourrait être dû au fait que je sais Ruby bien mieux que je ne connais Java, cependant.

38
Robbie

Java s'est positionné ces dernières années comme "entreprise". Ce qui est de l'autre côté du spectre des besoins d'une startup. Dans le développement d'applications Web, vous avez besoin de 4 choses: un accès à la base de données indolore, une excellente manipulation des chaînes, un sucre de syntaxe et un processus itératif rapide pour effectuer les nombreux petits changements dont votre application a besoin.

Les performances, l'évolutivité et la stabilité sont un peu plus faibles sur la liste des priorités.

Aussi Java est un langage très peu amusant à coder. Il a la capacité révolutionnaire d'utiliser la chaîne dans une instruction switch juste hier. Et javascript est un langage très hacker donc après avoir développé votre frontend, vous vous sentez très contraint lorsque vous revenez à Java.

Je suppose donc que ce sont les raisons pour lesquelles les webstartups évitent Java.

24
Daniel Iankov

Je travaille actuellement dans une entreprise qui a pas mal de développeurs "Je déteste Java". Cela m'étourdissait aussi. Je déteste certainement tous les hordes de technologies disponibles avec Java. Cela rend la prise de décisions trop difficile. C'est comme quand vous avez trop de choix, vous n'avez pas le choix. Vous devez passer du temps avec des centaines de frameworks pour vraiment trouver le framework qui vous convient. L'architecture standard de Servelt est assez compliquée pour la plupart des applications. Ce n'est pas le cas avec Ruby, Django et tout ça. Il s'agit plus d'un framework unique que d'un langage.

Les plus grosses plaintes que j'entends des développeurs

  1. La syntaxe est trop longue. Pour imprimer quelque chose, nous devons écrire System.out.print. Vous ne pouvez pas vraiment utiliser un simple VI comme éditeur et écrire un morceau de code de travail en quelques heures.
  2. Cadres de test faibles. Même si les frameworks de test sont très similaires dans Java et Ruby, Ruby fait un pas en avant en rendant la chose facilement disponible pour le test. Cela est particulièrement vrai si vous utilisent beaucoup DB dans votre application. Même la plupart des frameworks Web ne pensent pas aux tests.
  3. Les modèles sont pénibles. Transforme le langage relativement simple en une soupe de nouilles.
  4. Pas cool. La plupart des applications Java sont écrites dans de grandes entreprises, ce qui est associé à Bureaucracy qui ne va pas si bien avec les développeurs. Les gens ne pensent pas à Google quand ils pensent à Java. Google == Python. Il a aussi faire beaucoup de choses sans qu'aucun livre ne paraisse indiquant faire X dans Y jours.
  5. N'aime pas compiler. Pour la plupart des développeurs, la compilation est un phénomène vieux de dix ans. Cela avait du sens dans les années 80 avec C, mais les ordinateurs modernes peuvent faire beaucoup plus. Ils n'écrivent pas de code dans les langages compilés. Java est l'un des très rares langages compilés et utilisés pour écrire des applications Web.
  6. Trop de concepts Oops. Même si les développeurs ont adopté tranquillement le domaine Oops. Ils ne l'aiment pas complètement. Ils n'aiment pas quand vous écrivez une application avec 10 classes avec chaque classe faisant une seule chose. Vous permet d'ouvrir des centaines de fichiers et d'imaginer l'interaction entre des centaines de classes, parfois avec des cadres. Rend toute l'activité de programmation une corvée. Cela pourrait être vrai avec la plupart des langages, mais je l'ai vu Java Les développeurs prêtent beaucoup d'attention à ce que fait une classe. Ce sont les Java développeurs qui proposent souvent un code avec des centaines de classes. C'est bon à bien des égards) mais les développeurs non Java détestent ça.

Donc, dans l'ensemble Java impose une courbe abrupte au début du projet, ce qui signifie trop d'argent pour être engagé. Ajoutez à cela une énorme communauté attachée à Java, chacune pensant de manière différente et personne pour diriger vraiment toute la communauté. Ils ne voient pas non plus les discussions et conférences menées par la communauté montrer toutes les nouvelles choses intéressantes. Pas de nouveaux livres sympas. Java on dirait que ça va baisser) car il a été utilisé pour résoudre trop de problèmes différents il y a quelques années.

18
arunmur

Les frameworks pour faire Java développement web ont un peu de courbe d'apprentissage, ils sont souvent trop pour ce dont vous avez besoin, et une grande partie de l'indirection requise pour faire fonctionner les choses est juste ... douloureuse ...travailler avec.

Je travaillais pour une entreprise qui faisait du développement Spring/Java, et j'ai trouvé le cadre au mieux lourd. Je n'ai pas beaucoup de choses agréables à dire sur le framework de Spring, sauf que j'avais un ami qui faisait le développement de Struts et il pensait que Struts était encore pire. Le cadre Web n'a rien à voir avec les applications de bureau ou les applications mobiles (par exemple: Android), et a beaucoup d'idées très abstraites qui prennent un certain temps à comprendre (bien que, certainement, cela vous donne beaucoup de puissance et de capacités si vous Je suis un pro et je fais quelque chose de vraiment complexe comme une application de niveau entreprise). J'adore programmer Java pour les appareils mobiles ou de bureau, mais Java pour les applications Web? Pas tellement.

Je n'ai pas fait de programmation personnellement dans Ruby/Rails, mais mon ami qui faisait Struts fait maintenant Ruby programmation Web et témoigne que les choses sont difficiles à faire dans Java nécessite beaucoup moins de code et de complexité pour Ruby. Il existe certainement une courbe d'apprentissage des différentes règles de syntaxe et de langage, mais pour les applications de prototypage, elle présente des avantages en termes de quantité de code requise. Comme d'autres l'ont mentionné, l'évolutivité est également un problème à prendre en compte, et l'une des raisons pour lesquelles les applications plus matures ne sont pas vues aussi fréquemment dans les langues les plus branchées.

14
Jessica Brown

Cela se résume aux coûts et aux tendances. La Startup Web 2.0 est créée par un visionnaire de moins de 30 ans qui a plus de talent que d'argent (je généralise bien sûr mais c'est ce que vous verrez "en moyenne"). Il va utiliser un langage qu'il connaît parce qu'il fait la programmation (avec peut-être quelques amis). Il est très probablement un programmeur autodidacte.

Java a été ciblé comme un environnement d'entreprise (par Java, je veux dire le langage, le cadre et les normes). Il existe un tas d'outils coûteux que les IBM, les Oracles et les BEA du monde veulent vendre aux entreprises.

Les étapes pour devenir compétent avec Java sont complexes et/ou chères. Je sais que le paysage change là-bas mais est-ce trop peu trop tard?

Après que la startup gagne du terrain, vient la croissance. Il est difficile de recruter des développeurs talentueux. La plupart des programmes "devenir programmeur en six semaines" enseignent Java (ou .NET) et le marché est saturé de "programmeurs six semaines" (curieusement, j'ai vu des développeurs avec des CV disant 7 ans) expérience qui montre encore la connaissance d'un programmeur de six semaines.) L'utilisation d'un environnement non "non professionnel" non ordinaire peut être un filtre naturel pour les programmeurs de six semaines. Il faut du dévouement et un investissement personnel pour apprendre un Ruby ou Scala en dehors d'une exigence d'emploi. C'est le plus grand indicateur pour moi de potentiel pour un candidat.

Les connaissances viennent avec l'expérience, mais un programmeur dédié/passionné acquiert des connaissances plus rapidement (en moyenne) que quelqu'un sans ce dévouement/passion. Tout comme un enfant qui aime jouer de la guitare deviendra meilleur plus rapidement qu'un enfant qui prend des leçons parce que son père l'a fait.

14
Michael Brown

Java est trop compliqué. Je fais une tonne de PHP travail et c'est juste plus facile et plus rapide pour la plupart des situations. La possibilité de simplement SSH dans un serveur ouvrir un fichier php pour enregistrer les modifications et les faire est excellente. Les quelques Java applications sur lesquelles j'ai travaillé ont toujours nécessité un redémarrage pour la modification la plus simple. (ne dis pas que c'est toujours le cas avec ce que j'ai fait avec). De plus, l'hébergement [PHP est bon marché et facilement disponible.

Je pense aussi que ce que vous avez au moins avec PHP c'est beaucoup de développeurs qui comme moi ont commencé il y a 14/15 ans avec du HTML statique. Au fur et à mesure que les choses progressaient, nous avons commencé à ajouter PHP à nos sites, car c'était facile, simple et abordable. Au fil des ans, la langue a grandi et élargi ses capacités bien au-delà de ses humbles débuts et s'efforce maintenant d'être ce que je pense, c'est beaucoup de choses, ce n'est vraiment pas.

D'un autre côté, la plupart des développeurs de [PHP que je connais voient Java comme ce gorille géant trop complexe de 800 lb, presque comme sortir du semi-remorque à 18 roues pour descendre à l'épicerie et obtenir un Miche de pain.

J'ai essayé d'apprendre Java, mes premières impressions où c'était très long et induisant un tunnel carpien. De plus, cela m'a laissé beaucoup de questions qui semblent probablement faciles pour un vétéran Java. OpenJDK ou Sun? Tomcat, ou Glassfish, ou? De plus, il semble que chaque introduction à Java livre commence par écrire du code pour la ligne de commande. Je pense que la plupart des gens de nos jours trouvent que c'est une fête de répétition.

14
Cyrus

Mon équipe et moi-même actuellement développons une application Web entièrement nouvelle en Java 6 + Stripes. Au cours de la dernière année, j'ai également travaillé sur une autre application Web entièrement nouvelle en utilisant Java 6 + Stapler (un framework web quelque peu inconnu développé par Kohsuke Kawaguchi de Hudson/Jenkins fame).

Java est absolument utilisé pour le développement Web moderne. Certes, il n'a pas l'attrait "sexy" de Ruby ou d'autres langages dynamiques, mais je suis loin d'être convaincu que les langages dynamiques sont une bonne chose une fois qu'un projet commence à évoluer.

Les serveurs d'applications modernes Java sont très compétitifs avec ASP.NET en termes de performances, et les deux sont des ordres de grandeur plus rapides que n'importe quel langage dynamique VM que je connais).

Ne vous méprenez pas ... Je ne dis pas Java est toujours le meilleur choix (pas à distance!) - mais ce n'est pas non plus toujours un choix erroné ou "dépassé".

12
Daniel Pryden
  1. Java est plus complexe à apprendre que PHP/Python/Ruby
  2. L'écosystème Java est très complexe, très vaste et assez déroutant pour les débutants
  3. Il existe de nombreux frameworks historiquement mauvais avec des réputations négatives associées à Java, vous devez savoir sur quels frameworks éviter de perdre du temps
  4. Les outils de build Java sont trop complexes (maven & ant)
  5. Java n'a pas de systèmes de modules faciles à utiliser (OSGI est beaucoup trop complexe)
  6. Java IDE tel qu'Eclipse tout en étant très puissant avec des fonctionnalités incroyables est difficile à configurer pour un développement Web efficace sans beaucoup d'expérience.
  7. Si vous utilisez autre chose que Tomcat ou Jetty en tant que serveur, vous serez frustré par les longs temps de démarrage de WebSphere/WebLogic/JBOSS
  8. Java EE résout les problèmes que beaucoup de gens n'ont pas, comme les transactions distribuées

Un nouveau développeur qui se lance dans le développement professionnel trouvera Java un ordre de grandeur plus difficile que Rails, python ou php pour se mettre en route afin de suivre ce qui est facile à apprendre.

Cela dit, j'ai pris la décision d'utiliser Java pour mon démarrage car un correctement configuré Java environnement de développement est très productif pour travailler. Par correctement configuré, je veux dire.

  1. Temps de démarrage inférieur à 10 secondes
  2. Espace de travail Eclipse correctement configuré, avec tous les cadres manipulés et configurés
  3. Bonne sélection de bibliothèques (Spring, Spring MVC, Spring Social, Spring Security, JPA, Hibernate, Velocity, .... etc)
  4. Machines de développement rapides avec SSD
  5. Abonnement à Orielly Safari
12
ams

Il y a environ 5 ans, un collègue et moi avons reçu une tâche de programmation pour un projet interne. Une tâche assez simple qui nécessitait une analyse des commandes.

J'ai trouvé le tout dans environ 80 lignes de code Java et mon collègue a pris une semaine, environ 20 Java classes et bien plus de lignes de code Java pour faire de même. Inutile de dire que son code a été choisi.

Cela m'a fait me demander. Partout, la complexité était appréciée. (Je travaillais dans l'une des plus grandes sociétés de produits logiciels.) Java était l'outil de choix et les modèles de conception étaient LA façon de coder.

Maintenant, est-ce l'état d'esprit ou simplement l'arrogance qui rejette la simplicité. Eh bien, j'ai toujours pensé que le bon sens devait prévaloir. Qu'il s'agisse d'une entreprise ou d'une simple application Web, les cas d'utilisation de base sont les mêmes. Elle doit être correcte et vérifiable.

Je n'utilise plus Java pour plusieurs raisons. Mais l'un des facteurs - la complexité, est l'état d'esprit qui prévaut dans une tonne de développeurs Java en matière de développement de logiciels.

Quant à la mise à l'échelle des langages dynamiques, la JVM est le résultat de décennies de recherche. Il se passe beaucoup de choses similaires pour Ruby etc.

La scala est une langue que je trouve extrêmement intelligente et pratique. Jouer! avec Scala est tout aussi excellent pour le développement d'applications Web/d'entreprise que n'importe quel autre.

Quant à Ruby et Rails étant la nouvelle chose brillante pour les start-ups, il est extrêmement difficile d'embaucher un développeur Rails solide. C'est en fait un obstacle à toute start-up alors que la pléthore de développeurs Java devrait avoir plus de sens commercial.

12
Ar Wen

Dans ne interview récente avec, Joseph Snarr, responsable technique de google plus, a expliqué comment l'application utilise Java Servlets pour le back-end et JavaScript sur le front-end.

Donc, pour répondre à votre question Java est toujours utilisé pour le développement Web très moderne. Tout simplement pas pour les start-ups qui ont reçu tant de presse récemment.

Je pense que la raison pour laquelle beaucoup de start-ups utilisent d'autres technologies est parce qu'elles sont plus sexy et ont une poussée open source plus médiatisée derrière elles.

11
Greg Guida

La question devrait être "Pourquoi n'est-ce pas Java utilisé par les startups ou pour les petits projets?". Java certainement utilisé pour les "applications Web modernes". Chez Google , Java est utilisé sur le backend pour de nombreux services, et la fermeture compilée JS ou GWT est utilisée pour le frontend. Le problème est lié à la vitesse par rapport à l'échelle. Les startups doivent obtenir un produit viable minimum. Il s'agit généralement de petites équipes de 1 à 3 ingénieurs, qui privilégient la vitesse d'itération par rapport aux performances ou à la maintenabilité. Se heurter à des problèmes d'évolutivité ou à des problèmes de maintenance du code d'équipe est un problème que vous aimeriez avoir, c'est-à-dire au moment où vous atteindre ce stade, c'est un signe que votre mise en œuvre initiale vous a aidé à surmonter les difficultés initiales pour obtenir des clients ou des investissements. Vous pouvez vous permettre de réécrire l'application à ce stade.

Une entreprise comme Google peut se permettre le luxe de construire des choses pour une mise à l'échelle à l'avance, même si elle perd son temps à mettre en œuvre une mise à l'échelle pour quelque chose qui pourrait ne pas attirer d'utilisateurs, car elle peut absorber la perte.

Du moins, c'est mon avis, que beaucoup de sociétés "cool", "hip", "modernes" construisent de petites applications avec de petites équipes où la vitesse d'itération et la simplicité sont les plus grandes exigences.

9
cromwellian

Puisque vous avez mentionné le développement Web et Java, beaucoup de gens ont tendance à oublier qu'au début, l'utilisation des applets Java dans un navigateur Web ne fonctionnait pas bien, non seulement cela, mais le "bac à sable" des applets n'était pas entièrement développé et il y avait des problèmes de sécurité avec Java applets pouvant s'exécuter dans le navigateur et accéder aux données de la machine locale (aka problème de sécurité côté client). Bien sûr, Java était solide dans le backend et les applications autonomes, mais je pense que l'association de Java la langue avec les applets Java (exécutées sur le navigateur) ensemble a un peu foiré quelques perceptions à propos de Java en tant que composant de développement Web. Je ne pense pas qu'ils s'en soient jamais remis.

9
LocoTx

Réponse simple: courbe d'apprentissage pour baser la productivité.

Les systèmes basés sur le framework comme RoR ont tendance à mettre la "magie" dans le langage/la syntaxe. Il est très facile d'accélérer votre syntaxe RoR de base et de lancer une application.

Java a d'abord été un langage, et les outils et les frameworks sont apparus plus tard. Vous devez donc apprendre Java d'abord, puis vous devez apprendre Spring, ou Grails, ou votre super IDE, ou autre chose. Exemple préféré de Ruby, il ne nécessite pas de setters et de getters. Le fait est que Java Les IDE se sont débarrassés du codage manuel aussi ... mais il est toujours dans votre source. L'avantage de cette approche, c'est qu'en dessous du framework, il y a un langage qui est cohérent que tous les développeurs Java Java peuvent travailler.

Cet avantage est douteux pour les petites startups où le temps presse. Habituellement, ils font très peu de choses qu'ils ne pourraient pas faire avec un cadre prêt à l'emploi. Ainsi, ils peuvent récupérer leur système de choix RAD et avoir une application en direct le lendemain.

Mais si vous regardez Facebook et Twitter, au fur et à mesure de leur expansion, ils ont trouvé des choses qui ne pouvaient pas être gérées par des cadres prêts à l'emploi et ils ont donc dû utiliser des technologies de niveau inférieur.

Cette guerre sainte que les développeurs de frameworks peuvent faire n'importe quoi plus rapidement est fausse, ils peuvent faire beaucoup de ce dont ils ont besoin plus simplement et avec moins de courbe d'apprentissage. Et pour beaucoup de choses, c'est "assez bien". Utilisez ce qui convient au problème.

7
Lucas McGregor

Les applications Web traditionnelles sur Java, bien que bien structurées, sont très loin d'être "rapidement développées". Bien que je n'ai jamais écrit qu'une seule application Web complète (Java/Tomcat/Struts), elle a été extrêmement pointilleuse, a mis plus de temps que prévu à déboguer et a été généralement pénible lors de la mise en œuvre de la couche logique métier. Dans la défense potentielle de Java, c'était la seule application Web que j'avais écrite en Java (bien que je sois habitué à programmer des applications de niveau système en Java), et je crois que je pourrais écrire une autre application Web un peu plus rapidement la seconde fois.

Cela dit, j'ai également écrit des applications en PHP et C #, et elles fonctionnent simplement mieux et sont beaucoup plus indulgentes que Java. Plus que cela, Ruby sur Rails a été écrit spécifiquement pour le développement rapide d'applications qui, comme Robbie l'a dit, permettent un accès CRUD facile aux bases de données. Le problème est que la plupart des sites Web que vous développerez vous-même n'ont pas besoin du niveau de personnalisation que Java offre (et vous oblige à effectuer). De plus, chaque objet de connexion DB doit être écrit à la main et n'est pas facile à modéliser. Il peut y avoir un meilleur cadre autour, en particulier celui qui tire parti de les nouvelles fonctionnalités de prise en charge du langage dynamique de Java 7 , mais je n'ai pas encore fait la recherche.

7
Brian

Google App Engine prend en charge Java, de sorte que vous pouvez écrire l'intégralité de votre application Web en Java, en utilisant Eclipse comme interface IDE et de déploiement, avec une API Google raisonnablement documentée - donc je ne dirais pas il n'est pas utilisé ou n'est pas utilisable.

6
Paul

Dépend de la façon dont vous définissez le "développement d'applications Web modernes". Si vous parlez de sites Web de démarrage et de rotation rapide, vous devrez considérer les langages et les cadres conçus à cet effet. Si vous recherchez un développement Web stable, évolutif et au niveau de l'entreprise, vous recherchez des langages et des cadres qui prennent en charge ces idéaux. Dans mon livre, ce sont deux objectifs très différents. RoR, Groovy, etc., sont bons pour le premier et Java est plus approprié, en général, pour le second.

6
cdkMoose

Dans la startup où je travaille, nous avons choisi d'utiliser les deux Java et JRuby pour implémenter notre API car ils se complètent.

Pour l'infrastructure, la distribution des processus et les communications, nous tirons parti de la robustesse de Java, tandis que pour la mise en œuvre réelle des points de terminaison API, nous avons choisi JRuby car tous les appels impliquent JSON et il est beaucoup plus logique de manipuler une représentation de type lâche (JSON) à l'aide d'un -type de langue (Ruby).

Si nous voyons que l'une de nos classes JRuby devient un goulot d'étranglement, nous la réimplémentons directement dans Java (essentiellement une traduction ligne par ligne). Cela peut arriver assez souvent avec des classes qui doit faire beaucoup de calculs, et dans ce contexte, JRuby se comporte comme un langage de prototypage.

Nous avons implémenté notre propre chargeur de classe dynamique, ce qui signifie que nous pouvons changer les classes Java à la volée sans redémarrer le serveur, et nous avons été très satisfaits du choix. Donc, le "vous devez compiler et redémarrer à chaque fois "l'argument n'a pas beaucoup de poids.

La clé est d'éviter toutes les choses Java EE - c'est énorme et encombrant et anti-agile.

5
David Semeria

J'ai toujours le sentiment que Java est utilisé dans de nombreux développements Web. Mais il s'agit généralement de développements plus orientés vers les entreprises, pas principalement de technologie, qui sont généralement moins ouverts que les nouvelles startups qui doivent obtenir une certaine traction et promouvoir leur propre travail, ainsi que plus intéressés par la technologie. . Donc, même s'il est utilisé dans de nombreux sites Web d'entreprise, vous ne le saurez probablement jamais, car ils ne se soucieront pas vraiment de parler publiquement de leur pile technologique.

Cela dit, en commentant toutes les questions originales ...

Est-ce une faiblesse du langage? Comparé à d'autres langages comme Python ou Ruby, Java est verbeux et a tendance à avoir besoin de plus de code pour faire des choses similaires. Mais ce ne sont pas seulement les capacités du langage, mais aussi la communauté qui l'entoure et le type de développeurs qui utilisent ces outils. Ainsi, la plupart des modules et outils sur Python, Ruby, PHP, etc. sont open source et sont plus faciles à trouver que dans le monde Java, simplement parce que celui-ci est plus axé sur la fourniture (et la facturation) de services. Par exemple, la communauté Ruby est vraiment très orientée vers le développement Web, donc tout développeur capable d'utiliser Ruby connaîtra les problèmes et les outils disponibles pour un projet Web. Ce n'est pas nécessairement vrai pour les développeurs de Java, qui auraient pu travailler sur d'autres types de systèmes, comme les systèmes de génération de rapports. Bien sûr, tout bon développeur rattrapera son retard, mais la perception est que le développeur Java moyen est moins soucieux d'apprendre de nouvelles technologies et de nouveaux langages.

Est-ce un stéréotype injuste de Java parce qu'il existe depuis si longtemps (il est injustement associé à ses anciennes technologies et ne reçoit pas de reconnaissance pour ses capacités "modernes")? Java n'est pas vraiment si vieux et, étant juste, il s'est considérablement amélioré. C'était la plateforme cool et pertinente il y a environ 10 ans. Mais depuis lors, il y a eu de nouvelles plates-formes avec de nouveaux problèmes à l'esprit, comme Ruby sur Rails. Le secteur principal de Java a été principalement le monde de l'entreprise, avec des problèmes différents, donc les personnes à la recherche de nouveaux projets à l'extérieur qui recherchaient différents outils. De plus, le principal avantage de la conception Java, étant la multiplateforme, n'est pas aussi pertinent aujourd'hui qu'il l'était auparavant.

Le stéréotype négatif des développeurs Java est-il trop fort? (Java n'est tout simplement plus "cool") Cela a aussi du vrai. Java est toujours la langue à apprendre "pour obtenir un emploi". Donc, si vous ne vous souciez pas, mais que vous voulez juste apprendre quelque chose pour gagner de l'argent, vous finirez par apprendre un peu Java et ne vous soucierez plus jamais de vous améliorer. Encore une fois, c'est beaucoup de perception et de visibilité. Il y a des tonnes d'excellents développeurs Java qui codent sans partager leurs connaissances, alors qu'il y a beaucoup de développeurs [PHP, peut-être pas aussi bons, qui écrivent des blogs et collaborent en open source. Cela donne à penser que les développeurs PHP sont meilleurs que Java, car vous avez certains commentaires à leur sujet.

Les applications écrites dans d'autres langues sont-elles vraiment plus rapides à construire, plus faciles à maintenir et fonctionnent-elles mieux? Je dirais qu'elles sont plus rapides à construire. Les principes des langages tels que PHP, Python ou Ruby les rendent assez bons pour générer des logiciels qui peuvent changer constamment. Par exemple. La saisie dynamique facilite la modification d'une interface. Dans Java avoir une interface bien définie est important, ce qui conduit à des interfaces plus stables (et difficiles à changer). C'est très important dans une nouvelle startup, dont le principal problème est d'obtenir un produit avant de manquer d'argent. En ce qui concerne les performances, il est très très facile de mal comprendre les besoins et d'essayer d'utiliser tours de magie pour obtenir les performances requises, comme "Java est plus rapide que Ruby. Period" ou "MongoDB est à l'échelle Web" . La réalité est plus difficile que.

Java est-il uniquement utilisé par les grandes entreprises qui sont trop lentes à s'adapter à une nouvelle langue? Définitivement, ayant déjà une équipe existante de Java les développeurs de l'entreprise facilitent l'utilisation du même langage pour les nouveaux projets. Ceci est perçu comme "la valeur sûre", surtout si le cœur de l'entreprise n'est pas la technologie. Mais, de toute façon, Java n'est pas utilisé UNIQUEMENT sur les grandes entreprises, il y a encore beaucoup de startups qui utilisent Java pour des trucs sympas (Par exemple, FightMyMonster ou Swrve utilise largement Java), mais je dirais que la tendance générale dans la scène de démarrage est d'utiliser d'autres langues. C'est aussi un moyen d'attirer les gens, car la plupart des gens seront plus excités de travailler avec Ruby, Python ou PHP, perçus comme des langages plus "conviviaux" et "amusants" que de travailler avec Java.

5
Khelben

C'est vrai, mais pas à cause de Java et de son écosystème. C'est à cause des gens qui, en utilisant Java ont tendance à créer de gros dégâts et de lourdes abominations).

Il y a suffisamment de frameworks (spring-mvc, grails, play, etc.) qui vous permettent de construire des choses rapidement. Le fait que les gens suringèrent leurs systèmes est un problème qui vient avec les connaissances accrues que les gens acquièrent lorsqu'ils travaillent avec l'écosystème Java - vous en savez beaucoup plus, et vous les avez disponibles (il existe des outils pour tout), et "tout ressemble à un clou".

Si vous êtes "hacky", vous pouvez faire à peu près la même chose avec Java comme avec les autres langages, et voici une étude indiquant que:

Étude de 49 programmeurs: le système de type statique n'a eu aucun effet sur le temps de développement ... http://www.cs.washington.edu/education/courses/cse590n/10au/hanenberg-oopsla2010.pdf

5
Bozho

Pour ajouter un peu à ce qui a déjà été dit, je pense que cela a beaucoup à voir avec la vitesse à laquelle vous pouvez passer de rien (littéralement) à une application Web fonctionnelle.

Si tout ce que vous avez aujourd'hui est une idée, passer de l'endroit où vous en êtes maintenant à l'écriture de votre application Web est presque aussi simple que de tomber, que vous choisissiez un hébergeur ou votre propre infrastructure (comme une image EC2). Selon mon expérience, choisir Java représente généralement plus de travail et coûte souvent plus cher.

De plus, si vous optez pour Linux et PHP/Python/Ruby, les outils et la plate-forme sont complémentaires et conçus pour se soutenir mutuellement. Avec Java, il semble parfois que les deux mondes (OS et Java) ne semblent pas fonctionner en harmonie l'un avec l'autre.

3
Matt Ryan

Qui a dit que non?

Spring MVC + Spring Data JPA or Mongo + Thymeleaf for templating + coffee-maven-plugin for Coffee to JS transpiling and you ready to go.

3
Martin Spa

Beaucoup pourraient associer Java et le développement d'applications Web aux horreurs de J2EE qui, associées à des serveurs d'applications J2EE monstrueux de grandes sociétés bleues et rouges, équivalaient à des semaines de travail avant que le "Hello World" de base ne soit en ligne. .

Certes, les spécifications et implémentations récentes de JEE sont plus légères, mais je penserais encore trois fois avant de suggérer quelque chose comme ça pour un projet de développement rapide à cycle court.

Il s'agit toujours de la méthode normalisée de développement d'applications Web en Java. Les alternatives, dont beaucoup sont mentionnées dans d'autres réponses, donnent une image plus mitigée et confuse avec trop de choix à faire.

D'autres langues représentent une seule solution clé en main au lieu de cette multitude. Cela rend ce choix plus approprié lorsque vous avez des poissons plus importants à faire frire.

3
Asgeir S. Nilsen

Je pense qu'il est beaucoup plus utilisé que vous ne le pensez - l'utilisation est juste en dessous de la ligne de flottaison. Il y a beaucoup, beaucoup Ruby on Rails wrappers autour d'épais, fantaisie Java services. Surtout quand vous commencez à traiter avec quoi que ce soit)) approche du big data.

2
Wyatt Barnett

Java était cool, Java est cool et Java sera cool à l'avenir. Je développe une application web. En utilisant Java.

Le principal problème avec Java est qu'il a besoin d'une équipe de taille moyenne 7-10 personnes pour voir les résultats de la mise en œuvre. Les développeurs du back-end doivent avoir la connaissance de l'architecture d'application d'ORM au cadre d'application à couche de présentation. Trop d'options pour les développeurs sur la table, ce qui soulève des questions, est-ce une bonne idée d'utiliser un ORM ou non? Quel cadre ORM utiliser? Quel cadre d'application utiliser? Comment implémenter le frontal? Tout cela fait que les développeurs ont du mal et rend les combinaisons infinies de la part de l'utilisateur final pour choisir cette technologie avec ce framework que les développeurs ne connaissent pas. Il en va de même avec les plugins IDE; trop d'options, beaucoup de temps est consacré à l'installation, la configuration et le test si cette version d'un plugin fonctionne avec cette version du IDE et ainsi de suite. La dernière chose est l'hébergement; beaucoup ont développé Java ne sont pas rendues publiques car il n’existe pas d’hébergement Web approprié pour les applications Java Web, gett ing un VPS pour 80 $/mois n'est pas une option pour trop de développeurs, et la plupart des applications ont besoin de plus d'un VPS.

2
newphoenix

J'utilise beaucoup de Java pour créer des applications Web. Donc, quand il s'agit de la langue * itsel * f, je ne trouve qu'un (mais gros) problème - le manque de support multiligne. Cela rend l'impression/modèle en code Java code très illisible).

Mais le vrai problème est le manque de bons frameworks web. J'ai travaillé avec beaucoup de solutions, et je ne pourrais nommer aucune d'entre elles bonne ou même satisfaisante.

La plupart d'entre eux sont en fait de la programmation XML. Dans JSF vous produisez des tonnes de XML, et si vous voulez changer une fonctionnalité générale, comme réorganiser les étiquettes en haut des champs de texte, vous terminerez à faire le même changement à plusieurs endroits. Oui, vous avez des inclusions, mais comparez-les avec les inclusions de PHP ...

De plus, le nouveau JSF inclut des fonctionnalités "supplémentaires" qui étaient connues des frameworks JavaScript des années auparavant ...

ZK est un peu mieux car il permet de créer les éléments web dans le code Java, ce qui facilite les modifications (si vous utilisez OOP correctement - héritage, etc.). Cependant, ce Java est exécuté côté serveur, ce qui est un grand problème de performances - chaque clic provoquer l'envoi d'un package au serveur.

Eh bien, GWT est le meilleur framework web avec lequel j'ai travaillé. Il permet la programmation d'objets dans la conception web. Chaque élément à l'écran est représenté par l'objet Java, ce qui vous donne une flexibilité totale mais ... Le temps de compilation est très long, et le Javascript généré est loin d'être optimal, simplement parce que GWT n'est pas n'utilisant pas pleinement les possibilités de JavaScript (pas de support pour la réflexion, au moins dans la version que j'utilisais, et implémentation fatale de HashMap).

Vous pouvez utiliser des modèles, tels que Velocity, mais comme ci-dessus, ils sont une version pour les pauvres des possibilités de modèles offertes par des langages tels que PHP.

Donc, ce n'est pas une haine envers Java, mais le manque de support pour l'écriture d'applications web que l'on obtiendra lors de l'utilisation de PHP, Python etc ...

1
Danubian Sailor

Le problème avec Java est que cette langue est apprise à l'école, donc c'est la langue la plus connue des nouveaux programmeurs. Donc si vous voulez vous différencier de la masse, vous devez apprendre une nouvelle langue, Java est la langue de tout le monde.

La deuxième raison est qu'à l'école ou dans les grandes entreprises lorsque vous souhaitez créer une application web, les enseignants ou les personnes déjà en place vous donnent des tonnes de frameworks Java pour vous aider à construire cette application plus rapidement. Mais en fait, de cette façon vous construisez votre application web sans vraiment comprendre le web (HTTP, HTML, CSS, Javascript, etc ...). Cette tendance est moins visible avec d'autres langages comme RoR ou Python, les développeurs utilisant ces langages ont un meilleure compréhension du web.

Ainsi, les statups qui souhaitent créer des applications Web modernes préfèrent utiliser RoR, PHP ou Python pour attirer de bons développeurs Web, ceux qui comprennent le Web et pas seulement un langage de programmation.

1
Alexandre Vivien

Si par "moderne" vous voulez dire populaire (comme obtenir la plupart des articles de presse), alors la raison Java n'est pas utilisé est très simple - parce que tous les "cool kids" utilisent Ruby (ou Python, ou Clojure, ou Scala, ou tout ce qui est "cool" de nos jours).

Il y a un sens plus profond à cela, ces mêmes personnes qui utilisent Ruby ou Python pour écrire leurs applications Web "modernes" sont généralement de très grands innovateurs. Les gens qui adore résoudre des problèmes ennuyeux de manière simple et efficace tout en économisant du temps et de l'énergie cérébrale. Certains pourraient dire que ce sont des qualités de bons programmeurs.

Ces personnes créent généralement le plus de presse autour de leurs projets, ce que font rarement les grandes entreprises. Que ce soit en faisant beaucoup d'open-source, ou en écrivant des blogs, ou autre chose.

Il est donc facile de comprendre l'attraction gravitationnelle de ces personnes dans le monde des langages dynamiques, où elles sont proposées des moyens plus simples/plus petits/plus rapides/plus légers de résoudre les problèmes. Malheureusement, cela signifie que les mêmes personnes qui étaient excellentes Java, mûrissent et abandonnent le mouvement Java) car c'est ennuyeux et difficile (pour eux) à utiliser et résoudre ces mêmes problèmes.

Si vous créez une application Web simple avec le framework MVC X, nécessite d'écrire/éditer seulement 100 lignes de code dans Rails/Django, et contrairement à cela, il nécessite 10 000 lignes de code dans Java pour faire le même chose - il est très évident pourquoi cela peut sembler ennuyeux.

Concernant votre déclaration "je n'ai rien vu de" critique "manquant de Java, m'empêchant de construire la même application." La question est - si vous aviez la même expérience dans Rails/Django/Whats ... comment ces deux applications Java et non Java se comparent-elles, mesurant le temps et les efforts et toutes les autres mesures que vous pouvez trouver.

1
Evgeny

Une réponse intéressante est donnée par Dries Buytaert, fondateur de drupal. Bien que son doctorat porte sur Java, il a choisi php pour drupal, et il ne le regrette pas. Vous pouvez le lire (et certains de ses commentaires) ici: http://buytaert.net/why-php-and-not-Java

Il aurait été très difficile d'obtenir une masse critique si Drupal était écrit en Java.

0
johanvdw