Witam.
Jakie są możliwości integracji Python w Javie ale bez używania zewnętrznych serwisów takich jak Jython.
Czyli chodzi mi bardziej o integracje na poziomie kodu a nie serwisów.
Czy ktoś z was słyszał o technikach takiej integracji ?
Dziękuję za ewentualna pomoc.
Pozdrawiam.
CO chcesz osiągnąc?
Chcesz interpreter Pythona w Javie? Czy wołać kod Javy z Pythona/Pythona z Javy?
Generalnie chodzi o prace mgr w której mam zbadać efektywność połączenia dwóch języków jeden ma być typowany statycznie (Java) a drugi dynamicznie (Python). Chodzi tu o połączenie bez serwisu takiego jak Jython czy odpowiednio IronPython dla c# i Python. W pracy mam zbadać efektywność takiego połączenia i czy to w ogóle się opłaca.
@lion137 Myślałem raczej o wywoływanie kodu Pythona w Javie
Pozdrawiam.
Ale jak ty to sobie w ogóle wyobrażasz? o_O Opcje są dwie -> albo coś jak Jython albo https://github.com/kivy/pyjnius i w obu można łaczyć kod, ale tylko w jedna stronę, tzn z pythona używać javowych klas. W drugą stronę gorzej, chociaż nadal możesz przez jythona ewaluować pythonowy kod. Mogłeś sobie wybrać np. Java+Groovy, też byłoby statyczne i dynamiczne ale jednocześnie dało by się to spinać na poziomie kodu.
Istnieje coś takiego jak GraalVM: GraalVM - High-Performance Polyglot Runtime
Najlepsze przykłady są dla Ruby'ego i JavaScripta jeśli chodzi o języki skryptowe.
W zasadzie jeśli chodzi o sam JavaScript to rozwiązania już są oficjalne i wbudowane w Javę, np Mozilla Rhino lub Nashorn. Dokumentacja Javowego ScriptEngine (opartego chyba zwykle o Rhino): http://docs.oracle.com/javase/7/docs/technotes/guides/scripting/programmer_guide/index.html
Mozilla Rhino jest jednak bardzo powolnym interpreterem JavaScriptu. Graal.js jest szybki (na poziomie Chrome V8), ale jak na razie dalej w fazie eksperymentalnej.
Jeśli chodzi o opłacalność, to generalnie, efektywnościowo lepiej będzie wołać kod języka kompilowanego i statycznie typowanego z dynamicznego, skryptowego - czyli jave z pythona. Takie połącznie dla pythona już są, PyTorch, numpy. Wołając kod pythona z javy, mogę sobie wyobrazić, że dostajemy jakiś dodatkowy design, ale czy to się będzie opłacać - dostaniemy dodatkowy poziom komplikacji i błędów.
Jakie są możliwości integracji Python w Javie ale bez używania zewnętrznych serwisów takich jak Jython.
Czyli chodzi mi bardziej o integracje na poziomie kodu a nie serwisów.
Podałeś przykłady bibliotek (Jython, IronPython). O co Ci chodzi z tym serwisem? Nikt nie wymyślił lepszej integracji.
Dokładnie tak. Z tego co wiem Jython jest najbardziej naturalną formą integracji z Javą i nie wymaga żadnych serwisów.
http://www.jython.org/archive/21/docs/jythonc.html
Mam wrażenie, że autorowi pytania chodzi właśnie o zbadanie innej możliwości i porównania z istniejącymi rozwiązaniami. Ot praca badawcza w ramach magisterki, a nie użycie istniejącego rozwiązania.