Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
pl:miw:miw08_ruleruntimeo [2008/06/04 12:27]
miw
pl:miw:miw08_ruleruntimeo [2008/06/14 14:46]
gjn
Linia 1: Linia 1:
-====== Opis ====== 
- 
-**Grzegorz Caban**, <​grzegorz.caban@gmail.com>​ 
- 
-Investigate runtime integration aspects, mainly the integration of the Object-Oriented Model in Prolog with a Java VC possibilities executable design, LogTalk, etc. 
-    * input Java, OO Prolog documentation,​ MVC concept. ​  ​[[http://​www.prologonlinereference.org/​oop.psp|Prolog OOP]], [[http://​www.logtalk.org|LogTalk]],​ [[http://​www.trinc-prolog.com/​doc/​pl_obj.htm|TrincProlog]],​ [[http://​www.sics.se/​isl/​sicstuswww/​site/​index.html|SICStus Prolog]] 
-    * output 
-Feasibility study, a prototype. ​ 
- 
-[[pl:​miw:​miw08_ruleruntimeo:​spotkania | Historia spotkań ]] 
- 
- 
- 
-====== Projekt ====== 
-  * {{:​pl:​miw:​mvceditorlogtalk.zip|Edytor Tekstu oparty o MVC}} -  View i Controller w J2SE, Model w Logtalk, modyfikacja istniejącej aplikacji napisanej w całości w J2SE, podmiana Model na Logtalk + implementacja integracji Java <-> Logtalk w Controller 
-  * {{:​pl:​miw:​thermostatlogtalk.zip|Termostat oparty o MVC}} -  View i Controller w J2SE, Model w Logtalk, przykład termostatu zaimplementowanego od podstaw w Javie i Logtalk'​u na podstawie ​ [[hekate:​hekate_case_thermostat|modelu reguł]]. 
- 
- 
-==== Uruchomienie ==== 
-Oba powyższe projekty to skompresowane projekty Eclipse, aby je uruchomić należy : 
-  - Rozpakować zawartość archiwum do wybranego przez siebie folderu, ​ 
-  - Uruchomić Ecplipse IDE i jako Workspace wybrać folder wybrany w punkcie pierwszym 
-  - Nastepnie z menu kontekstowego Eclipse wybieramy **File -> New Project** ​ 
-  - W oknie dialogowym wybieramy :  **Java Project -> Next** 
-  - Zaznaczamy radiobutton : **Create project from existing source** i klikając ​ browse wybieramy folder zawierający rozpakowane źródła projektu z punktu 1 
-  - Wpisujemy nazwe projektu (musi być zgodna z nazwa folderu wybranego w poprzednim punkcie), klikamy **Next** 
-  - wybieramy finish na ostatniej stronie okna dialogowego 
-  - prawdopodobnie konieczne będzie [[pl:​miw:​miw08_ruleruntimeo:​howto|skonfigurowanie JPL i logtalk]] 
-  - projekt jest gotowy do uruchomienia 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-====== Sprawozdanie ====== 
- 
-===== Cel projektu ===== 
-Celem projektu było przetestowanie możliwości budowy aplikacji wielowarstwowych opartych o wzorzec projektowy MVC przy użyciu Javy oraz Prologa. Zakładając,​ że aplikacja jest projektowana zgodnie z metodologia programowania obiektowego i na etapie projektowania aplikacji nie decydujemy, który moduł, czy wręcz obiekt której klasy ma zostać zaimplementowany przy użyciu Javy, a który w Prologu. Dopiero osoba implementująca ten projekt powinna mieć możliwość teoretycznie dowolnego wyboru jednej z tych technologii,​ w zależności od tego jak wygodniej będzie zaimplementować dany obiekt. ​ 
-Tak postawione założenia wymuszają znalezienie technologi/​framework'​a umożliwiającego:​ 
-  * Tworzenie kodu w języku Prolog z wykorzystaniem wszystkich dobrodziejstw programowania obiektowego. Jest to warunek konieczny, aby zapewnić pełną dowolność implementowania poszczególnych klas modelu w Prologu lub Javie, musimy zapewnić, że Prolog będzie zapewniał te same możliwości abstrakcji danych, enkapsulacji,​ dziedziczenia itp co Java. 
- 
-   * Wygodną integracje kodu Prolog'​a z kodem w Javie, w ideale bez tworzenia dodatkowego kodu służącego tylko do komunikacji pomiędzy obiektami napisanymi w różnych językach, a w praktyce minimalizujących ilość takiego kodu. Zwłaszcza istotne wydaje się aby implementacja tej warstwy komunikacyjnej dała się łatwo odseparować od logiki samej aplikacji, tak aby minimalnie zaburzyć projekt wejściowy. 
-  * Warte podkreślenia jest też wymóg integracji obiektów Prologa i Javy dopiero na etapie runtime'​u,​ nie chodzi tutaj o wygenerowanie kodu Javy na podstawie kodu Prologa i poźniejsze uruchomienie aplikacji w samej Javie. 
- 
- 
-Pierwszym zatem zadaniem było znalezienie odpowiedniego framework'​a umożliwiającego tworzenie obiektów w Prologu oraz integracje tych obiektów z obiektami zaimplementowanymi w Javie. 
- 
- 
-===== Obiektowy Prolog ===== 
-Poniżej znajduje się lista framework'​ów,​ które zostały w ramach tego projektu przetestowane w nadziei znalezienia spełniającego wyżej postawione zadania : 
- 
- ​[[pl:​miw:​miw08_ruleruntimeo:​oopframeworks|Analiza istniejących rozwiązań]] 
- 
-===== Wybrane rozwiązanie ===== 
- 
-Jako docelowa platforma realizacji projektu został wybrany [[http://​www.logtalk.org|LogTalk]] ze względu na fakt że zapewnia on pełne wsparcie dla obiektowości w Prologu, oraz jest w przeciwieństwie do [[http://​www.sics.se/​isl/​sicstuswww/​site/​index.html|SICStus Prolog]] i [[http://​www.sics.se/​isl/​sicstuswww/​site/​index.html|SICStus Prolog]] technologią w pełni Open Source, podczas gdy pozostałe dające praktycznie podobne możliwości są niestety technologiami komercyjnymi. ​ 
- 
-===== Integracja LogTalk'​a z Java ===== 
-Niestety sam Logtalk nie wspiera w żaden sposób integracji obiektów tworzonych przy jego pomocy z innymi językami obiektowymi. Dlatego kolejnym krokiem jest było znalezienie narzędzia umożliwiającego integracje Logtalk'​a z Java. Ponieważ docelowym kompilatorem Prologa używanym w tym projekcie jest SWI Prolog, naturalna wydała się próba użycia do tego celu jedno z pakietów standardowych dołączanych do tej dysytrybucji,​ czyli [[http://​www.swi-prolog.org/​packages/​jpl/​|JPL]] który oferuje dwustronny interface pomiędzy Prologiem a Java.Jeżeli dodać do tego obiektowość oferowaną przez LogTalk to wydaje się, że jest to zestaw spełniający dane wymagania. ​ 
-[[pl:​miw:​miw08_ruleruntimeo:​jpljava | Przykład użycia JPL do komunikacji Prolog'​a z Java]]. 
- 
- 
-Przykład całej klasy napisanej w Javie, służącej do komunikacji z obiektami LogTalk znajduje się tutaj [[https://​dev.crazydwarves.org/​ProjetM1TER/​browser/​trunk/​src/​fr/​up5/​mi/​etu/​vnfc/​argumentation/​engine/​LogtalkEngine.java|LogTalkEngine]] 
- 
-== Napotkane problemy i rozwiazania == 
- 
-Podczas realizacji tego projektu natrafiono na sporo problemów natury konfiguracyjnej,​ co wydaje się dość naturalne jako że używamy kilka niezależnie tworzonych bibliotek. Oto lista ważniejszych problemów wraz z opisem ich rozwiązania : 
-  * [[pl:​miw:​miw08_ruleruntimeo:​prologmodules | Używanie modułów zewnętrznych modułów Prologa z obiektów Logtalk]] 
-  * [[pl:​miw:​miw08_ruleruntimeo:​swiconfig | Konfiguracja SWI-Prolog do współpracy z  Logtalk]] 
- 
-[[pl:​miw::​miw08_ruleruntimeo:​howto | Jak skonfigurować JPL i Logtalk ]] - uwagi na temat użycia i konfiguracji JPL i Logtalk do współpracy z Java. 
- 
- 
- 
- 
-Celem przetestowania znalezionych rozwiązań na przykładzie prostej aplikacji opartej o wzorzec MVC, powstały dwie aplikacje opisane poniżej. Inne brane pod uwagę przykłady prostych projektów [[pl:​miw::​miw08_ruleruntimeo:​mvcexamples|aplikacji opartych o MVC]] 
- 
-===== Edytor Tekstu ===== 
- 
-Celem tego przykładu była próba zmiany gotowej aplikacji napisanej w [[http://​java.sun.com/​developer/​technicalArticles/​javase/​mvc/​| Javie opartej o wzorzec MVC]], na aplikacje której część logiki jest zaimplementowana poprzez obiekty Logtalk. 
- 
- 
-[[pl:​miw::​miw08_ruleruntimeo:​mvceditor | Jak zaimplementować model w Logtalku, w gotowej aplikacji J2SE opartej o MVC]] 
- 
- 
-===== Termostat ===== 
-W odróżnieniu od poprzedniego przykładu temu przyświecał cel próby implementacji całej aplikacji, mając na starcie tylko [[hekate:​hekate_case_thermostat|model]] w formie diagramów ARD, XTT. Model ma zostać zaimplementowany w Logtalk'​u,​ reszta w Javie. 
- 
- 
-[[pl:​miw::​miw08_ruleruntimeo:​mvcthermostate | Jak zaimplementować MVC w Javie i Logtalku na podstawie diagramów ARD, XTT]] 
- 
- 
- 
- 
- 
-====== Materiały ====== 
-  * [[http://​java.sun.com/​developer/​technicalArticles/​javase/​mvc/​|Opis edytora tekstu z strony Sun'​a]] oraz  {{:​pl:​miw:​mvceditordescription.zip|kod tej strony}} 
-  * {{:​pl:​miw:​mvcexample.zip|źródła edytora dokumentów w oryginale (bez Logtalk)}} ​ 
-  * [[https://​dev.crazydwarves.org/​ProjetM1TER/​wiki|Projekt wykorzystujący Logtalk i JPL do integracji z Java]] 
-  * [[http://​logtalk.org/​|Logtalk - strona główna ]] 
-  * [[http://​www.swi-prolog.org/​packages/​jpl/​| Dokumentacja do JPL ]] 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
  
pl/miw/miw08_ruleruntimeo.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0