Both of the 'drivers' you mentioned are horribly broken - they use low-level file writes for punching data into DBFs, without any regard for things like indexes, triggers, record/file locking and so on.
Under Windows you can use Microsoft's free ODBC or OLEDB drivers for VFP; on other platforms things get a lot more complicated.
If it is absolutely necessary to write data from platforms that cannot use either the VFP runtime or a compatible driver then it is best to write updates to a separate table that can be merged into the main table on a compatible platform. Whether that is possible depends on the nature of the updates, of course.
Poor man's file locking - create file under a temporary name, rename to 'active' name only when done - is available without access to low-level, system-dependent file locking APIs. This can be extended to create a safe processing pipeline with the file system as the only inter-process communication medium. I.e. write updates from Java using any old driver that can write DBF, rename the table from its temporary name to an active name (magic prefix, whatever); updater process on a Windows box sees active filename, renames to temporary, merges updates into the main table, and then renames to passive name signifying 'done and dusted'.
That way you get to use whatever driver you want under Java but the main table only gets touched by compatible engines (driver/runtime) that do not destroy table integrity.
P.S.: rebuilding the index after b0rkening the table with incompatible updates can be as simple as sending a "REINDEX" command to the Fox runtime (in a Fox app or in one of the Fox drivers) but it creates a logistic nightmare where record/file locking has to be accomplished by administrative measures. E.g. "Has everyone closed the $FOO program? I want to run an update.", "Don't touch that program until I'm done updating and have rebuilt the index!", etc. pp.