Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

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

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

Offline bartveurink

  • Lid
  • Steunpunt: Nee
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?

Offline FreeTheBee

  • Lid
  • Steunpunt: Nee
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.

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
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

  • Vertaalteam
    • rachidbm
    • Mijn blog
  • Steunpunt: Nee
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!