{"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\/es\/blog\/news\/obnovlenie-jpype-1-0-2-biblioteki-dlya-dostupa-k-java-klassam-iz-python","title":{"rendered":"Actualizaci\u00f3n de JPype 1.0.2, una biblioteca para acceder a clases de Java desde Python","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\">Disponible<\/a><\/noindex> nueva versi\u00f3n del intermediario <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jpype-project\/jpype\/\">JPype 1.0.2<\/a><\/noindex>, que permite un acceso completo de aplicaciones Python a bibliotecas de clases en lenguaje Java. Con JPype, se pueden usar bibliotecas espec\u00edficas de Java desde Python, creando aplicaciones h\u00edbridas que combinan c\u00f3digo en Java y Python. A diferencia de Jython, la integraci\u00f3n con Java no se logra a trav\u00e9s de la creaci\u00f3n de una versi\u00f3n de Python para la JVM, sino mediante la interacci\u00f3n a nivel de ambas m\u00e1quinas virtuales, utilizando memoria compartida. Este enfoque no solo permite lograr un buen rendimiento, sino que tambi\u00e9n proporciona acceso a todas las bibliotecas de CPython y Java. C\u00f3digo del proyecto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jpype-project\/jpype\/\">se distribuye<\/a><\/noindex> bajo la licencia Apache 2.0.<\/p>\n<p>Principales cambios:<\/p>\n<ul>\n<li class=\"l\"> Se ha a\u00f1adido una cach\u00e9 a las llamadas a m\u00e9todos, lo que evita la resoluci\u00f3n de sobrecargas, reduciendo significativamente el impacto en el rendimiento de la resoluci\u00f3n de m\u00e9todos, especialmente si la misma sobrecarga se llama muchas veces, como durante la ejecuci\u00f3n de bucles.\n<li class=\"l\"> La transmisi\u00f3n de listas, tuplas y b\u00faferes a arrays de primitivas Java se ha acelerado entre 4 y 100 veces, dependiendo del tipo de datos. La conversi\u00f3n utiliza un procesamiento optimizado de b\u00faferes en memoria, en lugar de la API de secuencias. Cuando se encuentra un b\u00fafer de Python, solo se verifica el primer elemento para la conversi\u00f3n, ya que esos b\u00faferes son homog\u00e9neos.\n<li class=\"l\"> El manejo de las operaciones de apagado (implementado en JPype 1.0.0, pero omitido al preparar la lista de cambios). JPype ahora llama al procedimiento de apagado de la JVM, que intenta salir de manera &#171;graceful&#187;. Esto conlleva varios cambios en el comportamiento. Los hilos en segundo plano (llamadas proxy) ahora pueden mantener la JVM abierta hasta que se completen. Las llamadas a Proxy manejar\u00e1n el apagado hasta que la llamada se complete, pero recibir\u00e1n un mensaje de interrupci\u00f3n. Los archivos ahora se cierran correctamente y se vuelcan datos al disco (flush) si los hilos manejan la excepci\u00f3n adecuadamente. Se ejecutan ganchos de limpieza de recursos y finalizadores. Al generar hilos, se llaman a los ganchos AtExit. A trav\u00e9s de un demonio, se implementa la uni\u00f3n autom\u00e1tica de hilos cuando se usa la JVM desde Python. El c\u00f3digo err\u00f3neo que no puede manejar correctamente la limpieza de un hilo probablemente se quedar\u00e1 colgado al realizar el apagado. La documentaci\u00f3n adicional se encuentra en la gu\u00eda de uso.\n<li class=\"l\"> El wrapper para Throwable estaba obteniendo un wrapper para Object en lugar del resultado esperado, lo que provocaba transformaciones extra\u00f1as de las clases de Python.\n<li class=\"l\"> Se corrigieron errores tipogr\u00e1ficos en el sistema de importaci\u00f3n, que provocan la salida del error &#8216;&#187;jname&#187; not found&#8217;.\n<li class=\"l\"> Se asegura la correcta promoci\u00f3n de &#171;^C&#187; en KeyboardInterrupt.\n<li class=\"l\"> Se solucion\u00f3 el problema con los caracteres de Python 3.5.3. PySlice_Unpack fue introducido en la siguiente versi\u00f3n de parche (3.5.4) y no deber\u00eda haberse utilizado.\n<li class=\"l\"> Se resolvi\u00f3 un error con numpy.linalg.inv que provocaba ca\u00eddas. El problema se rastre\u00f3 a la interacci\u00f3n de hilos entre la JVM y algunas variantes de numpy. La soluci\u00f3n propuesta es llamar a numpy.linalg.inv antes de iniciar la JVM.\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Fuente: <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\/es\/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=\"es_ES\" \/>\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\/es\/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\udd47 Actualizaci\u00f3n de JPype 1.0.2, biblioteca para acceder a clases Java desde Python | ProHoster","description":"Nueva versi\u00f3n del middleware disponible","canonical_url":"https:\/\/prohoster.info\/es\/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":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/90484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=90484"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/90484\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=90484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=90484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=90484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}