ˇ
RNDr. Tesková Jana - vedoucí
ˇ
Babka Vlastimil
ˇ
Bulan Zdeněk
ˇ
Dokulil Jiří
ˇ
Varga Martin
ˇ
Vitovják Radek
jIM bude náš vlastní instant
messenger (program pro komunikaci mezi lidmi podobný např. ICQ), postavený jako klient-server
aplikace. Server se bude starat o navazování spojení, bude udržovat seznam
uživatelů, bude se starat o propojení se sítí ICQ (pokud to bude možné) a
spoustu dalších věcí, viz dále. Klienti budou postaveni na mikrojádru, které
bude umožňovat pouze spojení se serverem a přímé spojení mezi jednotlivými
klienty. Veškerá další činnost klientů bude vykonávána moduly, které se budou
na mikrojádro napojovat. Napojení modulů bude řešeno přes standardizované
rozhraní, které umožní snadné přidávání modulů vytvořených uživatelem.
Bude napsán v jazyce C/C++ a poběží v OS Linux.
Jeho úkolem bude:
ˇ
uchovávat
seznam všech uživatelů a informací o nich (samozejmě včetně registrace nových
uživatelů a rušení jejich registrací)
ˇ
poskytovat veřejné informace o uživateli (je-li online,
jméno, apod. bude možno nastavit)
ˇ
navazovat spojení mezi přihlášenými uživateli, aniž by
uživatelé museli znát IP druhého účastníka, jednoduše podle jména apod.
ˇ
starat se o spojení mezi klienty, kteří nemohou
komunikovat jednoduše mezi sebou (např. posílání souborů mezi dvěma klienty za
firewallem)
ˇ
uchovávat seznam kontaktů uživatele
ˇ
uchovávat alespoň část historie rozhovorů mezi uživateli
ˇ
zprostředkovat komunikaci se sítí ICQ (aby každý uživatel
jIMa, který bude mít vlastní ICQ number, mohl komunikovat nejen s uživateli
sítě jIMa, ale i s uživateli v síti ICQ)
ˇ
spouštět mikrojádro a moduly pro ultratenké web-klienty
(viz níže)
Protože se šíří zvěsti, že
společnost ICQ plánuje změnu protokolu používaného ICQ klienty tak, aby nebylo
možné používat jiné klienty než jejich vlastní, není v tuto chvílo možné
zaručit funkčnost propojení na ICQ. Stejně tak zatím nelze zaručit úroveň ICQ
služeb, které bude jIM poskytovat (například posílání souborů, stažení contact
listu...). Přestože v tomto směru uděláme, co bude možné, slíbit zatím nemůžeme
nic.
Server bude dále používat
databázi, ve které budou uloženy informace o uživatelích a historie. Zatím není
jasné, zda využijeme služeb PostgreSQL, nebo se omezíme na základní funkce SQL
tak, abychom mohli použít libovolnou databázi s SQL jazykem.
Bude napsán v Javě, takže
poběží na všech platformách, kde běží Javovské aplikace. Bude se skládat z
mikrojádra, které se bude starat pouze o komunikaci - posílání a přijímání dat,
ať už mezi klientem a serverem nebo mezi dvěma a více klienty, a modulů, které
se postarají o vše ostatní. Modulů bude možno připojit libovolné množství,
budou mít definované rozhraní s mikrojádrem a tím pádem bude kdokoliv jiný moci
naprogramovat jakýkoliv další modul.
Klient navíc bude schopen do
jisté míry pracovat i bez serveru tak, že bude navazovat přímé spojení s
uživateli, jejichž IP adresu si pamatuje. Další funkce, která se obejde i bez
serveru je chování podobné UNIXovému TALKu, tj. schopnost navazovat spojení
nikoliv na uživatele ale na počítač, na kterém běží další klient jIMa.
Klient bude se serverem a
ostatními klienty komunikovat pomocí TCP/IP. Komunikace mikrojádra a modulů
bude probíhat skrz standardizované rozhraní, tak aby bylo možno k mikrojádru
připojit i další moduly, vytvořené podle potřeb uživatelů
Data budou posílána jako XML
nebo binární data podle požadavků konkretních modulů. XML přenos umožní dobrou
spolupráci s moduly, které budou v podstatě překládat část dat mezi
"svými" XML tagy, viz dále. Při absenci některého modulu, budou data
vypsána v nezpracované formě s varováním, že takový modul chybí.
Holý klient jIMa se skládá pouze
z mikrojádra a modulů pro uživatelské rozhraní. Jako ukázku rozšířitelnosti
však budou vytvořeny i další moduly.
ˇ
Uživatelský interface - samostatný modul, který se
postará o uživatelský vstup a výstup a zobrazení základních údajů, konfiguraci
apod., možná bude rozdělen na více modulů. Výhoda oddělení do samostatného
modulu umožní libovolně měnit jeho vzhled.
ˇ
Matematické symboly - modul, který bude překládat
matematické vzorce do XML a graficky reprezentovat vzorce zapsané v XML. Viz
příloha A
ˇ
Konference - komunikace mezi dvěma a více uživateli v
"jednom okně"
ˇ
Posílání souborů
ˇ
a další
jIM bude obsahovat i opravdový web-klient. Ne takový jako
má ICQ, kde je ke spuštění potřeba browser s podporou Javy, ale takový, který
bude potřebovat pouze libovolný browser, podporující HTML. Všechnu ostatní
práci udělají moduly, které bude pouštět server (a které budou samozřejmě
totožné s těmi pro klienty). Web-klient se od klasického bude lišit pouze
moduly pro uživatelský interface. Mikrojádro bude pravděpodobně totožné s
mikrojádrem klienta, případné rozdíly budou spočívat pouze v optimalizaci pro běh
na serveru.
Tento modul slouží jako ukázka,
jak lze schopnosti jIMa rozšiřovat přidáváním modulů.
Řekněme, že chcete poslat někomu příklad z matematické
analýzy. Naše data se budou posílat přibližně v tomto formátu:
<message>
<from>Caster</from>
<time>158505254</time>
<text>
Ahoj, mám to řešení tvého příkladu.
Je to integral od 0 do PI ze ((sin x)^2)dx
</text>
</message>
Ale díky modulu pro vzorce budete moci integrál zapsat jinak.
Náš modul vám umožní vzorec vytvořit pomocí vizuálního nástroje, který bude
součástí modulu, nebo napsat ručně, přeložit do XML a následně ho druhému
uživateli z XML vykreslit jako obrázek. Data budou poté odeslána v této
formě:
<message>
<from>Caster</from>
<time>158505254</time>
<text>
Ahoj, mám to řešení tvého příkladu.
Je to
<module id="math">
<integral var="x">
<low>0</low><hi><pi/></hi>
<pow>
<base><sin>x</sin></base>
<power>2</power>
</pow>
</integral>
</module>
</text>
</message>
Pro zjednodušení zápisu možná budeme definovat některé
jednoduché a často používané funkce přímo, např. <sin> tak, jak je
uvedeno v příkladu, ostatní fce budou zahrnuty v tagu <fce name="jméno
fce">