Cesta vývojového nástroje Delphi byla poměrně dlouhá a nutno říct, že nebyla nijak přímá a bezproblémová. První verze Delphi se vytvářela pod kódovým označením VBK (Visual Basic Killer), na svět přišla v únoru 1995 a byla učena pro 16-bitová Windows. Tehdy šlo opravdu o převratnou novinku v oblasti vývoje pro systém Windows, která si získala srdce mnoha vývojářů, a to nejen těch, kteří dosud pracovali s Pascalem. Musím říct, že jsem si Delphi zamiloval i já.
Od druhé verze bylo vše (tedy jak prostředí tak i výsledné aplikace)
32-bitové. IDE i jazyk se verze od verze zdokonalovalo, ale nedá se říct,
že nijak dostatečně, jak by si vývojáři přáli. Navíc se vyskytly chyby
známé jako „Problém sudých verzí“, kdy právě sudé verze kazily
Borlandu reputaci.
Od šesté verze se zdálo, že Borlandu došel dech nebo usnul na
vavřínech. Žádné drastické změny v IDE ani překladači se
nevyskytovaly, Delphi 7 se mohly klidně označit jako verze 6.1 (možná
někteří namítnou, že obsahují modelovací nástroje, ale to až
nejvyšší edice, které je oproti edici Professional prodáno zanedbatelné
množství). Mezitím přišel Microsoft s konečně opravdovým vizuálním
nástrojem pro vývoj nad novou platformou .NET Framework — Visual Studio
.NET (dále jen VS.NET). Mnoho Delphistů, alespoň v České republice, Delphi
opustilo a vrhlo se do spárů něčeho, v čem viděli budoucnost.
Borland dlouho jakoby nevěděl co s tím, až nakonec přišel s C#
Builderem a poté i s Delphi 8. Poslední jmenovaný byl často nazýván
Delphi 1 .NET (a mnohdy i s přívlastek Alfa či Beta verze). Pravdou je, že
s konkurencí se srovnávat nemohl (a to nejen co se funkcí týče, ale
i ceny).
Koncem roku 2004 přišly na trh Delphi 2005. Co přináší nového? Jsou
vůbec konkurence schopní? A jsou to pořád ty Delphi, co známe? Pojďme se
na nové Delphi podívat podrobněji.
Z Delphi jakožto vývojového nástroje používajícího jazyka Object
Pascal se stalo multijazykové prostředí zastřešující vývoj jednak pro
32-bitové prostředí Windows (knihovna VCL, jazyk Object Pascal) a jednak pro
.NET Framework (knihovna VCL.NET a FCL v jazyku Object Pascal a dále C#).
Borland se zde vydává cestou VS.NET, které podobným způsobem pod jedno
univerzální prostředí schovává libovolné množství jazyků.
Předpokládám, že brzy dojde na přidání C++ Buildera a J Buildera. Byl by
to krok správným směrem. Stejně tak by se mohl integrovat překladač Visual
Basicu .NET a C++.NET (nyní to lze dodat pouze ručně).
Prostředí jako takové je založené na
technologii Galileo, kterou můžeme znát již z první verze C# Builderu nebo
Delphi 8. VS.NET je značně podobné, chtělo by se říct, že někdo hodně
opisoval. Uživatelé zmíněných prostředí si možná již zvykli, ale
Delphisti přecházející z Delphi 7 a nižších si budou muset osvojit
nejen příjemné věci jako je zabalování právě nepotřebných kusů
kódů, tak i nepříjemnosti jako je nemožnost dát vedle sebe dva
formuláře případně formulář a odpovídající zdrojový kód. Pozitivní
je alespoň možnost jednotlivá okna oddokovat a používat rozložení
téměř shodné s Delphi 7 a nižší.
Dalším zajímavým prvkem je panel konstrukcí (Structure Pane). Můžeme
si to představit jako průzkumník kódu (Code Explorer) s pohledem na
objektový strom (Object Tree View) vylepšený o další možnosti. Jednou
z nich je zobrazování chyb, které se v kódu objeví během jeho psaní
(tzv. Error Insight, viz dále). Pokud ji neopravíte, můžete ji sledovat
právě zde.
Příjemná je paleta nástrojů, která kontextově mění svou nabídku.
Není-li nic otevřeno, nabízí se vytvoření mnoha různých projektů. Při
psaní kódu je to zase možnost dodat nějaký fragment kódu (je to podobné
vlastnosti Code Insight známé z dřívějších verzí). Paleta nástrojů
dokáže filtrovat svůj obsah a případně i jej jednoduše rozšířit
např. pomocí drag'n'drop. Pokud se vám takový způsob práce líbí, jsou
k dispozici komponenty TButtonGroup, TCategoryButtons a TDockTabSet (jak pro
VCL tak i pro VCL.NET), které provádějí totéž a lze je využít ve
vlastních projektech.
Při otevření projektu ze starší verze Delphi nebo Visual Studia .NET
jste dotázáni na možnost převodu na jinou platformu resp. jiné vývojové
prostředí. Nečekejte žádné zázraky, spíše jde o projektová nastavení
a volbu odpovídajících jednotek. Např. API funkce se nepřevedou.
Výraznou novinkou je refaktoring. Je to jedna z mála vlastností, které
konkurenční VS.NET dostane až v další verzi připravované na tento rok.
Delphi 2005 podporují metody přejmenování symbolu, extrahovat metodu,
vytvoření resourcestringu a další. Pokud zvolíte např. přejmenování
formuláře, můžete si nechat zobrazit refaktorovací panel s informacemi a
odkazy, kde k refaktorování došlo. Pracuje to pěkně, škoda, že to
nepřišlo dříve.
Používání nápovědy k třídám a parametrům metod je v dnes
rozsáhlých knihovnách snad jedna z nejčastěji prováděných věcí.
Dřívější verze znaly doplňování kódu a případně seznam parametrů.
Delphi 2005 jdou dál a nápovědu zobrazují s více detaily a odkazy do
nápovědného systému. Tento Help Insight je možné vyvolat nejen v editoru
jako takovém, ale i např. ve zmíněném doplňovači kódů.
Dalším zlepšením při psaní kódu je tzv. Error Insight, který si lze
představit jako kontrolu pravopisu známou z editorů kancelářských
balíků. Pokud např. nadeklarujete proměnnou typu, který není v daném
místě znám (např. proto, že je definován v unitě, která není uvedena
v sekci uses), dojde k podtržení všech nevhodných výskytů v kódu. Při
najetí myši nad takto zvýrazněný symbol Delphi zobrazí text blíže
specifikující chybu. Všechny tyto chyby jsou pak také zobrazeny v již
zmíněném panelu konstrukcí.
Jistě znáte ten pocit, když jste něco předělávali, pak jste ale
zjistili, že je to špatně, ale cesta zpět již nevede. Původní verzi
schovanou nemáte, operace Undo nepomáhá a tak musíte složitě přemýšlet,
jak to bylo původně. S Delphi 2005 již přemýšlet netřeba — ty si
totiž schovávají takto několik verzí souboru zpět (standardně 10, ale lze
to změnit) a programátorovi dovolují vrátit se k původní podobě. To se
děje na záložce History v editoru. Tam lze sledovat obsahy jednotlivých
revizí a informace o nich a dále rozdíly mezi vybranými dvěma revizemi.
Zde bych měl připomínku ke způsobu zobrazení, které probíhá v jednom
okně a změny jsou pod sebou narozdíl např. od Visual SourceSafe či Araxis
Merge, kde se rozdíly zobrazují přirozeněji vedle sebe.
A když se již bavíme o prostředí, ve zkratce jmenujme např. možnost
perzistentních záložek v editovaném souboru (dosud se po zavření souboru
ztratily), volba Undo after save je konečně (!) ve výchozím stavu
zaškrtnutá, naopak Show compiler progress je stále nutné po instalaci
zaškrtnout, při příkazu View unit lze vybrat více jednotek, stejně tak
v případě Use unit. Bohužel při Use unit nelze zadat unitu, která je sice
standardně ve VCL(.NET), ale není v projektu. Ach jo. Prostředí podporuje
vícero kódování souborů (např. UTF-8).
Překladač dostal do vínku mj. funkci, po které jsem toužil snad od
první chvíle, co jsem začal používat pole a kolekce, a to operátor in.
Není teď nic snazšího než napsat např. for i in MyArray do… Dalšími
novinkami jsou vnořené typy (nested types), nevím ale, zda to lze
systematicky využít pro zčitelnění kódu). Zásadní změny se však
překladač, alespoň co se Win32 týče, nedočkal.
Překladače Delphi 8 a C# Builderu začaly podporovat generování
dokumentace na základě XML tagů v komentářích. Nyní to lze použít
i pro Delphi 2005.
Vývoj databázových aplikací v Delphi vždy bylo přímočaré, byť
skoro s každou verzí přišlo něco jiného a to staré se vleče jako smrad
s novými verzemi (ano, narážím na BDE). Dnes je na pořadu Borland Data
Provider (BDP). Chápu snahu ušetřit vývojářům práci při přechodu mezi
různými verzemi a databázovými systémy, ale osobně dávám přednost
nejrychlejší cestě, tedy přímé. Různé vrstvy jednak znesnadní nebo
úplně odstraní možnost použít některé funkce typické pro danou
databázi a pak je to samozřejmě náročnější na paměť a výkon. Typickou
ukázkou je např. až nyní zavedená podpora Sybase serveru nebo oraclovských
balíčků. V Delphi 2005 lze také vytvářet a modifikovat za pomocí Data
Exploreru tabulky a sloupce. Opět si ale myslím, že od toho jsou poctivé
CASE nástroje, navíc většinou se vyvíjí proti nějakému schématu, které
se případně upravuje skriptem, nikoliv ad hoc takto někým v čemsi, co
později nelze dohledat. Použitelnější je však funkce testování
uložených procedur, která se může mnohým hodit. Pokud však přesto chcete
využívat všech databázových výhod Delphi 2005, musíte mít edici
Enterprise nebo Architect. Proč konkrétně BDP není již ve verzi
Professional, mi je záhadou.
Mimo vývoje tlustých a databázových klientů lze v Delphi
2005 vytvářet ASP.NET aplikace. Tato funkce byla zavedena již v osmé verzi
a zde je rozšířena a obohacena o některé novinky. Vyjma klasických
ASP.NET stránek je možné dělat webové služby, její klienty a další.
Nasazení aplikací (postupem XCOPY nebo FTP) se provádí přímo
z projektového manažera. Návrhář webových formulářů dokáže
používat šablony např. pro formátování sloupců tabulek, takže není
třeba vše dělat od začátku. Při editaci HTML kódu lze nově využít
doplňování kódu a zvýraznění syntaxe pro CSS a XHTML. Pokud vám
nedostačují stávající řídící prvky, pak můžete zvolit některé
nové: DBWebAggregateControl, DBWebNavigatorExtender, DBWebSound a
DBWebVideo. Jejich význam je snad jasný z názvu.
Delphi od své verze 7 edice Architect nepodporuje pouze klasické
programování ve stylu napsání kódů, přeložení, opravení chyby,
přeložení, …, ale stále více zasahuje do celého životního cyklu
vývoje aplikací. Nejprve to bylo objektové modelování v UML a propojení
s kódem, dnes je to kromě toho i testovací framework a po zakoupení
společnosti StarTeam i podpora konfiguračního řízení. Podívejme se
v krátkosti na jednotlivé oblasti.
Jak již bylo napsáno, StarTeam není původní produkt Borlandu. Jde
o vyspělý (i když ne všemohoucí) nástroj pro správu zdrojových kódů,
sledování jejich změn v čase. Protože je to velký nástroj (výrazně
propracovanější než u nás velmi časti používaný Microsoft Visual
SourceSafe), nemá cenu se o něm rozepisovat, zasloužil by si vlastní
recenzi, podívejme se pouze na integraci s Delphi. V menu je přímo položka
StarTeam s mnoha možnostmi: vložit projekt do databáze, vybrat jej,
porovnat, vyhledat a další. Dále je připraveno okno s procházením se po
jednotlivých konfiguračních položkách projektu.
Testovací framework vychází z NUnit verze 2.2. V Delphi 2005 je
zavedena podpora jak pro Win32, tak i .NET Framework (Delphi, C#). Nejprve je
potřeba vytvořit testovací projekt a pak připravit testové případy,
k čemuž slouží průvodce. Po napsání testu již lze testovat.
Pro modelování je použito ECO (Enterprise Core Object), což je
modelovací základna pro UML vytvořená Borlandem. Její hlavní předností
je navázání přímo na kód, takže změny v modelu se projeví v kódu a
obráceně. S Delphi 2005 přichází ECO II, které mj. podporuje
vytváření webových aplikací a služeb. K dispozici jsou odpovídající
průvodci. Dále je zde komponenta ECODataSource pro databázové webové
komponenty. Databázoví vývojáři zase ocení reverse engeneering
z databáze, který vytvoří odpovídající UML diagram.
Zkušenosti ze života
S Delphi 2005 jsem pracoval sice krátce, ale i tak to lze bez velkého
zaváhání označit za hrůzu. Po spuštění, které trvá příšerně
dlouho, si v paměti vezme 160 MB. Po nainstalování balíčků a překladu
středně velké aplikace pro platformu Win32 to již bylo 430 MB paměti.
Prostředí je obecně pomalé a
občas i padavé, jakoby bylo šito horkou jehlou (možná právě proto již
existuje první opravný balíček). Pokud např. spustím prostředí,
vytvořím si nový projekt, tak přepínání mezi formulářem a jeho kódem
je kolem dvou vteřin a to pokaždé. Načtení existujícího projektu je
tragicky pomalé (desítky vteřin), stejně tak např. přidání adresáře do
Search path projektu. Uživatel se ale nic nedozví, protože kurzor myši se na
přesýpací hodiny nepřepne, a tak lze nabýt pocitu zamrznutí. Kde asi
udělali pánové z Borlandu chybu? 
Oproti dřívější verzi se nezměnilo nahrazování, které dokáže
operaci provést pouze v aktuálním okně, nikoliv však např. ve všech
souborech projektu. Pravda, leckdy pomůže refaktoring, ale na něco je
krátký. Kde je problém? Nepříjemné je i změna ikon v prostředí,
takže kdo se orientoval již pouze podle obrázků, musí se to
naučit znovu.
Tragická je také nápověda. Již nenajdete okno např. s vlastnostmi či
událostmi a druhé s jejich popisem, ale vše je pěkně (tedy vlastně
nepěkně) v jedné HTML stránce. Člověk aby se uklikal. U mnoha témat
chybí mé oblíbené „viz také“. V indexu toho je málo (např. chybí
direktivy překladačů). Kontextovost se vytratila (zkuste ji použít na slovo
strict ve vymezení platnosti třídy strict private; dostanete se do nápovědy
k Visual Basicu). Některé vysvětlení je k ničemu. Je to odfláknutá
práce. Také rozsah není (hlavně pro vývoj nad platformou .NET)
dostatečný, čekal bych zde celou MSDN Library. Bohužel, musíte mít
vlastní licenci nebo se připojovat k Internetu. Ještě že máme dnes
každý pevnou linku za pár kaček. 
Naproti tomu je v Delphi 2005 spousta vylepšení, která práci dokáží
ušetřit. Pravdou je, že to vývojáři čekali již v dřívějších
verzích. O mnohých jsem se zmínil výše, takže není třeba se příliš
rozepisovat. V ostatních případech jde většinou o drobnosti, na které
budete přicházet postupně, budete-li tento nástroj používat.
Závěr
Podíváme-li se na Delphi 2005 jako na samostatný celek, můžeme říct,
že Borland po dlouhé době ukázal, že umí udělat zajímavý produkt.
Bohužel při porovnání s konkurencí je to výrazně horší. Smrtelná pro
mnoho potencionálních uživatelů může být absence podpory mobilního
frameworku nebo cena (srovnejte si např. obsahy MSDN či VS.NET od Microsoftu
s obsahem balení Delphi). Pravdou je, že snížil náskok, ale pořád je
vlak s VS.NETem daleko na horizontu. Co tedy s tím? Pokud jste skalní
fanoušci Borlandu (jenže už ani ta nostalgie není, co bývala), můžete
přejít. Pokud jste dříve přešli na VS.NET, zůstaňte tam. A jestliže
chcete rozjíždět nový projekt nad platformou .NET, pak já bych opět volil
konkurenci. Přeci jenom brzy bude nejen .NET Framework 2.0, ale i nová verze
VS.NET, která bude mnohem dále co nyní (např. bude obsahovat dnes uvedený
refaktoring).
Ostatní
Plusy
- refaktoring
- testovací framework
- vyspělé prostředí
Mínusy
- pomalé
- špatná nápověda
- chybí podpora vývoje mobilních aplikací
Závěr
- Prostředí pro vývoj aplikací pro .NET Framework a
prostředí Win32.
Kontakt
Borland, s.r.o.
http://www.borland.cz/
Na Pankráci 30
140 00 Praha 4
tel.: +420 234 633 356
Cena
- 98 056,00 Kč (včetně DPH)
Použitá konfigurace
- Windows 2000 Professional SP4
- CPU Intel Celeron 1,8 GHz
- 512 MB RAM
- 40 GB HDD
Tento článek byl napsán pro časopis Softwarové noviny 3/2005.
Upozornění: tento text neprošel redakční úpravou, takže je
tak, jak byl napsán včetně případných chyb. Žádná část tohoto
článku nesmí být použita bez předchozího souhlasu autora.
Seznam mých dalších článků je v tomto přehledu.