Di sicuro e' necessario saper programmare
bene in C/C++, sopprattutto per quanto riguarda la gestione della memoria.
Cosa che uno che fa calcolo scientifico dovrebbe conoscere come/meglio delle proprie tasche
Detto questo, esiste un modo un po piu' semplice di accedere a codice scritto in C da Java, ed e' usare NON JNI, MA JNA
https://en.wikipedia.org/wiki/Java_Native_Acces
https://github.com/java-native-access/jn
Per quanto riguardano gli esempi per le interfacce grafiche in java, CI SONO, BASTA ACQUISTARE il libro giusto.
Per le Swing c'e' il manualone della O'Reilly oppure i tutorial della Sun/Oracle.
Per quanto riguarda l'affidabilita': il problema NON E' Java con C/C++, ma CHI ha fatto il lavoro che lo ha fatto alla piu'-o-meno-circa-boh-speriamo-che-funzioni!
Comunque e' strano che tu abbia scelto Java come piattaforma per la parte di GUI/integrazione, quando buona parte del mondo scientifico usa Python.
Per la portabilita', la questione e' sempre la solita:
- per Java, sono PERFETTAEMENTE portabili i .jar/.class, CIOE' I BINARI !!!!
- per il C/C++ sono portabili i sorgenti, se scritti con intelligenza, ed eventualmente creando delle librerie di servizio per fare la stessa cosa su piattaforme diverse (ad esempio l'uso del Registry di Windows non e' portabile, ma l'idea certamente si)
Poi' ovviamente, serve qualche accorgimento per far si che piccole differenze tra le piattaforme siano gestite in modo inteligente (ad esempio .dll in Windows e .so in Linux/Mac, oppure il fatto che in Windows si scrive C:\ mentre in Linux/Mac no, ma sono dettagli).
Come programmatore C/C++, comunque, NON E' per nulla bene che tu non sappia utilizzare BENE le STL, boost, cblas, lapack, fftw, e le n-mila librerie cross-platform, straefficienti, ultraottimizzate che ci sono in circolazione.
Per la compatibilita' sulle piattaforme, la soluzione e' semplice:
1) compilatori GNU (CygWin per Windows, NON MINGW!!!!)
2) una VM per SO (Windows, Linux, Mac). Vabbe' per il SO con cui sviluppi non serve
3) cmake o autotools per la gestione delle differenze tra le diverse piattaforme