Pár novinek nejen ze světa páry na šálkem
Před měsícem se konala hlavní událost každého roku - konference JavaOne. Kromě mnoha pozlátek v podobě všelijakých scének robotů poháněných real-time implementací Javy, všelijakých interaktivních map a javovského trenažeru psů to přineslo i pár štemplů na "novinky", o nichž se stejně dopředu mluvilo.
Jedním z toho je
JavaFX, další z rodiny technologií nad Java platformou. Lze to uchopit hned z několika stran a je to koneckonců samo o sobě rozmanité - dneska jsou oficiálně vydané dvě partie mozaiky: JavaFX script a JavaFX mobile. První jmenovaný je takový společný jmenovatel jednotlivých "řad" JavaFX - jde o deklarativní skriptovací jazyk. Druhé jmenované je prostředí pro mobilní zařízení, v podstatě operační systém, založený na javě a unixu. K tomu časem přibude paklík řešící webové a rich internet aplikace. Což už v zásadě funguje, ale není to unifikované do nějaké řady.
Když se to teda všechno spojí dohromady, má jít o věc, která usnadní a urychlí vývoj (ať už desktopové, mobilní nebo webové aplikace), zachová, ba ještě více otevře myšlenku "write once, run anywhere". Často je to přirovnáváno k flashi, který ovšem půjde rozběhat beze změny na všem. Takže konkurence pro nově nastupující MS Silverlight a adobácké Apollo.
Sada dem propagující JavaFX, tehdy ještě pod názvem F3:
http://blogs.sun.com/chrisoliver/resource/demo2.jnlp
Jde o přepsané flashovské či swingové existující věci právě do JavaFX. Pokud autor nekecá (;-)), tak je na tom zajímavé hlavně to, že jde o věci napsané se skutečně malými časovými nároky.
Do sedmičkové javy se připravuje trochu změna v koncepci její distribuce - má nastoupit modularita a zmizet ten pomalu rostoucí monolit a kromě toho přijít i možnosti, jak modularizovat vlastní aplikace - kromě jarů budou i jamy. V souvislosti s javou samotnou se uvádělo spojení "java kernel". A toto má řešit tzv. "Consumer JRE". Tj. rozsekání JRE na části a jejich stahování a instalování na požadavek aplikace. V ideálním případě tedy člověk stáhne pouze malé základní tintítko a o zbytek se postará pc. Uvidíme

Každopádně to má vyřešit místo, kde hodně lidí tlačí bota - rychlost spouštění javovských aplikací. Kromě toho taky deployment aplikací.
Toto je vlastně vynucené tím, že se na scénu mají zase trochu více vrátit applety, a tak je třeba vypořádat se s tím, co bylo jejich bolístkou - a to právě pomalé načítání a neřády s tím, jaké vlastně JRE či co prohlížeč potřebuje. A proč applety? Protože to má být právě stack pro JavaFX v prohlížeči.
Kombinaci appletů, javascriptu a ajaxu lze vidět v malé ukázce, kterou je webový klient pro
Flickr. Flickr je internetové fotoalbum (taky celkem pěkně udělané). Klient se jmenuje Iris a k vyzkoušení je tady:
http://swinglabs.java.sun.com/iris/index.jsp.
Kombinací výše zmíněných technik lze v prohlížeči používat 3d efekty, přímou úpravu obrázků, upload pomocí drag and drop odkudkoliv z desktopu, upload jede ve vlastním vlákně, takže aplikace není blokovaná síťovým provozem, vše rychle reaguje... Vypadá to celkem slibně. Je celkem zajímavé si s tím pohrát (ne že by tam teda toho bylo tolik co ke hraní, ale jako ukázka toho, kam až se svět hnul od statického html je to celkem fajn

). Kdo nemá Flickr account, může zkusit vlasakcz. Po vyplnění do vyhledávacího okna by to mělo otevřít galerii, po zalogování by mělo jít i uploadovat.
Screen
Iris byl představen v rámci keynote dema na JavaOne. Něco podobného bylo na loňských Sun tech days také v rámci keynote dema. Tím byl pro změnu desktopový fotoalbový klient pro Flickr zvaný Aerith. To taky stojí za vyzkoušení.
Ke spuštění v rámci Java Web Start
http://aerith.keybe.com/jnlp/index.jnlp a nějaké
mé komentáře k tomu.
Že z Javy lze volat nativní kód, se ví. Že z nativního kódu lze volat Javu, se ví též. K tomu všemu je klíčem technologie zvaná JNI - Java Native Interface. Problémem zde je, že se tímto velmi snadno může porušit přenositelnost kódu. A pro mnoho lidí to představuje též "estetický" problém v tom být nucen zabývat se psaním nativního kódu. Na světě je ale
JNA - Java Native Access. To poskytuje takový můstek, jak volat nativní kód (kupříkladu .dll) přímo z javy bez napsání čehokoliv nativního. Napíše se v javě interface, ten se prohookuje s nativním kódem pomocí JNA a je hotovo. Navíc tento přístup o něco zlepšuje přenositelnost kódu i při použití nativních funkcí.
Takže už jde v Javě udělat třeba něco jako tohle
https://jna.dev.java.net/demo/ShapedWindowDemo.jnlp bez toho, že by člověk musel hackovat komponenty Swingu.
Z dílny Google Labs, kde se kutí přenesení snad celého desktopu na web (viz.
Google Office a další), před nedávnem vylétla další technologická vlaštovka zvaná
Google Gears. Jde o framework umožňující, aby webová aplikace mohla pracovat v on-line i off-line módu. Pomocí lokální databáze a synchronizačních technik přitom uživatel není vědom rozdílu (samozřejmě záleží na typu aplikace

).
A na závěr jedna netradiční věcička - jak se naučit
Ruby pomocí komiksu. Namísto tlustých knížek jednu vynalézavou hlavu napadlo netradiční řešení - napsat toto formou příběhovou a komiksovou -
Why's poignant guide to Ruby. Prostřednictvím stripů a příběhů je tam čtenář uváděn do jednotlivých aspektů programování v Ruby. Zatím jsem to nečetl pořádně, jen tak zběžně některé partie, ale vypadá to celkem srandovně
