Narzędzia JDK

W przypadku JDK najczęściej wiemy, że trzeba go zainstalować by móc coś zaprogramować. Często na samej instalacji nasza przygoda z JDK się kończy – resztę biorą na siebie IDE czy ścieżka systemowa do kompilatora i tyle. Tymczasem warto zapoznać się z JDK trochę bliżej – dostarcza on bowiem szeregu całkiem przyjemnych narzędzi. W swoim wywodzie pominę najbardziej oczywiste – java oraz javac. Chyba każdy wie, że używa kompilatora oraz uruchamia oddzielne instancje JVM 😉

Lista z całą pewnością nie jest kompletna, nie ma również służyć za tutorial dotyczący ich użycia. Ma tylko pokazać istnienie pewnych programików, które mogą nam się przydać. Wiekszość z niżej wymienionych posiada dodatkowe opcje i parametry, którymi możemy sterować uruchomienie oraz działanie programów. Całość testowałem na JDK od Sun/Oracle w wersjach 1.6 oraz 1.7

  • JPS  – jest to narzędzie pozwalające wylistować uruchomione (domyślnie) na lokalnym komputerze maszyny wirtualne. W charakterze parametru można podać dowolny adres komputera (zdalnego), oczywiście pod warunkiem, że mamy do niego dostęp. Również należy zwrócić uwagę na opis w dokumentacji:

    The jps command uses the java launcher to find the class name and arguments passed to the main method. If the target JVM is started with a custom launcher, the class name (or JAR file name) and the arguments to the main method will not be available. In this case, the jps command will output the string Unknown for the class name or JAR file name and for the arguments to the main method.

    The list of JVMs produced by the jps command may be limited by the permissions granted to the principal running the command. The command will only list the JVMs for which the principle has access rights as determined by operating system specific access control mechanisms.

    Dodatkowo dokumentacja mówi jasno, iż JPS nie jest już wspierane i może zniknąć w kolejnych wersjach Javy. U mnie w JDK 1.7.0 wciąż jest dostępne 😉

  • Appletviewer – zgodnie z nazwą służy do uruchamiania appletów bez konieczności osadzania ich na loklanej stronie WWW (czy też gdzieś indziej). Dla przykładu – mamy grę w Javie w formie apletu, ale nie chcemy uruchamiać całej otaczającej aplet strony (z masą reklam). Podajemy adres strony zawierającej element z apletem i do przodu. Niestety należy się również liczyć z tym, iż mogą wystąpić problemy z uruchomieniem – przekazywane parametry, sprawdzanie poprawności, cookie – ewentualnych przyczyn braku poprawnego uruchomienia jest wiele. Jednakże by zobaczyć choć w praktyce jak to wygląda wystarczy uruchomić z konsoli to narzędzie przekazując jako pierwszy argument adres: http://www.roseindia.net/tutorialfiles/java/applet-oline-example.html . Hello World!
  • JSTAT i JSTATD – to bardzo potężne narzędzia, które umożliwiają monitoring parametrów JVM. JStad uruchamia lokalny rejestr RMI, co umożliwia wystawienie informacji o JVM na zewnątrz (np. włączenie ładnego monitoringu w formie aplikacji webowej uruchomionej na innym serwerze). Na szybko zaś powiem więcej o Jstat, które to narzędzie pozwala na dość dokładne monitorowanie parametrów JVM. Głównie rzecz w zajętości pamięci oraz zdarzeniach Garbage Collectora. Jest to naprawdę bardzo istotne w przypadku wycieków pamięci, monitoringu zmian oraz badaniach efektywności. Zwracane wartości mogą być różnie formatowane i dobrze jest zapoznać się z nimi w dokumentacji .
  • Javap – narzędzie użyteczne dość w wąskim zakresie. Jego wywołanie z argumentem w formie klasy spowoduje zwrócenie danych o pakiecie oraz publicznych i chronionych polach/metodach. Oczywiście wynik programu możemy regulować za pomocą dużej ilości opcji. Przydatne kiedy debugujemy kod na zapomnianym serwerze z Javą 1.3 bez dostępu do API w innej postaci (man, internet, IDE) 😉
  • JDB – debugger dla Javy. Jeśli myśl o próbach zabawy z tym narzędziem bez IDE przyprawia Cię o drżenie rąk to wiedz, że nie jesteś jedynym.
  • JMap i JHat – narzędzia do tworzenia zrzutów sterty oraz do ich analizy. Parametrem do analizy przez program JHat może być efekt działania JMap. Program JHat po przeanalizowaniu pliku uruchamia serwer WWW i udostępnia dane na temat zrzutu.
  • JConsole i JVisualVM – ładne narzędzia graficzne do zarządzania i statystyki JVM (zarówno lokalnych jak i zdalnych). Są to nakładki wykorzystujace niektóre wspomniane powyżej narzędzia. Długo by pisać – zachęcam do zapoznania się z nimi.

Pozostałe narzędzia są w fazie eksperymentalnej (np. jrunscript) bądź też dość często używane, ale przez inne biblioteki i narzędzia (wsgen, javadoc, xjc, jar). Wielu z powyższych narzędzi możemy nigdy nie potrzebować. Warto jednak zajrzeć do folderu BIN, tak tylko z wrodzonej ciekawości 😉

Advertisements

One thought on “Narzędzia JDK

  1. Koziołek

    Javap ma jeszcze jedną zaletę – pozwala podejrzeć co kompilowało nam klasę i dlaczego leci błąd typu ClassFormatException. Przydatne jeżeli z jakiegoś dziwnego powodu mamy różne wersje JVM na serwerze i na dev.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s