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
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
Zincir-arama ana kurucular python...
Neden Java Sanal Makinesi hiçbir GİL v...
Seçme Java vs Google App Engine Python...
Ve Python dosyasına bir satır yerine a...
Ne Python's re arasındaki farktır...