Да, системные вызовы - единственный способ, которым ОС разрешает доступ к любой программе.
В случае Java именно поэтому некоторые «особенности», специфичные для ОС c, просматриваются, что портит идеал однократной записи в любом месте. Например, у меня была программа, которую я разработал при ошибке Windows box при запуске на Linux box.
Проблема оказалась в том, что в каталоге ресурсов имя файла было все более низкий регистр, но моя программа имела имя файла в смешанном регистре. Программа работала на windows, поскольку имена файлов на windows не чувствительны к регистру, но в Linux они чувствительны к регистру.