Ну, есть AMPC. Это компилятор C для Windows, MacOS X и Linux, который может компилировать код C в Java Byte Code (код, который выполняется на виртуальной машине Java).
* AMPC 1004 *
Тем не менее, он коммерческий и стоит 199 долларов за лицензию. Я сомневаюсь, что это окупается;) Я не знаю ни одного бесплатного компилятора, подобного этому.
OTOH, Java и C очень похожи. Возможно, вы могли бы реорганизовать код C в Java (структуры могут быть заменены объектами с общедоступными переменными экземпляра), а операции с указателями обычно могут быть преобразованы во что-то другое (например, операции с массивами). Хотя я думаю, что вы не хотите проходить 5000 строк кода, не так ли?
Использование JNI делает код зависимым от платформы, однако, если вы говорите, что он не зависит от платформы C, нет никаких причин, по которым ваш Java-код должен зависеть от платформы. OTOH, в зависимости от того, насколько дорогостоящи эти вычисления, использование JNI может фактически принести вам выигрыш в производительности, поскольку, когда речь идет о пропускной способности необработанных чисел, C все еще может опередить Java по скорости. Однако вызовы JNI очень дороги, поэтому, если вычисление является очень простым и быстрым вычислением, сам вызов JNI может занять столько же времени (или даже больше), чем выполняемый расчет, и в этом случае использование JNI ничего не даст вам, но замедлит вниз вашего приложения и вызывает чрезмерную память.