Kam povedou další kroky
Dnes již asi každý dobře ví, co to znamená World Wide Web -- WWW -- a o jakou službu jde. Na druhé straně, málokdo zná prostředí, které umožnilo vznik WWW, a málokdo ví, že toto prostředí je stále k dispozici a nabízí dnes stejně moderní produkty, jakým byl před lety vznikající WWW.
Samozřejmě, hovoříme o operačním systému NEXTSTEP (odtud také slovní hříčka v názvu článku) a jeho následníku, prostředí OpenStep. Rozhodně je o čem hovořit -- málokde vzniklo tolik nových a zajímavých technologií: o Webu jsme se již zmínili, firma NeXT jako první uvedla na trh tiskárny GDI, vizuální objektové programování, které dnes zažívá boom v podobě produktů typu VisualC nebo Delphi, nabízel NEXTSTEP již v osmdesátých letech... V tomto článku se samozřejmě spíše soustředíme na ty vlastnosti NEXTSTEPu, které jsou zajímavé pro většinu čtenářů TelNetu: na jeho síťové služby, na podporu Internetu, na práci s multimediálními údaji a podobně.
Co to znamená, když se řekne NEXTSTEP
NEXTSTEP je operační systém firmy NeXT, patřící Stevu Jobsovi -- témuž, který před lety založil firmu Apple a vytvořil počítače Macintosh. NEXTSTEP nabízí výkonné a spolehlivé jádro (podobně jako např. SCO unix), špičkové grafické uživatelské rozhraní (podobně jako Macintosh nebo Windows 95) a objektové vývojové prostředí, které zatím nemá konkurenci. Samozřejmým důsledkem je nemalá cena NEXTSTEPu -- uživatelská verze je asi osmkrát dražší než Windows 95, a vývojové prostředí stojí ještě daleko více. Proto -- a zčásti také kvůli problémům se zdejším bývalým distributorem -- je NEXTSTEP u nás jen málo rozšířen; setkáme se s ním spíše ve velkých podnicích jako jsou spořitelny nebo banky. Relativně často také NEXTSTEP používají vysoké školy a studenti, protože firma NeXT nabízí obrovské akademické slevy (přesahující 90%).
NEXTSTEP se dnes používá nejčastěji ve verzi 3.3, která podporuje pracovní stanice NeXT s procesory Motorola, počítače třídy IBM PC s procesory Intel, počítače Sun s procesory SPARC a počítače Hewlett-Packard s architekturou PA-RISC. Na trhu však již je verze 4.2, která přináší zásadní novinku: NEXTSTEP je v ní explicitně rozdělen na jádro a vyšší vrstvy; ty jsou pod názvem OpenStep zdokumentovány jako otevřené aplikační rozhraní, jehož implementace je k dispozici nejen pro původní jádro firmy NeXT (podporující zmíněné čtyři architektury), ale i pro Solaris, Windows NT nebo Windows 95. OpenStep bude také hlavním operačním systémem počítačů Macintosh -- firma Apple právě kvůli tomu koupila celou společnost NeXT. Navíc vzniká freewareová implementace OpenStepu, která bude pracovat nad libovolným operačním systémem (zajímavý je samozřejmě především Linux); ta se bude jmenovat GNUStep. Je tedy celkem pravděpodobné, že dosavadní omezení na velké podniky v budoucnu zanikne, a NEXTSTEP/OpenStep se rozšíří i tam, kde si dnešní relativně drahý NEXTSTEP nemohou z jakýchkoli důvodů dovolit.
Multimedia
Dříve, než se soustředíme na komunikaci, věnujeme několik odstavců podpoře, již v NEXTSTEPu mají multimedia. To je celkem přirozené, protože komunikační služby jsou až sekundární; hlavní jsou data, která jejich prostřednictvím chceme přenášet. A ta jsou právě v praxi nejčastěji multimediální.
Zkoumáme-li podporu, kterou multimediím nabízí nějaký systém, je vhodné si je rozdělit do několik skupin, a každé z nich se věnovat samostatně. Takovými skupinami poměrně přirozeně mohou být formátovaný text, audio, statická plošná grafika, statická 3D grafika a video. Podívejme se, jakou podporu pro tyto služby nalezneme v samotném NEXTSTEPu (nebudeme tedy probírat komerční aplikace, které nabízejí ještě daleko luxusnější služby):
Základním textovým formátem se kterým pracují standardní objektové knihovny -- a tedy také všechny aplikace -- NEXTSTEPu není ASCII, ale RTF. Většina čtenářů bude pravděpodobně formát RTF znát z MS Windows; pro ostatní uveďme jen stručně, že se jedná o univerzální formát, který podporuje téměř libovolné formátování textu, od volby různých fontů a stylů písma přes formátování odstavce až třeba po barevný text. Firma NeXT navíc formát RTF rozšířila o možnost vkládání libovolných objektů. OpenStep (NEXTSTEP4.x) přináší další novinky -- texty v něm využívají libovolné kódování (a k dispozici je i kódování UNICODE), standardní knihovny podporují kerning, slitky a řadu dalších služeb, na které jsme zvyklí spíše z plnohodnotných DTP systémů. Jednoduchou ukázku základních schopností formátu RTF vidíme na obrázku:
.
To přitom není specialita standardního systémového editoru -- prostě všechny aplikace které pracují s textem (a které z nějakého důvodu formátování explicitně nezakáží) nabízejí tytéž možnosti.
Od samého začátku nabízel NEXTSTEP poměrně luxusní podporu i pro práci se zvukem. V prvních verzích NEXTSTEPu byly tři knihovny: SoundKit, zajišťující zpracování samplovaných zvuků, MusicKit pro přímé programování skladeb (analogicky známému MIDI formátu, který mimochodem NEXTSTEP také podporuje) a PhoneKit, určený pro řízení telefonního přístroje. Dnes je standardní součástí NEXTSTEPu pouze SoundKit; MusicKit a PhoneKit spravuje samostatná organizace a jsou k dispozici na Internetu. Standardní služby SoundKitu umožňují zpracování samplovaného zvuku s případným využitím on-line komprese Mulaw; samply mohou mít osm nebo šestnáct bitů, zvuk může být vícekanálový a samplovací frekvence je volitelná. Součástí knihoven jsou i objekty uživatelského rozhraní pro zpracování samplovaného zvuku; příklad jejich využití vidíme v okénku "Lip Service" na prvním obrázku.
Statické dvourozměrné obrázky mohou být buď ve formě vektorů, nebo ve formě bitových map. V obou směrech NEXTSTEP podporuje nejlepší standardy, které jsou k dispozici -- pro vektorovou grafiku je to Adobe PostScript Level 2, který je -- v modifikaci Display PostScript -- standardním zobrazovacím systémem NEXTSTEPu; pro bitové mapy je v NEXTSTEPu standardně zabudována podpora formátu TIFF, zahrnující jeho nejrůznější modifikace, včetně pakování JPEG. Stejně jako u práce s formátovaným textem nebo se zvukem to znamená, že aplikační programátoři mají odpovídající služby k dispozici na standardních knihovnách, zatímco uživatelé naleznou v NEXTSTEPu hotové editory (textu, zvuku i obrázků obou typů). Na obrázku vidíme např. standardní PostScriptový editor:
NEXTSTEP je, pokud vím, jediný operační systém, který standardně obsahuje i podporu pro třírozměrnou grafiku: standardní součástí NEXTSTEPu je interpret jazyka Pixar RenderMan, určeného pro popis třírozměrných scén. Interpret dokáže scény zobrazit buď v interaktivním režimu -- tedy jen v průměrné kvalitě, ale s dostatečnou rychlostí pro interaktivní práci, nebo je může renderovat fotorealisticky. Ukažme si příklad:
na obrázku vidíme nejprve drátový model, pak výsledek interaktivního renderování a třetí je výsledek fotorealistického renderování. Poslední obrázek je také fotorealistický, ale pro zajímavost jsme ze standardních povrchů, uložených v knihovnách NEXTSTEPu, zvolili "mramor" (namísto "plastické hmoty", která byla použita pro předchozí případy). Bohužel, třírozměrná grafika není povinnou součástí OpenStepu; nalezneme ji tedy jen v implementacích firmy NeXT (NEXTSTEP4.x), ale není jisté, zda bude například v implementaci Apple (ví se ale již, že bude v GNUStepu).
Konečně, vrcholem multimediálních systémů je bezpochyby práce s videozáznamem. NEXTSTEP samozřejmě nabízí standardní služby i zde -- jeho knihovny obsahují služby dostupné programátorům, kteří chtějí své aplikace vybavit schopností práce s videozáznamy. Uživatelé pak mají k dispozici aplikaci NEXTTIME, schopnou přehrávat záznamy ve většině standardních formátů.
Podívejme se na záběr z reklamy na film Toy Story -- ten je pro nás mimo jiné zajímavý tím, že se jedná o vůbec první film vyrobený kompletně na počítači, a to právě s využitím programového vybavení Pixar.
Sítě a komunikace
NEXTSTEP3.3, stejně jako NEXTSTEP4.x pro původní jádro firmy NeXT, v sobě obsahuje kompletní Berkeley UNIX BSD4.3 (a stejně tomu bude s OpenStepem/Apple). Podporuje proto samozřejmě kompletní UNIXové síťové služby, od standardního protokolu TCP/IP přes jeho luxusnější služby jako je telnet nebo ftp až po WWW (browser WWW sice není standardní součástí NEXTSTEPu, špičkový browser OmniWeb je ale k dispozici zdarma). Standardní součástí NEXTSTEPu je však -- na rozdíl od řady i dražších systémů -- podpora sdílení souborů NFS a podpora síťového protokolu IPX, používaného firmou Novell.
V tomto článku není místo na podrobný popis správy sítě, pro jejíž usnadnění nabízí NEXTSTEP řadu prostředků; většina z nich jsou aplikace vybavené grafickým uživatelským rozhraním a on-line manuálem. Za zvláštní zmínku stojí distribuovaná síťová databáze NetInfo; ta v NEXTSTEPu umožňuje pohodlnou správu sítě z kteréhokoli uzlu, sdílení informací o síti mezi jednotlivými uzly a podobně. Firma NeXT v reklamě uvádí, že NetInfo je jediný prostředek distribuované správy sítě, který úspěšně prošel praktickou zkouškou používání v heterogenních sítích, obsahujících řádově desetitisíce a víc uzlů. O heterogenních sítích firma NeXT hovoří po právu, protože NetInfo je nejen standardní součástí NEXTSTEPu, ale i samostatným produktem pro řadu dalších operačních systémů (jako je např. Solaris nebo HP-UX), které tak mohou být bez problémů do sítě spravované prostřednictvím NetInfa připojeny.
Přestože služby, které NEXTSTEP nabízí aplikačním programátorům do tohoto článku nepatří, nelze se nezmínit o technologii
Distributed Objects (DO), která je standardní součástí NEXTSTEPu i všech implementací OpenStepu, a která je, podobně jako NetInfo, k dispozici i jako samostatný produkt pro jiné operační systémy (pod názvem PDO -- Portable DO). Jedná se o vrstvu, která zajišťuje komunikaci mezi objekty, které nejsou součástí jedné a téže aplikace, ale namísto toho leží kdekoli -- třeba na různých počítačích, propojených sítí. Jestliže tedy např. v klasickém objektovém programu může objekt "Výpočet" komunikovat s objektem "Okno" (které pak zobrazuje výsledky), je v prostředí kde jsou k dispozici DO možné totéž, ale přitom objekt "Okno" bude na našem domácím PC, zatímco objekt "Výpočet" poběží na daleko výkonnějším počítači... Téhož efektu je samozřejmě možné docílit klasickou technologií klient/server; výhoda DO ale spočívá v tom, že programátor distribuovaných aplikací nemusí opouštět objektové prostředí a nemusí se sám starat o TCP/IP propojení -- objekty spolu komunikují přesně stejně jako v 'nedistribuovaném' programu, a o vše potřebné se postará právě DO. Technologie (P)DO je samozřejmě kompatibilní se standardy CORBA a OLE, používanými v jiných objektových prostředích.
Vraťme se opět k uživatelské úrovni, na kterou bychom se v tomto článku rádi soustředili. Z hlediska uživatele můžeme říci, že Internet nabízí tři základní služby: e-mail (elektronickou poštu), ftp (archívy souborů) a WWW. V následujících odstavcích si ukážeme, jaké služby zde od NEXTSTEPu můžeme očekávat.
Elektronická pošta
Elektronická pošta je naprosto standardní službou UNIXu, který je v NEXTSTEPu obsažen. Není proto divu, že NEXTSTEP od samého začátku služby elektronické pošty poskytoval, jak na úrovni lokální sítě, tak i v rámci Internetu (jedná se, samozřejmě, o jednu a tutéž službu. Jako dlouholetý uživatel NEXTSTEPu jsem byl v souvislosti s boomem cc:mailu překvapen, že v prostředí DOSu nebo Windows není samozřejmé, že elektronická pošta funguje přesně stejně mezi počítači propojenými lokální sítí jako mezi počítači propojenými přes modem nebo jako v rámci Internetu).
Tak je tomu ovšem v každém UNIXu. NEXTSTEP, jako operační systém s luxusním grafickým uživatelským rozhraním a multimediálními schopnostmi, šel mnohem dále: od samého začátku měli jeho uživatelé k dispozici multimediální elektronickou poštu, umožňující odesílání formátovaného textu, obrázků, zvukových záznamů nebo zcela obecných souborů a celých adresářů -- NeXTmail. Dnes NEXTSTEP samozřejmě podporuje i o něco chudší standard MIME; jeho výhodou je to, že je podporován i na jiných platformách.
Tvorba zprávy je triviální -- prostě píšeme text (s plným využitím možností RTF), a kdekoli do něj chceme vložit nějaký objekt, prostě objekt myší do okna se zprávou vhodíme ("drag&drop"). Tlačítka mezi adresou a obsahem zprávy zajišťují pomocné služby -- Deliver zprávu odešle (červený trojúhelník je varováním, že zpráva je ve formátu NeXTmail, takže bude nečitelná pro uživatele jiných systémů), Lip Service otevře "magnetofon" pro nahrání zvukového záznamu (i ten na obrázku vidíme), a tak dále. Předposlední tlačítko slouží pro volbu formátu -- máme na vybranou NeXTmail, MIME a obyčejný text; pokud neurčíme jinak, zvolí se formát, ve kterém přišla zpráva na niž odpovídáme. Konečně "Receipt" znamená, že dostaneme automatické potvrzení až si adresát zprávu přečte.
Podobně je tomu s přijatou poštou: nahoře je ovládání, datum zprávy a obrázek jejího odesilatele; uprostřed je seznam zpráv (vidíme zde označení zpráv -- trojúhelníček reprezentuje NeXTmail, 'M' MIME) a dole vlastní obsah zvolené zprávy. Obsahuje-li zpráva ve formátu NeXTmail nebo MIME nějaké doplňky, můžeme je kamkoli přenést opět myší -- "drag&drop" v NEXTSTEPu funguje kdekoli kde to má smysl.
Archívy FTP
Služba FTP (stejně jako např. telnet) je standardní součástí každého UNIXu; nalezneme ji proto samozřejmě i v NEXTSTEPu. Jedná se však skutečně o klasickou UNIXovou službu s klasickým UNIXovým řádkovým ovládáním. Daleko lepší je proto na FTP využít služeb browseru OmniWeb, kterému se budeme podrobněji věnovat zanedlouho -- pak máme k dispozici pohodlné rozhraní, podporující samozřejmě plně i "drag&drop".
Procházení WWW (browsing)
Tento odstavec se nejmenuje "procházení" náhodou -- budeme se zde totiž zabývat pouze tím, co NEXTSTEP nabízí na straně klienta WWW. Firma NeXT sama se totiž soustředila spíše na služby, umožňující vytvářet výkonné a luxusní WWW servery; s nimi se ale seznámíme až později, a nyní se budeme věnovat právě klientům.
Stejně jako pro jiné operační systémy, i pro NEXTSTEP existuje řada různých browserů. Zde se stručně seznámíme s browserem OmniWeb firmy Lighthouse, přinejmenším ze dvou dobrých důvodů: OmniWeb patří mezi nejlepší browsery vůbec, a je (pro jednoho uživatele) k dispozici zdarma. Základní pohled na okno OmniWebu s indexem z cédéčka z prvního čísla TelNetu vidíme na prvním obrázku; zde je vidět rozdělení jednoho okna na více nezávislých rámců.
Podrobnější seznámení s OmniWebem si necháme na jindy, teď jen velmi stručně: mapování obrázků na straně klienta OmniWeb samozřejmě podporuje, stejně jako progresivní JPEG obrázky. Nejinak je tomu s dynamickými dokumenty. O případné vkládání hypertextových linků do dopisů elektronické pošty (nebo kamkoli jinam, třeba do spreadsheetu nebo do databáze) se OmniWeb starat nemusí; taková 'kouzla' umí NEXTSTEP sám od sebe. Podobně hierarchická struktura záložek nebo automatické upozornění na novinky je v OmniWebu dávno samozřejmostí.
WebObjects
Poslední odstavec věnujeme podpoře, kterou firma NeXT nabízí pro tvorbu WWW serverů. Odpovídající systém se jmenuje WebObjects, a -- protože zdaleka ne každý uživatel bude vytvářet vlastní WWW server -- není standardní součástí NEXTSTEPu, ale je k dispozici samostatně.
Podrobnější popis technologie WebObjects by byl tématem na
samostatný článek; zhruba však můžeme říci, že podobně jako DO ukrývají technické detaily síťového spojení pod standardní objektové rozhraní a umožňují tak psát "obyčejné jednoduchá aplikace" které jsou ve skutečnosti distribuované, nabízejí WebObjects standardní objektové rozhraní nad technickými detaily HTML a umožňují tak psát "obyčejné jednoduché aplikace", jejichž rozhraní je přístupné prostřednictvím WWW. Jinými slovy, máte-li k dispozici WebObjects a Internet, můžete s vynaložením minimálního úsilí zpřístupnit služby kterékoli z vašich aplikací každému, kdo má WWW browser.
Podstatnou a velmi zajímavou novinkou je to, že WebObjects umožňují ve spojení s technologií DO vytvářet distribuované WWW servery. Zatímco klasický WWW server je centralizovaná aplikace, která musí sama zajistit všechny potřebné služby (a která poměrně snadno podléhá zahlcení přílišným počtem připojených klientů), nabízí technologie WebObjects jiné řešení: Pro každý úkol je určena samostatná aplikace, stejně, jako tomu je v klasickém nesíťovém prostředí. Všechny tyto aplikace -- díky systému WebObjects -- však jsou k dispozici prostřednictvím sítě WWW, a dohromady tak vytvářejí server který se nezahltí, a nadto může snadno nabídnout daleko širší spektrum služeb, než jakýkoli ze serverů centralizovaných.
WebObjects mohou v případě potřeby spolupracovat i s Javou.