L'oscillazione dipende dalla piattaforma in una certa misura. Oltre ai temi del widget che sono diversi, come hai notato, abbiamo avuto applicazioni basate su Swing in cui il layout è diverso da piattaforma a piattaforma. C'era anche un altro gruppo in cui lavoravo che aveva alcuni widget che non si vedevano nemmeno su certe piattaforme.
Non sono sicuro di quanto grande sia il problema, perché non sono sicuro di quanto Swing sia più usato. Il software SWT di Eclipse sembra essere molto più indipendente dalla piattaforma, quindi sembra che la GUI Java + non implichi necessariamente la non portabilità.
Inoltre, qualsiasi codice Java che utilizza il sistema operativo o fa ipotesi sulla piattaforma sottostante sarà naturalmente meno portabile, per ragioni che includono (ma non solo):
- caso (in) sensibilità del filesystem
- caratteri di nuova riga
- thread / processi
(Molti di questi possono essere facilmente gestiti dalle API Java - System.getProperty("line.separator");
) .
Come contropartita del detto che hai citato, alcuni dei programmatori più esperti del mio gruppo dicono che Java è "scrivi una volta, prova ovunque".