Borland Kylix 3 - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Delphi

Borland Kylix 3

kylix

27. listopadu 2002, 00.00 | V podstatě synchronně s uvedením Delphi 7 vydal Borland i novu verzi svého Linuxového vývojového nástroje. Pojďme se na něj nyní podrobněji podívat...

{Úvod, technologické okénko, instalace}

Když před několika lety oznámil Borland, že chystá vydat verzi Delphi pod Linux, vyvolal tím mezi vývojáři nemalou vlnu očekávání. Pak vydal první a velice rychle i druhou verzi Kylixu. Dnes přichází s verzí třetí a nastal čas zhodnotit, zda se mu očekávání programátorů podařilo vyplnit, či nikoliv.

Technologické okénko

Protože se s tématem Kylixu setkáváme na Builderu poprvé (pokud nepočítám tiskové zprávy Borlandu), tak si pro začátek si dovolím udělat malý předpoklad o čtenářích tohoto článku - totiž že používají a dobře znají Delphi, ale Kylix nikoliv. Pokusím tu tedy nejdřív podat jakýsi výklad, jak Kylix vlastně funguje.

Když se Borland rozhodoval, jakým způsobem převést Delphi do prostředí Linuxu, měl v podstatě dvě možnosti - přepsat Delphi úplně od základů nebo použít existující kód a "podestlat" ho nějakou formou application compatibility layer (česky něco jako zkompatibilňovací vrstva, ale nepřeložené mi to zní přirozeněji). Za základ této vrstvy se Borland nakonec rozhodl vzít open-source projekt WINE, tedy implementaci Win32 API pro Linux.

Důsledkem je, že celé prostředí Kylixu si z větší části "myslí", že běží ve Windows a používá mechanismy Win32 API jako okna, zprávy a další. Velice podstatnou nevýhodou tohoto přístupu je, že Kylix se úděsně zpomalí (všechna volání Win32 se musí překládat do ekvivalentních nativních systémových volání Linuxu či X Window!) a má nestandardní vzhled (za standardní v tomto případě považuji použití knihoven GTK nebo QT takovým způsobem, aby aplikace vypadala jako ty z Gnome nebo KDE). Abych řekl pravdu, celé řešení pomocí WINE mi přijde jako velice nešťastné a osobně bych takovýto technologický paskvil do světa nevypustil ani zadarmo, natož za peníze. Ale to je jen můj osobní názor na věc.

To ale není všechno. Dalším problémem Kylixu je jeho knihovna - CLX, která se používá místo staré známé VCL. Uniká mi totiž nutnost její existence - nestačilo prostě na Linuxu odebrat některé části VCL závislé na Win32? Tady jsem ale ještě ochotný ze svého názoru ustoupit - třeba byly technické důvody pro vytvoření CLX dostatečně silné, a já je jen nevidím pro nedostatečnou znalost architektury Delphi a Kylixu.

Co mě ale opravdu udivuje, je použití multiplatformní knihovny Qt jako mezivrstvy oddělující nativní API Windows a Linuxu od vlastní CLX. Znamená to totiž, že všechny programy se díky tomu opět zpomalí a zvětší, protože budou potřebovat překladový kód knihovny Qt. Na Win32 programy psané v CLX navíc vzhledem nevypadají úplně jako standardní, na Linuxu taky ne (standardní chápu ve stejném smyslu jako v předminulém odstavci). Proč nemůže CLX volat API přímo?

Nemusím mít vysokou školu ekonomickou na to, aby mi bylo jasné, že všechna výše uvedená řešení Borland použil proto, že byla levnější a hlavně rychleji naprogramovatelná než řešení, která by byla technologicky čistší. Ale jako programátor jsem si existenci těchto kompromisů, vedoucích k nižší technické kvalitě celého balíku, prostě neodpustil nezmínit.

Ale teď už zpět k verzi 3

Celá recenze se bude týkat edice Enterprise, která je ta nejvíce vybavená. Kromě ní ještě existují verze Professional a Open Edition, která je k dispozici ke stáhnutí na stránkách Borlandu.

V balení najdete celkem čtyři CD - instalaci Kylixu samotného, Companion Tools s různými doplňky, Borland Enterprise Server a nástroj na tvorbu sestav Rave Reports 4.5 CE od Nevrony. Krom cédéček obdržíte i vydatnou porci literatury. Největší je Developer's Guide, pokrývající značnou šířku témat od tvorby uživatelského rozhraní programu, přes psaní vlastních komponent až po databázové aplikace a webové služby. Podstatně tenčí jsou pak Delphi Laguage Guide, popisující jazyk Delphi Language (aka Object Pascal) a Quick Start, ve které je především představeno prostředí Kylixu.

Instalace

Kylix jsem instaloval na systému Mandrake Linux 8.2, což je jedena z Linuxových distribucí, kterou Borland oficiálně pro Kylix podporuje. Dalšími podporovanými distribucemi jsou RedHat 7.2 a SuSE 7.3. Při rozmanitosti Linuxů je omezení se jen na vybrané distribuce celkem pochopitelné a akceptovatelné. Teoreticky by ale Kylix měl jít nainstalovat i na jiné systémy, které vyhovují parametrům uvedeným v souboru INSTALL.

Instalace Kylixu
Instalace Kylixu

Instalace pomocí průvodce proběhla (narozdíl od předchozích verzí Kylixu, které jsem kdysi zkoušel) naprosto bez problémů a byla dokonce o něco jednodušší, než instalace Delphi ve Windows. Obecně je možné Kylix instalovat v režimu root nebo non-root - co to znamená je asi každému, kdo zná Linux víceméně jasné, navíc je to podrobně popsáno v souboru INSTALL spolu s popisem celé instalace. Jediné, co instalátor řekl, že provede, a nakonec neudělal, bylo přidání ikonek do Gnome menu.

Po instalaci je nutné celou aplikaci registrovat u Borlandu. Stejně jako u Delphi je to záležitost několika sekund (pokud máte připojení na Internet a uživatelský účet u Borlandu).

Zkušebně jsem Kylix později nainstaloval i na novější verzi Mandraku (9.0). Zde bylo nutné spustit instalační skript s parametrem -m, aby nepoužíval RPM, protože jinak skončil s chybou. Až na tuto drobnost ale instalace proběhla v pořádku a Kylix byl normálně použitelný.

[-more-]{Prostředí, novinky, zkušenosti, závěr} První pohled

Největší novinkou nové verze Kylixu je jednoznačně přidání podpory C++. Doteď byl totiž Kylix jen linuxový ekvivalent Delphi, nyní už dokáže nahradit i C++ Builder. Tím se stává konkurencí překladače GCC, který doteď na Linuxu takřka bezvýhradně dominoval - Borland vydal i malé srovnání vývoje v obou prostředích.

Kdo se v těch "startech" má vyznat :-)
Kdo se v těch "startech" má vyznat :-)

Raději než pro schizofrenní vícejazykové vývojové prostředí se Borland rozhodl Kylixu nadělit prostředí dvě - a tak ho můžete spusit příkazem startdelphi nebo startbcb, podle toho, v jakém jazyku hodláte svůj program zrovna psát. Až na jazyk jsou obě prostředí takřka identická. Zajímavé je, že Kylix nepřevzal XP vzhled Delphi 7 - ale ne že by to bylo na škodu.

Pracovní prostředí Kylixu
Pracovní prostředí Kylixu

Na IDE Kylixu je ovšem místy opět vidět, že je to technologicky podivný výtvor - například tlačítka a další hýblátka (widgets) v jednom dialogu (File|Open) vypadají úplně jinak než v jiném (Project|Options). Co uživatel ocení, je podobnost až identičnost prostředí s Delphi. Co mu začne po chvíli vadit, jsou otravné chyby. Schválně si zkuste vložit na formulář libovolné dvě komponenty stejného typu, u jedné pak vybrat v inspektoru objektů třeba vlastnost Hint a přepnout se kliknutím na komponentu druhou - na rozdíl od Delphi se čas od času opět vybere defaultní vlastnost Name. Můžu vás ujistit, že tato zdánlivě nepodstatná chyba vás bude po chvíli dovádět k nepříčetnosti.

Další nepříjemnou vlastností je, že Kylix zabere po spuštění celkem čtyři tlačítka (někdy i více) na panelu pro přepínání aplikací (každé okno má jedno) - jednak to zabírá místo a druhak to znemožňuje "odskok" do jiné aplikace, protože Kylix pak musíte přesouvat do popředí celkem čtyřmi kliknutími. Jediný rozumný způsob, jak se s Kylixem dá pracovat, je mít ho celý samostatně na jedné virtuální ploše.

Mimochodem IDE se vyznačuje pro Borland typickou nestabilitou - padá a kouše se v naprosto banálních situacích na programech ne o moc složitějších než "Hello world". Borland v této verzi mimo jiné sliboval zrychlenou funkci AutoComplete - ale několikrát se mi stalo, že menu s položkami se prostě nenačetlo nikdy a já jsem ocenil prográmek xkill.

Poměrně odpudivý je i systém nápovědy. Borland evidentně hledal nejjednodušší cestu, jak rychle do Kylixu zapracovat systém známý z Delphi. Objevil systém HyperHelp od firmy Bristol Technology, který oplývá pomalostí (oproti nápovědě k Delphi ve Windows) a další variantou nestandardního vzhledu. Krom toho nepodporuje kolečko myši, což je pro mě nepostradatelná věc (ne, není to mou konfigurací Linuxu, protože všude (namátkou v Gnome, KDE, Mozille i v Kylixu samotném) kolečko funguje bezchybně).

Další novinky Kylixu 3

Kromě podpory jazyka C++, kterou jsem zmiňoval v úvodu, má Kylix 3 oproti předchozím verzím samozřejmě spoustu dalších vylepšení. V IDE přibylo okno Object Tree View, známé z Delphi, a záložka Diagram v editoru, umožňující zobrazit různé vztahy mezi komponentami. Okno Watches má možnost rozdělit sledované výrazy do skupin přístupných pomocí záložek. Obdobně je to s Messages View, které má více záložek na různé typy hlášení. Nová je i možnost exportovat Makefile, který je kompatibilní s GNU make. To se hodí zejména u větších projektů.

Vylepšení doznala i podpora databází - v dbExpressu byly updatovány ovladače Oracle 9i a Informix SE. Novinky najdeme i v oblasti webových služeb - programátoři mohou využívat nový Web App Debugger a používat XSLT ke generování HTML stránek (pomocí komponenty TXSLPageProducer).

Byly vylepšeny komponenty řady Indy (analogickým způsobem jako v Delphi 7) a dialogy TOpenDialog a TSaveDialog umožňují nyní naprogramovat náhledy souborů (pomocí události OnFilePreview). O něco obohacena byla i běhová knihovna - zejména o několik funkcí pro práci s řetězci (opět stejně jako v Delphi) a typem Variant. Novinkou kompilátoru je podpora instrukcí Pentia 4.

Seznam novinek je značně neúplný, je jich samozřejmě mnohem víc, ale výše uvedené považuji za nejpodstatnější.

Zkušenosti s převodem programů z Delphi

Značná část programátorů, kteří si Kylix pořídí, do něj určitě bude chtít převést své projekty z Delphi. Pokud jsou staršího data (rozumějte vyvíjené ve verzi Delphi 5 nebo menší, a tedy napsané s pomocí VCL), nebude to s převodem vůbec snadné.

Rozdíly mezi VCL a CLX vás potkají hned při otevření prvního formuláře importovaného projektu - komponenty VCL mají navíc některé vlastnosti, které jejich CLXovým protějškům chybí. Kylix na to při načítání upozorní a máte možnost hodnoty těchto vlastností ignorovat, což většinou nezpůsobí žádné problémy.

Chyba při načítání formuláře z VCL
Chyba při načítání formuláře z VCL

Při procházení formuláři také zjistíte, že Kylix nemá komponenty TUpDown, TSpeedBtn, TNotebook a další - to není zrovna příjemné zjištění, když je v programu na několika místech používáte. Celý kód je tedy potřeba místy dost drasticky přepsat. Opravdu nepochopím, proč tyto komponenty nemohou v CLX být.

Při mém pokusném importu mě opravdu naštvalo, že zmizely všechny obrázky z ImageListu, a tím pádem i z nástrojové lišty programu. Takže jsem musel 20 minut vše postupně znovu načítat ze souborů. Navíc editor ImageListu si neumí zapamatovat průhlednou barvu obrázku a časem ji samovolně mění (vesměs po dvojkliku na komponentě a přidání nového obrázku do seznamu). Tohle je vážná chyba, se kterou se prakticky nedá pracovat, protože ničí vzhled nástrojových lišt! S komponentou TImageList tak raději počítejte, jako by v Kylixu nebyla.

Dalším vaším krokem při importu budou většinou úpravy sekce uses v různých unitách. Kylix si sám přidá CLX verze svých unit pro grafické rozhraní (QControls, QForms), ale je potřeba odstranit původní z VCL. Naštěstí je to obvykle práce na několik minut.

Pravá "legrace" ale teprve přijde. V programu je totiž často třeba upravit snad tisíce malých drobností - v Delphi například běžně používám funkce jako RGB nebo ZeroMemory, aniž bych si pořádně uvědomoval, že nejsou součástí knihoven Delphi, ale API Windows. Ty to funkce v Kylixu samozřejmě nejsou k dispozici, a tak je třeba je nahradit. Obdobných "malých" závislostí na Win32 se soudím v každém programu najde požehnaně.

Jak je z mého popisu vidět, převod programů z VCL se rozhodně neobejde bez komplikací - a to jsem ještě předpokládal, že v projektu nejsou použité nějaké externí unity a komponenty...

Naproti tomu projekty postavené a CLX by měly jít z Delphi převést bez problémů. Přiznám se ale, že jsem to nijak neověřoval, protože jsem neměl žádný dostatečně velký CLX program k dispozici a na programu typu "Hello world" napsaném za dvě minuty se skutečné zdroje problémů těžko odhalí.

Závěr

Mám-li být upřímný, nemůžu vám Kylix jako vývojové prostředí pro vaše aplikace příliš doporučit. Celý na mě působí jako "násilím naroubovaný" na Linux z čistě komerčních zájmů, bez trochy programátorské elegance, a se spoustou chyb. Osobně bych program, napsaný v Kylixu, do světa nepustil (zejména kvůli koncepci Qt-CLX).

Kylix možná může mít uplatnění ve světě aplikací pro web nebo databází, kde tolik nezáleží na technické kvalitě výsledného programu, ale spíš na ceně (a tedy jednoduchosti) jeho vývoje. Možná v těchto oblastech může být i velmi úspěšný, pokud se programátoři naučí žít s jeho chybami a nedostatky. Ale můj osobní názor zůstává nezměněn - Kylix se mi (na rozdíl od Delphi, které považuju za nejlepší vývojové prostředí ve Windows) příliš nelíbí a jeho použití bych si dvakrát rozmyslel. Samotného mě mrzí, že musím vynést takovýto verdikt, ale můžu jen doufat, že se Borland časem poučí.

Čtenáři, kteří o Kylixu uvažují, asi udělají nejlépe, pokud si stáhnou nejjednodušší variantu Open Edition nebo trial verzi varianty Enterprise a udělají si obrázek sami.

Tématické zařazení:

 » Rubriky  » Delphi  

 » Rubriky  » Windows  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: