Salve, domanda forse stupida: è possibile programmare in java e in C contemporaneamente? Mi spiego: devo realizzare un Client/Server realizzando la sola parte grafica in Java mentre il "motore" in C.
E possibile???
Salve, domanda forse stupida: è possibile programmare in java e in C contemporaneamente? Mi spiego: devo realizzare un Client/Server realizzando la sola parte grafica in Java mentre il "motore" in C.
E possibile???
Non puoi (che io sappia) mischiare codice C a codice Java, in un file da passare al compilatore javac.
Quello che invece puoi fare è scriverti librerie in C da utilizzare poi in Java. Il problema è che ogni Sistem Operativo ha un suo modo di gestire le librerie (.dll in win, e .so su linux).
I motivi di una simile scelta potrebbero essere:
- riutilizzo di grosse librerie già sviluppate, e che quindi
non si vuole perderne il lavoro svolto, quindi un motivo economico
- efficienza, ci sono ad esempio librerie matematiche scritte in C che sono altamente efficienti (ATLAS) e in Fortran (BLAS, LAPACK ecc), la prima utilizza anche una implementazione in Assembly MMX, SSE, SSE2, Altivec ecc.
riporto un esempio preso da qui
http://java.sun.com/docs/books/tutor...tep/index.html
il metodo loadlibrary è quello che si occupa di caricare la libreria che avrai scritto.codice:class HelloWorld { public native void displayHelloWorld(); static { System.loadLibrary("hello"); } public static void main(String[] args) { new HelloWorld().displayHelloWorld(); } }
displayHelloWorld è una funzione in C, definita così
per la creazione della libreria, dipende dal tuo SOcodice:#include <jni.h> #include "HelloWorld.h" #include <stdio.h> JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) { printf("Hello world!\n"); return; }
http://java.sun.com/docs/books/tutor.../_library.html
Che io sappia si può inserire codice Java in un progetto C/C++. Il termine tecnico è "embed"
Fai una ricerca mischiado termini "embed","java",C++",etc... e otterrai qualcosa.
Questo è il primo risultato che viene fuori: http://www.javaworld.com/javaworld/j...11-legacy.html