2013-11-28 25 views
5

Yakın zamanda OSGi ders çalışmaya başladım. Birinin bundles(which are normal java classes)'u oluşturabildiğini ve başka bir pakette dynamically installing/uninstalling herhangi bir paket oluşturabildiğini okudum.OSGi paketi ve normal .JAR dosyaları kullanımı arasındaki fark

Ancak, herhangi bir java sınıfında normal .JAR dosya kullanımı ile bundle kullanımı arasındaki farkı anlayamıyorum.

Bunu açıklığa kavuşturmama yardım eden var mı? Teşekkür ederiz.

cevap

16

Temelde fark yoktur. Bir JAR bir demet ve bir paket bir JAR'dir, formatlar aynıdır. Bununla birlikte, faydalı paketi, OSGi çerçevesi kendi bildirimlerinde OSGi meta verileri gerektirir; böylece bir OSGi çerçevesi, gruplar arasındaki sınıfların görünürlüğünü yönetebilir. Bu meta veriler içermeyen bir JAR yalnızca görünmez sınıflar içerecektir, diğer gruplardan herhangi bir sınıf göremedi ve herhangi bir şekilde başlatılamazdı. İçe Aktarım Paketi bildirim üstbilgisi, paket için hangi paketlerin görünür hale getirileceğini belirtir ve Dışa Aktarım Paketi, paket içindeki paketleri diğerlerine görünür kılınması gerekenleri tanımlar. Diğer başlıklar ek özellikler sağlar.

Geleneksel sınıf yolu ile her şey paylaşılır ve globaldir, sınıf yolunda aynı sınıfa sahip olmak iki kez işaretlenmez, biri yok sayılır. OSGi ile olan en önemli fark, bir JAR'ın artık tümüyle özel olması, manifestte meta verilerin eklenmesi, onu diğer paketlerle güvenle paylaşabilecek bir paket haline getiriyor. OSGi, ihlallerin önceden tespit edildiğinden emin olur.

+0

Temizle. Teşekkür ederiz :) – Amrit

+0

Yani, bir JavaEE uygulamasında bir kavanoz yerine bir paket kullanılabilir mi? – adbdkb

+1

evet, normal bir JAR. Bununla birlikte, bir JavaEE uygulamasında elbette bir JAR olarak davranacak ve bir paket olarak değil. –

İlgili konular