Jython – implementacja języka Python napisana w Javie i działająca na wirtualnej maszynie Javy (JVM). Umożliwia uruchamianie kodu Pythona w środowisku JVM oraz korzystanie z klas i bibliotek Javy bezpośrednio z poziomu kodu Pythona.
Charakterystyka
Jython pozwala na łączenie kodu Pythona i Javy w jednej aplikacji. Programy uruchamiane za pomocą Jythona mogą importować klasy Javy i korzystać z bibliotek dostępnych na platformie Java.
Projekt jest szczególnie użyteczny w zastosowaniach, w których potrzebne jest osadzanie skryptów w aplikacjach Javy, interaktywne eksperymentowanie z bibliotekami Javy albo szybkie tworzenie aplikacji wykorzystujących jednocześnie Pythona i Javę.
Jython jest rozpowszechniany jako wolne oprogramowanie na warunkach licencji Python Software Foundation License v2.
Wersje i zgodność
Aktualna linia Jythona, oznaczona jako 2.7.x, jest zgodna z językiem Python 2.7. Według informacji podanych przez projekt Jython wersja ta nie obsługuje Pythona 3, choć prace nad obsługą tej wersji języka są prowadzone w repozytorium projektu.
Aktualną wersją stabilną jest Jython 2.7.4.
Przykład
Przykład użycia klasy Javy w kodzie uruchamianym przez Jythona:
from java.util import ArrayList lista = ArrayList() lista.add("Pierwszy element") lista.add("Drugi element") for item in lista: print(item)
Powyższy przykład pokazuje import klasy ‘ArrayList’ z pakietu ‘java.util’ i użycie jej w kodzie Pythona.
Zastosowania
Jython może być używany między innymi do:
- osadzania skryptów w aplikacjach napisanych w Javie;
- interaktywnej pracy z bibliotekami Javy;
- integracji kodu Pythona z istniejącymi systemami opartymi na JVM;
- automatyzacji zadań w środowiskach wykorzystujących Javę.
Ograniczenia
Głównym ograniczeniem Jythona jest brak obsługi Pythona 3 w stabilnej linii 2.7.x. Może to utrudniać używanie współczesnych bibliotek Pythona wymagających Pythona 3.
Część bibliotek Pythona zależnych od rozszerzeń napisanych w języku C może nie działać w Jythonie, ponieważ Jython działa na JVM i nie jest implementacją zgodną binarnie z CPython.