Tuto středu (27. září 2007) se v Gopasu konala přednáška Štěpána
Bechynského s názvem SilverLight. V tomto
článku bych vám chtěl představit co jsem se ve zhruba dvouhodinové
přednášce dozvěděl.
Nejdříve pár slov o SilverLightu přímo od Microsoftu:
Microsoft® Silverlight™ is a cross-browser, cross-platform plug-in for
delivering the next generation of .NET based media experiences and rich
interactive applications for the Web. Silverlight offers a flexible programming
model that supports AJAX, VB, C#, Python, and Ruby, and integrates with existing
Web applications. Silverlight supports fast, cost-effective delivery of
high-quality video to all major browsers running on the Mac OS or Windows.
Uvedená marketingová definice se jeví celkem
správná s jednou podstatnou poznámku – platí pouze pro
SilverLight 1.1, který se nachází v Alpha verzi (ostrá verze
prý bude v dubnu 2008). Proč to uvedu dále v článku.
Architektura SilverLight aplikace
SilverLight aplikace se skládá ze tří částí:
- XHTML stránka
- XAML soubor
- soubory s aplikační logikou
Stručně popsané části si pojďme prohlédnout podrobněji:
XHTML stránka
XHTML stránka je hostitelem SilverLight aplikace. Je zapotřebí si do
prohlížece stáhnout a instalovat (podobně jako u Adobe Flashe) plugin.
V současnosti jsou podporovány následující browsery:
- platforma Windows: IE6, IE7, Firefox, (připravuje se podpora Opery)
- platforma Mac: Safari
- platforma Linux: připravuje se ve spolupráci s firmou Novell (projekt
Mono a MoonLight)
A jak tedy začlenit SilverLight aplikaci do XHTML stránky? Zde je
ukázka:
...
<head>
<title>My Silverlight Application</title>
<script type="text/javascript" src="js/Silverlight.js"></script>
<script type="text/javascript" src="js/CreateSilverlight.js"></script>
<script type="text/javascript" src="js/eventhandlers.js"></script>
</head>
...
<body>
<div id="slPluginHost" >
<script type="text/javascript">
var parentElement = document.getElementById("slPluginHost");
createSilverlight();
</script>
</div>
</body>
...
Soubor SilverLight.js obsahuje funkce nutné pro přístup
k SilverLight komponentě vložené do stránky. Fuknce
createSilverLight() může vypadat následovně:
function createSilverlight()
{
Silverlight.createObject(
"plugin.xaml", // Source property value.
parentElement, // DOM reference to hosting DIV tag.
"myPlugin", // Unique plug-in ID value.
{ // Plug-in properties.
width:'1024', // Width of rectangular region of plug-in in pixels.
height:'530', // Height of rectangular region of plug-in in pixels.
inplaceInstallPrompt:false, // Determines whether to display in-place install prompt if invalid version is detected.
background:'white', // Background color of plug-in.
isWindowless:'false', // Determines whether to display plug-in in windowless mode.
framerate:'24', // MaxFrameRate property value.
version:'1.0' // Silverlight version.
},
{
onError:null, // OnError property value -- event-handler function name.
onLoad:null // OnLoad property value -- event-handler function name.
},
null, // initParams -- user-settable string for information passing.
null); // Context value -- passed to Silverlight.js onLoad event handlers.
}
Anglickým komentářům je myslím dobře rozumět, takže v rychlosti
nejdůležitější parametry:
- plugin.xaml
- název souboru s definicí uživatelského rozhraní
- parentElement
- odkaz na element v kontextu XHTML stránky, kdo kterého se má
SilverLight aplikace přidat
XAML soubor
XAML je
značkovací jazyk pro definici uživatelské rozhraní. Jedná se
v podstatě o XML soubor.
V XAML souboru se nadefinuje uživatelské rozhraní a handlery
událostí.
Aplikační logika
Pokud se bavíme o SilverLight 1.0 tak se aplikační logika
omezuje na javascriptové funkce, které jsou ze SilverLight aplikace volány.
Tyto funkce mohou být umístěny v externích souborech nebo přímo
v XHTML stránce.
V SilverLight 1.1 je situace dočista jiná. Přímo v XAML
souboru je možno definovat code begind zdroj. Tím zdrojem může být
buď kompilovaný kód nebo skript. Z kompilovaných jazyků bude
podporován C# a VB.NET. Jejich běh bude zajišťovat CLR integrovaný v pluginu. Ze
skriptovacích jazyků budou podporovány Javascript, Python a Ruby. jejich běh
bude zajišťovat DLR. Ani
v jednom případě tedy není nutné mít na klientu nainstalovaný
MS.NET.
Tohle se mi hodně líbí – možnost definovat aplikační logiku
v DLL souboru. Výkon aplikace bude oproti javascriptovému řešení
určitě nesrovnatelný (podle slov pana Bechynského je to
o 4 řády).
Ještě bych chtěl zmínit, že se připravuje podpora Web Services.
Vývojové nástroje
Základním vývojovým nástrojem je Microsoft Visual
Studio 2008. Po stažení příslušného pluginu
si můžete přímo založit nový SilverLight projekt.
XAML soubor lze editovat v programu Microsoft
Expression Blend 2. V blendu si můžete vektorově nakreslit grafiku a
opatřit ji například animátory. Ty se rozdělují podle datového typu
animované vlastnosti.
Po založení nového SilverLight 1.1 projektu se vytvoří prádný
XAML soubor a rovnou také code behind stránky v jazyce C#.
Další zajímavosti
- Zaujala mě snadná komunikace mezi XHTML stránkou a SilverLight aplikací.
Kupříkladu ze SilverLight aplikace máte pomocí statické property přístup
k DOM hostitelské stránky, se kterým můžete dělat do se vám
zlíbí.
- Z kontextu javascriptu v XHTML stránce lze volat třídy a metody
v SilverLight aplikaci. Takže například můžete spouštět C# kód
v DLL z javascriptu – neuvěřitelné. Přístup je samozřejmě
pouze ke spřávně oanotovaným třídám a metodám.
- Další skvělá věc je, že si mezi SilverLightem a javascriptem ve
stránce můžeme posílat i komplexní data – například doménové
objekty. Komunikace probíhá pomocí JSONu.
- Už dnes je SilverLight neporazitelné v oblasti videa. V USA prý
existují televize, které svůj program vysílají po internetu a pomocí
SilverLightu jej lze přehrávat v HD kvalitě.
- Velikost pluginu, který je nutno nainstalovat do prohlížeče je ve verze
1.0 asi 1.5 MB, verze 1.1 bude mít asi 4.5 MB.
- SilverLight má obdobu cookies (SharedObject
v případě Flashe) – možno uložit až 4 MB dat.
Závěr
SilverLight (a obzvláště verze 1.1) se mi moc líbí. Je vidět, že se
Microsoft rozhlédl kolem sebe (Flash) a udělal svoje řešení, které netrpí
některými neduhy konkurence. Uvidíme, jak se v budoucích měsících
SilverLight rozšíří. V Čechách jsem o něm zatím skoro
neslyšel. Už několik měsíce nesleduju dění kolem JavaFX, ale bojím se, že
SilverLight má zatím navrch.
Odkazy
Celý článek 30. September 2007
Celý článek 25. September 2007
Celý článek 12. September 2007
Jedním z důležitých kriterií při tvorbě webových stránek je
rychlost jejich generování. V systémech jako je Java nebo Asp.Net je
nám hej – náročné operace (start ORM nástroje atd) si odbydeme při
startu aplikace a při obsluhování požadavků se využívá již
vytvořených objektů.
Ve skriptovacích jazycích – mám na mysli konkrétně PHP –
jsme na tom jinak. Při zpracování požadavku se musí celá naše aplikace
postavit a po jejím skončení se zase sbourá. V PHP si nemůžeme
dovolit startovat při každém požadavku náročné části systému.
Celý článek 11. September 2007
Pousmál jsem se nedávno při čtení článku Jak se plánují
projekty.
Dnes jsem se v mojí RSS čtečce dopracoval k článku,
který informuje o dalším Dilbertovi na
programátorské téma – nyní přímo javovské.
Takto tedy vypadá páteční
Dilbert:
Celý článek 8. September 2007
Pomocí DWR můžete volat Javovský kód přímo z Javascriptu
z prostředí internetového prohlížeče na klientském počítači. DWR
se samo postará o vykonání asynchronního požadavku na server a převod
objektů z javovského světa do javascriptového.
Kromě toho má DWR sadu Utilit, které pomáhají
v manipulaci s odesíláním a zpracováním příjímaných dat
– plnění selektu daty, přidávání řádků do tabulky atd.
Celý článek 7. September 2007
Právě jsem si přečetl článek Google
Reader umí konečně hledat a řekl jsem si, že Google Reader také vyzkouším.
Otevřel jsem si tedy novou záložku v Opeře vyťukal jsem
adresu…a…nic. Vše co se zobrazilo bylo pouze logo
v levém horním rohu a lišta s navigací v rohu pravém. Toť
vše.
Nemám nic proti Googlu a jeho AJAXovým aplikacím ba naopak. O to víc
kroutím hlavou na tím, že nedokážou (nebo nechtějí) Google Reader
otestovat i pod Operou, která už rozhodně není zcela neznámým
browserem. Dle statistik používá Operu 15% návštěvníků mého
blogu (pro úplnost Gecko 60%, IE 21%).
Jako RSS klienta používám Operu. Jak jsem napsal jako browser používám
Operu. A hádejte jakého mailového klienta používám? Správně –
opět Opera.
Okno opery se zobrazením adresářů pošty a RSS (Novinky) v dolní
části
Výhody Opery oproti IE a Mozille spatřuji v následujícím:
- rychlost zobrazování stránek
- integrace browseru, rss čtečky, mailového klienta do jednoho
programu
- mouse gestures
- vymakané klávesové zkratky skoro na všechno
Celý článek 6. September 2007
Před několika málo okamžiky jsem si přečetl zajímavý článek od
kamaráda Romana Pichlíka s názvem Certifikace
– děkuji nechci.
Nedá mi to a musím některé věci z článku okomentovat.
Pokud budu mluvit konkrétně,tak Sun Certified Programmer for the Java
2 Platform, Standard Edition 5.0. mě neláká z toho důvodu, že
nenosím v hlavě ani kompilátor, ani interpretr a už vůbec si nedovedu
představit jak runtime zpracovávám v hlavě (překlad, interpretace,
výpis výstupu) zdrojový kód na kusu papíru. Ušetřený procesorový čas
budu raději věnovat jiným samovzdělávacím aktivitám.
Asi jsem nepochopil slova o nošení kompilátor v hlavě. Při
pohledu na přehled
požadavků ke zkoušce Sun Certified Programmer for the Java 2 Platform,
Standard Edition 5.0 se mi naopak zdá (a při studiu na zkoušku se to
potvrdilo), že se jedná o užitečné a praktické okruhy otázek.
Faktem je, že jsem při studiu na tuto zkoušku objevil mnoho střípků do
mého poznání Javy, které mi až dosud chyběly. Programování (Java) je
kromě mojí práce i můj velký koníček, takže i sve svém
volném čase studuju novinky atd., takže při přípravě na zkoušku jsem
pouze na dva týdny (z toho jeden v nemocnici) jedhoduše sáhl ke
studiu otázek z okruhu požadavků.
Ovšem uznávám, že tento certifikát má jistou vypovídající hodnotu.
Jestli tato hodnota napoví cosi o tom, že držitel dokáže v hlavě
překládat a provádět java kód a nebo o tom, že má dobré znalosti
Javy, záleží pouze a jenom na interpretaci toho kdo na certifikát
pohlíží. Co se týká pokročilejších certifikací od Sunu, tak tam bych
byl ještě obezřetnější.
Opět jsme u toho překládání a provádění kódu
v hlavě…Myslím, že je dobré, když programátor umí číst kód
a rozumí tomu jak funguje. Dnes například zatraceně dobře vím jaký je
rozdíl v tom, když kolekci Set
naimplementuju ja
HashSet
nebo TreeSet
(rozdíl je například
v tom, že TreeSet
umožňuje mít kolekci seřazenou a
vyžaduje, aby objekty v kolekci implementovali rozraní
Comparable
).
Myslím, že certifikace je jako kterýkoliv jiný stupeň vzdělání.
Vysoká škola (vystudoval jsem spalovací motory na ČVUT v Praze) mi pro
mojí současnou pozici programátora dala jednu podstatnou věc –
vědomí, že se člověk může naučit skutečně všechno.
Certifikace samozřejmě není všechno. Jak už to tak bývá –
i vysokou školu vystuduje hlupák. U certifikátů to může být
zrovna tak. V mém případě mělo složení certifikátu ještě jeden
podstatný důvod. Abych jednoduše zjistil, jak na tom moje znalosti Javy jsou.
Ve firmě jsem v Javě programoval pouze já a vůbec jsem netušil jak
dobře ji vlastně ovládám.
Asi nejvíce mi vadí fakt, že nalévají do hlavy pouze a jenom pravdu od
Sunu. To bohužel vede k tomu, že je do člověka v některých
případech napumpovaná teorie, která je v praxi nepoužitelná.
A tak člověk bohužel získá deformovaný pohled na ostatní
technologie.
Tady je patrně řeč o některý složitějších zkouškách (např.
Sun Certified
Enterprise Architect). V základním certifikátu je řeč
v podstatě jenom o základních principech jazyka a API. Není tam
tedy prostor pro žádnou pravdu od Sunu.
Na závěr malá zkušenost z praxe – jak jsem již psal v minulém
postu prodělal jsem několik pohovorů. Ani na jedno z míst by měl
personální agentura nedoporučila nebýt certifikátu. Většina firem chce
Java programátory s praxí delší než mých 2,5 roku. Částečnou
náhražkou je právě vlastnictví vzpomínaného glejtu.
Certifikát nechápu jako něco, na co se člověk nadrtí (jako na zkoušku
na vejšce) a pak to zapomene. Takto to snad ani dělat nejde. Myslím, že je
to spíš o tom posbírat a sesumírovat již zažité znalosti.
Závěr
Podle mě je úplně jedno jestli člověk studuje nové věci kvůli tomu,
aby si udělal certifikát, nebo z jiného důvodu. Tak či onak si
rozšiřuje obzory a někam se posouvá.
Celý článek 29. August 2007
V minulém
článku jsem psal, že se se připravuji na další zkoušku – byla
jí Macromedia Flash 8 Exam.
Musím přiznat, že složení této zkoušky pro mě bylo o dost
snažší než v případě té sunovské. Dokazuje to
i skóre 97% (1 chybná odpověď).
S Flashem pracuji
v Gopasu asi dva roky. Používáme ho
jako běhové prostředí pro e-learningové kurzy.
Moje plány do nejbližší budoucnosti
V poslední době jsem prodělal několik pohovorů (např. ve firmách
Hewlett-Packard
nebo Avedya a zjistil jsem, že firmy mají
zájem o lidi, kteří jsou seznámeni s pokročilejšími
technologiemi z rodiny J2EE. Mluvím například o JMS a EJB. Takže
moje self studium se bude ubírat tímto směrem.
Pomalu se začnu připravovat na zkoušku Sun Certified
Web Component Developer for the Java 2 Platform, která se mi zdá
podle přehledu požadavků velmi zajímavá.
A nakonec musím zmínit Maven.
Tento buildovací nástroj se těší v posledních týdnech mezi českými
javisty velkému zájmu (CZJUG
– hvězdy září v Září, Co
bych rád slyšel v září na CZJUG, Pozvánka: Maven
– praktické nasazení a také e-mailová konference na
konference@java.cz).
Celý článek 24. August 2007
Jak jste si mohli všimnout nové články nyní na blogu moc nepřibývají.
Má to několik důvodů – nekonečné práce na dostavování domu,
příprava na další certifikát (o který se jedná bude možná trochu
překvapení), návštěva posilovny (konečně jsem opět začal pravidelně
cvičit), čtení publikací (mám rozečteno několik více či méně
zajímavých knih, po přečtení je zde představím).
Ale nyní již k tomu nejzajímavějšímu co mi přinesl RSS
klient
- Rodina produktů se slovem Spring v názvu se rozrůstá.
Nedávno například o Spring Batch.
K čemu je Spring Batch dobrý bych si dovolil citovat přímo
z homepage projektu:
Spring Batch provides a technical framework and programming model to support
long-running processes that perform a given set of tasks repetitively.
A typical batch program generally reads a large number of records from a
database, file, or queue, processes the data in some fashion, and then writes
back data in a modified form. Spring Batch automates this basic batch iteration,
providing the capability to process similar transactions as a set, typically in
an offline environment without any user interaction.
Dalším nový
produktem jsou Spring Web
Services. Zde je výčet klíčových vlastností:
- Making the best practice the easy practice: Spring Web Services makes
enforcing best practices easier. This includes practices such as the
WS-I basic profile, Contract-First development, and having a loose coupling
between contract and implementation.
- Powerful mappings: You can route an incoming XML request to any handler
depending on message payload, SOAP Action header, or XPath expression.
- XML API support: Incoming XML messages can be handled in standard JAXP APIs
such as DOM, SAX, and StAX, but also JDOM, dom4j, XOM, or even marshalling
technologies.
- Flexible XML Marshalling: The Object/XML Mapping module in the Spring Web
Services distribution supports JAXB 1 and 2, Castor, XMLBeans, JiBX, and
XStream. Because it is a separate module, you can use it in other environments
as well.
- Reuse of your Spring expertise: Spring-WS uses Spring application contexts
for all configuration, which gets you up-and-running quickly. Also, the
architecture of Spring-WS resembles that of Spring-MVC.
- Support for WS-Security: WS-Security allows you to sign SOAP messages,
encrypt and decrypt them, or authenticate against them. And it integrates with
Spring Security!
Celý článek 18. August 2007
Novější články
Starší články