SORU
6 EYLÜL 2010, PAZARTESİ


Arama Python, Java

Python, java aramak için en iyi yolu nedir? (jython ve RPC benim için bir seçenek değil).

KİK duymuştum: http://pypi.python.org/pypi/JCC/1.9 C /Java çağırmak için C kodu jeneratör Python Ama bu her olası arama derleme gerektirir; başka bir çözümü tercih ederim.

JPype haberim var: http://jpype.sourceforge.net/ öğretici: http://www.slideshare.net/onyame/mixing-python-and-java

import jpype 
jpype.startJVM(path to jvm.dll, "-ea") 
javaPackage = jpype.JPackage("JavaPackageName") 
javaClass = javaPackage.JavaClassName 
javaObject = javaClass() 
javaObject.JavaMethodName() 
jpype.shutdownJVM() 

Bu tam ihtiyacım olan şey gibi görünüyor. Ancak, son sürümü Ocak 2009'dan ve insanlar JPype derlemek için başarısız görüyorum.

JPype ölü bir proje mi?

Başka bir alternatif var mı?

Saygılar, David

CEVAP
25 EYLÜL 2010, CUMARTESİ


Ayrıca Py4J kullanabilirsiniz. Birinci sayfasında ve belgeleri bir sürü örnek var, ama aslında, sadece eğer python yöntemleri gibi python kodunuzu Java yöntemleri arama:

>>> from py4j.java_gateway import JavaGateway
>>> gateway = JavaGateway()                        # connect to the JVM
>>> java_object = gateway.jvm.mypackage.MyClass()  # invoke constructor
>>> other_object = java_object.doThat()
>>> other_object.doThis(1,'abc')
>>> gateway.jvm.java.lang.System.out.println('Hello World!') # call a static method

Karşıt olarak Jython, bir kısmı Py4J çalışır Python VM bu yüzden her zaman "güncel" son sürümü ile Python ve kullanabilirsiniz kütüphaneler olmayan çalıştırın iyi Jython (örneğin, lxml). Diğer parçası aramak istediğiniz Java VM içinde çalışır.

İletişim JNI yerine yuva yapılır ve Py4J kendi protokolü (bellek yönetmek için bazı durumlarda, en iyi duruma getirmek için vb.)

Yasal Uyarı: Py4J yazarı değilim

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChrisCrossMedia

    ChrisCrossMe

    17 EYLÜL 2009
  • DavidParody

    DavidParody

    17 EKİM 2009
  • Ryan Ha

    Ryan Ha

    9 NİSAN 2006