в безопасности ли данные приложения при работе JVM?
Вообще да. Можно сделать heap dump с помощью jconsole (это могут сделать все пользователи) Тогда jvm создаст файл heapdump'а с правами на чтение только для пользователя от имени которого пашет jvm. Так что контроллируйте кто имеет доступ к этому пользователю.
Безусловно нет. Способа защиты нет.

Если более точно, что в безопасности от кого? Если программа работает на локальной машине, то я могу от root'а в любой кусок памяти залезть. Да что там говорить, при физическом доступе можно даже планку памяти выдернуть, вставить в другой компьютер и прочитать данные на нем. Если её заморозить охлаждающим балончиком, то данные не успеют стереться.