Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: multi language programming; Is dat mogelijk?  (gelezen 976 keer)

Offline bart85

  • Lid
multi language programming; Is dat mogelijk?
« Gepost op: 2013/11/06, 14:39:12 »
Als je een programma in C++ hebt en een Programma in Java. In C++ voor de berekeningen en algoritmen op de achtergrond. Java voor de vensters met input en output.

Iets in de vorm van onderstaande code. Een program.multi stuurt input uit Java naar C++. C++ geeft een antwoord terug voor output in Java.
import program.c, program.java

program.java.output = program.c.berekening(program.java.input)

Het voordeel ervan is dat de klassenbibliotheek van C++ niet hoeft worden vertaald naar Java.
Is dit mogelijk? Levert het niet veel bugs op?
Of is dit nutteloos?
Je leert maar mooi over weg gaan met de commandline. Geen grafische toepassingen voor systeembeheer.
You can never make a system 100% secure unless you unplug the machine from all networks, turn it off, lock it in a safe, smother it in concrete and never use it.

Re: multi language programming; Is dat mogelijk?
« Reactie #1 Gepost op: 2013/11/06, 15:41:41 »
Het lijkt wel te kunnen met JNI.

http://stackoverflow.com/questions/5626787/calling-c-functions-from-java

Ik ben er zelf totaal niet bekend mee verder, ik was alleen niewsgierig, omdat ik in het verleden wel eens de combi python/fortran gebruikt heb.

Re: multi language programming; Is dat mogelijk?
« Reactie #2 Gepost op: 2013/11/07, 11:03:49 »
Inderdaad. In Java markeer je de functie als "native" zonder implementatie, en dan kan je die in C/C++ implementeren.

Bijvoorbeeld:

Main.java
public class Main {
    public static native int jnimain();

    public static void main(String[] args) {
        System.loadLibrary("jnimain");
        System.exit(jnimain());
    }
}

jnimain.cpp
#include "Main.h"
#include <iostream>

JNIEXPORT jint JNICALL Java_Main_jnimain(JNIEnv* env, jclass) {
    std::cout << "Hello, world!" << std::endl;
    return 0;
}

Draai javah over Main.java, compile jnimain.cpp naar een shared library libjnimain.so, compile Main.java en draai.
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: multi language programming; Is dat mogelijk?
« Reactie #3 Gepost op: 2013/11/07, 15:02:53 »
Is dit mogelijk? Levert het niet veel bugs op?
Dit is zoals genoemd mogelijk met de Java Native Interface. Dit levert niet perse extra bugs op, maar wees er wel goed van bewust waar je mee bezig bent. Je zult extra alert moeten zijn op de dingen die je aanroept. Java beschermt je bijv. tegen veel dingen. Wanneer je native C-dingen gaat aanroepen raak je ook deze bescherming kwijt. Als zo'n C-call bijv. crasht, wat gebeurt er dan? Er is een kans dat je hele JVM crasht (op een onduidelijke manier die je niet gewend bent van Java).
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!