Seminář Borlandu k uvedení C++ Buileru 6 + představení jeho vlastností - 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:



C/C++

Seminář Borlandu k uvedení C++ Buileru 6 + představení jeho vlastností

5. dubna 2002, 00.00 | Nedávno vyšel nový Borland C++ Bulder 6 a firma Borland k této příležitosti uspořádala technický seminář, kterého jsem měl možnost se zúčastnit.

Dne 26.3.2002. se v pražském kině Perštýn konal technický seminář firmy Borland, kde byl představen nový produkt Borland C++ Builder 6 (dále jen "BCB6"). Já jsem se tohoto semináře jako zástupce serveru Builder.cz zúčastnil a nyní se vám pokusím přiblížit jeho nejdůležitější body.

Logicky vzato bych měl oddělit vlastní průběh semináře a následnou recenzi prezentovaného produktu C++ Builder, ale protože to dost dobře není možné a často bych se opakoval, bude tento článek o obojím najednou (a tím pádem i o něco delší). Sem tam se tedy mezi popisy informací získaných ze semináře objeví moje vsuvky a vysvětlení; doufám že to nikomu nebude vadit a povede to k větší srozumitelnosti článku.

Úvod

Seminář začal úvodem Richarda Kubáta, ředitele české pobočky Borlandu, kde bylo řečeno pár slov o historii firmy (brzy bude Borland slavit dvacetiny) a její finanční situaci (před několika lety byl Borland ve ztrátě, nyní je však opět ziskový) a o její aktuální filozofii (integrace různých platforem pomocí borlandských vývojových nástrojů). Krom zmíněného už nebylo řečeno nic příliš převratného.

Změny v BCB6 oproti minulé verzi

Tato část semináře byl pro mě, jakožto nedatabázového programátora, asi nejdůležitější a dovolím si tvrdit, že pro většinu uživatelů asi také. Slovo měl Miroslav Virius, kterého možná čtenáři znají z jeho pravidelných článků o (nejen) C++ v tištěném časopisu Chip.

Nová verze BCB byla vždy uváděna několik měsíců po ekvivalentní verzi Delphi, většinou se stejnými (popř. velmi obdobnými) vlastnosti a novinkami. Nejinak je tomu u nové verze 6. Pokud si přečtete nějakou recenzi Delphi 6 (třeba tuto), tak budete v podstatě vědět, co je nového v BCB6. Ale i přesto tu pro pohodlí čtenářů novinky stručně zmíním s důrazem na ty, které jsou specifické pro BCB.

Něco málo k verzím BCB6: Dodává se ve třech verzích - Personal, Professional a Enterprise. Tyto se liší množstvím nabízených funkcí a počty komponent (a přirozeně i cenou).

Instalace

Novinkou, které si uživatel při instalaci povšimne na první pohled, je nutnost registrace (telefonická nebo přes internet) programu u firmy Borland (a to i u vezre Personal). Je to sice nepříjemné, ale dá se to pochopit.

K instalaci je třeba dodat, že BCB se snese s Delphi i se starými verzemi sebe sama (pro Delphi 6 je ale prý nutný Update Pack 2) - to není u každého vývojového nástroje zrovna pravidlem.

IDE

V IDE přibylo nové okno Object Tree View nad už známým inspektorem objektů, které znázorňuje strukturu objektů na aktivním formuláři.

Další novinkou je daigram, který znázorňuje různé vztahy mezi objekty v aktivním formuláři (popř. datovém modulu). Výsledné schéma se dá i tisknout a může posloužit jako dokumentace. Podle mě je to sice hezká hračka, ale já si při programování obdobná schémata většinou stejně radši kreslím na papír. Ale dokáži si představit, že při vývoji složitějších (zejména databázových) aplikací to může být užitečné.

Další změnou IDE jsou záložky na spodní straně okna - díky nim se můžete snadno přepínat mezi .cpp a .h souborem nebo výše zmíněným diagramem

Kosmetických vylepšení doznal i inspektor objektů - pokud je název či hodnota vlastnosti příliš dlouhá a nevejde se do okna, zobrazí se při najetí myší nad ní tooltip s celým názvem. Vlastnosti jsou navíc barevně odlišeny, podle toho, zda to jsou "obyčejné" datové typy nebo komponenty (u těch jsou navíc zobrazeny jejich vlastnosti - viz obrázek).

Komponenty

Největší novinkou (asi celého BCB6 vůbec) je přidání sady komponent CLX. Pokud vyberete menu File|New|CLX Application, celá paleta se změní a můžete používat jen komponenty z této knihovny. Malé vysvětlení pro ty, co nevědí, co to CLX je: Multiplatformní náhrada VCL založená na knihovně Qt (od firmy Trolltech), která umožňuje kompatibilitu s linuxovým Kylixem a v blízké budoucnosti i s linuxovou verzí BCB. V ideálním případě by měly být aplikace založené na CLX 100% přenositelné na úrovni zdrojového kódu - tj. prostě svůj projekt překopírujete na linuxový oddíl, spustíte Kylix, překompilujete a je to. Platformně specifické části lze ošetřit pomocí maker definovaných na jednotlivých platformách.

Dalšími rozšířeními palety komponent je přidání palet WebSnap a WebServices (o těch blíže za chvíli) a reorganizace databázových komponent. Nové jsou také komponenty Indy (= Internet Direct) - ty zapouzdřují většinu standardních internetových protokolů (HTTP, FTP, Telnet, Gopher,...). Někomu se můžou hodit, ale já raději na síťové programování ve svých programech používám unitu Synapse, která umí prakticky totéž a je to sada klasických unit - nikoliv komponent - takže se dá použít i v nevizuálních aplikacích.

Drobné změny se odehrály i ve VCL. Podle mých znalostí by měly odpovídat změnám u Delphi 6, takže si dovolím je tu nezmiňovat a odkázat vás na jejich popis tam.

Jazyk C++

BCB6 se stejně jako snad všechny dnešní překladače C/C++ chlubí kompatibilitou s normou ANSI, a jako snad u všech dnešních překladačů to není tak úplně pravda. Faktem ale je, že BCBem nepodporované prvky jazyka většinou ostatní překladače také nepodporují, ale obráceně to neplatí. Co tedy přesně BCB6 nepodporuje? Je to především klíčové slovo export v deklaracích šablon a pak neumí vypustit vnější složené závorky v konstruktoru třídy, pokud je tvořen pouze blokem try/catch. Obojí jsou víceméně drobnosti.

Rozšíření jazyk zůstávají od minulých verzí stejné - properties a la Delphi a strukturované vyjímky. Novinkou je podpora interfaců (rozhraní) a to podle stejného modelu, jako je používán v COM. Opraveno bylo také několik chyb, a to i podle některých hlášení českých vývojářů.

Knihovny

BCB6 obsahuje MFC 6.0, ATL 3.0 a dvě různé verze STL - novou STLPort 4.5 a starou RogueWave, která je vyžadována implementací CORBy. Již není dodávána knihovna OWL (ve verzi 5 "živořila" alespoň na Companion Tools, teď už ji nenajdete ani tam).

Webové služby

Webové služby jsou dnes velice módním výrazem a kdekdo (Microsoft, Sun, Borland...) se snaží vývojáře přesvědčit, že právě na webových službách stojí a padá celá budoucnost lidstva :-) Dovolil bych si být trochu skeptičtější, protože rozšíření této technologie bude trochu složitější, ale to mi nebrání vysvětlit, o co běží (profesionálové doufám omluví zjednodušení, která páchám). Ještě bych poznamenal, že na semináři na toto téma hovořil Petr Souček.

Co to je webová služba?

Webová služka je v podstatě postavena na klasickém schématu klient-server. Server zveřejní seznam funkcí, které umí a klient je volá s tím, že jim předává parametry a dostává návratové hodnoty. Pokud vám to připomíná předávání parametrů nějakému CGI skriptu pomocí metody GET či POST a následný návrat vygenerované stránky, nejste daleko od pravdy. Webové služby jsou totiž implementovány na bázi existujících technologií HTTP, CGI, ISAPI a NSAPI (+ případně moduly serveru Apache). Rozdíl je jen ve formátu, jakým se posílají informace typu "co zavolat za funkci a s jakými parametry" a výsledné hodnoty. Tímto formátem je SOAP, což je jazyk založený na XML.

Servery také musí zveřejnit, které procedury je možné z nich vyvolat, což uskuteční pomocí jazyka WSDL (opět založeného na XML). Výhodou celého WSDL/SOAP paradigmatu je standardnost (garantovaná W3C), která zaručuje vzájemnou kompatibilitu implementací a platforem (že by se zas jednou skutečný svět začal přibližovat tomu ideálnímu? :-)

A co s tím má společného BCB6?

Hodně. V BCB6 jdou totiž (stejně jako v Delhpi 6 a Kylixu 2) psát jak servery tak i klienti webových služeb. Fascinující je, že oboje se skoro nijak neliší od psaní normálních objektů Delphi. Za všechno můžou především komponenty v záložce WebSnap

Na serveru nadefinujete rozhraní (interface) vaší služby pomocí jazyka C++ a napíšete implementaci. Pak použijete příslušné komponenty BCB a ty vytvoří z vaší definice popis v jazyku WSDL. Po spuštění aplikace si ho pak ostatní klienti mohou bez problémů přečíst a pomocí SOAP pak vaší službu využívat.

Pokud píšete klienta, stáhnete si nejdřív WSDL definici služby, ke které se chcete připojit, a BCB z ní vyplodí definici rozhraní - tedy v podstatě objekt v C++. Důležité je, že server této služby nemusí vůbec být napsán v BCB a může běžet na libovolném operačním systému a webovém serveru. Metody rozhraní, které BCB vytvořil, pak voláte jako by to byl obyčejný objekt. To, že se přitom vše uskutečňuje pomocí SOAP přes internet, vás jako programátora nemusí vůbec zajímat. Vše je nádherně transparentní.

Přiznám se, že téma webových služeb mě celkem zaujalo. Působivá byla ukázka, kterou jsem viděl na LinuxExpu pár dnů před Borlandskou konferencí - předvádějící tam během několika desítek minut stvořil kompletní webovou služku s klientem a serverem (server hrál s klientem hru "15"). Borland ví, jak zapůsobit.

Databáze

Podpora databází v BCB se skoro s každou novou verzí měnila, a tak dnes máme k dispozici čtyři sady komponent určených k přístupu k databázím:

  • BDE = Borland Database Engine - zastaralý a vyžadující poměrně složitou instalaci
  • ADO = ActiveX Data Objects - systém od Microsoftu založený na technologii COM, v BCB dostupný od verze 5
  • IBExpress - rozšíření pro přístup k databázím InterBase, které obchází BDE i ADO
  • dbExpress - novinka v BCB6

dbExpress je nový systém přístupu k databázím, který má ambice nahradit úplně BDE. Jeho výhodami jsou především snadná instalace spolu s aplikací, která ho využívá, a přenositelnost na Linux. Podporuje databázové technologie InterBase, Informix, Oracle, DB2 a MySQL.

Jeho podstatnou nevýhodou je, že podporuje pouze jednosměrné datasety. Toto mínus se dá ale obejít použitím komponent ClientDataSet (ta cachuje záznamy a je zdrojem dat pro vizuální komponenty) a DataSetProvider.

XML

Bez podpory XML to dnes už také nejde. BCB má integrovaný parser XML od Microsoftu a také docela zajímavou funkci XML Manager. Díky ní je možné "přetvořit" XML dokument do podoby objektu s vlastnosti a metodami odpovídajícími jednotlivým elementům a atributů XML. Výhoda je zřejmá - programátor je odstíněn od toho, že pracuje s XML, a manipuluje jenom s jemu dobře známými objekty. Vstupem pro generování objektu může být dokument XML, nebo deklarace ve formátu DTD, XDR či XML Schema. Výsledky je někdy nutné doladit přímo v okně XML Manageru, protože pokud je vstupem například dokument XML, nemusí být struktura úplně jednoznačná (například možnost opakování elementů, které jsou ve vstupním dokumentu jen jednou, nebo pokud ve vstupním dokumentu nejsou některé nepovinné elementy). Problémem není ani propojení XML s databázemi.

Vlastní zkušenost

Na konferenci se účastníkům rozdávala trial verze BCB (omezená na 60 dní). Nebudu čtenářům nic nalhávat - BCB6 jsem nezkoušel příliš intenzivně (zejména proto, že mou hlavní doménou jsou Delphi). Za dobu testů jsem nicméně nabyl dojmu, že se jedná o vyzrálý a solidní produkt. Co mi trochu nesedí, je knihovna CLX; je na ní totiž vidět, že je do produktu jaksi "násilím naroubovaná". Přijde mi dost ošidné vkládat mezi vrstvu Win32 API a VCL ještě knihovnu Qt. Podle mého by bylo rozumnější mít dvě verze této knihovny pro Windows a pro Linux, které by se sice podstatně lišily vnitřnostmi, ale navenek by se tvářily shodně. Je mi jasné, že za rozhodnutím stojí snaha o snížení nákladů při vývoji CLX, ale nedá mi to neříct, že já bych to dělal jinak.

Pokud už máte nižší verzi BCB a neprogramujete zrovna databázové aplikace nebo webové služby, a navíc vás nezajímají aplikace pod Linuxem, asi se vám update nevyplatí - na to je změn, které se vám budou hodit, přece jen málo. Pokud ale vyvíjíte v některé z výše zmíněných oblastí, doporučuji o updatu propřemýšlet, protože užitečných novinek je zde celkem dost.

Co je seináře samotného týče, řekl bych že nabídl vývojářům poměrně ucelený přehled o tom, co je v BCB6 nového a i když některé pasáže byly třeba pro mě osobně vysloveně nezajímavé (třeba databáze), celkově byl určitě velkým přínosem. Pokud používáte BCB ve velkém, určitě byste si neměli nechávat podobné akce ujít - za 150 Kč obdržíte relevantních informací víc než dost - a trial verze BCB6 nakonec také není k zahození.

Tématické zařazení:

 » Rubriky  » C/C++  

 

 

 

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

 

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

Uživatelské jméno:

Heslo: