Finally, the ability to develop your UI once and then deploy it as a web
application and/or a desktop application without writing > any additional
code should be enough to get any developer or manager interested.
Myslím, že projekt jSeamless
rozhodně stojí za prozkoumání.
Jsem rád, že jsem po týdnu stráveném ve Vinohradské nemocnici (operace
slepého střeva) zase „zpátky“. Ovšem ani v nemocnici jsem
nezahálel – pročítal jsem si Complete
Java 2 Certification Study Guide Fifth Edition.
Celý článek 28. May 2007
Tak to vypadá, že je AJAXu odzvoněno. Alespoň takhle to prezentuje Sun.
Na konferenci JavaOne Sun oznámil zrození nové RIA technologie –
JavaFX.
Pár střípků o JavaFX
- stačí doinstalova malou knihovnu a JavaFX aplikace poběží na všech
přístrojích (počítačích, mobilních telefonech), kde je nainstalována
Java SE nebo Java ME. V případě mobilních přístrojů je to
kompletní operační systém, který zahrnuje linuxový kernel a nativní
servisy.
- není vidět zdrojový kód aplikace tak jak je tomu v případě
AJAXu, který je realizován klientským javasriptem
- JavaFX aplikaci lze používat i v offline módu
- používá vlastní skriptovací jazyk – JavaFX Script
- odpadá problém s kompatilitou javascriptového kódu pro různé
prohlížeče jak je to mu u AJAXu
- JavaFX aplikace splňují heslo write once and run anywhere
(napiš jednou a spušť kdekoliv). Stejný skript bude tedy možné spouštět
na PC, digitální TV a mobilních telefonech.
- JavaFX Script (původní jméno F3)) je staticky
typovaný. Má compile-time kontrolu kódu. Lze v něm používat java
kód – importovat třídy, vytvářet objekty…
- součástí prvního releasu JavaFX bude interaktivní GUI builder
(v současnosti již hotov)
- co se týče deploymentu JavaFX na klienty chystá Sun nový model –
základní balík knihoven bude velmi malý a další potřebné části se
budou doinstalovávat „lazy“.
Konkurenti JavaFX
- AJAX
- rodina technologií, které mají společní název AJAX (Asynchronous
JavaScript and XML) a umožňují asynchronní volání zdrojů na serveru na
pozadí klasické HTML stránky.
- Apollo
- projekt Apollo
pochází z dílny Adobe.
Apollo is the code name for a cross-operating system runtime being developed
by Adobe that allows developers to leverage their existing web development
skills (Flash, Flex, HTML, JavaScript, Ajax) to build and deploy rich Internet
applications (RIAs) to the desktop.
- Macromedia Flash
- Macromedia Flash není
přímým konkurentem JavaFX. Flash byl zpočátku používán na vytváření
animací. Později dostal dobrou podporu pro práci s daty. Ovšem co se
robustnosti nelze jej s Javou srovnávat.
- SilverLight
- Projekt SilverLight pochází
z dílny 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.
Odkazy
Celý článek 15. May 2007
Dnešní článek bude pro ty, kdo programují v ActionScriptu a
speciálně pak použíjí rozšíření flashe JSFL.
Co je JSFL
JSFL je rozšížení Macromedia
Flashe, pomocí kterého píše můžete psát skripty, jejichž spuštěním se
vykonávají operace přimo ve Flash IDE – tedy ne při runtimu SWF
souborů, ale při jejich vývoji. API JSFL umožňuje vytvářet soubory
podobně jako kdybyste je tvořili přímo ve Flash IDE.
Malý výčet možností JSFL:
- možnost importovat objekty do knihovny
- možnost vytvářet movieclipy (lze používat i naimportované objekty
z knihovny)
- lze stavět celou timelinu (přidávat framy i vrstvy)
- do stage lze vkládat objekty z knihovny a nastavovat jim vlastnosti
(lze vkládat i komponenty)
- sestavené soubory lze exportovat
- přidávat vlastní tlačítka do toolboxu
Z uvedených usecasů vyplývá, že lze například jednoduše
spuštěním JSFL skriptu vytvořit SWF soubor, ve kterém budou naimportovány
vaše fotografie a například i použity vaše komponenty.
Pokud máte například data v XML a chcete je převést do FLA souboru
nebo dokonce přímo do SWF stačí vám napsat XML to JSFL convertor a
o převod JSFL do SWF se již postará Flash IDE. Proces, který jsem teď
popsal je velmi podobný tomu jak pracují JasperReports
– zde je na začátku jrxml
soubor, který se převede na
předkompilovaný jasper
soubor. Processingem jasper
souboru (a nastavením modelu) dostaneme výsledný soubor – například
PDF.
Nový soubor není nutné vytvářet od nuly. Můžete si otevřit už
připravený template (s naimportovanými objekty knihovně) a pouze je
částí nových dat doplnit.
Možnosti spouštění JSFL kódu
Existuje několik možností jak spouštět JSFL API.
Spuštění JSFL souboru
Můžete si napsat soubor, který obsahuje JSFL kód a uložit jej
s koncovkou jsfl. Soubory s touto koncovkou jsou asociování
s Flash IDE, takže když na něj poklepete ve vašem oblíbeném file
manageru dojde k jejich spuštění.
Přímé zavolání JSFL kódu z ActionScriptu
Kdo čte pozorně narazil teď na věc které ho zarazila – mluvil jsem
o tom, že JSFL má své místo během authoringu a ne při runtimu SWF
souboru. Flash IDE umožňuje spouštět vlastní commandy – SWF
soubory, které jsou umístěny ve speciálním adresáři. V případě
Windows XP je to C:\Documents and Settings\USER_NAME\Local
Settings\Data aplikací\Macromedia\Flash
8\en\Configuration\WindowSWF
.
var numLibItems = MMExecute("fl.getDocumentDOM().library.items.length");
var message = numLibItems + " items in library";
MMExecute('fl.trace("' + message + '");');
Volání JSFL funkcí z ActionScriptu
Můžete si napsat knihovní JSFL funkce do jsfl
souboru a pak
je volat přímo z ActionScriptu.
Malá ukázka: Volání JSFL souboru přímo z ActionScript kódu
var result = MMExecute("fl.runScript("file:///C|/testScript.jsfl", "foo", "world");
");
var message = numLibItems + " items in library";
MMExecute('fl.trace("' + message + '");');
Volaná metoda v JSFL souboru:
function foo(str) {
return "Hello " + str;
}
Pokud vynecháte název funkce a její parametry spustí se celý JSFL
soubor.
V případě druhé i třetí možnost je použita funkce
MMExecute
. V případě embednutého volání JSFL kódu
z ActionScriptu jste však velmi svázaní. Je to pomalé a nepřehledné.
Switchuje se mezi dvěma kontexty. Volání metod uložených v exerních
JSFL má tu výhodu, že je lze upravovat bez nutnosti znovu kompilovat SWF
soubor, ze kterého jsou volány.
Ještě bych zmínil jednu nevýhodu – jako parametry JSFL funkcí
můžete používat jenom primitives – čísla, řetězce a
proměnné typu bool. Pokud chcete poslat něco složitějšího musíte si sami
naimplementovat serializaci.
Funkce MMExecute
vrací návratovou hodnotu volané funkce
– ale opět pouze její „string representation“.
Nakonec ještě jedna důležitá maličkost – pro spouštění
jsfl
souborů musíte mít nainstalované Flash IDE.
Závěr
JSFL je mocný nástroj – umožňuje pomocí API přistupovat
k Flash IDE. V současnosti spouštíme JSFL skripty, které mají
přes 150 000 řádků a jejich provádění trvá více jak 20 minut
(na nejvýkonnějších strojích). Výsledkem je SWF soubor, na který už
nemusí lidská ruka sáhnout a který by klasickou (ruční) cestou trval
desítky hodin.
Odkazy
Celý článek 9. May 2007