Java jeździ coraz szybciej

'Spiesz się powoli' - tego powiedzonka nie można odnieść do Javy. Jeżeli ma ona wreszcie osiągnąć sukces rynkowy, musi działać szybciej. Jak dowodzą wyniki przeprowadzonych testów, być może nie trzeba już długo na to czekać.

'Spiesz się powoli' - tego powiedzonka nie można odnieść do Javy. Jeżeli ma ona wreszcie osiągnąć sukces rynkowy, musi działać szybciej. Jak dowodzą wyniki przeprowadzonych testów, być może nie trzeba już długo na to czekać.

Test wydajności serwerów Javy

Wydaje się, że wszyscy są już znudzeni słuchaniem o tym, że Java to piękny język obiektowy, umożliwiający uruchamianie aplikacji na wielu platformach, nadający się do pisania oprogramowania o krytycznym znaczeniu dla przedsiębiorstw. Informatycy chcieliby wreszcie przekonać się, że programy w Javie działają z zadowalającą szybkością. Tymczasem do tej pory największym problemem jest ogólna zgoda co do terminu "zadowalająca szybkość". Konieczność dokonywania kompromisów by ją osiągnąć powoduje, że wielu programistów podchodzi do Javy z rezerwą.

W ciągu ostatniego roku najwięksi promotorzy Javy - Sun Microsystems, Netscape Communications, Oracle i IBM - wyraźnie bardziej skupili swoje zainteresowanie na stronie serwerowej Javy. Podkreślają teraz, że największą korzyścią z akceptacji Javy będzie zwiększenie wydajności pracy programistów, zwłaszcza w tych organizacjach, w których konieczne jest skrócenie terminów opracowania aplikacji.

Ogromne oczekiwania

Centrum Testowe amerykańskiego tygodnika InfoWorld, wydawanego przez IDG, opracowało programy testujące wydajność Javy po stronie serwerowej. Początkowo zamierzano testować wydajność różnych rozwiązań w zakresie technologii kompilowania - od interpretowanego kodu bajtowego, przez kompilatory na bieżąco (just-in-time), kompilowanie do kodu maszynowego aż po opracowaną przez Suna maszynę wirtualną HotSpot z dynamicznym profilowaniem kodu. Oczekiwano, że różnice między technologiami kompilowania wyraźnie zdominują różnorodność maszyn wirtualnych Java i systemów operacyjnych.

Niestety, Sunowi nie udało się dostarczyć maszyny HotSpot w terminie (szczegółowy opis technik kompilacji w tej maszynie zamieściliśmy w nr. 11 CW z dnia 9 marca 1998 r.), w związku z tym zrezygnowano z testowania wydajności interpretera kodu bajtowego Java, zwłaszcza po stwierdzeniu, że dla każdej maszyny istnieją kompilatory na bieżąco przyspieszające jej działanie.

Niestety, nie udało się też przetestować żadnego z kompilatorów do kodu maszynowego TowerJ firmy Tower Technologies ani nowego JDK dla NetWare 5. Firma Tower proponuje inny sposób przenośności kodu Java, oferując kompilatory do kodu maszynowego dla większości platform serwerowych, w tym IBM AIX, Hewlett-Packard HP UX, Linux, Microsoft Windows NT, Silicon Graphics Irix i Sun Solaris. Novell zaś ściśle powiązał środowisko wykonawcze Java z jądrem systemu NetWare 5 i wyniki tego działania można na razie ocenić pozytywnie.

Co testowano

Dla systemu operacyjnego AIX firma IBM dostarczyła najnowszy kompilator do kodu maszynowego: High Performance Compiler for Java (HPCJ), v. 12 i IBM JDK 1.1.6 oraz wersję beta IBM JDK 1.1.7 dla OS/2. Nie testowano kompilatora do kodu maszynowego dla OS/2, który nie osiągnął jeszcze zadowalającej wydajności.

IBM High Performance Compiler for Java v. 12 dla Windows NT to trzeci - po produktach Symantec i SuperCede - kompilator do kodu maszynowego dla 32-bitowego Windows. Testowano również zestaw IBM JDK 1.1.6 dla Windows NT, jeszcze nie dostępny publicznie. Dla Windows NT ściągnięto również Microsoft SDK for Java 3.0 i Sun JDK 1.1.6, a także Visual Cafe Database Development Edition 2.5 firmy Symantec. Utworzono pliki wykonywalne opracowanych aplikacji w Javie dla Windows NT za pomocą programu JEXEGEN, dołączonego do pakietu Microsoft SDK for Java. Nie jest to kompilator do kodu maszynowego, ale daje inną możliwość rozpowszechniania aplikacji w Windows.

Dla systemu Linux testowano zestaw Blackdown JDK 1.1.6 v. 2, który można znaleźć na stronie internetowej http://www.blackdown.org/java-linux.html, a dla Solarisa firmy Sun - JDK 1.1.6 dla procesora Sparc.

Wszystkie testy prowadzono na ostatnich wieloprocesorowych wersjach systemów operacyjnych, z wyjątkiem Linuksa, którego nie udało się uruchomić. W efekcie wykorzystano w testach wersję Linuksa dla jednego procesora.

Z wyjątkiem kompilatora do kodu maszynowego Symantec, wszystkie testowane produkty są bezpłatne. IBM planuje dołączać różne wersje swojego kompilatora do kodu maszynowego IBM High Performance Compiler for Java do środowiska programistycznego VisualAge for Java.

W systemach działających z procesorami Intela - Red Hat Linux 5.1, Microsoft Windows NT Server 4.0 z Service Pack 3 i IBM OS/2 Warp Server 4.05 - użyto tej samej konfiguracji sprzętowej: serwera Dell PowerEdge z dwoma procesorami Pentium II 333 MHz i 256 MB pamięci RAM. IBM AIX działał na IBM RS/6000 F50 z dwoma procesorami PowerPC 604e, 333 MHz i 3 GB pamięci RAM. Sun Solaris 2.6 działał na komputerze Sun Ultra Enterprise 2 z dwoma procesorami UltraSparc II, 248 MHz i 256 MB RAM.