GCJ ne suit pas assez rapidement le développement de Java (version proprio Oracle ou même libre OpenJDK). De plus les JVM sont suffisamment optimisées à l'heure actuelle pour être plus rapide que le code natif que peut générer GCJ. Pourquoi ? La JVM permet de faire moins d'appel système en gérant elle même ses ressources.
Conclusion : L'exécution du byte code généré via du Java est plus rapide que l'exécution du code natif généré par GCJ. Après la différence JVM client/serveur peut être intéressante et à tester. La JVM client est lancée par défaut et est le comportement à privilégier. La version serveur (que l'on peut utiliser via l'option -server de java) applique des optimisations plus lentement mais les optimisations sont plus conséquentes, donc il y a une possibilité d'exécution plus rapide.