Laboratorium 8
Wprowadzenie do korzystania z bibliotek zewnętrznych oraz tworzenia plików JAR.
W trakcie ćwiczenia będzie wykorzystywana m.in. biblioteka JFreeChart, którą można pobrać ze strony http://www.jfree.org/jfreechart (jeśli nie działa, ściągnij stąd). Korzystając z informacji na stronie biblioteki należy pobrać wersję 1.0.19 (archiwum o nazwie: jfreechart-1.0.19.zip).
Możliwości biblioteki można zobaczyć uruchamiając demo dostępne na stronie biblioteki w zakładce "Samples". Aplikacja z przykładami dostępna jest również w pobranym archiwum ZIP, zawierającym bibliotekę i jej zasoby (m. in. kody źródłowe i dokumentację javadoc). Plik jfreechart-1.0.19-demo.jar to wykonywalne archiwum JAR, które w zależności od konfiguracji systemu operacyjnego można uruchomić poprzez dwukrotne kliknięcie lub poprzez kliknięcie prawym klawiszem i wybranie opcji : "Uruchom jako Oracle Java..." lub równoważną. Po uruchomieniu aplikacji powinno pojawić się okienko pozwalające na przeglądanie różnych typów wykresów, które można tworzyć za pomocą biblioteki JFreeChart:
Innym plikiem, z którym warto się zapoznać jest plik PDF. Możliwości biblioteki są dość duże, mimo iż jest darmowa. Niestety pewnym mankamentem jest to, że autorzy zarabiają na udostępnianiu szczegółowego podręcznika oraz kodów źródłowych wykresów z programu demonstracyjnego. Jednakże korzystając z dokumentacji javadoc można również bardzo efektywnie wykorzystać możliwości biblioteki.
Zadanie wstępne (0,5 pkt)
Korzystając z dowolnego wcześniej utworzonego projektu utwórz wykonywalny plik JAR. Z poziomu eclipse jest to dość proste: File -> Export -> Java -> Runnable JAR file, i dalej zgodnie z instrukcjami na ekranie. Sprawdź czy utworzony plik JAR poprawnie się uruchamia. Uruchom terminal i sprawdź również, czy plik można uruchomić z linii poleceń: java -jar nazwa_pliku.jar.
Dla dociekliwych: szczegółowe informacje nt. tworzenia plików JAR, pliku manifestu itp można znaleźć w oficjalnej dokumentacji: https://docs.oracle.com/javase/tutorial/deployment/jar/index.html
Przed przystąpieniem do dalszych zadań pobierz archiwum ze skompresowanymi dwoma projektami eclipse .
Zadanie 1 (3 pkt)
Bezpośrednio po zaimportowaniu projekt "Lab9_JFreeChart" będzie wskazywał błędy. Błędy wynikają z tego, że do projektu dołączone zostały zewnętrzne biblioteki JAR (jfreechart oraz jcommon), których lokalizacja wskazana była w formie ścieżki do pliku na komputerze, z którego projekt był eksportowany. Przykład ten pokazuje potencjalne problemy jakie mogą Państwo napotkać eksportując projekty korzystające z zewnętrznych bibliotek.
Należy zmodyfikować lokalizację plików JAR lub usunąć odwołania do tych bibliotek i dodać je ponownie. Można to zrobić edytując korzystając z opcji "Configure Build Path" (prawy klawisz na projekcie -> Build Path -> Configure... lub z menu głównego Projekt -> Properties i zakładana Java Build Path). W oknie konfiguracji należy wybrać zakładkę "Libraries" , gdzie można dodać odwołania do innych zewnętrznych bibliotek, oraz usuwać lub edytować ustawienia już dodanych bibliotek. Na komputerach ze starszą wersją javy konieczna może być również modyfikacja ustawień JRE.
Edytując ustawienia bibliotek można również wskazać lokalizację plików źródłowych oraz dokumentacji javadoc:
Nie jest to konieczne do poprawnego działania projektu, ale może być bardzo przydatne przy tworzeniu aplikacji (Eclipse będzie wyświetlał wskazówki przy korzystaniu z obiektów bibliotek oraz będzie możliwe wyświetlanie źródeł klas wchodzących w skład biblioteki).
Warto również wspomnieć, że na powyższym obrazie widoczna jest również m.in. opcja dodania biblioteki "Add Library", która pozwala na korzystanie z bibliotek, które użytkownik zdefiniował dla swojego środowiska Eclipse - przykład dla JFreeChart pokazany jest w dokumentacji na stronie 31). Definiowanie własnych bibliotek w eclipse jest przydatne, jeśli często z nich korzystamy w różnych projektach.
Po skorygowaniu ustawień projektu błędy powinny zniknąć i powinno być możliwe uruchomienie przykładowych programów pokazujących tworzenie najważniejszych typów wykresów. Warto się również zapoznać z przykładem WyswietlanieWykresow.java, pokazującym kilka alternatywnych metod wyświetlania wykresów.
Po uruchomieniu przykładów należy stworzyć NOWY PROJEKT a w nim aplikację, która będzie realizowała jedno z dwóch poniższych zadań:
Wersja A: Wczytywanie danych liczbowych z pliku tekstowego i rysowanie wykresu typu XY na podstawie wczytanych danych, przykład pliku: plik.
lub:
Wersja B: Rysowanie wykresów pięciu funkcji (np. sin, cos, funkcja liniowa, wielomian wyższego stopnia, logarytm...), przy czym interfejs aplikacji powinien pozwalać na wybór rysowanych funkcji.
Punktacja:
- Uruchomienie przykładów po wcześniejszej korekcie ustawień biblioteki – 0,5 pkt
- Stworzenie nowego projektu i aplikacji realizującej jedno z dwóch wskazanych powyżej zadań - 2 pkt.
- Stworzenie wykonywalnego pliku JAR, który uruchamiałby się i wyświetlał dowolny wykres - 0,5 pkt
Wskazówka: z poziomu Eclipse możliwe jest stworzenie pliku JAR zawierającego wymagane biblioteki - w tym celu należy w projekcie stworzyć folder o nazwie np. LIB (lub Libraries, biblioteki itp), oraz odpowiednio skonfigurować "Build Path" . Tak skonfigurowany projekt nie tylko pozwoli na tworzenie plików JAR zawierających niezbędne biblioteki, ale również możliwy będzie eksport/import projektu bez konieczności wykonanej powyżej modyfikacji "Build path". Opisana metoda została wykorzystana w drugim zaimportowanym projekcie Lab9_OrsonPDF.
Zadanie 2 (1,5 pkt)
W drugim zaimportowanym projekcie "Lab9_OrsonPDF" zawarte są przykłady wykorzystania biblioteki Orson PDF do generowania plików PDF. Projekt zawiera dwa pakiety - w jednym zebrane są przykładowe pliki przygotowane przez producenta biblioteki (pokazujące m.in. tworzenie wykresów i zapisywanie ich bezpośrednio do plików PDF). W drugim pakiecie zawarta jest klasa Prostokąt (analogiczna do wykorzystywanej w zadaniu 2 z Laboratorium 7) oraz program pozwalający na generowanie losowych prostokątów oraz zapis ich do pliku PDF.
Uwaga: większość przykładów nie tworzy GUI, więc po ich uruchomieniu nie będzie widoczne żadne okienko itp., jedynie utworzone będą pliki PDF, które można znaleźć w katalogu "workspace" (można też "odświeżyć" zawartość projektu Eclipse (prawy klawisz na projekcie w "package explorer" i opcja "Refresh"), w efekcie czego utworzone pliki PDF powinny być widoczne z poziomu Eclipse.
Po zapoznaniu się z przykładami (oraz ewentualnie dokumentacją biblioteki Orson PDF) należy stworzyć aplikację, która tworzyłaby plik PDF zawierający trzy strony. Na pierwszej stronie powinien być wykres utworzony za pomocą biblioteki JFreeChart, na drugiej powinny zostać zapisane dane liczbowe, na postawie których utworzono wykres (tekst w kolejnych wierszach, ewentualnie w formie tabeli). Na ostatneij stronie powinien być wygenerowany obraz (składający się przynajmniej z kilku linii, elips oraz grafiki wczytanej z zewnętrznego pliku graficznego).
Punktacja:
- Wygenerowanie pliku PDF zawierającego trzy strony oraz wykres – 0,5 pkt
- Wygenerowanie pliku PDF zawierającego trzy strony, w tym stronę z danymi liczbowymi na podstawie których utworzono wykres – 0,5 pkt
- Wygenerowanie pliku PDF zawierającego trzy strony, w tym stronę z grafiką (składającą się przynajmniej z kilku linii, elips oraz grafiki wczytanej z zewnętrznego pliku graficznego) - 0,5 pkt
Zadanie dodatkowe (1 pkt)
Po zakończeniu realizacji powyższych zadań możliwe jest uzyskanie dodatkowego punktu. W tym celu należy stworzyć aplikację korzystającą z biblioteki Orson Charts, która pozwala na tworzenie wykresów 3D. Korzystanie z biblioteki jest bardzo podobne do korzystania z JFreeChart (obie są tworzone przez te same osoby). Uzyskanie dodatkowego punktu będzie możliwe po stworzeniu dowolnego wykresu 3D z biblioteki Orson Charts, przy czym zawartość wykresu powinna być dynamiczne modyfikowana (należy stworzyć odpowiedni wątek).
Przydatne linki:
-
- Dokumentacja online JFreeChart: http://www.jfree.org/jfreechart/api/javadoc/index.html
- Strona biblioteki OrsonPDF: http://www.object-refinery.com/orsonpdf/index.html
- Strona biblioteki OrsonCharts pozwalającej na tworzenie wykresów 3D: http://www.object-refinery.com/orsoncharts/index.html