Lançamento do JPype 1.0, uma biblioteca para acesso a classes Java a partir do Python

Disponível lançamento da camada JPype 1.0, que permite acesso completo a bibliotecas de classes em Java a partir de aplicações Python. Com o JPype, é possível utilizar bibliotecas específicas de Java, criando aplicações híbridas que combinam código em Java e Python. Ao contrário do Jython, a integração com Java não é feita através da criação de uma versão do Python para a JVM, mas através de interação entre as duas máquinas virtuais, utilizando memória compartilhada. A abordagem proposta permite não apenas um bom desempenho, mas também acesso a todas as bibliotecas do CPython e do Java. O código do projeto é distribuído estão sob a licença Apache 2.0.

Principais mudanças:

  • JChar é suportado como um tipo retornado. Para compatibilidade, JChar é herdado de 'str' e realiza uma conversão implícita para 'int'. Portanto, ele passa por verificações em contratos. Mas isso significa que não é mais considerado um tipo numérico em Python e, portanto, isinstance(c, int) retorna False, em conformidade com as regras de conversão de tipos do Java.
  • Um operador foi introduzido para conversão do tipo Java Type@obj (@ é o operador Python para o produto interno, que não existe em Java).
  • Adicionada notação para criação de arrays Java. Type[s1][s2][s3] para arrays de tamanhos fixos, Type[:][:][:] para arrays que serão criados posteriormente.
  • @FunctionalInterface permite a criação de funções Java a partir de objetos Python com __call__.
  • Removidos JIterator obsoleto, uso de JException como fábrica, get_default_jvm_path e jpype.reflect.
  • Por padrão, não ocorre conversão de strings Java para strings Python.
  • Python desaconselhou o uso de '__int__', portanto, conversões implícitas entre tipos inteiros e de ponto flutuante resultarão em TypeError.
  • O uso de JException foi declarado obsoleto. Para capturar todas as exceções, ou verificar se um objeto é do tipo de exceção Java, utilize java.lang.Throwable.
  • As causas em cascata de exceções Java agora são refletidas nas pilhas de chamadas Python.
  • O uso de JString foi declarado obsoleto. Para criar uma string Java, ou verificar se um objeto é do tipo string Java, utilize java.lang.String.
  • Os métodos repr em classes Java foram atualizados.
  • java.util.List cumpre os contratos para collections.abc.Sequence e collections.abc.MutableSequence.
  • java.util.Collection cumpre o contrato para collections.abc.Collection.
  • Classes Java estão definidas como fechadas e lançarão TypeError ao serem estendidas a partir do Python.
  • O tratamento do Control-C foi aprimorado. Versões anteriores falhavam ao processar o sinal Control-C no Java, pois encerravam a execução durante a chamada. Agora, o JPype gerará uma InterruptedException ao retornar do Java. O Control-C não será mais descartado em grandes procedimentos Java, como atualmente implementado, pois o Java não possui um mecanismo especial para isso.

Em seguida, foi lançado um release corretivo 1.0.1, que incluiu alterações para contornar problemas com o release do Python 3.8.4. O Python alterou a lógica em relação ao uso de "__setattr__" para "object" e "type", impedindo seu uso para modificar classes herdadas. Além disso, a verificação de erros foi delegada do método "__setattr__", portanto, os tipos de exceções em algumas verificações de validade devem ser atualizados adequadamente.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster