possible to pass python objects into java without jython?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Maurice Ling

    possible to pass python objects into java without jython?

    Hi,

    I have read that this had been asked before but there's no satisfactory
    replies then.

    I have a module (pA) written in python, which originally is called by
    another python module (pB), and passes a python object (pO) to pB. Now I
    require pA to be called in a java class (jC) and pass pO into jC. As pA
    uses non-python modules, I am not able to use Jython on this.

    Are there any way out in this?

    Thanks in advance.

    Maurice

  • Mike Meyer

    #2
    Re: possible to pass python objects into java without jython?

    Maurice Ling <mauriceling@ac m.org> writes:
    [color=blue]
    > Hi,
    >
    > I have read that this had been asked before but there's no
    > satisfactory replies then.
    >
    > I have a module (pA) written in python, which originally is called by
    > another python module (pB), and passes a python object (pO) to pB. Now
    > I require pA to be called in a java class (jC) and pass pO into jC. As
    > pA uses non-python modules, I am not able to use Jython on this.
    >
    > Are there any way out in this?[/color]

    CORBA.

    <mike
    --
    Mike Meyer <mwm@mired.or g> http://www.mired.org/home/mwm/
    Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.

    Comment

    • Istvan Albert

      #3
      Re: possible to pass python objects into java without jython?

      Maurice Ling wrote:
      [color=blue]
      > Are there any way out in this?[/color]

      No.

      Comment

      • Steve Menard

        #4
        Re: possible to pass python objects into java without jython?

        Maurice Ling wrote:[color=blue]
        > Hi,
        >
        > I have read that this had been asked before but there's no satisfactory
        > replies then.
        >
        > I have a module (pA) written in python, which originally is called by
        > another python module (pB), and passes a python object (pO) to pB. Now I
        > require pA to be called in a java class (jC) and pass pO into jC. As pA
        > uses non-python modules, I am not able to use Jython on this.
        >
        > Are there any way out in this?
        >
        > Thanks in advance.
        >
        > Maurice[/color]

        The simple answer is no. The complex answer is maybe, but not without
        some work on your part.

        As part of JPype I made the opposite : allow Python to use Java classes.
        That was easy as python is very dynamic.

        Going the other way around .... I don;t see how. The java part must want
        to receive a specific Java type. Even if that type is Object (the root
        of all object types in Java), tehre is no way for Python object to be
        one of those.

        Case #1 : the "main" program is in Python, and the Java type to be
        received is a Java interface. In that specific case, JPype
        (http://jpype.sourceforge.net) can help you. You can "wrap" your pO into
        the correct Java type and apss it in.

        Otherwise, as has been mantioned before, you will need some kind of
        remoting mechanism. Corba might provide a middle ground, or XML-RPC/SOAP.

        Good luck.

        Steve

        Comment

        • Maurice LING

          #5
          Re: possible to pass python objects into java without jython?

          [color=blue]
          >
          > The simple answer is no. The complex answer is maybe, but not without
          > some work on your part.
          >
          > As part of JPype I made the opposite : allow Python to use Java classes.
          > That was easy as python is very dynamic.
          >
          > Going the other way around .... I don;t see how. The java part must want
          > to receive a specific Java type. Even if that type is Object (the root
          > of all object types in Java), tehre is no way for Python object to be
          > one of those.
          >
          > Case #1 : the "main" program is in Python, and the Java type to be
          > received is a Java interface. In that specific case, JPype
          > (http://jpype.sourceforge.net) can help you. You can "wrap" your pO into
          > the correct Java type and apss it in.
          >
          > Otherwise, as has been mantioned before, you will need some kind of
          > remoting mechanism. Corba might provide a middle ground, or XML-RPC/SOAP.
          >
          > Good luck.
          >
          > Steve[/color]

          Hi,

          Referring to this scenario again.....

          pA.py contains
          imports (something non-pure python)
          def A(n):
          ...(does something)...
          returns pO

          pB.py comtains
          import pA
          def B(n):
          (does something)
          x = pA.A(n)
          (does more things)

          Perhaps if we lax the problem a little and allow Jython to be in
          consideration and pB.py is implemented in Jython (as jyB.py), then using
          jythonc to convert it into a Java package (jyB.jar containing
          jython.jar, jyB.class and jyB$Inner.class ). Am I then able to import jyB
          in my Java codes? Is it possible to use Jython as the middle ground,
          instead of CORBA or SOAP etc etc?

          Thanks
          Maurice

          Comment

          • Steve Menard

            #6
            Re: possible to pass python objects into java without jython?

            Maurice LING wrote:[color=blue]
            >[color=green]
            >>
            >> The simple answer is no. The complex answer is maybe, but not without
            >> some work on your part.
            >>
            >> As part of JPype I made the opposite : allow Python to use Java
            >> classes. That was easy as python is very dynamic.
            >>
            >> Going the other way around .... I don;t see how. The java part must
            >> want to receive a specific Java type. Even if that type is Object (the
            >> root of all object types in Java), tehre is no way for Python object
            >> to be one of those.
            >>
            >> Case #1 : the "main" program is in Python, and the Java type to be
            >> received is a Java interface. In that specific case, JPype
            >> (http://jpype.sourceforge.net) can help you. You can "wrap" your pO
            >> into the correct Java type and apss it in.
            >>
            >> Otherwise, as has been mantioned before, you will need some kind of
            >> remoting mechanism. Corba might provide a middle ground, or XML-RPC/SOAP.
            >>
            >> Good luck.
            >>
            >> Steve[/color]
            >
            >
            > Hi,
            >
            > Referring to this scenario again.....
            >
            > pA.py contains
            > imports (something non-pure python)
            > def A(n):
            > ...(does something)...
            > returns pO
            >
            > pB.py comtains
            > import pA
            > def B(n):
            > (does something)
            > x = pA.A(n)
            > (does more things)
            >
            > Perhaps if we lax the problem a little and allow Jython to be in
            > consideration and pB.py is implemented in Jython (as jyB.py), then using
            > jythonc to convert it into a Java package (jyB.jar containing
            > jython.jar, jyB.class and jyB$Inner.class ). Am I then able to import jyB
            > in my Java codes? Is it possible to use Jython as the middle ground,
            > instead of CORBA or SOAP etc etc?
            >
            > Thanks
            > Maurice[/color]

            Jython has a Java API that allows calling Python code. The simplest way
            however would be to turn your pB into a class implementing a given Java
            interface. Then java code can easily instantiate your Python class and
            use it through the interface.

            However the problem remains ... just what kind of object is this pO ?
            Using Jython will not magically allow regular Java code to understand
            python objects. NAd you still have to bridge between CPython and Jython ...

            Steve

            Comment

            Working...