Różnice

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

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
Nowa wersja Both sides next revision
pl:miw:miw08_prolog_java [2008/06/02 03:53]
miw
pl:miw:miw08_prolog_java [2008/06/14 09:49]
gjn
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
 +
 Piotr, Strzelczyk, <​pit.strzelec@gmail.com>​ Piotr, Strzelczyk, <​pit.strzelec@gmail.com>​
  
Linia 55: Linia 57:
  
 ====== Sprawozdanie ====== ====== Sprawozdanie ======
 +
  
  
Linia 87: Linia 90:
 Manual jest w download-ach,​ więc znalezienie jego zajmuje trochę czasu (nie widać linku na głównej stronie). Manual jest w download-ach,​ więc znalezienie jego zajmuje trochę czasu (nie widać linku na głównej stronie).
  
-Dokumentacja ​73 strony (przeglądnięta na szybko przelotem) wnioski:+Manual ​73 strony (przeglądnięta na szybko przelotem) wnioski:
   * bardzo bogaty opis z przykładami,​ jeżeli chodzi o integrację java -> prolog   * bardzo bogaty opis z przykładami,​ jeżeli chodzi o integrację java -> prolog
   * mało napisane o samej integracji prolog -> java   * mało napisane o samej integracji prolog -> java
Linia 120: Linia 123:
 Wygląda na to, że umożliwia integrację Prologu z serwerami Javy oraz Javę z serwerem Prologu! Wygląda na to, że umożliwia integrację Prologu z serwerami Javy oraz Javę z serwerem Prologu!
  
-Dokumentacja ​1246 stron (przeglądana na szybko przelotem) wnioski:+Manual ​1246 stron (przeglądana na szybko przelotem) wnioski:
   * integracja przez PrologBeans   * integracja przez PrologBeans
   * kod Javy wywołuje zapytanie do Prologu (wniosek z przykładu)   * kod Javy wywołuje zapytanie do Prologu (wniosek z przykładu)
Linia 138: Linia 141:
 Strona bardzo prosta, przejrzysta i szybko można znaleść tego czego się potrzebuje. Strona bardzo prosta, przejrzysta i szybko można znaleść tego czego się potrzebuje.
  
-Dokumentacja ​w pliku .doc (przeglądana na szybko przelotem) wnioski: +Manual ​w pliku .doc (przeglądana na szybko przelotem) wnioski: 
-  * bardzo ​krótka +  * bardzo ​krótki 
-  * zwięzłi wygląda na bardzo ​konkretną+  * zwięzłi wygląda na bardzo ​konkretny
   * szybko można znaleść tego co się szuka   * szybko można znaleść tego co się szuka
  
Linia 163: Linia 166:
 Strona prosta i łatwa w przeglądzie i znajdywaniu informacji Strona prosta i łatwa w przeglądzie i znajdywaniu informacji
  
-Dokumentacja ​w formie HTML (przeglądana na szybko przelotem) wnioski: +Manual ​w formie HTML (przeglądana na szybko przelotem) wnioski: 
-  * prosta+  * prosty
   * szybko można znaleść przykład   * szybko można znaleść przykład
   * wygląda na to, że Java wywołuje zapytania do Prologu (przypomina to działanie biblioteki JIProlog)   * wygląda na to, że Java wywołuje zapytania do Prologu (przypomina to działanie biblioteki JIProlog)
Linia 337: Linia 340:
 ^ JPL          | Zbiór klas Javy i funkcji w C dostarczających interfejs pomiędzy Prologiem, a Javą, używa JNI (Java Nativ Interface) | Windows (tylko wersja JPL 2.0.2), Linux (tylko wersja JPL 1.0.1) ​        | SWI Prolog | brak informacji | ^ JPL          | Zbiór klas Javy i funkcji w C dostarczających interfejs pomiędzy Prologiem, a Javą, używa JNI (Java Nativ Interface) | Windows (tylko wersja JPL 2.0.2), Linux (tylko wersja JPL 1.0.1) ​        | SWI Prolog | brak informacji |
 ^ TuProlog ​    | Wymaga tylko obecności JVM oraz zainicjalizowania jednego pliku .jar, który zawiera najważniejsze mechanizmy maszyny Prologu | brak dokładnych informacji, prawdopodobnie Windows, ale skoro to wymaga tylko załadowania .jar to najprawdopodobniej pójdzie na wszystkich OS wspieranych przez Javę | Brak wymagań! | brak informacji | ^ TuProlog ​    | Wymaga tylko obecności JVM oraz zainicjalizowania jednego pliku .jar, który zawiera najważniejsze mechanizmy maszyny Prologu | brak dokładnych informacji, prawdopodobnie Windows, ale skoro to wymaga tylko załadowania .jar to najprawdopodobniej pójdzie na wszystkich OS wspieranych przez Javę | Brak wymagań! | brak informacji |
 +
  
  
Linia 454: Linia 458:
     * kliknii ok      * kliknii ok 
   - Należy sprawdzić czy w katalogu SWI_HOME\bin znajduje się pakiet jpl.dll, jeżeli nie to należy go odszukać w katalogach SWI_HOME i dodać do katalogu SWI_HOME\bin.   - Należy sprawdzić czy w katalogu SWI_HOME\bin znajduje się pakiet jpl.dll, jeżeli nie to należy go odszukać w katalogach SWI_HOME i dodać do katalogu SWI_HOME\bin.
-  -  
  
 === 2.4. Instalacja TuProlog === === 2.4. Instalacja TuProlog ===
Linia 493: Linia 496:
  
 Implementacja kodu została zamieszczona [[pl:​miw:​miw08_prolog_java:​tuProlog|tutaj]]. Implementacja kodu została zamieszczona [[pl:​miw:​miw08_prolog_java:​tuProlog|tutaj]].
 +
 +
 +
 +
 +
 +
  
  
Linia 522: Linia 531:
  
 === 4.2. Porównanie wszystkich bibliotek. === === 4.2. Porównanie wszystkich bibliotek. ===
-JIProlog niestety w trakcie implementacji okazał się być częściowo shareware. Była to nie miła niespodzianka,​ gdyż nagle w trakcie implementacji przy wywołaniu jednej metody wyskoczyło okienko informujące,​ że ta biblioteka posiada pewne funkcje nie będące freeware. Z wymienionych tu względów biblioteka ta została najgorzej oceniona i odpadła z dalszej części jej analizowania.+JIProlog niestety w trakcie implementacji okazał się być częściowo shareware. Była to nie miła niespodzianka,​ gdyż nagle w trakcie implementacji przy wywołaniu jednej metody wyskoczyło okienko informujące,​ że ta biblioteka posiada pewne funkcje nie będące freeware. Z wymienionych tu względów biblioteka ta została najgorzej oceniona i odpadła z dalszej części jej analizowania. Na stronie obecnie jest informacja, że jest to shareware, ale w pełni dostępna. Niestety jest to fałszywa informacja, gdyż niektóre pakiety zostały przemianowane na nazwy typu "​a",​ "​aa",​ "​aaa",​ "​ab",​ "​aab"​ itd.
 TuProlog jest dość ciekawym pomysłem, ale ze względu na fakt, że nie jest to w pełni rozwinięty symulator prologu, brakuje mu pewnych możliwości. Okazuje się, że zaimplementowanie systemu eksperckiego przerasta tą bibliotekę. Może jest to możliwe, ale w porównaniu z JPL, czy InterProlog,​ gdzie plik prologowy można od razu załadować tutaj stanowi to barierę nie do przejścia. Może projekt z biegiem czasu zostanie na tyle rozbudowany,​ że stanie się znaczną konkurencją dla JPL oraz InterPrologu,​ ale wówczas może się pojawić nurtujące pytanie o wydajność (w sensie szybkości przetwarzania) takiego symulatora prologu. TuProlog jest dość ciekawym pomysłem, ale ze względu na fakt, że nie jest to w pełni rozwinięty symulator prologu, brakuje mu pewnych możliwości. Okazuje się, że zaimplementowanie systemu eksperckiego przerasta tą bibliotekę. Może jest to możliwe, ale w porównaniu z JPL, czy InterProlog,​ gdzie plik prologowy można od razu załadować tutaj stanowi to barierę nie do przejścia. Może projekt z biegiem czasu zostanie na tyle rozbudowany,​ że stanie się znaczną konkurencją dla JPL oraz InterPrologu,​ ale wówczas może się pojawić nurtujące pytanie o wydajność (w sensie szybkości przetwarzania) takiego symulatora prologu.
-Od wyżej wymienionych bibliotek znacznie odstaje JPL i InterProlog. Obie biblioteki umożliwiają załadowanie pliku prologowego "​.pl"​. Powoduje to dość znaczną redukcję kodu. Programy nie przekraczają praktycznie 10 linii kodu (dla przypadku implementacji systemu eksperckiego car.pl). Występują jednak różnice w realizacji celu obu bibliotek. Jeżeli chodzi o samą konfigurację systemu do pracy z oboma bibliotekami to InterProlog ​jest 100% wygranym. Aby zainstalować JPL trzeba przeczytać uważnie instrukcję i dodać ​liczne zmienne środowiskowe,​ jak i do odpowiednich plików ​SWI Prologu. InterProlog w tej kwestii wymaga dodania tylko jednej zmiennej środowiskowej. +Od wyżej wymienionych bibliotek znacznie odstaje JPL i InterProlog. Obie biblioteki umożliwiają załadowanie pliku prologowego "​.pl"​. Powoduje to dość znaczną redukcję kodu. Programy nie przekraczają praktycznie 10 linii kodu (dla przypadku implementacji systemu eksperckiego car.pl). Występują jednak różnice w realizacji celu obu bibliotek. Jeżeli chodzi o samą konfigurację systemu do pracy z oboma bibliotekami to InterProlog ​wydaje się być lepszy. Aby zainstalować JPL trzeba przeczytać uważnie instrukcję i dodać ​ewentualne pliki w odpowiednie miejsca w SWI Prologu. Brak właśnie dynamicznej biblioteki .dll, był przyczyną starty dużej ilości czasu. InterProlog w tej kwestii wymaga dodania tylko jednej zmiennej środowiskowej. 
-Jeżeli chodzi o szybkość zapoznania się z daną biblioteką to SWI Prolog jest lepszy (subiektywna ocena autora). Bardzo szybko można uruchomić przykład dość prosty i intuicyjny pozwalający zrozumieć zasadę korzystania z JPL. InterProlog okazał się bardziej skomplikowany,​ a przykłady niestety nie uruchamiały się. W trakcie próby poznawania InterPrologu powstał kłopot z uruchomieniem ​jego. Okazało się, że InterProlog potrzebuje znać dokładną ściężkę do pliku uruchomieniowego prologu.+Jeżeli chodzi o szybkość zapoznania się z daną biblioteką to SWI Prolog jest lepszy (subiektywna ocena autora). Bardzo szybko można uruchomić przykład dość prosty i intuicyjny pozwalający zrozumieć zasadę korzystania z JPL. InterProlog okazał się bardziej skomplikowany,​ a przykłady niestety nie uruchamiały się. W trakcie próby poznawania InterPrologu powstał kłopot z jego uruchomieniem. Okazało się, że InterProlog potrzebuje znać dokładną ściężkę do pliku uruchomieniowego prologu.
 Sama realizacja systemu eksperckiego okazała się również łatwiejsza w SWIPrologu, gdyż uruchamia on na konsoli w osobnym oknie system ekspercki car.pl i wpisywanie odpowiedzi jest dość łatwe i intyitywne. InterProlog zmusza do wywołania klasy, która uruchamia okienko javowe będące konsolą prologu (pod javą). Problematyczne dla późniejszego użytkownika jest korzystanie z tego okienka. Jest ono mało intuitywne. Odpowiedzi wpisuje się pod spodem w osobnym wydzielonym polu. Mimo licznych metod i klas związanych z obsługą GUI, okazało się nie możliwe stworzenie własnego interface'​u,​ który by obsługiwał bezpośrednio uruchomiony program. Sama realizacja systemu eksperckiego okazała się również łatwiejsza w SWIPrologu, gdyż uruchamia on na konsoli w osobnym oknie system ekspercki car.pl i wpisywanie odpowiedzi jest dość łatwe i intyitywne. InterProlog zmusza do wywołania klasy, która uruchamia okienko javowe będące konsolą prologu (pod javą). Problematyczne dla późniejszego użytkownika jest korzystanie z tego okienka. Jest ono mało intuitywne. Odpowiedzi wpisuje się pod spodem w osobnym wydzielonym polu. Mimo licznych metod i klas związanych z obsługą GUI, okazało się nie możliwe stworzenie własnego interface'​u,​ który by obsługiwał bezpośrednio uruchomiony program.
  
  
 +=== 4.3. Porównanie InterPrologu i JPL od strony realizacji progrmistycznej. ===
 +
 +Obie biblioteki opierają się na silniku prologu i uruchamiają go przez odpowiednią metodę. Różnica między oboma bibliotekami jest znikoma jeżeli chodzi o proste programowanie w prologu. W momencie gdy chce się zaimplementować np. system ekspercki każda biblioteka obiera wówczas idzie inną drogą. InterProlog zmusza do korzystania z GUI, które jest nie jako stworzone na sztywno. Użytkownik (programista) nie ma możliwości definiowania ułożenia okienka, prezentowanych elementów itd. Stanowi to dość mocne ograniczenie. Jest to cena jaką płaci się za gotowe metody do obsługi GUI. JPL wykazuje się tutaj dużą swobodą. Uruchamia on prolog na konsoli i otrzymuje rezultat akcji. Możliwe jest tutaj zaprogramowanie własnego GUI, co wiąże się z większym nakładem czasu pracy, ale z drugiej strony stworzona aplikacja odpowiada w pełni naszym oczekiwaniom i możemy dowolnie ją modyfikować zgodnie z swoją implementacją.
 +
 +
 +
 +=== 4.4. Porównanie InterPrologu i JPL - możliwości API. ===
 +
 +Jeżeli chodzi o API to InterProlog jest o wiele bardziej rozbudowany. Jest to związane z faktem, że obsługuje on oprócz SWI Prologu jeszcze YAP Prolog i XSB Prolog. Dodatkowo dostarcza on cały pakiet związany z GUI, umożliwając bardzo szybką implementację aplikacji okienkowej (niestety forma okienek i ich budowa jest narzucona). JPL ma bardzo skromne API. Jest przejrzyste,​ proste i bardzo łatwo można się domyśleć co do czego służy. Nie dostarcza dość zaawansowanych metod jak InterProlog. Można powiedzieć,​ że JPL jest biblioteką bardziej skoncentrowaną na realizację celu samej integracji, starając się zachować jak największą prostotę.
 +
 +Pakiety InterPrologu:​
 +  * com.declarativa.interprolog - tu znajdują się główne metody integrujące prolog z javą
 +  * com.declarativa.interprolog.gui - tu znajdują się wszystkie motody związane z obsługą i tworzeniem GUI
 +  * com.declarativa.interprolog.util - tu znajdują się metody związane z samą interakcją prolog <-> java
 +  * com.xsb.interprolog - metody związane z obsługą XSB Prologu
  
 +Pakiety JPL:
 +  * jpl - tu znajdują się główne metody związane z integracją prologu z javą oraz metody i obiekty związane z interakcją prolog <-> java (interface wyższego poziomu)
 +  * jpl.fli - tu znajdują się statyczne zmienne i metody niskiego poziomu i raczej żadko się z nich korzysta (z punktu widzenia przeciętnego programisty)
  
 ==== 5. Wnioski. ==== ==== 5. Wnioski. ====
  
-Obecnie wydaje się, że z porównanych bibliotek JIProlog, TuProlog, JPL oraz InterProlog tylko ostatnie dwie nadają się do intergracji Javy i Prologu. JPL jest biblioteką znacznie bardziej intuicyjną dla programistów Prologu (subiektywna ocena autora) natomiast InterProlog bardziej wymaga od użytkownika znajomość Javy. Samo uruchomienie systemu eksperckiego car.pl pozwala wyciągnąć wniosek, że InterProlog przez komunikację przez okienko Javowe jest bardziej bliższy językowi Java. JPL wydaje się jednak dawać większą swobodę w programowaniu i jest bardziej nastawiony na prostotę w implementacji. JPL posiada jednak pewne wady. Ogranicza on się przede wszystkim tylko do jednej wersji prologu - SWI Prolog. InterProlog oferuje obsługę trzech rodzajów prologu - SWI Prolog, XSB Prolog, YAP Prolog. Ciężko jest jednoznacznie określić, która biblioteka jest lepsza - jest to ocena zależna od użytkownika. Jeżeli ktoś poszukuje biblioteki mającej wiele możliwości,​ która oferuje wiele rozwiązań oraz programista lubi język Java, to godny polecenia jest InterProlog. Jeżeli komuś zależy na prostocie i szybkości realizacji celu to warto jednak skorzystać z JPL.+Obecnie wydaje się, że z porównanych bibliotek JIProlog, TuProlog, JPL oraz InterProlog tylko ostatnie dwie nadają się do intergracji Javy i Prologu. JPL jest biblioteką znacznie bardziej intuicyjną dla programistów Prologu (subiektywna ocena autora) natomiast InterProlog bardziej wymaga od użytkownika znajomość Javy. Samo uruchomienie systemu eksperckiego car.pl pozwala wyciągnąć wniosek, że InterProlog przez komunikację przez okienko Javowe jest bardziej bliższy językowi Java. JPL wydaje się jednak dawać większą swobodę w programowaniu i jest bardziej nastawiony na prostotę w implementacji. JPL posiada jednak pewne wady. Ogranicza on się przede wszystkim tylko do jednej wersji prologu - SWI Prolog. InterProlog oferuje obsługę trzech rodzajów prologu - SWI Prolog, XSB Prolog, YAP Prolog. Ciężko jest jednoznacznie określić, która biblioteka jest lepsza - jest to ocena zależna od użytkownika. Jeżeli ktoś poszukuje biblioteki mającej wiele możliwości ​(związanych przede wszystkim z GUI), która oferuje wiele rozwiązań oraz programista lubi język Java, to godny polecenia jest InterProlog. Jeżeli komuś zależy na prostocie i szybkości realizacji celu oraz na małej zależności od biblioteki ​to warto jednak skorzystać z JPL.
  
 ====== Materiały ====== ====== Materiały ======
pl/miw/miw08_prolog_java.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