Per la parte sensibile alla velocità in Trading ad alta frequenza , Java non è abbastanza buono.
Java non consente un controllo sufficiente sul layout degli oggetti. In particolare, manca un layout di memoria compatto fornito dall'array e dal vettore. Una lista array di riferimenti a oggetti non è la stessa.
Java ha anche un overhead di oggetto diverso da zero, con conseguente aumento degli oggetti.
Entrambi producono errori di cache, che peggiorano il tempo di reazione.
E in HFT, il vincitore prende tutto - Non c'è un secondo posto.
Molti commenti sulle altre risposte si concentrano in modo errato su Garbage Collector. GC non importa affatto. Durante la parte sensibile alla velocità, GC non verrà attivato. E ci sarà abbastanza tempo tra due eventi sensibili alla velocità per fare tutto il tempo necessario per mantenere la casa, nessun sistema HFT dovrebbe essere vicino al 100% del carico.
Parte di qualsiasi progetto il più veloce possibile, sta posticipando qualsiasi cosa non cruciale per l'invio dell'ordine fino a dopo l'invio. In effetti, GC potrebbe davvero aiutare in questo aspetto! In pratica, di solito è più semplice allocare la memoria necessaria all'avvio e riutilizzarla.
Naturalmente, ci sono anche parti che non sono sensibili alla velocità: GUI, post-elaborazione, calcolo dei rischi, monitoraggio e così via. Queste parti possono essere eseguite in quasi tutte le lingue, incluso Java.