# Applet und JNI



## smile (13. Apr 2004)

Hallo, 

ich bin gerade am überlegen, ob es Schwierigkeiten machen würde, wenn man für ein Applet JNI benutzt, also auch noch native Dll´s laden will. 
Gibt es da Probleme? Was muß ich beachten, sicherheitsmäßig? 
Oder ist davon generell abzuraten? 

Das Problem ist nämlich, wenn daß nicht möglich wäre, daß eine Anwendung, die bereits in C++ geschrieben wurde, dann nochmal in Java geschrieben werden müßte. 


Ich bin Java Anfänger und wäre echt dankbar für eine Antwort!


----------



## Beni (13. Apr 2004)

Ich weiss nicht, ob das möglich ist. Aber stell dir mal ein normaler User vor "Huch, das Applet will ungesicherte DLL's laden, die alles mögliche auf meinem PC ausführen können... [ironie] siiicher [/ironie]"

Also würde ich eher abraten...
Wie wäre es ganz einfach mit einer Applikation?


----------



## smilie (14. Apr 2004)

Hallo,

also das Porblem was ich habe, ist, daß ein Applet geschrieben werden soll, daß übers Internet verfügbar sein soll.
Die Funktionalität, die das Applet nutzen soll, liegt schon vor, nur allerdings in einer C++ Dll.

Um volle Plattformunabhängigkeit zu erreichen, müßte man also das Ganze umschreiben in Java. Nur dann hätte ich das Problem, daß ich zwei Codestände warten muß, einen in Java und einen in C++.

Meine erste Überlegung war, daß das Applet mit LoadLibrary eine native Dll lädt, nur das scheint keine sehr sichere Lösung zu sein.
Wäre es vieleicht auch möglich, daß das Applet eine Java Applekation nutzt, die Java Applikation läuft nur auf dem Server und die lädt dann die native Dll.
Ich kenne mich im Internet Bereich nicht so gut aus, vlt. weiß jemand Rat, wie man zwei Codestände vermeiden kann?

Vielen Dank für eine Antwort!


----------



## Illuvatar (15. Apr 2004)

API hat gesagt.:
			
		

> loadLibrary.{library name}
> Dynamic linking of the specified library
> It is dangerous to allow an applet permission to load native code libraries, because the Java security architecture is not designed to and does not prevent malicious behavior at the level of native code.



Also kann ein Applet keine nativen DLLs laden.
Wenn du eine C++-Dll lädtst, ist es aber doch sowieso nicht mehr plattformunabhängig, oder?


----------



## Grizzly (15. Apr 2004)

smilie hat gesagt.:
			
		

> [...]Um volle Plattformunabhängigkeit zu erreichen, müßte man also das Ganze umschreiben in Java. Nur dann hätte ich das Problem, daß ich zwei Codestände warten muß, einen in Java und einen in C++.[...]


Wenn das möglich ist würde ich an Deiner Stelle die komplette in Java umschreiben und es nicht mehr in C++ weiterentwickeln. Dann brauchst Du keine zwei Codestände pflegen und könntest aus dem Programm in ein paar Schritten ein Zwitter-Programm machen - also sowohl Applikation wie auch Applet ladbar/startbar.

Aber wenn Du Funktionalitäten benutzt, auf die Du mit Java keinen Zugriff hast (außer mit JNI), würde ich das mit dem portieren auf Java und die Zwitter-Anwendung lassen.


----------

