JPype 0.7.2'ın sürümü, Python'dan Java sınıflarına erişim için kütüphaneler

Mevcut katman serbest bırakma JP tipi 0.7.2Python uygulamalarının Java dilindeki sınıf kitaplıklarına tam erişime sahip olmasını sağlar. Python'un JPype'ı ile Java'ya özgü kitaplıkları kullanarak Java ve Python kodunu birleştiren hibrit uygulamalar oluşturabilirsiniz. Jython'dan farklı olarak Java ile entegrasyon, JVM için bir Python varyantı oluşturularak değil, paylaşılan belleği kullanan her iki sanal makine düzeyinde etkileşim yoluyla elde edilir. Önerilen yaklaşım yalnızca iyi bir performans elde etmeyi sağlamakla kalmaz, aynı zamanda tüm CPython ve Java kitaplıklarına erişim sağlar. Proje kodu tarafından dağıtıldı Apache 2.0 altında lisanslanmıştır.

Ana değişiklikler:

  • C++ ve Java kodunda oluşturulan istisnalar artık Python kodunda bir istisna oluştuğunda bir istisna yığını sağlıyor. Bu nedenle, istisna yığını hakkında bilgi edinmek için artık stacktrace() işlevini çağırmanıza gerek yoktur.
  • Çağrıya dönüş hızı üç katına çıkarıldı.
  • Önemli ölçüde (büyüklük sırasına göre) iletim hızında artış
    çok boyutlu dizilerin numpy tamponları. Çok boyutlu temel öğeler, bitişik bir C düzeniyle JVM içinde oluşturulan salt okunur kopyaları iletir.

  • Açığa çıkan tüm dahili öğeler CPython uygulamalarıyla ve __javaclass__, __javavalue__ ve __javaproxy__ simgeleriyle değiştirildi
    silindi. Jpype sınıf türlerinden miras alan tüm CPython türlerine özel bir Java yuvası eklenmiştir. Tüm özel tablolar CPython'a taşındı. Java türlerinin artık tür yuvalarını kullanan JClass metasınıfından miras alması gerekir. Python temel sınıflarına yönelik karışımlara izin verilmez. Türler Object, Proxy, Exception, Number ve Array'dir ve doğrudan CPython'un dahili uygulamalarından miras alınır.

  • İyileştirilmiş izleme ve istisna yönetimi.
  • Dizi dilimleri artık numpy dizisi gibi orijinale geri yazmayı destekleyen görünümler olarak işleniyor. Dizi dilimleme için adımların (dilim(başlatma, durdurma, adım)) ayarlanması ve değerlerin alınmasına yönelik destek sağlanır.
  • Diziler artık "__reversed__" özelliğini destekliyor.
  • Java dizileri artık hafıza görüntüleme API'sini destekliyor ve arabellek içeriğini iletmek için numpy'ye olan bağımlılığı ortadan kaldırıyor.
  • Numpy artık bir bağımlılık (ekstra) değildir ve numpy desteğiyle derlemeye gerek kalmadan numpy'ye bellek aktarımı yapılabilir.
  • JInterface bir meta sınıf olarak tasarlanmıştır. Arayüzleri kontrol etmek için isinstance(cls, JInterface) kullanın.
  • Varsayılan içe aktarmalara eksik "mil", "net" ve "edu" TLD'leri eklendi.
  • Başlatma sırasında UnsupportedClassVersion için geliştirilmiş hata mesajları.
  • java.util.Map artık öğe bulunamazsa KeyError hatası veriyor. Boş olan değerler beklendiği gibi yine de Yok değerini döndürür. Boş anahtarlara Yok olarak davranmak istiyorsanız get() işlevini kullanın.
  • Java.util.Collection, Listelerde kaldır(Object) ve kaldır(int) arasında garip bir şekilde aşırı yüklendiğinden kaldırıldı. Yerel Java davranışına erişmek için Java kaldır() yöntemini kullanın, ancak aşırı yük kontrolü için tür ataması şiddetle tavsiye edilir.
  • Java.lang.IndexOutOfBoundsException artık Java.util.List öğelerine erişilirken IndexError istisna sınıfı kullanılarak yakalanabilir.

Kaynak: opennet.ru

Yorum ekle