Biblioteka SWT w Ubuntu 3


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.


Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

3 komentarzy do “Biblioteka SWT w Ubuntu