Rilascio di JPype 0.7.2, una libreria per accedere alle classi Java da Python.

Disponibile rilascio del modulo JPype 0.7.2, che permette l'accesso completo delle applicazioni Python alle librerie di classi Java. Con JPype, è possibile utilizzare le librerie specifiche di Java da Python, creando applicazioni ibride che combinano codice Java e Python. A differenza di Jython, l'integrazione con Java non avviene attraverso una variante di Python per la JVM, ma attraverso un'interazione a livello di entrambe le macchine virtuali, utilizzando la memoria condivisa. Questo approccio consente non solo di ottenere buone prestazioni, ma fornisce anche accesso a tutte le librerie CPython e Java. Il codice del progetto distribuito sotto licenza Apache 2.0.

Principali modifiche:

  • Le eccezioni sollevate nel codice C++ e Java ora offrono uno stack di eccezioni quando si verifica un'eccezione nel codice Python. Pertanto, non è più necessario chiamare stacktrace() per ottenere informazioni sullo stack delle eccezioni.
  • La velocità di ritorno nelle chiamate è stata triplicata.
  • È stata significativamente (di ordini di grandezza) incrementata la velocità di trasferimento in
    buffer numpy di array multidimensionali. I primitivi multidimensionali trasferiscono copie di sola lettura, create all'interno della JVM con disposizione continua in C.
  • Tutti i componenti interni esposti sono stati sostituiti con implementazioni di CPython, e i simboli __javaclass__, __javavalue__ e __javaproxy__
    sono stati rimossi. A tutti i tipi di CPython, ereditati dai tipi di classe jpype, è stato aggiunto uno slot Java dedicato. Tutte le tabelle private sono state trasferite in CPython. I tipi Java ora devono ereditare dalla metaclasse JClass, che utilizza slot di tipo. Le mescolanze per le classi base Python non sono ammesse. I tipi Object, Proxy, Exception, Number e Array ereditano direttamente dalle implementazioni interne di CPython.
  • Il tracciamento e la gestione delle eccezioni sono stati migliorati.
  • Gli array slices ora vengono gestiti come visualizzazioni che supportano la scrittura inversa nell'originale, come l'array numpy. Per gli array slices è supportata la possibilità di impostare e ottenere valori con passo (slice(start, stop, step)).
  • Nei array è stata implementata la supporto per '__reversed__'.
  • Negli array Java è stato fornito il supporto per l'API memoryview e rimossa la dipendenza da numpy per la trasmissione del contenuto del buffer.
  • Numpy non è più una dipendenza (extra) e la trasmissione della memoria a numpy è disponibile senza compilazione con il supporto per numpy.
  • JInterface è stato progettato come metaclasse. Utilizzare isinstance(cls, JInterface) per il controllo delle interfacce.
  • Le TLD «mil», «net» e «edu» mancanti sono stati aggiunti negli import predefiniti.
  • Durante l'avvio sono stati migliorati i messaggi di errore per UnsupportedClassVersion.
  • java.util.Map ora restituisce KeyError se l'elemento non viene trovato. I valori null continuano a restituire None come previsto. Utilizzare get() se le chiavi vuote devono essere gestite come None.
  • java.util.Collection è stato rimosso poiché sovraccarica in modo strano remove(Object) e remove(int) su List. Utilizzare il metodo remove() di Java per accedere al comportamento originale di Java, ma il casting è fortemente raccomandato per gestire il sovraccarico.
  • java.lang.IndexOutOfBoundsException ora può essere catturato utilizzando la classe per le eccezioni IndexError durante l'accesso agli elementi di java.util.List.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster