Perché il software Eclipse è scritto in Java?

Se guardiamo la questione da un punto di vista puramente tecnico e orientato al linguaggio, quale sarebbe l'alternativa?

Al tempo delle origini del progetto Eclipse, C# non esisteva. Probabilmente, non è ancora sufficientemente multipiattaforma per supportare virtualmente identiche e complete funzionalità di Eclipse su tutte le piattaforme su cui Eclipse gira attualmente.

Visual Basic, un popolare linguaggio di sviluppo di applicazioni di uso generale all'epoca, sarebbe stato fattibile ma era mono-piattaforma - Windows - quindi è fuori. Lo stesso per un popolare (all'epoca) concorrente di Visual Basic, Borland Delphi.

Ora, Delphi è essenzialmente scomparso e Visual Basic .NET ha le stesse limitazioni di C#.

Forse Python avrebbe potuto essere - o potrebbe essere - usato. Ma mentre un linguaggio a tipizzazione dinamica è ottimo per progetti piccoli e leggeri, diventa rapidamente un peso per progetti grandi. La natura auto-documentativa delle dichiarazioni esplicite dei tipi manifesti è un grande aiuto per i grandi progetti, in particolare quando si sviluppa in team.

E Python è piuttosto lento rispetto a Java.

C++ sarebbe stato certamente - e potrebbe essere ora - un candidato. Supporta UI e altre librerie multipiattaforma, ed è abbastanza performante e potente ed è tipizzato staticamente, ma ha numerosi spigoli vivi e "gotchas" che possono rallentare lo sviluppo e risultare in software fragile e inaffidabile. Infatti, questi sono alcuni dei problemi che hanno motivato lo sviluppo e la promozione di Java in primo luogo.

Quasi ogni altra scelta di linguaggio è più oscura, e quindi ha meno scelte di librerie insieme ad altre potenziali limitazioni. Solo alcuni - come forse Haskell - avrebbero una possibilità, ma sono tutti sufficientemente fuori portata in termini di sviluppo general-purpose che probabilmente non sarebbero nemmeno stati - o sarebbero ora - considerati.

Quindi non c'era davvero nient'altro di adatto quando il progetto è iniziato, e non ci sono ancora alternative reali - eccetto forse altri linguaggi JVM (e Java-compatibili) come Kotlin o Scala.

Quindi se l'obiettivo è quello di produrre un IDE su larga scala, estensibile e multipiattaforma, cos'altro si potrebbe usare se non Java?