Ten artykuł ma na celu zaprezentowanie jak wystartować z Javą oraz biblioteką SWT na Ubuntu. Programiści Javy doskonale wiedzą czym jest SWT. To jedna z dwóch najczęściej dziś używanych bibliotek do projektowania interfejsów w języku Java. Tworzona jest ona w ramach projektu Eclipse. Aby jednak zacząć programować w języku Java z użyciem SWT, musimy wykonać kilka prostych kroków.
1. Instalacja niezbędnych pakietów.
1.1 Java Development Kit
W pierwszej kolejności niewątpliwie będzie nam niezbędny JDK (Java Development Kit). W zależności od wersji Javy wybieramy pakiet, którego nazwa wygląda podobnie do sun-javaX-jdk na przykład sun-java6-jdk.
1.2 Środowisko pracy
Przydałoby się jeszcze środowisko pracy. Mamy do wyboru wspomniany wcześniej Eclipse oraz NetBeans. Możemy ściągnąć je z repozytoriów: Eclipse – paczka eclipse, Netbeans – paczka netbeans (obecnie w postaci netbeansX.X – gdzie X.X to oznaczenie wersji) lub pobrać najnowsze wersje ze strony twórców.
1.3 Biblioteka SWT
Aby biblioteka SWT zaistniała w naszym systemie, instalujemy pakiety: libswt3.2-gtk-gcj, libswt3.2-gtk-java oraz libswt3.2-gtk-jni. Dlaczego tyle pakietów? Dlatego, że w architekturze systemu Linux musimy zainstalować dwa rodzaje bibliotek. Paczuszka libswt3.2-gtk-jni wkłada nam do systemu potrzebne biblioteki współdzielone (*.so potrzebne na etapie napisanego już programu), libswt3.2-gtk-java natomiast instaluje biblioteki potrzebne kompilatorowi Java (*.jar potrzebne na etapie kompilacji programu napisanego z użyciem SWT).
2. Konfiguracja
2.1 Konfiguracja JDK
Aby nasza biblioteka była widziana w systemie musimy przekopiować, lub stworzyć dowiązanie symboliczne pliku *.jar biblioteki SWT w katalogu z Java Runtime Enviroment. W przypadku mojego systemu (wybrałem dowiązanie symboliczne) wystarczyło:
sudo ln -s /usr/lib/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_3.2.2.v3236.jar /usr/lib/jvm/java-6-sun/jre/lib/ext/swt.jar
czyli w jakiś sposób dodanie biblioteki do katalogu /usr/lib/jvm/java-6-sun/jre/lib/ext/. Wybrałem nazwę swt.jar (często spotykaną w wielu opisach), a biblioteka w moim przypadku znajdowała się w /usr/lib/eclipse/plugins/. Jeżeli ściągałeś najnowszą wersję biblioteki ze strony SWT przekopiuj plik swt.jar z archiwum do katalogu rozszerzeń twojego JRE.
2.2 Konfiguracja środowiska Eclipse
2.2.1 Dodanie do tworzonego projektu
Bibliotekę SWT możemy dodać do naszego projektu już w trakcie jego tworzenia. Po wybraniu z menu File New Project … w oknie Select a wizard klikamy dwukrotnie na Java Project. Zostajemy przeniesieni do widoku Create a Java project gdzie w pole Project name wpisujemy nazwę projektu i klikamy Next. Widzimy teraz okno Java Settings. Wybieramy zakładkę Libraries na której, aby dodać naszą bibliotekę SWT do projektu, klikamy Add External JARs…. Mamy teraz wybór: możemy wskazać bibliotekę zainstalowaną w katalogu z pluginami eclipse (/usr/lib/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_3.2.2.v3236.jar) lub nasze zrobione wcześniej dowiązanie (/usr/lib/jvm/java-6-sun/jre/lib/ext/swt.jar). Nie odgrywa to w gruncie rzeczy większej roli. Po kliknięciu OK i Finish nasz nowo utworzony projekt potrafi już korzystać z biblioteki SWT.
2.2.2 Dodanie do JRE System Library
Każdy projekt zawiera domyślnie pozycję JRE System Library. Pozycja ta jest standardowo dołączana do wszystkich nowo tworzonych projektów. Jeżeli chcemy, aby wszystkie potrafiły korzystać z SWT, możemy dorzucić je właśnie do JRE System Library, dzięki temu nie będziemy musieli przechodzić całej procedury, opisanej w poprzednim paragrafie, za każdym razem gdy będziemy chcieli skorzystać w projekcie z biblioteki SWT.
Wybieramy Window Preferences …. Po otworzeniu się okna z menu po lewej stronie wybieramy kolejno: Java, Installed JREs. Pojawi nam się lista zainstalowanych w systemie środowisk uruchomieniowych Java. Interesuje nas to zaznaczone tickiem. Wybierz je z listy i wciśnij przycisk Edit…. Aby dodać bibliotekę wybierz Add External JARs…. I ponownie wybieramy /usr/lib/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_3.2.2.v3236.jar lub /usr/lib/jvm/java-6-sun/jre/lib/ext/swt.jar. Od tej pory każdy tworzony przez nas projekt, zawierający w sobie domyślne biblioteki JRE System Library, będzie obsługiwał SWT.
2.3 Konfiguracja środowiska NetBeans
Po stworzeniu swojego projektu, klikamy prawym przyciskiem myszy jego nazwę w widoku Projects i wybieramy Properties. Z listy znajdującej się po lewej stronie okna wybieramy Libraries i znajdując się w zakładce Compile klikamy Add JAR/Folder. Wskazując na folder /usr/lib/eclipse/plugins udostępniamy NetBeans biblioteki, z których korzysta Eclipse. Po tym kroku będziemy mogli swobodnie zaimportować do naszego projektu biblioteki SWT.
3. Uruchamianie
3.1 Uruchamianie aplikacji w Eclipse
Aby uruchomić aplikację w Eclipse wystarczy wybrać z menu Run Run As SWT Application.
3.2 Uruchamianie aplikacji w NetBeans
Aby uruchomić aplikację w NetBeans wchodzimy, klikając prawym klawiszem na jego nazwie, w Properties projektu i w kategorii Run w pole VM Options: wpisujemy:
-Djava.library.path=/usr/lib/jni
Linijka ta zostanie dopisana jako parametr wywołania środowiska uruchomieniowego Java podając dodatkową ścieżkę, w której znajdują się biblioteki wspóldzielone SWT potrzebne do uruchomienia naszego programu.
3.3 Uruchamianie naszego programu (archiwum JAR) z konsoli
Aby uruchomić stworzone przez program archiwum JAR musimy wskazać maszynie wirtualnej java dodatkowe miejsce, w którym znajdują się biblioteki obsługujące w naszym systemie operacyjnym SWT (w naszym przypadku: /usr/lib/jni). Robimy to poprzez dodanie do parametru ścieżek, w których poszukiwane są biblioteki, naszego katalogu. Wywołanie programu będzie więc wyglądało następująco:
java -Djava.library.path=/usr/lib/jni -jar program.jar
gdzie program.jar to nasza aplikacja używająca SWT.
4. Przykładowy program
Aby przetestować działanie SWT możemy napisać przykładowy program:
package swtTests; import org.eclipse.swt.widgets.*; public class Main { public static void main(String [] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("Hello World !"); shell.open(); while (! shell.isDisposed()) { if(! display.readAndDispatch()) display.sleep(); } display.dispose(); } }
który wyświetli okienko z napisem Hello World ! w tytule.
5. Sprawa bibliotek
Konieczność podawania za każdym razem parametru do bibliotek współdzielonych jest szalenie niewygodna. Daje się szczególnie we znaki, gdy uruchamiamy dużą ilość programów używających SWT poza środowiskiem IDE. Na dzień dzisiejszy działającym w Ubuntu rozwiązaniem jest podejrzeć jak wygląda java.library.path, można to zrobić przy użyciu na przykład tego programu:
public class Testowanie { public static void main(String [] args) { String libpath = new String(System.getProperty("java.library.path")); System.out.println(libpath); } }
U mnie wyświetlił on:
/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/client:/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386:/usr/lib/jvm/java-6-sun-1.6.0.03/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib
Po skopiowaniu zawartości folderu /usr/lib/jni do któregokolwiek z katalogów podanych na ścieżce (np. /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386) Java będzie obsługiwała SWT automatycznie. Minusem kopiowania plików jest to, iż po aktualizacji pakietu Java nadal będzie korzystać ze starych plików. Problem ten rozwiązują dowiązania symboliczne. Jeżeli masz troszkę więcej czasu użyj właśnie ich. Jeżeli nazwy plików w paczkach nie zmienią się, Java, dzięki dowiązaniom, będzie korzystała zawsze z najnowszych bibliotek.
good job =] Przyda sie 😉
Cieszę się 🙂 troszkę mnie to zaabsorbowało więc pomyślałem, że to opiszę, żeby innym ułatwić.
jutro wlasnie bede probowal zainstalowac o ile sie uda bo dzis troszke juz za poźno
P.i.S.