{"id":72012,"date":"2020-02-29T21:04:04","date_gmt":"2020-02-29T18:04:04","guid":{"rendered":"https:\/\/prohoster.info\/blog\/reliz-jpype-0-7-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python"},"modified":"2020-03-03T16:10:24","modified_gmt":"2020-03-03T13:10:24","slug":"reliz-jpype-0-7-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/reliz-jpype-0-7-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python","title":{"rendered":"Wydanie JPype 0.7.2, biblioteki do uzyskiwania dost\u0119pu do klas Javy 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\/v0.7.2\">Dost\u0119pny<\/a><\/noindex> warstwa wydania <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jpype-project\/jpype\/\">JPype 0.7.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\"> Wyj\u0105tki rzucane w kodzie C++ i Javie teraz dostarczaj\u0105 stos wyj\u0105tk\u00f3w w przypadku wyst\u0105pienia wyj\u0105tku w kodzie Pythona. W ten spos\u00f3b, aby uzyska\u0107 informacje o stosie wyj\u0105tk\u00f3w, nie trzeba ju\u017c wywo\u0142ywa\u0107 stacktrace().\n<li class=\"l\"> Pr\u0119dko\u015b\u0107 powrotu przy wywo\u0142aniach zwi\u0119kszy\u0142a si\u0119 trzykrotnie.\n<li class=\"l\"> Znacz\u0105co (w porz\u0105dku wielko\u015bci) zwi\u0119kszono pr\u0119dko\u015b\u0107 przesy\u0142ania danych w<br \/>\nbuforach numpy dla tablic wielowymiarowych. Wielowymiarowe prymitywy przekazuj\u0105 dost\u0119pne tylko do odczytu kopie, stworzone wewn\u0105trz JVM z ci\u0105g\u0142ym uk\u0142adem C.<\/p>\n<li class=\"l\"> Wszystkie wewn\u0119trzne komponenty zosta\u0142y zast\u0105pione implementacjami z CPython, a symbole __javaclass__, __javavalue__ i __javaproxy__<br \/>\nzosta\u0142y usuni\u0119te. Do wszystkich typ\u00f3w CPython, dziedzicz\u0105cych od typ\u00f3w klasy jpype, dodano wydzielony slot Java. Wszystkie prywatne tabele zosta\u0142y przeniesione do CPython. Typy Java teraz musz\u0105 dziedziczy\u0107 z metaklasy JClass, kt\u00f3ra u\u017cywa slot\u00f3w typ\u00f3w. Mieszaniny dla klas bazowych Pythona s\u0105 niedopuszczalne. Typy Object, Proxy, Exception, Number oraz Array dziedzicz\u0105 bezpo\u015brednio od wewn\u0119trznych implementacji CPython.<\/p>\n<li class=\"l\"> Ulepszono \u015bledzenie i obs\u0142ug\u0119 wyj\u0105tk\u00f3w.\n<li class=\"l\"> Wyci\u0119cia tablic (Array slices) s\u0105 teraz obs\u0142ugiwane jako widoki, kt\u00f3re wspieraj\u0105 zapis zwrotny do orygina\u0142u, takie jak tablica numpy. Dla wyci\u0119\u0107 tablic zapewniona jest obs\u0142uga ustawiania i pobierania warto\u015bci z krokiem (slice(start, stop, step)).\n<li class=\"l\"> W tablicach zaimplementowano obs\u0142ug\u0119 &#171;__reversed__&#187;.\n<li class=\"l\"> W tablicach Java zapewniono wsparcie dla API memoryview oraz usuni\u0119to zale\u017cno\u015b\u0107 od numpy przy przesy\u0142aniu zawarto\u015bci bufora.\n<li class=\"l\"> Numpy nie jest ju\u017c zale\u017cno\u015bci\u0105 (extra), a przesy\u0142anie pami\u0119ci do numpy jest dost\u0119pne bez kompilacji z obs\u0142ug\u0105 numpy.\n<li class=\"l\"> JInterface jest sformatowane jako metaklasa. U\u017cyj isinstance(cls, JInterface) do sprawdzenia interfejs\u00f3w.\n<li class=\"l\"> Do import\u00f3w domy\u015blnych dodano pomini\u0119te TLD &#171;mil&#187;, &#171;net&#187; i &#171;edu&#187;.\n<li class=\"l\"> Podczas uruchamiania poprawiono komunikaty o b\u0142\u0119dach dla UnsupportedClassVersion.\n<li class=\"l\">    java.util.Map teraz zg\u0142asza KeyError, je\u015bli element nie zostanie znaleziony. Warto\u015bci, kt\u00f3re s\u0105 null, nadal zwracaj\u0105 None jak oczekiwano. U\u017cyj get(), je\u015bli puste klucze maj\u0105 by\u0107 traktowane jako None.\n<li class=\"l\"> Usuni\u0119to java.util.Collection, poniewa\u017c dziwnie przeci\u0105\u017ca si\u0119 mi\u0119dzy remove(Object) a remove(int) na List-ach. U\u017cyj metody Java remove() do uzyskania oryginalnego zachowania Java, ale rzutowanie typu jest zdecydowanie zalecane do zarz\u0105dzania przeci\u0105\u017ceniem.\n<li class=\"l\"> java.lang.IndexOutOfBoundsException teraz mo\u017ce by\u0107 przechwycona za pomoc\u0105 klasy wyj\u0105tk\u00f3w IndexError podczas uzyskiwania dost\u0119pu do element\u00f3w java.util.List.\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=52456\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0440\u0435\u043b\u0438\u0437 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438 JPype 0.7.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 \u043d\u0430 [&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-72012","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0440\u0435\u043b\u0438\u0437 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438 JPype.\" \/>\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\/reliz-jpype-0-7-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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\u0420\u0435\u043b\u0438\u0437 JPype 0.7.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 \u0440\u0435\u043b\u0438\u0437 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438 JPype.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/reliz-jpype-0-7-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-02-29T18:04:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:10:24+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\udd47Wydanie JPype 0.7.2, biblioteki do dost\u0119pu do klas Java z Pythona | ProHoster","description":"Wydanie warstwy JPype jest dost\u0119pne.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/reliz-jpype-0-7-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\u0420\u0435\u043b\u0438\u0437 JPype 0.7.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 \u0440\u0435\u043b\u0438\u0437 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438 JPype.","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/reliz-jpype-0-7-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-02-29T18:04:04+00:00","article:modified_time":"2020-03-03T13:10:24+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"72012","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 18:52:25","updated":"2022-10-01 19:59:41","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\/72012","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=72012"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/72012\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=72012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=72012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=72012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}