W C mamy kod [projekt, który ma stworzyć DLLkę, ale to jest najważniejszy kod]:
DLLIMPORT void helloWorld ()
{
MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION);
}
A w Java'ie:
import com.sun.jna.Library;
import com.sun.jna.Native;
public class JNATest {
interface HelloWorld extends Library {
void helloWorld();
}
public static void main(String... args) {
HelloWorld helloWorld =
(HelloWorld)Native.loadLibrary(
"Project1", HelloWorld.class
);
helloWorld.helloWorld();
}
}
Nadal jest jednak trudniej niż w C#, i to chyba dobrze bo dzięki temu zbyt często programiści piszący w Java'ie nie próbują wybierać rozwiązań natywnych.
Jak się wydaje wielu ludzi piszących w C# z lubością używa kodu natywnego i przez to .NET tracie na przenośności.
Btw. przy kodzie natywnym dobrze znać architekturę procesora. Żeby ją poznać musimy odczytać wartość właściwości systemowej "os.arch", co osiągniemy przez wywołanie
System.getProperty("os.arch")
. Dla x86 wartością będzie x86, dla x64 wartością będzie amd64.Podobne postybeta
C# miewa swoje plusy ;-)
"CPUInfo" w Java :-)
"os.arch", "os.name", "sun.arch.data.model" co to jest i co pokazuje na jakiej maszynie i OSie? ;-)
Język Go dla Windows :-)
Pomysł - przypinajne TODO ;-)
Brak komentarzy:
Prześlij komentarz