2009-08-24 8 views

Antwort

1

Ja, sobald Sie nativen Code über JNI aufrufen, kann es so ziemlich alles tun, was der aktuelle Benutzer tun darf - z. lösche alle ihre Dateien. Das Java-System kann nichts kontrollieren, was der systemeigene Code tut.

Sie haben nicht haben JNI für alles verwenden - es wird typischerweise für z. Zugriff auf niedriger Ebene (z. B. kritische Fehlerbehandlung für ein entfernbares Laufwerk) oder Zugriff auf eine C-API, die kein Pure-Java-Äquivalent aufweist.

+0

Das ist sicher, kann Sicherheit, Weißt du, kann JNI für Benutzer-Code mit java secirity deaktivieren? –

4

Die Java-Sicherheitsrichtlinien gelten einfach nicht für nativen Code, der über JNI aufgerufen wird, sodass der native Code diese natürlich nach Belieben verletzen kann.

Was für JNI wir verwendet haben, ist in diesen Tagen hauptsächlich OS-spezifische APIs oder eine Schnittstelle mit existierendem Nicht-Java-Code aufzurufen. Früher war das Verbessern der Leistung ein häufig genannter Grund, aber angesichts des Zustands von VMs und JIT-Compilern heute macht das fast nie Sinn.