Lançamento do JPype 0.7.2, biblioteca para acessar classes Java a partir do Python

Disponível lançamento da camada JPype 0.7.2, 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:

  • Exceções lançadas em códigos C++ e Java agora fornecem um rastreamento de exceções ao ocorrer uma exceção no código Python. Assim, para obter informações sobre o rastreamento de exceções, não é mais necessário chamar stacktrace().
  • A velocidade de retorno durante as chamadas foi triplicada.
  • A velocidade de transferência foi significativamente aumentada (por ordens de magnitude) em
    buffers numpy de arrays multidimensionais. Os primitivas multidimensionais transmitem cópias apenas para leitura, criadas dentro da JVM com layout contínuo em C.
  • Todos os componentes internos foram substituídos por implementações do CPython, e os símbolos __javaclass__, __javavalue__ e __javaproxy__
    foram removidos. Todos os tipos do CPython herdados dos tipos de classe jpype agora têm um slot Java dedicado. Todas as tabelas privadas foram transferidas para o CPython. Tipos Java agora devem herdar do metaclasse JClass, que utiliza slots de tipos. Mixins para classes base do Python não são permitidas. Os tipos Object, Proxy, Exception, Number e Array são herdados diretamente das implementações internas do CPython.
  • O rastreamento e o tratamento de exceções foram aprimorados.
  • Os cortes de arrays agora são tratados como visualizações que suportam a gravação de volta no original, como um array numpy. Para cortes de arrays, o suporte para definir e obter valores com passo (slice(start, stop, step)) foi garantido.
  • O suporte a '__reversed__' foi implementado em arrays.
  • Em arrays Java, o suporte ao API memoryview foi adicionado e a dependência do numpy para a transmissão do conteúdo do buffer foi removida.
  • Numpy agora não é uma dependência (extra) e a transmissão de memória para o numpy está disponível sem compilação com suporte a numpy.
  • JInterface foi estruturado como um metaclasse. Use instanceof(cls, JInterface) para verificar interfaces.
  • Os TLDs faltantes 'mil', 'net' e 'edu' foram adicionados nas importações padrão.
  • Mensagens de erro melhoradas durante a execução para UnsupportedClassVersion.
  • java.util.Map agora lança KeyError se o elemento não for encontrado. Valores que são nulos ainda retornam None como esperado. Use get() se chaves vazias precisarem ser tratadas como None.
  • java.util.Collection foi removido, pois estava estranhamente sobrecarregado entre remove(Object) e remove(int) em Listas. Use o método Java remove() para acessar o comportamento original do Java, mas a conversão de tipo é estritamente recomendada para gerenciar a sobrecarga.
  • java.lang.IndexOutOfBoundsException agora pode ser capturada usando a classe de exceções IndexError ao acessar elementos de java.util.List.

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