Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.
Sporo z nich wymagałoby zbyt wiele mocy ob-
liczeniowej, gdy były w całości oparte na serwerach. W Javie przetwarzanie jest
przerzucone na klienta, na maszynę, z której pochodzi. Inne typy aplikacji (na
przykład mobilne agenty) wymagają maksymalnej przenośności i pewnych gwa-
rancji, że aplikacja nie zrobi niczego, co zaszkodziłoby węzłowi sieci. Choć model
zabezpieczeń w Jayie był krytykowany (i owszem, znaleziono kilka błędów), i tak
Jest o wiele doskonalszy niż wszystko to, co usiłowano zrobić dotychczas, i jest
18 Rozdział 1: Dlaczego Java sieciowa?
absolutnie niezbędny w przypadku mobilnego oprogramowania, które chcemy pi-
sać w przyszłości.
Wszędobylskie komputery
Urządzenia sieciowe nie muszą być przywiązane do konkretnego fizycznego miej-
sca, podsieci lub adresu IP. Jini jest strukturą umieszczoną ponad Javą dla łatwiej-
szego i ciągłego łączenia z siecią wszystkich rodzajów urządzeń. Na przykład, kiedy
współpracownicy spotykają się na zebraniu, to zazwyczaj przynoszą ze sobą dość
przypadkowy dobór osobistych asystentów cyfrowych, laptopów, telefonów ko-
mórkowych, pagerów oraz innych urządzeń elektronicznych. W sali konferencyjnej,
w której się zbierają, może znajdować się jeden lub dwa komputery typu PC, ewen-
tualnie Macintosh, cyfrowy rzutnik, drukarka, ekspres do kawy, głośnik, etherneto-
wy ruter i przeróżne inne przydatne narzędzia. Jeśli te urządzenia posiadają wirtu-
alną maszynę Javy i Jini, to dopóki są włączone i połączone, tworzą zaimprowizo-
waną sieć. (Przy połączeniach bezprzewodowych nawet nie muszą być połączone).
Urządzenia mogą w dowolnym momencie przyłączać się do lokalnej sieci lub opusz-
czać ją bez konieczności zmiany konfiguracji. Mogą używać jednego z telefonów ko-
mórkowych, głośnika lub rutera do połączenia się z węzłami sieci znajdującymi się
poza tą salą.
Uczestnicy konferencji bezproblemowo mogą dzielić się plikami i wymieniać dany-
mi. Ich komputery oraz inne urządzenia mogą być skonfigurowane tak, aby rozpo-
znawać się nawzajem i ufać sobie niezależnie od swojej aktualnej lokalizacji w sieci.
Zaufanie jednakże może być ograniczone tak, aby na przykład wszystkie laptopy
pracowników firmy przebywających w pokoju ufały sobie nawzajem, ale nie ufały
laptopom obecnych na spotkaniu sprzedawców. Niektóre urządzenia, takie jak dru-
karka i rzutnik cyfrowy, mogą być skonfigurowane tak, aby ufać każdemu z sali,
gdy chodzi o korzystanie z ich usług, ale nie zezwalać na wykorzystywanie się w da-
nym momencie przez więcej niż jedną osobę. Najważniejsze ze wszystkiego jest, aby
ekspres do kawy nie ufał nikomu, ale sam mógł stwierdzić, że skończył mu się zapas
kawy, i pocztą elektroniczną powiadomić obecnych w pokoju, że należy go uzu-
pełnić.
Interakcyjna telewizja
Zanim WWW przebojem podbiło świat, planowano przeznaczyć Javę na rynek de-
koderów telewizji kablowej. Pięć lat po publicznym debiucie Javy, Sun powrócił do
swoich wcześniejszych planów, ale tym razem były one bardziej ukierunkowane na
sieć. Personaljava jest okrojoną wersją dość obszernego API Javy, przydatną w deko-
derach i innych urządzeniach o ograniczonej pamięci, mocy procesora i interfejsach
użytkownika, takich jak Palm Pilot. TV API Javy ma dodanych kilka specyficznych
funkcji telewizyjnych, na przykład zmienianie kanałów umożliwia również zapis
i synchronizację obrazu i dźwięku. Chociaż Personaljava nie ma wielu rzeczy, do
których mogłeś się przyzwyczaić w pełnym JDK, ale zawiera cały zestaw klas siecio-
wych. Stacje telewizyjne mogą wstawiać aplety w strumienie danych, aby widzowie
oddziaływali na programy. Reklama farby do włosów mogłaby zawierać aplet,
CMMtecz^eszczecoś^_____________________________________J9
który pozwalałby widzowi wybrać kolor, wpisać numer karty kredytowej i wysłać
mówienie kablem modemowym w tę i z powrotem przez Internet dzięki zdalne-
u sterowaniu. Dzienniki mogłyby przeprowadzać wśród widzów głosowanie
czasie rzeczywistym i informować o jego wynikach po przerwie na reklamę. Ka-
blem modemowym mogłyby być zbierane opinie od każdego widza, a nie zaledwie
od 5000 rodzin Kowalskich.
Współpraca
Dzięki sieciowym programom typu węzeł-węzeł w Javie wiele osób może jednocze-
śnie pracować nad jednym dokumentem. Wyobraź sobie procesor słów w Javie,
który dwie osoby, być może w różnych krajach, mogą równocześnie uruchomić.
Wyobraź sobie taką interakcję, która jest możliwa, gdy podłączysz się do interneto-
wego telefonu. Na przykład dwóch astronomów mogłoby wykonywać pracę na pa-
pierze, jeden w Nowym Meksyku, a drugi w Moskwie. Rosjanin mógłby powie-
dzieć: „Myślę, że zgubiłeś górny indeks w równaniu 3.9", a następnie wpisać po-
prawkę, która równocześnie pojawiłaby się na obu ekranach. Astronom z Nowego
Meksyku mógłby powiedzieć: „Rzeczywiście, ale czy nie oznacza to, że musimy te-
raz odpowiednio zmienić rysunek 3.2?", a potem użyłby narzędzia do rysowania, by
natychmiast to zrobić. Taki rodzaj współpracy nie jest szczególnie trudny do zaim-
plementowania w Javie (procesor słów z przyzwoitym interfejsem użytkownika do
równań matematycznych jest prawdopodobnie najtrudniejszą częścią tego zadania),
ale już na początku trzeba uwzględnić wbudowanie procesora słów. Nie można wy-
korzystać tu procesora słów, który nie był zaprojektowany dla sieci.
Chwileczkę! Jeszcze coś!
Większa cześć tej książki opisuje API względnie niskiego poziomu, potrzebne do pi-
sania takich rodzajów programów, które wymieniliśmy w tym rozdziale. Niektóre
z tych programów już powstały. Inne nadal czekają na realizację. Może to właśnie ty
je napiszesz! Ten rozdział wyznaczył jedynie płaszczyznę działania dla tych, którzy
tworzą w Javie programy dla sieci. Wielką zaletą witryny wykorzystującej oprogra-
mowanie w Javie jest to, że wszystko, co sobie zamarzysz, jest już możliwe. Wysuń
pomysły, które innym nigdy nie przyjdą do głowy. Po raz pierwszy nie jesteś ograni-
czany tym, co inne firmy wbudowują w swoje przeglądarki. Jednocześnie możesz
udostępnić swoim użytkownikom zarówno dane, które chcą zobaczyć, jak i kod,
którego potrzebują do oglądania tych danych. Jeśli potrafisz to sobie wyobrazić, to
potrafisz też napisać taki kod.
V.;! "••••-. l';tf
• . • • •• •.;. -:--;•-•.&.
:.:.'. 'Tt... • • •:,
: -. • -i;.; •• ' -•'.••
:•'.,;• :••.';'•'.'. ' '':
r,, ,-... :•.•:•: 'f. : ." ;!'.' '•'. .-' ': •'.:-.•
, -:-."< ' ••••.-•••,,>' 'ik''•-•••
--•-•..•*•. : • ;-'.; - '-:"-
"• . :•'. • -.. •• •• •:.;. - .;' ;././ , '
. / . • i.. ,.• .,••-.• -..... .... "••;
• .-. ,•)"-. '. :• ' v •"=.•• ;.-,.,. ' •<".:*•'->.
. - .$•*"•. '>'^:;X-..:>> ~9& .".' -•"
2
Podstawowe pojęcia
dotyczące sieci
W tym rozdziale:
Sieci
Warstwy sieci
Protokoły IP, TCP oraz UDP
Internet
Model klient-serwer
Internetowe standardy