JXTA P2P arhitektura
Uvod
JXTA
tehnologija je mrežna programska i računarska platforma koja je
dizajnirana za rješavanje velikog broja problema u modernom distribuiranom
računarstvu, pogotovo u području koje se naziva peer-to-peer komunikacija
ili krače P2P.
Zašto Peer-To-Peer?
Općenito,
internet ima tri važna svojstva: informacije, propustnost i računalna
sredstva, od kojih su svi nedovoljno iskorišteni, djelomično zbog
tradicionalnog klijent-server modela.
·
Kao prvo, niti jedna tražilica (search
engine) ili portal ne može locirati i katologizirati stalno povečavajuču
količinu informacija na webu u nekom razumnom vremenu. Pored toga, ogromna
količina podataka ne može se dohvatiti trenutno korištenim metodama
pretraživanja. Prema istraživanjima, na svijetu se proizvede oko 2x1018
byta informacija svake godine, ali se samo oko 3x1012 byta
objavi. Drugim riječima, za svaki megabyte informacija samo se jedan byte
objavi. Jedna od največih tražilica, Google, tvrdi da pretražuje samo oko
1.3x108 web stranica. Prema tome, traženje korisne informacije
u realnom vremenu je sve teže.
·
Drugo, unatoč velikim količinama novih
kablova koji se ugrađuju, nova propustnost ima malu korisnost od toga ako
svi idu istovremeno na npr. Yahoo po neke sadržaje. Naprotiv, vruče točke
postaju još toplije dok hladne linije ostaju hladne. To je razlog zašto
korisnici još uvijek imaju osječaj zagušenosti na internetu dok se
propustnost povečala za faktor 106 od 1975, udvostručujući
svakih 16 mjeseci.
·
Treče, novi procesori i uređaji za pohranu
podataka nastavljaju rušiti rekorde u brzini i kapacitetu, podupiruči sve
snažnije konačne uređaje kroz cijelu mrežu. Međutim, obrada podataka se
nastavlja akumulirati oko centara informacija, koja moraju povečati
količinu posla u velikoj brzini, čime se povečava potreban prostor i
potrošak energije.
Kako se
ovaj seminar ne bavi općenito P2P-om, izraz peer-to-peer arhitektura će se
odnosi na široki pojas tehnologije koja izrazito povečava iskoristivost
informacija, propustnosti i računalnih sredstava na internetu. U večini
slučajeva, te P2P tehnologije prihvačaju mrežno orjentirani model koji
niti isključuje niti inherentno ovisi o centraliziranim kontrolnim
točkama. Osim povečanja performansi u traženju informacija, njihovom
dostavljanju i obradi, ovakav model može poboljšati i ukupnu pouzdanost
računalnih sustava.
Projekt JXTA
Projekt
JXTA je započet od strane Sun Microsistems i dizajniran je uz pomoć malog
broja stručnjaka iz raznih akademskih institucija i industrije. Projekt
ima nekoliko ciljeva koji su proizašli iz predviđanja budučnosti
peer-to-peer sustava trenutno u razvoju.
·
Interoperabilnost:
JXTA tehnologija je dizajnirana da bi omogučila interkonektiranim
peer-ovima da se lako lociraju, međusobno komuniciraju, sudjeluju u
zajedničkim aktivnostima i nesmetano pružaju usluge jedan drugome preko
različitih P2P sustava i različitih zajednica.
Mnogi P2P sustavi su građeni za pružanje jedne vrste
usluga. Na primjer, Napster omogučuje razmjenu muzike a Gnutella omogučuje
razmjenu generičkih podataka. S obzirom na razlike ovih usluga i zbog
nedostatka opće prihvačene P2P infrastrukture, svaki proizvođač P2P
software-a stvara međusobno nekompatibilne sustave. To znači da svaki
proizvođač stvara svoju P2P korisničku zajednicu. Da bi peer sudjelovao u
različitim zajednicama organiziranim od drugih P2P implementacija, peer
mora podržavati višestruke implementacije, od kojih je svaka za određeni
P2P sustav.
·
Neovisnost platformi:
JXTA tehnologija je dizajnirana da bude neovisna od programskih jezika
(npr. C ili Java), sistemskih platformi (npr. Windows ili UNIX) i mrežnih
platformi (npr. TCP/IP ili Bluetooth).
Mnogi P2P sustavi danas nude svoje usluge kroz niz API-a (Application
Programming Interface) koji su dostavljeni na određenom
operacijskom sustavu koristeči određeni mrežni protokol. Na primjer, jedan
sustav može nuditi niz C++ API-a, sa sutavom koji inicijalno radi na
Windows-ima preko TCP/IP protokola, dok drugi sustav nudi kombinaciju C i
Java API-a koji rade na različitim UNIX sistemima preko TCP/IP ali isto
zahtjevajuči HTTP. P2P projektant je prema tome prisiljen birati koji niz
API-a da koristi tj. prisiljen je odabrati koju grupu P2P kupaca želi
privuči. Ako se žele ponuditi jednake usluge objema grupama, moraju se
razviti jednake usluge za dvije platforme.
JXTA tehnologija je dizajnirana da bude prihvačena od svih
razvojnih timova, neovisno o korištenom programskom jeziku, razvojnom
okruženju ili sistemskoj platformi.
·
Sveprisutnost:
JXTA tehnologija je dizajnirana na taj način da ju je moguče ugraditi u
svaki digitalni uređaj uključujući senzore, potrošačku elektroniku,
PDA-ove, mrežne routere, stolna računala, servere i uređaje za
pohranjivanje podataka.
Mnogi P2P sustavi pretežno biraju Windows-e kao njihovu
razvojnu platformu. Razlog za to je da se želi ciljati na najveću
instaliranu bazu i najbrži put do zarade. Ovakav pristup je očigledno
kratkovidan pošto P2P ne stoji za PC-To-PC. Najvjerojatnijje će se najveća
raširenost P2P tehnologije javiti na dva kraja hardwear-skog spektra,
veliki sustavi unutar kompanija i korisnički orijentirani mali sustavi.
Projekt
JXTA ima viziju svijeta gdje svaki peer, neovisan o softwear-skoj ili
hardwear-skoj platformi, može napredovati i profitirati samim time što je
spojen sa milijunima drugih peer-ova.
JXTA tehnologija
JXTA
tehnologija će uskoro postati "open source" tipa i biti će dalje razvijana
od mnogih suradnika. Kao takva još uvijek se razvija.
Na
početku razvoja analizirali su se različite P2P software-ske arhitekture i
one su razlučene na slojnu strukturu prikazanu slikom.
P2P
software se može u grubo podjeliti na tri sloja. Na dnu se nalazi
središnji sloj koji se bavi uspostavom peer-ova i komunikacijskim
upravljanjem kao na primjer routanjem. U sredini se nalazi uslužni sloj
koji se bavi konceptima višeg ranga kao indeksiranje, traženje i izmjenom
podataka. Na vrhu se nalazi sloj aplikacije kao što je e-mailanje i
spremanje podataka. Neke osobine, kao što je sigurnost, nalaze se u sva
tri sloja i svugdje unutar P2P sustava, iako u različitim oblicima ovisno
o lokaciji u software-skoj arhitekturi.
JXTA
tehnologija je dizajnirana da osigura sloj na vrhu na kojemu su građene
usluge i aplikacije. Taj vršni sloj je napravljen da bude mali i tanak,
ali da omogući aplikacijama i uslugama korištenje interesantnih i močnih
primitiva.
Koncepti JXTA tehnologije
Najjednostavnije rečeno JXTA tehnologija je skup protokola. Svaki protokol
je opisan jednom ili više poruka koje se razmjenjuju između korisnika
protokola. Svaka poruka ima predefinirani oblik i može sadržavati
različite podatke. U tom pogledu, postoji sličnost sa TCP/IP. Još jedna
sličnost sa TCP/IP postoji što se tiče neovisnosti platformi. Međutim,
JXTA tehnologija je neovisna o transportu i može koristiti TCP/IP kao i
druge transportne standarde.
Trenutno
su definirani slijedeći protokoli:
·
Peer Discovery Protocol
·
Peer Resolver Protocol
·
Peer Information Protocol
·
Randezvous Protocol
·
Pipe Binding Protocol
·
Endpoint Routing Protocol
Da bi se
poduprijeli ovi protokoli, JXTA definira nekoliko pojmova uključujući
peer, peer grupa, oglas (advertisement), poruka (message), kanal (pipe) i
drugi. Slijedi kratko objašnjenje pojedinih izraza.
·
Identifikator:
JXTA koristi UUID (Universal Unique IDentifier), 128-bitni podatak koji se
odnosi na peer, oglas, uslugu itd. Relativno je jednostavno osigurati
jedinstveni UUID unutar lokalnog okruženja, ali nemoguče je garantirati
jedinstvenost kroz cijelu zajednicu koja se može sastojati od milijuna
peerova. To nije veliki problem jer se UUID koristi kao unutarnji
identifikator. On postaje važan nakon što je sigurno spojen sa drugim
informacijama kao što su ime i mrežna adresa.
·
Oglas: Oglas
je XML strukturirani dokument koji imenuje, opisuje i objavljuje
postojanje sredstava kao što su peer, peer grupa, pipe ili usluga. JXTA
tehnologija definira osnovni skup oglasa.
·
Peer: Peer je
entitet koji "razgovara" protokolima koji su od njega traženi. Ovo je
slično Internetu, gdje je Internet čvor entitet koji "razgovara" nizom IP
protokola. Kao takav, peer može imati oblik procesora, procesa, uređaja
ili korisnika. Peer ne mora razumjeti svih šest prije navedenih protokola.
·
Poruka: Poruka
je dizajnirana na taj način da bi ju se moglo koristiti na vrhu
asinhronog, nepouzdanog i jednosmjernog transporta. Prema tome, ima oblik
datagrama koji sadrži paket i skup protokola. Paket sadrži zaglavlje,
sadržaj poruke, polazište i odredište. Odredište je dano u obliku URI
(Uniform Resource Identifier), na bilo kojem mrežnom transportu koji je
sposoban slati i primati poruke u obliku datagrama.
·
Peer grupa:
Peer grupa je virtualni entitet koji "razgovara" peer grupnim protokolima.
Tipično, peer grupa je skup peerova koji omogučuju zajednički skup usluga.
Specifikacija ne određuje kada, gdje ili zašto se stvaraju grupe, tip
grupe ili članove grupe. JXTA ne odrđuje u koliko grupa se jedan peer može
nalaziti, ali određuje kako se pronalaze peer grupe korištenjem Peer
Discover Protocol-a.
Postoji i posebna grupa koja se naziva World Peer
Group, koja sadrži sve JXTA peerove.
·
Pipes:
Najjednostavnije rečeno to su asinhroni komunikacijski kanali za primanje
i slanje poruka. Također su jednosmjerni, pa prema tome postoje ulazni i
izlazni kanali. Takovi kanali su virtualni, pri čemu krajnja točka kanala
može biti vezana sa jednim ili više peerova. Kanal je dinamički zauzet od
strane peera preko Pipe Binding Protocol-a. To implicira da se kanal može
kretati i zauzimati od različitih peerova u različitio vrijeme. To je
korisno, na primjer, kada određeni broj peerova zajedno pružaju visoki
prag tolerancije pogreške, gdje se srušeni peer zamjenjuje novim na drugoj
lokaciji, pri čemu taj drugi uzima kanal da bi se omogučio nastavak
komunikacije. "Point-to-point" kanal direktno spaja dva peera. "Propagate"
kanal spaja više peerova zajedno, od jednog izlaznog do jednog ili više
ulaznog kanala.
Kanali su osmišljeni da budu asinhroni, jednosmjerni i
nepouzdani jer je to osnova svih oblika transporta.
Protokoli JXTA tehnologije
Projekt
JXTA je inicijalno definirao šest protokola, ostavljajuči mogučnost
razvitku dodatnih protokola nakon što postane open source tipa.
·
Peer Discovery Protocol:
Ovaj protokol omogučava peer-u da pronalazi oglase drugih peer-ova, i može
biti korišten za pronalazak peer-a, peer grupe ili oglasa. Ovaj protokol
je default-ni pronalazeći protokol za sve peer grupe uključujući World
Peer grupu. Razumljivo je da će netko htjeti razviti bolji protokol za
pronalaženje koji će možda primjenjivati ovaj default-ni protokol, ali
uključivanje ovog protokola znaći da će svi JXTA peerovi biti u mogučnosti
međusobno se razumjeti na osnovnom nivou. Pronalaženje peera može se
ostvariti sa ili bez specifikacije imena peera ili peer grupe kojoj peer
pripada. Kada ime nije specificirano, svi oglasi se vračaju.
·
Peer Resolver Protocol:
Ovaj protokol omogučava peeru slanje općih upita pri traženju peera, peer
grupe, kanala i ostalih informacija. Tipično, ovaj protokol je
implementiran samo od onih peerova koji pružaju napredne mogučnosti
traženja.
·
Peer Information Protocol:
Ovaj protokol omogučava peeru otkrivanje mogučnosti i statusa ostalih
peerova. Na primjer, jedan peer može slati ping poruku da bi saznao
dali je drugi peer "živ".
·
Randevous Protokol:
Ovaj protokol omogučava peeru da raznosi poruku unutar područja peer
grupe.
·
Pipe Binding Protocol:
Ovaj protokol omogučava peeru povezivanje pipe oglasa sa krajnjom točkom
pipa, čime se ukazuje kuda poruka stvarno ide kroz kanal.
·
Endpoint Routing Protocol:
Ovaj protokol omogučava peeru postavljanje upita peer routeru za slobodne
puteve za slanje poruka do odredišnog peera. Često, dva komunicirajuča
peera nisu direktno spojena međusobno. Primjer ovakove veze su dva peera
koja ne koriste isti mrežni transportni protokol ili peerovi odvojeni
firewall-om. Peer routeri odgovaraju na upite šaljući liste gateway-a na
putu do odredišta. Svaki peer može postati peer router implementirajuči
ovaj protokol.
Sigurnost
Sigurnosni zahtjevi P2P sustava su jako slični zahtjevima većine
računalnih sustava. Tri najvažnija zahtjeva su povjerljivost, integritet i
korisnost. Ti zahtjevi se pretvaraju u funkcionalne zahtjeve koji
uključuju izvornost, kontrolu pristupa, enkripciju, sigurnu komunikaciju,
itd.
Takovi
zahtjevi su obično zadovoljeni prikladnim sigurnosnim modelom, koji se
obićno izražava u obliku subjekata, objekata i akcija koje subjekti mogu
izvoditi nad objektima. Na primjer, UNIX operativni sustav ima jednostavan
sigurnosni model. Korisnici su subjekti. Datoteke su objekti. Dali subjekt
može čitati, pisati ili izvršavati objekt ovisi o tome dali subjekt ima
dozvolu koja je specificirana od strane objekta. Međutim, na nižim
razinama unutar sutava, sigurnosni model je izražen integerima u obliku
UID, GID i moda dopustivosti. Ovdje, nižerazinski mehanizmi ne razumiju
koncept korisnika i nisu uključeni u načine provjere izvornosti korisnika.
Pošto je
JXTA organizirana na konceptu peerova i peer grupa, može se predvidjeti
sigurnosna arhitektura u kojoj peerovi ID i grupni ID su tretirani kao
nižerazinski objekti, podaci su tretirani kao objekti a akcije su
operacije nad peerovima, peer grupama i podacima.
Projektiranje konkretnije i preciznije arhitekture sigurnosti još uvijek
je u razvoju. Nakon opsežnijeg razvoja usluga i aplikacija na vrhu JXTA,
biti će lakše odrediti koja arhitektura je najprikladnija.
U
razmatranju sigurnosne arhitekture važno je napomenuti da su sigurnosni
zahtjevi JXTA arhitekture dodatno utjecani nekim jedinstvenim značajkama.
·
JXTA tehnologija je platforma orijentiranana
na mehanizme a ne na načine. Na primjer, UUID se koriste svugdje ali oni
sami po sebi nemaju nikakvo vanjsko značenje. Bez dodatnih usluga
imenovanja i spajanja, UUID su samo brojevi koji nisu u skladu sa ničim
kao što je korisnik. Prema tome, za razliku od nekih drugih računalskih
sustava, JXTA ne definira visokorazinski sigurnosni model.
Kada se UUID spaja sa vanjskim imenom ili entitetom da bi
se stvorila sigurnosna glava, izvornost spajanja se može osigurati
stavljanjem sigurnosnih atributa u podatkovno polje, kao na primjer,
digitalnog potpisa.
·
JXTA tehnologija je neutralna prema
kriptografskum shemama i sigurnosnim algoritmima. Kao takova, ne određuje
nikakva sigurnosna rješenja.
Na primjer, svaka poruka ima sigurnosno dio koji se može
koristiti za stavljanje sigurnosnih informacija. Međutim, kako se
interpretiraju te informacije, je ostavljeno uslugama i aplikacijama.
Da bi se
malo bolje objasnila sigurnost obrađena su dva zahtjeva.
·
Komunikacijska sigurnost:
Kao što je prije rečeno, peerovi komuniciraju preko kanala (pipes).
Pretpostavimo da se traži povjerljivost i integritet u komunikacijskom
kanalu. Jedno rješenje je korištenje VPNa za sav mrežni promet. Drugo
rješenje je formiranje sigurnosnog kanala, poput zaštičenog tunela, čime
je poruka poslana takovim kanalom automatski sigurna. Treče rješenje je
korištenje standardnih komunikacijskih mehanizama uz korištenje
enkripcijskih metoda i digitalnih potpisa. JXTA tehnologija može koristiti
bilo koje od navedenih rješenja.
·
Anonimnost:
Anonimnost ovdje ne znaći nepostojanost identiteta. Naprotiv, često je
određena razina identiteta neizbježna. Na primjer, broj telefona ili broj
SIM kartice ne mogu biti anonimni jer su oni potrebni telefonskoj centrali
da autorizira i uspostavi poziv. Još jedan primjer bi bio IP broj PC-a
koji ne može biti sakriven od najbližeg routera ili gatewaya ako PC želi
slati i primati podatke.
Anonimnost može biti nadograđena na identitet ali ne i
obrnuto. Često postoji više načina da se osigura anonimnost. U prijašnjim
primjerima, puno je teže povezati pre-paid SIM karticu prodanu u dučanu za
gotovinu sa pravim korisnikom telefona. Slično, kooperativni gatewayi i
routeri mogu pomoči u sakrivanju IP adrese PC-a od vanjskog svijeta
koristeči na primjer NAT (Network Address Translation).
Zamislimo JXTA tehnološki baziranu uslugu imenovanja koja
može spajati peer sa korisnikom. Korisnička anonimnost može biti osigurana
kroz uslugu imenovanja, uslugu izvornosti ili proxy usluge ili bilo koju
kombinaciju ovdje navedenih. JXTA je neovisna o riješenju izabranom od
određene aplikacije.
JXTA bazirane usluge i aplikacije
Ovo
poglavlje ilustrira što sve mogu biti JXTA usluge i aplikacije, koristeć
par primjera.
Usluge
Uslugu
obilježava skup funkcija koje nudi provider. Peer može nuditi uslugu sam
ili u suradnji sa drugim peerovima. Peer koji pruža uslugu objavljuje
uslugu putem oglasa. Drugi peerovi zatim mogu pronalaziti tu uslugu i
njome se koristiti. Svaka usluga ima jedinstveni ID i ime koje se sastoji
od propisanog imena i niza opisnih stringova koji jedinstveno
identificiraju uslugu.
Ponekad
je usluga dobro definirana i širokodostupna tako da ju peer može
jednostavno koristiti. U ostalim slučajevima potreban je poseban kôd da bi
se pristupilo usluzi.
Kada se
govori o usluzi koju pruža peer podrazumjeva se da ju izvršava samo jedan
peer. Usluga koja je sastavljena od skupa usluga koje se odvijaju na više
peerova naziva se usluga grupe peerova.
JXTA Ljuska: Primjer aplikacije
JXTA
ljuska (shell) je važna aplikacija koja je sagrađena na JXTA platformi kao
močna demonstracija JXTA-a i kao korisna razvojna okolina. JXTA ljuska
pruža interaktivni pristup JXTA platformi preko komandne linije, kao što
je u UNIX-u interaktivni pristup UNIX platformi preko ljuske komandno
linijskog prevodioca koji omogučava korisniku manipulaciju nad podacima i
procesima. Preko UNIX ljuske može se puno naučiti o internom radu UNIX-a i
može se puno postiči pišuči shell skripte. To se jednako može reći i za
JXTA. Međutim, dok se UNIX shell naredbe izvode lokalno, JXTA ljuska je
dizajnirana da se izvodi u mrežnom okruženju. Ono što se događa je to da
će korisnička naredba generirati niz razmjena poruka između peerova, sa
određenim računanjem koje se izvršava na udaljenim peer točkama, nakon
čega se odgovor vrača korisniku. Prevodioc u JXTA ljusci radi u
jednostavnoj petlji: prima naredbu, prevodi ju, izvršava i čeka novu
naredbu. Ljuska prikazuje "JXTA>" prompt da bi obavjestila korisnika kako
je spremna prihvatiti novu naredbu. Jednako kao što postoje različite
verzije UNIX ljuske (Bourne Shell, C Shell, BASH, itd), očekuje se da će
se jednako tako razviti različite verzije JXTA ljuske.
Opisivanje kako je sagrađena JXTA ljuska ili koje naredbe podržava bio bi
preveliki zalogaj za ovaj seminar pa se ovdje navodi samo par točaka.
Prvo,
koliko je bilo moguče, namjerno su korištena imena naredbi iz UNIX ljuske
kao što su ls, cat, itd. Razlog je bio taj da se olakša
korištenje JXTA ljuske korisnicima koji su naučeni na UNIX ljusku.
Drugo, u
Java implementaciji, večina naredbi nije ugrađena sama po sebi. One su
Java jezični programi i dinamički se učitavaju i pokreču od strane ljuske.
Prema tome, dodavanje novih naredbi je jednostavno kao što je pisanje
programa u Javi.
Sažetak i buduće odrednice
Ovdje je
predstavljena mrežna programska platforma posebno dizajnirana da bude
temelj za peer-to-peer sustave. Njezini ciljevi su:
·
Interoperabilnost
– svaki P2P sustav građen na JXTA tehnologiji može međusobno razgovarati
·
Neovisnost platformi
– JXTA može biti implementirana sa bilo kojim programskim
jezikom i korištena na svakoj software-skoj i hardware-skoj platformi
·
Sveprisutnost
– JXTA se može postaviti na svaki digitalni uređaj
JXTA je
definirana kao skup protokola koji koriste XML kodirane poruke. Kao
takova, ostaje udaljena od API-a i ostaje nezavisna od programskih jezika,
tako da može biti implementirana u C/C++, Java i ostalim jezicima. To
znači da raznovrsni uređaji sa kompletno različitim software-om mogu
surađivati kroz JXTA protokole.
Također,
JXTA tehnologija je dizajnirana tako da bude neovisna o transportnom
protokolu. Može se implementirati na vrh TCP/IP, HTTP, Bluetooth i mnogih
drugih protokola. To znači da sustav koji je napravljen na vrhu JXTA radi
na jednak način kada se sustav proširi na novo mrežno okruženje ili na
novu vrstu uređaja, tako dugo dok postoji upravljač transportnog protokola
za novi protokol.
Prednosti
projekta JXTA mogu se ilustrirati na par aplikacijskih i korisničkih
primjera. Na primjer, pretpostavimo da postoji P2P zajednica koja nudi
mogučnost traženja za svoje članove, gdje jedan član može poslati upit a
drugi članovi mogu slušati i odgovarati na upit. Pretpostavimo da je jedan
član zajednice istovremeno korisnik Napstera i da je implementirao uslugu
da kad god upit sadrži pitanje za MP3 muziku, taj član pogleda Napsterove
podatke i zatim odgovori na upit sa informacijom koju je vratio Napster. U
ovom primjeru određeni član bez ikakvog znanja o Napsteru može profitirati
jer je drugi član implementirao most koji spaja njihov P2P sustav sa
Napsterom. Ovakav tip spajanja je jako koristan, ali kada je broj usluga
velik, spajanje postaje sve teže i nepoželjno. JXTA pretendira ka tome da
bude most koji spaja različite P2P sustave zajedno.
Kao drugi
primjer, mnogi uređaji (kao što su mobiteli, pageri, PDA-ovi, PC, itd)
sadrže kalendare. Trenutno, sinhronizacija između takovih uređaja je
zamorna i teška. Često PC postaje centralna sinhronizacijska točka, gdje
se svaki drugi uređaj mora spojiti na PC koristeči jedinstveni "device
driver" za svaki uređaj. Sa JXTA tehnologijom, svi takovi uređaju mogu se
napraviti da komuniciraju međusobno bez dodatnih mrežnih sučelja osim onih
koji su potrebni samim uređajima.
Činjenica
da je JXTA tehnologija "open source" tipa očekuje se da će raznorazni
zainteresirani pojedinci doprinositi razvoju JXTA i srodnih tehnologija.
|