Wie Perlroutinen aus Java heraus aufrufen?

Wie Perlroutinen aus Java heraus aufrufen?

am 21.04.2008 16:37:04 von Marco Neumann

Hallo allerseits!

Ich suche eine Möglichkeit, meine Perlroutinen (und das sind viele) aus Java
heraus aufzurufen. Das neue Java 6 bietet zwar die Möglichkeit,
Skriptsprachen mit Java zu kombinieren. Aber leider nicht für Perl. :-(

Python geht aber mit Java 6. Ich hatte schon überlegt, ob man das nutzen
kann, um aus Python heraus Perl aufzurufen, also den Aufruf irgendwie von
dort aus weiterzuleiten. Ich kenne mich mit Python überhaupt nicht aus und
weiß nicht, ob das praktikabel wäre.

Auf CPAN habe ich PLJava gefunden, das aber in der Version 0,04 ist und
nicht unter Linux getestet wurde. Ich arbeite unter Linux. Vielleicht hat
jemand PLJava getestet und für gut befunden, würde mich interessieren.

Ansonsten könnte ich auch ganz unelegant für jede Routine, die ich nutzen
will, ein (Perl) Shellprogramm schreiben, das die Argumente auf der
Kommandozeile entgegennimmt, die Routine aufruft und das Ergebnis dann als
XML aus stdout zurückliefert, um dann in Java geparst zu werden. Das ist
aber nicht elegant.

Hat jemand eine Idee, wie man Perlroutinen aus Java heraus aufruft?

Viele Grüße,
Marco.

Re: Wie Perlroutinen aus Java heraus aufrufen?

am 21.04.2008 20:28:50 von Florian Weimer

* Marco Neumann:

> Python geht aber mit Java 6. Ich hatte schon überlegt, ob man das nutzen
> kann, um aus Python heraus Perl aufzurufen, also den Aufruf irgendwie von
> dort aus weiterzuleiten. Ich kenne mich mit Python überhaupt nicht aus und
> weiß nicht, ob das praktikabel wäre.

Bei dem Python wird es sich wohl Jython handeln.

> Auf CPAN habe ich PLJava gefunden, das aber in der Version 0,04 ist und
> nicht unter Linux getestet wurde. Ich arbeite unter Linux. Vielleicht hat
> jemand PLJava getestet und für gut befunden, würde mich interessieren.

Es gibt auch "Java" auf CPAN. Ich hab's aber nicht getestet.

Grundsätzlich muß man sich überlegen, ob man mit JNI Perl einbetten will
(wobei dann ein Perl-Bug die ganze VM mitnimmt), oder ob man das ganze
über einen Kindprozeß (wohl eher ab Java 6) oder mit Sockets macht (was
Probleme mit der Rechteverwaltung schafft).

> Ansonsten könnte ich auch ganz unelegant für jede Routine, die ich nutzen
> will, ein (Perl) Shellprogramm schreiben, das die Argumente auf der
> Kommandozeile entgegennimmt, die Routine aufruft und das Ergebnis dann als
> XML aus stdout zurückliefert, um dann in Java geparst zu werden. Das ist
> aber nicht elegant.

Es ist vor allem langsam, wenn das Perl-Skript ein paar ungünstige
use-Anweisungen enthält.

Ansonsten gibt es sicherlich auch RPC-Protokolle, die sowohl von Java
als auch Perl implementiert werden.

Re: Wie Perlroutinen aus Java heraus aufrufen?

am 22.04.2008 16:01:38 von Marco Neumann

Hallo, Florian!

"Florian Weimer" schrieb im Newsbeitrag
news:87r6czawpp.fsf@mid.deneb.enyo.de...
> * Marco Neumann:
>
> > Python geht aber mit Java 6. Ich hatte schon überlegt, ob man das nutzen
> > kann, um aus Python heraus Perl aufzurufen, also den Aufruf irgendwie
von
> > dort aus weiterzuleiten. Ich kenne mich mit Python überhaupt nicht aus
und
> > weiß nicht, ob das praktikabel wäre.
>
> Bei dem Python wird es sich wohl Jython handeln.

Java 6 hat eine Neuerung, so daß man es mit einigen Skriptsprachen "mischen"
kann. Genaues weiß ich nicht, aber mit Python geht es, mit Perl nicht.

Jython ist schick, so etwas würde ich gerne für Perl haben.

> > Auf CPAN habe ich PLJava gefunden, das aber in der Version 0,04 ist und
> > nicht unter Linux getestet wurde. Ich arbeite unter Linux. Vielleicht
hat
> > jemand PLJava getestet und für gut befunden, würde mich interessieren.
>
> Es gibt auch "Java" auf CPAN. Ich hab's aber nicht getestet.

"Java" macht das Gegenteil. Damit kann man Javakram aus Perl heraus
aufrufen.

> Es ist vor allem langsam, wenn das Perl-Skript ein paar ungünstige
> use-Anweisungen enthält.

Mit Langsamkeit (in Maßen) kann ich leben, Hauptsache es funktioniert
zuverlässig und macht wenig mir Arbeit.

> Ansonsten gibt es sicherlich auch RPC-Protokolle, die sowohl von Java
> als auch Perl implementiert werden.

Mit JNI, Sockets und RPC kenne ich mich nicht aus, sieht aber alles
kompliziert aus. Meist gibt es doch eine einfache und praktische Lösung?

Viele Grüße,
Marco.

Re: Wie Perlroutinen aus Java heraus aufrufen?

am 22.04.2008 20:52:26 von Andreas Puerzer

Marco Neumann schrieb:
> Hallo allerseits!
>

Hallo,

>
> Hat jemand eine Idee, wie man Perlroutinen aus Java heraus aufruft?
>

Inline::Java::Callback?

> Viele Grüße,
> Marco.
>

Viele Grüße,
Andreas Pürzer


--
Have Fun,
and if you can't have fun,
have someone else's fun.
The Beautiful South

Re: Wie Perlroutinen aus Java heraus aufrufen?

am 22.04.2008 23:05:54 von Florian Weimer

* Marco Neumann:

>> Bei dem Python wird es sich wohl Jython handeln.
>
> Java 6 hat eine Neuerung, so daß man es mit einigen Skriptsprachen "mischen"
> kann. Genaues weiß ich nicht, aber mit Python geht es, mit Perl nicht.
>
> Jython ist schick, so etwas würde ich gerne für Perl haben.

Eben, und der Mangel dessen führt dazu, daß das bei den Scripting-Sachen
nicht dabei ist.

>> Es gibt auch "Java" auf CPAN. Ich hab's aber nicht getestet.
>
> "Java" macht das Gegenteil. Damit kann man Javakram aus Perl heraus
> aufrufen.

Das ist doch ziemlich äquivalent. Perl hat schließlich Introspektion,
also kann sich der Perl-Code einen Aufruf-Auftrag vom Java-Code abholen.

> Mit JNI, Sockets und RPC kenne ich mich nicht aus, sieht aber alles
> kompliziert aus. Meist gibt es doch eine einfache und praktische Lösung?

Wenn man mal den RPC zusammengestöpselt hat, ist das einfach und
praktikabel. Am Anfang ist, fürchte ich, so ziemlich alles nervig.