X


Każdy jest innym i nikt sobą samym.


Pisz�c t� ksi��k�, przyj��em za�o�enie, �e ty i twoi klienci stosujecie co najmniej Jav�
1.1 (stanie si� ono ca�kiem uzasadnione w roku 2001). Zwykle u�ywam Javy 1.1
z funkcjami takimi jak reader i writer oraz nowego modelu obs�ugi zdarze� bez dal-
szych wyja�nie�.
Java 2 idzie nieco dalej. Prawie ca�� t� ksi��k� napisa�em w Javie 2, gdy� w syste-
mach Windows i Solaris jest ona dost�pna ju� od ponad roku; nie ma jeszcze jednak
�rodowiska programistycznego ani wykonawczego dla Macintoshy. Chocia� Java 2
stopniowo wkracza na wi�kszo�� platform uniksowych, w tym na Linuksa, jest pra-
wie pewne, �e ani Apple, ani Sun nie b�d� przenosi� �adnej z wersji Javy 2 na system
MacOS 9.x ani wcze�niejsze, co praktycznie dla 100% obecnie zainstalowanych Ma-
cintoshy oznacza brak mo�liwo�ci dalszego rozwoju. (Prawdopodobnie pojawi si�
Java 2 dla systemu MacOS X w 2001 roku.). Dla j�zyka nie jest wcale dobre to, �e wy-
maga �pisania raz, uruchamiania gdziekolwiek". Co wi�cej wirtualna maszyna Javy
firmy Microsoft obs�uguje tylko Jav� 1.1 i nie zanosi si� na to, aby pod tym wzgl�dem
co� uleg�o poprawie w najbli�szej przysz�o�ci (by� mo�e nic dopuszcz� do tego roz-
strzygni�cia r�nych spor�w prawnych). Poza tym prawie wszystkie zainstalowane
obecnie przegl�darki, w tym Internet Explorer 5.5 i jej wcze�niejsze wersje oraz
Netscape Navigator 4.7 i jej wcze�niejsze wersje, obs�uguj� tylko Jav� 1.1. Tak�e au-
torzy aplet�w w zasadzie s� ograniczeni do Javy 1.1 z powodu mo�liwo�ci swoich
klient�w. Dlatego wygl�da na to, �e przynajmniej w najbli�szym czasie Java 2 ogra-
niczy si� do pojedynczych aplikacji w systemach Windows i Unix. Nic rezygno-
wa�em z korzystania z funkcji typowych dla Javy 2 tam, gd/,ie by�o to naprawd�
przydatne lub w�a�ciwe - na przyk�ad przy kodowaniu ASCII dla inputStre-
amReader oraz w programie keytool- ale wyra�nie to zaznaczy�em. Odnotowa�em
przypadki, w kt�rych istniej� dla tych funkcji bezpieczne odpowiedniki w Javie l .1.
Je�li jaka� metoda lub klasa pojawi�a si� dopiero od Javy l .2 lub jej nowszych wersji,
zosta�o to zaznaczone za pomoc� komentarza umieszczonego po jej deklaracji. Oto
przyk�ad:
public void setTimeToLive (int ttl) throws IOException // Java 1.2
Aby jeszcze bardziej zam�ci�, powiem, i� istnieje wiele wersji Javy 2. W chwili, w kt�rej
zosta�a uko�czona ta ksi��ka, obowi�zywa�a Java� 2 SDK, Standard lidition,
XVIII
Wst�p
J i - - �
��i�"T
vi.2.2. Przynajmniej tak by�a nazywana. Zdaje si�, �e Sun zmienia nazwy pod
wp�ywem rad konsultant�w od marketingu. W poprzednim wcieleniu by�a ona zna-
na po prostu jako JDK. Sun udost�pni� tak�e J2EE� (ang. ]ava� 2 Platform, Enterprise
Edition) oraz J2ME� (ang. }ava� 2 Platform, Micro Edition). J2EE jest zestawem funk-
cji edycji standardowej poszerzonym o funkcje, takie jak interfejs nazw i katalog�w
Javy (ang. ]ava Naming and Directory Interface) oraz JavaMail API, kt�re zapewnia
API wysokopoziomowe dla aplikacji rozproszonych. Niekt�re z tych dodatkowych
API s� tak�e dost�pne w postaci rozszerze� do edycji standardowej Javy i w taki
spos�b b�d� tu traktowane. J2ME jest podzestawem edycji standardowej ukierunko-
wanym na telefony kom�rkowe, dekodery satelitarne i inne pami�ci, procesory oraz
urz�dzenia do prezentacji grafiki. Usuni�to z niej API graficznego interfejsu u�yt-
kownika, kt�re programi�ci tradycyjnie wi�zali z Jav�, a nieoczekiwanie pozo-
stawiono prawie wszystkie podstawowe klasy sieciowe oraz klasy wej�cia i wyj�cia,
kt�re zosta�y om�wione w tej ksi��ce. Poza tym, kiedy ksi��ka by�a napisana w
po�owie, Sun wypu�ci� wersj� beta Javy� 2 SDK, Standard Edition, vi .3. Ma ona kil-
ka dodanych element�w sieciowego API, a wi�kszo�� istniej�cego API zosta�a nie-
tkni�ta. W ci�gu nast�pnych kilku miesi�cy Sun opublikowa� kolejne wersje beta
JDK 1.3. Ostateczne poprawki zosta�y uwzgl�dnione w tej ksi��ce, a ca�y kod zosta�
przetestowany z ko�cow� wersj� JDK 1.3.
Prawd� m�wi�c, problem z tymi wszystkimi wersjami i edycjami nie polega� na pi-
saniu od nowa fragment�w, kt�re o nich traktowa�y. Najtrudniej by�o okre�li�, jak
nale�y je identyfikowa� w tek�cie. Po prostu nie zgadzam si� na pisanie Java� 2
SDK, Standard Edition, vi .3 ani nawet Java 2 1.3 za ka�dym razem, gdy chc� zazna-
czy� now� funkcj� z ostatniego wydania Javy. Dlatego wi�c przyj��em nast�puj�c�
konwencj�:
� Java l .0 oznacza wszystkie wersje Javy, kt�re mniej wi�cej maj� zaimplementowa-
nc API Javy, zdefiniowane w Java Dcvelopment Kit 1.0.2 firmy Sun.
� java 1.1 oznacza wszystkie wersje Javy, kt�re mniej wi�cej maj� znimplemcnto-
wane API Javy, zdefiniowane w dowolnej wersji Java Development Kit l .1 .x firmy
Sun. Ta definicja obejmuje produkty innych firm, takie jak MJR (ang. Macintosli
Runtime for Java) 2.0, 2.1 oraz 2.2.
� Java l .2 oznacza wszystkie wersje Javy, kt�re mniej wi�cej maj� zaimplemento-
wane API Javy, zdefiniowane w edycji standardowej Java Development Kit l .2.x
firmy Sun. Nic zaliczaj� si� tu uzupe�nienia J2EE, kt�re b�d� traktowane jako roz-
szerzenia standardu. Zazwyczaj nale�� one do pakietu j,wax, a nie pakiet�w
java.
� Java 1.3 oznacza wszystkie wersje Javy, kt�re mniej wi�cej maj� zaimplemento-
wane API Javy, zdefiniowane w edycji standardowej Java Development Kit l .3 fir-
my Sun.
Kr�tko m�wi�c, ta ksi��ka opisuje istniej�cy stan rzeczy dla programowania siecio-
wego w Javic 2, kt�re tak naprawd� niezbyt r�ni si� od programowania sieciowego
w Javic 1.1. Uaktualnienia i poprawki zamieszcz� w mojej witrynie pod adresem
Uwagi na temat przyk�ad�w
XIX
http://metalab.unc.edu/javafaci/books/jnp2e/, gdy zostan� udost�pnione dalsze informa-
cje. Jednak�e sieciowe API wydaj� si� do�� niezmienne. ;
Bezpiecze�stwo " 4 ;
Nie wiem, czy mo�na wskaza� najcz�ciej zadawane pytanie na temat pierwszego
wydania ksi��ki Java, Programowanie sieciowe, ale na pewno istnia�a najcz�ciej udzie-
lana odpowied�, kt�ra odnosi si� r�wnie� do tej edycji. M�j b��d w pierwszym wy-
daniu polega� na ukryciu tej odpowiedzi w ko�cowej cz�ci rozdzia�u, kt�rego wi�k-
szo�� nie czyta�a. A poniewa� w zasadzie to samo stwierdzenie powinno stanowi�
odpowied� na podobn� liczb� pyta� od czytelnik�w tej ksi��ki, to chc� j� poda� na
samym pocz�tku (a potem wielokrotnie powtarza� w ca�ej ksi��ce ze wzgl�du na
czytelnik�w, kt�rzy zazwyczaj pomijaj� wst�py): Zabezpieczenia ]avy nie dopuszczaj�,
aby prawie wszystkie przyk�ady i metody omawiane w tej ksi��ce dzia�a�y w aplecie.
Ta ksi��ka dotyczy przede wszystkim aplikacji. Niepewnym apletom Javy wolno
komunikowa� si� poprzez Internet tylko z tym w�z�em sieci, z kt�rego pochodz�.
Dotyczy to r�wnie� w�z�a, na kt�rym dzia�aj�. Problem nie zawsze jest oczywisty -

Tematy

Drogi uĚźytkowniku!

W trosce o komfort korzystania z naszego serwisu chcemy dostarczać Ci coraz lepsze usługi. By móc to robić prosimy, abyś wyraził zgodę na dopasowanie treści marketingowych do Twoich zachowań w serwisie. Zgoda ta pozwoli nam częściowo finansować rozwój świadczonych usług.

Pamiętaj, że dbamy o Twoją prywatność. Nie zwiększamy zakresu naszych uprawnień bez Twojej zgody. Zadbamy również o bezpieczeństwo Twoich danych. Wyrażoną zgodę możesz cofnąć w każdej chwili.

 Tak, zgadzam się na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerĂłw w celu dopasowania treści do moich potrzeb. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

 Tak, zgadzam się na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerĂłw w celu personalizowania wyświetlanych mi reklam i dostosowania do mnie prezentowanych treści marketingowych. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

Wyrażenie powyższych zgód jest dobrowolne i możesz je w dowolnym momencie wycofać poprzez opcję: "Twoje zgody", dostępnej w prawym, dolnym rogu strony lub poprzez usunięcie "cookies" w swojej przeglądarce dla powyżej strony, z tym, że wycofanie zgody nie będzie miało wpływu na zgodność z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.