# XBUP - Implementace podpory

### Úvod

Tento dokument je součástí dokumentace projektu eXtensible Binary Universal Protocol. Obsahuje popis implementací podpory, především knihoven, nástrojů a demonstračních aplikací.

O úroveň výše

### Obsah

1. Implementace podpory
1.1. Implementace v Delphi
1.2. Implementace v Javě
1.3. Implementace v PHP
1.4. Implementace v C++
2. Přehled podpory
2.1. Podpůrné knihovny
2.2. Základní nástroje
2.3. Související služby

### 1. Implementace podpory

Podpora zde představuje soubor knihoven a aplikací, umožňující základní manipulaci s daty přenášenými protokolem XBUP. Implementace se zaměřují na vytvoření podpůrné knihovny obsahující parsovače, funkce pro podporu kódování UBNumber a podporu katalogů. Dále jsou vytvářeny ukázkové nástroje využívající tuto knihovnu. Implementace by měla být dostupná především v jazycích Java a C++. V současné době je preferován jazyk Java. Snahou je vytvořit později také implementaci pro vlastní programovací jazyk, vytvořený nad tímto projektem.

Zpracování dat, kódovaných protokolem XBUP, může být podporováno na úrovni aplikace několika možnými způsoby:

- žádná podpora - jednou z možností je, že aplikace nemá žádnou vestavěnou podporu pro protokol XBUP. V takové případě je možné vytvořit emulační rozhraní, které aplikaci zpřístupní funkce protokolu XBUP pomocí jí přistupných rozhraní, případně aplikaci dodatečně přeprogramovat a posunout tak podporu aplikace do některé z následujících kategorií (no support)
- pouze rozhraní - aplikace poskytuje pouze popis vnějších rozhraní, kterými je možné jí předávat data (black box)
- pouze popis - aplikace poskytuje popis rozhraní a vnitřních transformací, které je schopna provádět. (white box)
- volitelné obcházení - aplikace umožňuje volitelně obcházet své vnitřní transformace a nahradit je jinými operacemi. (bypass)
- poskytovatel - je možné použít transformace implementované v aplikaci i pro jiné aplikace (provider)
- modulární aplikace - je možné jednotlivé transformace nahrazovat a používat samostatně bez nutnosti provozu celé aplikace (modular)

### 1.1. Implementace v Delphi

Miroslav Hajda: Programovací jazyk Object Pascal a programovací prostředí Delphi společnosti Borland International jsem zvolil s ohledem na to, že části programu jsem začal dělat zpočátku v programovacím jazyce Borland Pascal a měl jsem s tímto jazykem nejvíce zkušeností. Naneštěstí není tento jazyk příliš vhodný, především díky své omezené kompatibilitě s rodinami počítačů a operačními systémy. Přesto jsem se rozhodl vyvinout podporu právě v tomto jazyce s tím, že později přepracuji vzniklý kód do jiného programovacího jazyka, nebo navážu spolupráci s někým, kdo bude ochoten podporu v jiném jazyce naprogramovat.

Zvažována je také úprava pro Freepascal (Lazarus). Další výhodou je uvolnění verze Turbo Delphi, které naznačuje možný vývoj směrem k uvolnění jazyka pro bezplatné použití, snad alespoň pro nekomerční projekty.

### 1.2. Implementace v Javě

Java, jakožto multiplatformní jazyk s výbornou podporou běhu, především nad vlastním virtuálním strojem, se jeví být vhodným kandidátem pro základní implementaci. Jazyk se vyznačuje dobrou abstrakcí, k dispozici je velké množství knihoven a bezplatně jsou k dispozici kvalitní vývojářské nástroje.

### 1.3. Implementace v PHP

Webové stránky projektu, stejně jako webový katalog jsou naprogramovány v jazyce PHP. Hlavní důvodem byla nedostupnost jiného vhodného prostředí či serveru s podporou jiného vhodnějšího jazyka. Prozatím není v PHP dostupná podpora pro vlastní protokol.

### 1.4. Implementace v C++

Implementace v jazyce C++ byla prozatím odložena na později dokud nebude dokončena prototypovací fáze protokolu. Nicméně implementace v tomto jazyce bude zřejmě klíčová pro integraci do široce používaných programů a operačních systémů vůbec.

### 2. Přehled podpory

Podpora je rozdělena knihovny pro podporu kódování UBNumber a parsování dokumentu, podporu katalogů, základní a další ukázkové aplikace.

### 2.1. Podpůrné knihovny

Cílem knihovny libxbup (XBLib) je nabídnout základní funkce pro práci s hodnotami kódovanými v kódování UBNumber a základní podporu pro parsování struktury a typů bloků.

Knihovna XBCatalog slouží pro realizaci lokální kopie katalogů typů bloků. Implementováno je především rozhraní pro přístup k tomuto katalogu a dále pak aktualizace obsahu z globálního katalogu dostupného například přes internet.

### 2.2. Základní nástroje

Součástí podpory jsou dále nástroje pro manipulaci s obsahem dokumentu. Jedná se především o XBEditor pro GUI a program XBShell, sloužící jako přístupové rozhraní přes textovou příkazovou řádku.

### 2.3. Související služby

Dále je snahou nabídnout základní služby, především katalogovou službu s možností registrace vlastních specifikací dokumentů. Je tak možné vytvořit vlastní zrcadlový obraz globálního katalogu s možností aktualizací, nebo katalog místní, určený pro ukládání vlastních specifikací.

Homepage: http://xbup.sf.net
License: GNU Free Documentation License (FDL)
Latest update: 2010-01-06