Nota: quando mi riferisco a "Java" qui, è solo perché è quello che è stato menzionato nella domanda. Sostituisci quasi tutti gli altri strumenti e la maggior parte del resto della risposta rimane ragionevolmente alcolica.
Ci sono due scuole di pensiero su domande come questa. Nel suo commento, penso che @Docbrown riassuma in modo abbastanza sintetico una scuola di pensiero, pur perdendo poco di valore reale:
Come on, this topic has been beaten to death: the answer to "why does one use X if Y is faster?" is always "because speed is not the only quality criteria for software, and often not the most important one" and "because Y is not always or generally faster than X".
Considerando questo un po 'più in generale, l'argomento è fondamentalmente: i programmatori hanno scelto X su Y perché un'attenta considerazione dei requisiti tecnici per l'attività a portata di mano mostra che X è lo strumento superiore per l'attività.
In breve, suppone che le persone che prendono le decisioni non siano influenzate da pregiudizi preesistenti, siano immuni da errori di conferma e, in generale, prendono le loro decisioni basandosi solo sulle considerazioni tecniche che si applicano al compito in questione.
Questa è una scuola di pensiero, e le scuole di pensiero devono avere un nome, quindi chiamerò questa scuola di pensiero "grossolanamente irrealistica".
La seconda scuola di pensiero non ignora esattamente i fattori tecnici, ma cerca anche di considerare i fattori umani. Presume che le persone coinvolte nel prendere tali decisioni siano persone ... reali. Hanno pregiudizi preesistenti. Sono influenzati dal bias di conferma.
Ciò non significa che necessariamente prendano decisioni sbagliate, o che le loro ragioni per prendere tali decisioni siano meno valide - ma con qualsiasi tentativo di essere realistici, ci rendiamo rapidamente conto che i fattori tecnici sono raramente l'unico criterio utilizzato per prendere tali decisioni - in realtà, il più delle volte, è probabile che i fattori tecnici svolgano un ruolo piuttosto secondario in tali decisioni.
In effetti di rete, consideriamo che se (ad esempio) un'azienda utilizza un database di una società (ad esempio, IBM o Oracle) che predilige Java, è probabile che troverà molti consigli che li spingono a utilizzare Java. Se, d'altra parte, hanno usato (per esempio) Microsoft SQL server, ci sono molte più possibilità che possano usare qualcosa basato su .NET per le loro attività TL. Con la terza mano (per così dire) se stai guardando una piccola startup con poco o nessun impegno con stack di software esistenti, è abbastanza probabile che usino cose come Python e Pandas (e le probabilità sono che non indossino chiamiamolo qualcosa di "dignitoso" come "ETL" - probabilmente lo chiamano semplicemente "raschietto di dati" o qualcosa del genere).
Considerando il personale esistente, otteniamo due considerazioni completamente diverse, sebbene tendano a lavorare nella stessa direzione. Uno è una questione di pregiudizi esistenti e di pregiudizi di conferma. Se hai un reparto IT pieno di persone che scrivono Java (come fanno molte grandi aziende) è probabile che almeno alcune di loro in realtà preferiscano per usare Java. A meno che non sia immediatamente evidente che Java è molto peggio dell'alternativa, è probabile che lo considerino la prima scelta. La distorsione di conferma quindi fa la sua parte: ad esempio, se Google fornisce informazioni sulla loro scelta migliore, dal loro punto di vista quasi ogni articolo che trovano sarà visto come la prova che Java è davvero la scelta migliore 1 .
La seconda considerazione è molto più facile da difendere: se abbiamo un reparto IT pieno di persone che conoscono Java, è molto meglio aggiungere un po 'più di persone che conoscono Java per gestire questa nuova attività, anche se (in altre circostanze ) qualche altro strumento sarebbe davvero più adatto per il lavoro. Anche se qualche altro strumento sarebbe superiore per questo particolare compito, i risparmi per una particolare attività spesso non giustificherebbero il sovraccarico di introdurre nuovi strumenti, assumere persone che il personale attuale non può davvero valutare bene, seguendo nuove procedure, ecc.
C'è ancora un altro punto che vale la pena considerare. In molti casi, la tua visione di ciò che è popolare è strongmente influenzata dal tuo background. Molti degli stessi fattori sopra citati (e altri ancora) possono entrare in gioco nel rinforzare questa visione. Uno che non è menzionato sopra, ma sembra chiaramente rilevante per me è semplicemente la terminologia. Se utilizzi Google per qualcosa come "ETL per database", i tuoi risultati saranno dominati dai risultati relativi a Oracle e Java (con, probabilmente, alcuni da altri fornitori "Enterprise" come SAS). Se, invece, si cerca qualcosa come "database raschietto", si vede una visione del mondo in cui Oracle e Java fondamentalmente non esistono.
1. Sì, anche se l'articolo in realtà dice molto chiaramente qualcosa come "abbiamo trovato Java chiaramente inferiore per questo compito", il bias di conferma permetterà a molte persone (apparentemente onestamente) di trovare qualcosa di simile a un outlier dove Java ha funzionato bene, e immediatamente si convince che è the pensare che sia davvero importante per il loro compito.