Nowa wersja
|
Poprzednia wersja
Nowa wersja
Both sides next revision
|
pl:miw:miw08_ruleruntimeo:howto [2008/05/19 19:42] miw utworzono |
pl:miw:miw08_ruleruntimeo:howto [2008/05/20 02:08] miw |
====== Używanie JPL i Logtalk do tworznenia aplikacji zgodnych z wzorcem MVC ====== | ====== Używanie JPL i Logtalk do tworzenia aplikacji zgodnych z wzorcem MVC ====== |
| |
| ==== Instalacja JPL pod Windows==== |
| |
| Jako, że do komunikacji pomiedzy obiektami klas Javy i Logtalk'a używana jest bibliotek'a JPL, konieczne jest wcześniejsze jej zainstalowanie. |
| Jest ona standardowo instalowana wraz z środowiskiem SWI-Prolog, warto jednak podkreslic, ze instalowana jest biblioteka w wersji 3.1.3-alpha, podczas gdy wiekszość dokumentacji, którą można znaleźć na [[http://www.swi-prolog.org/packages/jpl/|stronie projektu]] dotyczy wersji 2.x. Skrótowy opis API do uzywania [[http://www.swi-prolog.org/packages/jpl/java_api/high-level_interface.html|Prologa z Javy]], natomiast opis API do uzywania [[http://www.swi-prolog.org/packages/jpl/prolog_api/overview.html|Javy z Prologa ]]. |
| |
| Jeżeli chodzi o konfigurowanie projektu w Javie konieczne jest też podanie scieżki do NativeLibrary czyli jpl.dll dla Windowsa (pod Linuxami bodajże jpl.so), ktora domyslnie znajduje sie w SWI_HOME_DIR\bin, gdzie SWI_HOME_DIR to folder instalacyjny SWI-Prolog.Aby JPL działał porawnie i możliwa bylo komunikacja pomiedzy Java, a Prologiem nalezy dokonać odpowiednich zmian w zmiennych systemowych zgodnych z instrukcją [[http://www.swi-prolog.org/packages/jpl/installation.html|instalacji JPL]]. W szczególności upewnić się : |
| * jpl.jar jest widoczny dla Javy, czyli np znajduje się w folderze obecnym w CLASSPATH |
| * Zmienna środowiskowa PATH zawiera folder, w którym znajduje się libpl.dll (domyślnie SWI_HOME_DIR\bin) |
| |
| Przy uwzglednieniu tych uwag wszystko powinno działać normalnie. |
| |
| ==== Konfiguracja Logtalk runtime ==== |
| |
| Aby móc używać obiektów Logtalk'a potrzebne jest nie tylko ich kod zrodlowy w plikach z rozszerzeniem lgt ale aby móc je skompilować i uruchomić, tworząc instancje tych obiektów konieczne jest załadowanie środowiska uruchomieniowego Logtalk'a. |
| Aby skonfigurowac odpowiednio kompilator SWI do pracy z LogTalk'iem należy uruchomić 3 pliki konfiguracyjne: |
| * configs/swi.config - ustawia zmienne i konfiguruj srodowisko Prologa |
| * complier/logtalk.pl - laduje kompilator LogTalka |
| * libpaths/libpaths.pl - ustawia sciezki do bibliotek standardowych LogTalka |
| Pliki te znajduja sie w katalogu instalacyjnym Logtalk'a (czyli domyslnie dla Windowsa C:\Program Files\Logtalk) |
| |
| chyba najwygodniej jest sporządzić sobie plik startowy o zawartosci: |
| <code prolog> |
| :-consult('lib/Resources/logtalk/swi.config'). |
| :-consult('lib/Resources/logtalk/logtalk.pl'). |
| :-consult('lib/Resources/logtalk/libpaths.pl'). |
| |
| </code> |
| |
| Zanim przystapimy do tworzenia instancji jakiego obiektu Logtalk'a konieczne bedzie uruchomienie tego pliku. |
| |
| ==== Podzial na klasy i moduly ==== |
| |
| Analizujac architekture wzorca MVC na przykladzie prostego [[http://java.sun.com/developer/technicalArticles/javase/mvc/|edytora tekstu ]], widoczną na poniższym diagramie : {{:pl:miw:miw08_ruleruntimeo:figure4.gif|:pl:miw:miw08_ruleruntimeo:figure4.gif}} |
| ---- |
| |
| Widać, że podmiana klas modelu na obiekty Logtalku może się odbyć tylko poprzez modyfikacje Kontrolera (Controller) na taki, który wykorzystując JPL będzie komunikował się z Logtalk'iem i przekazywał komunikaty do Widoku (View). Zatem klasy modelu napisane w Javie de facto mogą zostać podmienione przez obiekty Logtalk na zasadzie 1:1. |
| Niestety jako, że problematyczne okazało się wywoływanie zdarzeń bezpośrednio z kodu Prologa, konieczne było zastosowanie pewnych obejść żeby zachować istniejącą architekturę aplikacji, ale generlanie rzecz biorąc próba realizacji takiej podmiany udała się. |
| |
| |
- Instalacja JPL | |
- Konfiguracja Logtalk runtime | |
- Podzial na klasy i moduly | |
| |
| |