Sortie de JPype 0.7.2, bibliothèque pour accéder aux classes Java depuis Python

Disponible Publication de la couche JPype 0.7.2, permettant un accès complet des applications Python aux bibliothèques de classes en Java. Grâce à JPype, il est possible d'utiliser des bibliothèques spécifiques à Java à partir de Python, créant ainsi des applications hybrides qui combinent du code Java et Python. Contrairement à Jython, l'intégration avec Java ne nécessite pas de créer une variante de Python pour la JVM, mais se fait par l'interaction entre les deux machines virtuelles, utilisant la mémoire partagée. L'approche proposée permet non seulement d'atteindre de bonnes performances, mais aussi d'accéder à toutes les bibliothèques de CPython et Java. Le code du projet est distribué sous licence Apache 2.0.

Principales modifications :

  • Les exceptions levées dans le code C++ et Java fournissent désormais une pile d'exceptions lorsqu'une exception se produit dans le code Python. Ainsi, pour obtenir des informations sur la pile d'exceptions, il n'est plus nécessaire d'appeler stacktrace().
  • La vitesse de retour lors des appels a été multipliée par trois.
  • La vitesse de transmission a été considérablement (de plusieurs ordres de grandeur) augmentée dans
    des tampons numpy pour les tableaux multidimensionnels. Les primitifs multidimensionnels transmettent des copies en lecture seule, créées à l'intérieur de la JVM avec une disposition C continue.
  • Tous les composants internes exposés ont été remplacés par des implémentations de CPython, et les symboles __javaclass__, __javavalue__ et __javaproxy__
    ont été supprimés. Tous les types CPython hérités des types de classe jpype ont reçu un slot Java dédié. Toutes les tables privées ont été transférées dans CPython. Les types Java doivent désormais hériter de la métaclasse JClass, qui utilise des slots de type. Les mélanges pour les classes de base Python ne sont pas autorisés. Les types Object, Proxy, Exception, Number et Array héritent directement des implémentations internes de CPython.
  • Le traçage et le traitement des exceptions ont été améliorés.
  • Les découpes de tableaux (Array slices) sont désormais traitées sous forme de vues, prenant en charge l'écriture réciproque dans l'original, comme un tableau numpy. Pour les découpes de tableaux, la prise en charge de la définition et de l'obtention de valeurs avec des pas (slice(start, stop, step)) a été assurée.
  • Le support de « __reversed__ » a été ajouté aux tableaux.
  • Les tableaux Java ont maintenant le support de l'API memoryview et ont éliminé la dépendance à numpy pour le transfert du contenu du tampon.
  • Numpy n'est désormais plus une dépendance (extra) et le transfert de mémoire vers numpy est accessible sans compilation avec le support de numpy.
  • JInterface est formulé en tant que métaclasse. Utilisez isinstance(cls, JInterface) pour vérifier les interfaces.
  • Les TLD manquantes « mil », « net » et « edu » ont été ajoutées aux imports par défaut.
  • Lors du lancement, les messages d'erreur pour UnsupportedClassVersion ont été améliorés.
  • java.util.Map retourne désormais KeyError si l'élément n'est pas trouvé. Les valeurs null continuent de renvoyer None comme prévu. Utilisez get() si des clés vides doivent être traitées comme None.
  • java.util.Collection a été supprimé car il présente une surcharge étrange entre remove(Object) et remove(int) sur les Listes. Utilisez la méthode Java remove() pour accéder au comportement Java d'origine, mais un cast de type est fortement recommandé pour gérer la surcharge.
  • java.lang.IndexOutOfBoundsException peut désormais être intercepté avec la classe d'exception IndexError lors de l'accès aux éléments de java.util.List.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster