Lanzamento de JPype 1.0, bibliotecas para acceder a clases de Java desde Python

Dispoñible liberación de capas intermedias JPype 1.0, que lle permite organizar o acceso total das aplicacións Python ás bibliotecas de clases Java. Con JPype de Python, pode usar bibliotecas específicas de Java para crear aplicacións híbridas que combinen código Java e Python. A diferenza de Jython, a integración con Java conséguese non mediante a creación dunha variante de Python para a JVM, senón mediante a interacción a nivel de ambas máquinas virtuais mediante a memoria compartida. O enfoque proposto permite non só acadar un bo rendemento, senón que tamén proporciona acceso a todas as bibliotecas CPython e Java. Código do proxecto distribuído por licenciado baixo Apache 2.0.

Principais cambios:

  • JChar é compatible como tipo de retorno. Para compatibilidade, JChar deriva de "str" ​​​​e implementa unha conversión implícita a "int". Polo tanto, pasa comprobacións nos contratos. Pero isto significa que xa non se considera un tipo numérico en Python, polo que isinstance(c, int) avalíase como False, o que é coherente coas regras de conversión de tipos de Java.
  • Introduciuse un operador para emitir o tipo Java Type@obj (@ - este é un operador Python para o produto interno, non existe en Java).
  • Engadida notación para crear matrices Java. Escriba[s1][s2][s3] para matrices de tamaños fixos, escriba[:][:][:] para matrices que se crean máis tarde.
  • @FunctionalInterface permítelle crear functores Java a partir de obxectos Python con __call__.
  • Elimináronse JIterator obsoletos, o uso da fábrica de JException, get_default_jvm_path e jpype.reflect.
  • Por defecto, as cadeas Java non se converten en cadeas Python.
  • Python desaprobou "__int__", polo que as conversións implícitas entre os tipos enteiros e flotantes producirán un TypeError.
  • Uso obsoleto de JException. Para detectar todas as excepcións ou comprobar que un obxecto é un tipo de excepción Java, segue java.lang.Throwable.
  • As causas das excepcións de Java en cascada agora reflíctense nos marcos da pila de Python.
  • Uso obsoleto de JString. Para crear unha cadea Java ou comprobar que un obxecto é do tipo cadea Java, use java.lang.String.
  • Actualizáronse os métodos Repr nas clases Java.
  • java.util.List cumpre os contratos de collections.abc.Sequence e collections.abc.MutableSequence.
  • java.util.Collection cumpre co contrato de for collections.abc.Collection.
  • As clases de Java son privadas e xerarán un TypeError cando se estendan desde Python.
  • Manexa o Control-C con coidado. As versións anteriores fallan cando Java manexa un sinal Control-C, xa que finalizarán Java durante a chamada. JPype agora lanzará unha InterruptedException cando regrese de Java. Control-C non eliminará as grandes rutinas de Java como o fai actualmente, xa que Java non ten unha instalación especial para iso.

A continuación formouse unha versión de parche de 1.0.1, que engadiu cambios para solucionar problemas coa versión de Python 3.8.4. Python cambiou a lóxica relativa ao uso de "__setattr__" para "obxecto" e "tipo", evitando que se usase para cambiar as clases derivadas. Ademais, a comprobación de erros foi delegada desde o método "__setattr__", polo que os tipos de excepción nalgunhas comprobacións de cordura deben actualizarse en consecuencia.

Fonte: opennet.ru

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster