Both sides previous revision
Poprzednia wersja
|
|
pl:miw:miw08_ruleruntimeo:howto [2008/05/20 02:08] miw |
pl:miw:miw08_ruleruntimeo:howto [2008/05/31 21:39] miw |
====== 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ę. | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |