Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Java e C

  1. #1

    Java e C

    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???

  2. #2
    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

    codice:
    class HelloWorld {
        public native void displayHelloWorld();
    
        static {
            System.loadLibrary("hello");
        }
        
        public static void main(String[] args) {
            new HelloWorld().displayHelloWorld();
        }
    }
    il metodo loadlibrary è quello che si occupa di caricare la libreria che avrai scritto.

    displayHelloWorld è una funzione in C, definita così

    codice:
    #include <jni.h>
    #include "HelloWorld.h"
    #include <stdio.h>
    
    JNIEXPORT void JNICALL 
    Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) 
    {
        printf("Hello world!\n");
        return;
    }
    per la creazione della libreria, dipende dal tuo SO
    http://java.sun.com/docs/books/tutor.../_library.html

  3. #3
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.