dì al tuo boss di aggiornarsi.
Un client java userà si e no 30-40 mb (compresa la jvm).
Un server qualcosina di più.
Se poi ti ci metti in jsp + javaserver faces e jstl ti viene un lavoretto carino. (questo come sito ovviamente lato server).
Il C comunque, a mio avviso, è il miglior candidato.
Per quanto riguarda l'espandibilità dipende tutto dal *modo* di programmare e che da come strutturi il progetto che non *quale* linguaggio scegli.
Se dividi il lavoro tra librerie, funzioni (magari in override) e usi tipi "super" riesci a cavartela bene.
Per farmi capire uso un esempio in java.
Te hai ad esempio bisogno di una lista.
Il tipo di lista generito e "super" in java è List.
List poi a sua volta contiene ArrayList, TreeList, xxList..
Se te dichiari una variabile:
> List list = new ArrayList();
puoi, successivamente, modificare list in un'altra lista senza perdere i metodi che derivano dalla super.
E' un più facile a farsi che a dirsi
Stessa cosa se lavori in modulare.
Io avevo un progetto che conteneva una dbConnector.
E' una libreria dedicata alla connessione al db con tutti i metodi d'interfacciamento (addUser, delUser, isLogin, isAvailable, bla bla).
Se ti serve estendere qualcosa semplicemente crei un nuovo metodo.
L'importante è che la libreria, di base, ti dia l'essenziale per qualsiasi cosa (ad esempio uno statement e la connection).
Il resto poi sono scelte algoritmiche a livello di codice (for example usare una Heap di Fibonacci per il sorting ciclici piuttosto di una ParityHeap, o di usare un albero AVL piuttosto di un Red & Black).
Quest'ultima parte solo per migliorare le performance, ovviamente.