2012-12-27 7 views
10

Aus irgendeinem Grund muss ich gehen, wie meine neue Web-Projekt-Backend-Sprache.wie man java mit go verwendet

Einige APIs, die wir verwenden werden, sind jedoch in Java geschrieben und in der .jar-Datei verpackt.

Ich bin neu zu gehen, und wie kann ich verwenden, um mit Java in einer konsistenten Weise zu kooperieren, dass, wenn eine HTTP-Anfrage kommt, die gehen wird es behandeln und eine Funktion an Java delegieren, und dann die Antwort zurückgeben.

+0

Ich bin nicht sehr gut informiert über die Go-Programmiersprache - jedoch können diese Informationen nützlich sein. http://programmers.stackexchange.com/questions/157536/how-can-i-write-a-set-of-functions-that-can-be -invoiced-from-almost-any-program –

+0

Bitte versuchen Sie, sich zu qualifizieren "Verwenden" besser (im Titel und Post). –

Antwort

11

Welche Art von API stellt Ihr Java bereit?

Wenn es eine RPC-API verfügbar macht, könnten Sie Go's json-rpc module verwenden.

Wenn es macht eine RESTful API Sie verwenden könnten Go's http module.

Sie könnten auch ein Kind-Prozess (Java-Code) laichen und es über stdin und stdout Rohre sprechen. Sie würden die exec module dafür verwenden.

Das ist keine erschöpfende Kommunikationsliste, nur die ersten drei, die einem einfallen. Sie können auch eine XML-API, einen gemeinsam genutzten Speicher oder Named Pipes verwenden.

Auch eine Nachrichtenwarteschlange wie 0mq könnte das sein, was Sie suchen. 0mq behandelt viele der heiklen Bits von IPC, wie Absender von Anfragen zurückschicken, wenn der Empfänger überlastet wird, Nachrichtenrahmen und Wiederverbindung nach einem Fehler.

Es gibt zahlreiche Möglichkeiten, wie Sie zwischen Ihrem Java-Code und Ihrem Go-Code kommunizieren können. Ich denke, am Ende ist es am häufigsten und einfach, dies über HTTP API zu tun. Zeigen Sie eine RESTful- oder RPC-API auf einem Java-Server an, führen Sie sie als HTTP-API-Dienst aus, schreiben Sie Ihre Gehe zu eingehenden HTTP-Anforderungen und verbinden Sie sich dann mit der Java-API von Go, um beim Erstellen einer Antwort zu helfen.

+0

Danke für die Antwort. Die API ist eine REST-ful-API mit HTTPS, aber ich glaube nicht, dass ich die gesamte API erneut einbinden kann, indem ich Go for Die API-Menge ist zu groß. Aber ich denke, die Standard und Standard kann ein guter Weg sein, wenn die Effizienz die Anforderungen erfüllt. Ich werde es versuchen. – nius

+0

Ich habe fast vergessen Nachrichtenwarteschlange! – nius

+0

@nius, markieren Sie diese Antwort akzeptiert, wie Sie scheinen, damit zufrieden zu sein. – kostix