{"id":90484,"date":"2020-08-01T13:42:39","date_gmt":"2020-08-01T11:42:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/obnovlenie-jpype-1-0-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python"},"modified":"2020-08-01T13:42:39","modified_gmt":"2020-08-01T11:42:39","slug":"obnovlenie-jpype-1-0-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/obnovlenie-jpype-1-0-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python","title":{"rendered":"Aktualizacja JPype 1.0.2, biblioteki do dost\u0119pu do klas Java z Pythona","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jpype-project\/jpype\/releases\/tag\/1.0.2\">Dost\u0119pny<\/a><\/noindex> nowa wersja warstwy <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jpype-project\/jpype\/\">JPype 1.0.2<\/a><\/noindex>, umo\u017cliwiaj\u0105ca pe\u0142ny dost\u0119p aplikacji Python do bibliotek klas w j\u0119zyku Java. Dzi\u0119ki JPype z Pythona mo\u017cna korzysta\u0107 z bibliotek specyficznych dla Javy, tworz\u0105c hybrydowe aplikacje \u0142\u0105cz\u0105ce kod w Javie z Pythonem. W przeciwie\u0144stwie do Jython, integracja z Jav\u0105 osi\u0105gana jest nie poprzez stworzenie wersji Pythona dla JVM, lecz poprzez interakcj\u0119 na poziomie obu maszyn wirtualnych, wykorzystuj\u0105c pami\u0119\u0107 wsp\u00f3\u0142dzielon\u0105. Proponowane podej\u015bcie pozwala nie tylko osi\u0105gn\u0105\u0107 dobr\u0105 wydajno\u015b\u0107, ale tak\u017ce zapewnia dost\u0119p do wszystkich bibliotek CPython i Javy. Kod projektu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jpype-project\/jpype\/\">rozpowszechniany<\/a><\/noindex> na licencji Apache 2.0.<\/p>\n<p>G\u0142\u00f3wne zmiany:<\/p>\n<ul>\n<li class=\"l\"> Dodano cache do wywo\u0142a\u0144 metod, co pozwala unikn\u0105\u0107 rozwi\u0105zywania przeci\u0105\u017ceniowych, co znacznie zmniejsza wp\u0142yw na wydajno\u015b\u0107 rozwi\u0105zywania metod, szczeg\u00f3lnie gdy to samo przeci\u0105\u017cenie jest wywo\u0142ywane wiele razy, jak podczas wykonywania p\u0119tli.\n<li class=\"l\"> Przekazywanie list, krotek i bufor\u00f3w do tablic prostych typ\u00f3w Java przyspieszone od 4 do 100 razy, w zale\u017cno\u015bci od typu danych. Konwersja wykorzystuje zoptymalizowane przetwarzanie bufor\u00f3w w pami\u0119ci, zamiast API Sequences. Gdy napotkany jest bufor Pythona, tylko pierwszy element jest sprawdzany do konwersji, poniewa\u017c dane bufory s\u0105 jednorodne.\n<li class=\"l\"> Obs\u0142uga operacji shutdown (zaimplementowana ju\u017c w JPype 1.0.0, ale pomini\u0119ta przy przygotowywaniu listy zmian). JPype teraz wywo\u0142uje procedur\u0119 shutdown JVM, kt\u00f3ra pr\u00f3buj\u0119 wykona\u0107 zamkni\u0119cie w trybie \u201egracefully\u201d. Prowadzi to do kilku zmian w zachowaniu. Nie-foreground threads (proxy call) mog\u0105 teraz utrzymywa\u0107 JVM otwartym a\u017c do ich zako\u0144czenia. Wywo\u0142ania Proxy b\u0119d\u0105 obs\u0142ugiwa\u0107 shutdown, dop\u00f3ki wywo\u0142anie nie zostanie zako\u0144czone, ale otrzymaj\u0105 powiadomienie o przerwaniu. Pliki s\u0105 teraz poprawnie zamykane i dane s\u0105 zapisywane na dysku (flush), je\u015bli w\u0105tki odpowiednio obs\u0142u\u017c\u0105 wyj\u0105tek. Wykonywane s\u0105 haki czyszcz\u0105ce zasoby i finalizatory. Przy tworzeniu w\u0105tk\u00f3w wywo\u0142ywane s\u0105 haki AtExit. Realizowane jest automatyczne do\u0142\u0105czanie w\u0105tk\u00f3w z poziomu demona podczas korzystania z JVM z Pythona. B\u0142\u0119dny kod, kt\u00f3ry nie potrafi poprawnie obs\u0142u\u017cy\u0107 czyszczenia w\u0105tku, prawdopodobnie zawiesi si\u0119 podczas wykonywania shutdown. Dodatkowa dokumentacja znajduje si\u0119 w przewodniku u\u017cytkownika.\n<li class=\"l\"> Opakowanie dla Throwable uzyska\u0142o opakowanie dla Object zamiast oczekiwanego wyniku, co prowadzi\u0142o do dziwnego przekszta\u0142cania z klas Pythona.\n<li class=\"l\"> Poprawiono liter\u00f3wki w systemie importu, prowadz\u0105ce do wy\u015bwietlenia b\u0142\u0119du \u2018\u201ejname\u201d not found\u2019.\n<li class=\"l\"> Zapewniono prawid\u0142owe propagowanie \u201e^C\u201d w KeyboardInterrupt.\n<li class=\"l\"> Usuni\u0119to problem z symbolami z Python 3.5.3. PySlice_Unpack zosta\u0142 wprowadzony w nast\u0119pnym wydaniu niewielkiej aktualizacji (3.5.4) i nie powinien by\u0107 u\u017cywany.\n<li class=\"l\"> Rozwi\u0105zano problem z numpy.linalg.inv, prowadz\u0105cym do awarii. Problem zosta\u0142 zlokalizowany do interakcji w\u0105tk\u00f3w mi\u0119dzy JVM a niekt\u00f3rymi wersjami numpy. Proponowane rozwi\u0105zanie \u2014 wywo\u0142anie numpy.linalg.inv przed uruchomieniem JVM.\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>\u0179r\u00f3d\u0142o: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=53469\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438 JPype 1.0.2, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f Python-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Java. \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 JPype \u0438\u0437 Python \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f Java \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0447\u0435\u0442\u0430\u044e\u0449\u0438\u0435 \u043a\u043e\u0434 \u043d\u0430 Java \u0438 Python. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 Jython, \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Java \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 Python \u0434\u043b\u044f JVM, \u0430 \u0447\u0435\u0440\u0435\u0437 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-90484","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/news\/obnovlenie-jpype-1-0-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 JPype 1.0.2, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a Java-\u043a\u043b\u0430\u0441\u0441\u0430\u043c \u0438\u0437 Python | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/obnovlenie-jpype-1-0-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-01T11:42:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-01T11:42:39+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Aktualizacja JPype 1.0.2, biblioteki do dost\u0119pu do klas Java z Pythona | ProHoster","description":"Dost\u0119pna nowa wersja warstwy","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/obnovlenie-jpype-1-0-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 JPype 1.0.2, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a Java-\u043a\u043b\u0430\u0441\u0441\u0430\u043c \u0438\u0437 Python | ProHoster","og:description":"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/obnovlenie-jpype-1-0-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-01T11:42:39+00:00","article:modified_time":"2020-08-01T11:42:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"90484","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:49:32","updated":"2022-10-08 07:13:16","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/90484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=90484"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/90484\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=90484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=90484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=90484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}