Jak jsem potkal JavaFX

Tak si říkám, jestli má to co se chystám napsat vůbec cenu. Spoustu lidí tím asi naštvu a nikomu tím asi nepomůžu. No ale budiž, nechť se rozpoutá plamenná diskuze.

Předevčírem Sun vydal první ostrou verzi Javy FX. Včera byl můj poslední den v práci a odpoledne jsem neměl už moc co dělat, tak jsem si řekl, že se na to podívám. Jdu na javafx.com, kliknu na Effects playground příklad a Firofox se zasekne. Asi po minutě se probudí a v okně je prázdná plocha kde by asi měl být applet. Hmm, nic moc. (Firefox 2, Windows XP). Přestalo mě to bavit, ale dneska jsem se doma rozhodl, že se na to pořádně podívám.

Abych tomu poskytl co nejlepší podmínky, nastartoval jsem do Windows XP a nainstaloval jsem nejnovější JRE. Tady si nemohu odpustit drobné pošťouchnutí. Z neznámého důvodu je instalační obrázek takový nějaký kostrbatý. Rozhodně to nevypadá moc profesionálně.

Instalace JRE

Po instalaci JRE, jdu do Firefoxu 3, kliknu na příklad a po chvíli čekání na můj pomalý internet se objeví co? Staré známé okýnko.

Alert

Chápu bezpečností problémy, ale když se na tu hlášku zkusím podívat z pohledu normálního uživatele, tak vidím Warning, pozor, něco ošklivého se děje. Security, to bude nějaký virus. Vykřičník, to bude něco nebezpečného. Rychle pryč.

Rozhodně nejsem expert na uživatelské rozhraní, ale myslím si, že by neškodilo malé vysvětlení. Něco v tom stylu: „Chystáte se spustit program, který bude mít právo na přístup k vašemu disku. Pokud mu nedůvěřujete, klikněte na Zrušit, bla bla bla...“. Navíc si říkám, že by se taková hláška mělo objevit před tím, než se program poprvé pokusí udělat něco potenciálně škodlivého. Nechápu proč musí děsit uživatele ještě před tím než vůbec něco uvidí. Nechal bych si ho s aplikací pěkně pohrát a až by se pokusil otevřít soubor tak bych to na něj vypálil.

Když jsem sebral dost odvahy a rozhodl se důvěřovat JavaFX týmu, že mi nevymaže disk, klikl jsem na Run a konečně se mi zobrazil kýžený příklad. Tady musím lidi ze Sunu pochválit, vypadá to super. Navíc se opravdu dá chňapnout a táhnout, takže vypadá jako normální aplikace. Skvělé. No, na druhou stranu když kliknu na "Otevřít soubor", objeví se následující okýnko.

Open

Uuups, tohle že jsou Windows XP? Já vím, je to maličkost, ale ďábel je ukryt v detailech.

Dokonce jsem se i chvíli snažil spustit příklad pod mým 64bitovým Ubuntu. Marně. Firefox plugin pro amd64 možná bude v Javě 7, možná v Javě 6. Nikdo neví. Viz bug 4802695 (všimněte si data vzniku). Problém není jen v pluginu, celé Java FX prý Linux nepodporuje. Ale, že prý si mám nainstalovat verzi pro Mac, ta že prý na Linuxu skoro funguje. Hmm.

Rozhodně bych si přál aby se Java pořádně dostala ze serverů i na klienty. Nevím jestli je Java FX tou pravou cestou. Když to srovnám s Flashem, tak má pořád ještě co dohánět. Možná namítnete, že srovnání s Flashem není spravedlivé, že se Java FX zaměřuje na jinou skupinu uživatelů. Ale je to opravdu tak? Podívejte se na příklady, evidentně se snaží dokázat, že umí to co umí Flash.

Jestli se chce Java FX chytit na už obsazeném trhu, musí nabídnout něco navíc než konkurence. Něco navíc pro uživatele, ne pro programátora. Nějakou killer aplikaci. Zatím jsem na nic takového nenarazil. Přesouvání apletu na plochu je pěkné, ale nevidím důvod proč by to lidi chtěli začít používat. Ale třeba mi to na Devoxxu někdo vysvětlí.

Tags:

27 Responses to “Jak jsem potkal JavaFX”

  1. Martin Rubeš Says:

    Tak jsem si to také zkusil. Windows XP, Firefox 3 a Java 6 update 10... fungovalo to napoprvé, ale to okénko bylo přesně jako povídáš... Tohle by třeba mojí mamku vyděsilo...

    Pokud to nemá uživatele děsit a/nebo učit lidi bezmyšlenkovitě mačkat "run", tak by to chtělo lazy vyhodnocení oprávnění. Pokud aplikace sahá na disk, má se zeptat až ve chvíli, kdy to bude aplikace chtít udělat, ne při startu. Tady by se mohl Sun inspirovat o J2ME, kde to tak funguje třeba u připojení na internet...

    Navíc by mohl být uživatel informován o tom, co přesně chce aplikace udělat (číst z disku).

  2. v6ak Says:

    "Jestli se chce Java FX chytit na už obsazeném trhu, musí nabídnout něco navíc než konkurence. Něco navíc pro uživatele, ne pro programátora."
    Nebo ho musí prosadit nějaký Google, Microsoft nebo Firefox, pokud možno víc zároveň...

    "Tady by se mohl Sun inspirovat o J2ME"
    To je dobrej stěr Sunu...

  3. Richard Says:

    Naozaj nechápem o čo SUNu ide keď vymyslel JavaFX. Scriptovacích jazykov je spústa, tak načo vymyslel ďalší ? Výhodou javy je jej jazyk a prostredie. A to je v celku dobré. Jediné, čo mal urobiť je urobiť UI deklaratívnym spôsobom tak ako to je v Adobe Flex, MS Silverlight ale nakoniec aj v JavaFX. Ale na ostatné tam mohol nechať Javu. Tak by bol celý JavaFX okamžite použiteľný pre všetkých.

  4. Ike Says:

    JavaFX se mi líbí, jeho použití v IDE NetBeans je transparentní (alespoň co je přiloženo v DEMO ukázkách ).
    Ale ví někdo jak to bude možné integrovat do dynamicky vytvářených .jsp (snad i .jspf) stránek (např. generování tabulek, combo a list boxů ...), když se to musí předem kompilovat (tak jsem to alespoň pochopil z těch demo)?

  5. Jiri Tusla Says:

    A to jsi se ještě ani nezmínil o tom, že SDK pro JavaFX dostaneš jenom pro Windows a Macka. O linuxu nedejbože Solarisu si můžeme - kdybychom teda opravdu chtěli - nechat jenom zdát.

  6. kve Says:

    Ukazky jsou pekne ... ale ...
    Prvni klik na tutorial me informoval o strankach, ktere neexistuji.
    Pote co jsem si stahl SDK (samotne SDK bez pluginu do NetBeansu - pouzivam Eclipse) a snaze ho nainstalovat, me informoval ze potrebuje alespon java 1.6.0 a ze ji nikde nenalezl - to ze mam nainstalovanou (nejen) javu 1.6.10 si nevsiml a ani se mi ho nepodarilo o tom presvedcit. Budiz nechal jsem ho stahnout a nainstalovat dalsi Javu ...
    Prosel jsem si sampli a stahnul jednoduchy pro dragAndDrop (melo me asi odradit ze nesel spustit ze stranek).
    Jen jsem rozbalil zip a poslal na nej Anta ... dobra tak tedy jeste nastavit JAVAFX_HOME a hle kompilace probehla v poradku ...
    Ted si to jdu spustit, zkousim to z prikazove radky ... jasne ze to chce nejake knihovny, postupne kdyz mi to zahlasi ClassNotFound, tak ji najdu a pres cp prihodim ... A ted tu mam ... java.lang.AssertionError ... a jdu na obed.
    Tedy jeste jednou ... ukazky jsou hezke, rozbehnuti se mi nezdarilo, kdyz se podari, Kdyz se kouknu do zdrojaku jsou opravdu jednoduche a dobre citelne. Takze pokud se mi to povede rozchodit bude to mozna hezke ...

  7. lzap Says:

    Flash 1.0 nebyl taky žádný zázrak... 😉

  8. Lubor Says:

    "Ale ví někdo jak to bude možné integrovat do dynamicky vytvářených .jsp (snad i .jspf)?"

    No skor som ocakaval ze JavaFX umozni budovat plnohodnotne RIA aplikacie (bez nutnosti pouzivat JSP resp. JSF medzivrstvu) a komunikovat priamo so servisnou vrstvou na serverovej strane (podobne ako to umoznuje Flex + BlazeDS). Nenarazil niekto nahodou na ukazku vyuzitia JavaFX v takychto RIA aplikaciach?

  9. Lubor Says:

    "Flash 1.0 nebyl taky žádný zázrak…"

    Flash 1.0 v case svojho vydania nemal absolutne ziadnu konkurenciu, takze v Adobe mali dostatok casu ho postupne vylepsovat bez obav ze ich nahodou vytlaci nejaky konkurencny produkt.

    JavaFX prichadza do tvrdeho konkurencneho prostredia ovladaneho Adobe (na polovicu buduceho roku je planovany Flex 4.0) a MS (cerstvo vydany Silverlight 2.0), ktorych produkty su momentalne technologicky a marketingovo neporovnatelne dalej.

  10. Jan M Says:

    Tahle zalezitost s kulhanim JavyFX me mrzi. Osobne by se mi ale moc libilo SVG ovladane JARem(tedy klasickou Javou), ale SVG je bohuzel uz skoro mrtvy format presto, ze v teto kombinaci a s editory by mohl pozlobit Flash.

  11. ARny Says:

    Hmm ako tak citam tak javaFX sa moze stat poslednym klincom do rakvy pre Javu ako taku. Cakal som, ze ked pride javaFx bude schopna konkurovat silverlight 2.0 a ze pojde na 100% na vsetky troch najpouzivanejsi platformach (Win,Mac a Linux). Teraz vidim, ze to tak nieje. Takze SUN nesklamal a opat vsetko pohnojil ako sa len dalo. Ani sa nedivim, ze java je pomaly vytlacovana aj zo serverov a vidim ze ako platforma pre klientov uz v podstate zomrela. Toto mala byt posledna sanca na jej ozivenie ale pokaslali to. RIP java

  12. jaro Says:

    Pridavam sa na stranu rozcarovanych... Najprv som si myslel, ze SUN to vsetko mysli dobre a len Ja to musim pochopit... Ale cim dalej tym viac mam pocit, ze SUN to proste nevie.... jednoducho sa drzia doktrin a vyslovene sa boja kreativity a napaditych rieseni.

  13. adsf Says:

    ano jaro mas pravdu a to sposobuje ze cela java platforma zacina byt zastarala. Jedine riesenie je uvolnit cele javaFX pre opensource komunitu. Zatial co som pochopil tak vydali iba javaFX sdk takze v tomto stave to pokladam stale iba za experimentalnu technologiu. Moj kolega sa hneval, ze na ich prikladoch vobec niesu nejake zmysluplne komponenty (formulare, gridy,...) tak dufam, ze sa to v kratkom case zmeni. Kazdopadne ak bude vsetko ok tak verzia 2.0 by uz mohla byt fajn. Dufam ze tato technolgia nedopadne ako jsf lebo ako arny povedal bol by to koniec javy. Neviem ci si pani v SUNe neuvedomuju ze uz aj tak ma java dost nastrbene meno aj medzi uzivatelmi aj medzi developermi a takto ju pochovaju navzdy. Mozno by si mali uvedomit, ze budu priamy boj zvadzat so silverlightom a flashom (snad uz nikoho nenapadne dalsia podobna hracka) a tam musi proste prist s tazkymi zbranami inak je koniec.
    Btw. zaujimalo by ma ci by sa k tymto produktom dalo nejak vyjadrit lebo sa mi zda ze SUN je naozaj hluchy a slepy a nevie, ze to co robi robi zle.

  14. adsf Says:

    Jedno nechapem. Prisla Java na svet... parada... Po dlhych rokoch prisiel DOTNET, kedze SUN nereflektoval na microsoftie poziadavky ohladom smerovania java platformy. DOTNET evolucne vysiel z javy a myslim ze prisiel z ovela lepsimi vecami, inspiroval sa a podobne. No a co sa dialo potom - s dotnetom prislo ASPNET... pre aplikacie s webovym rozhranim takmer killer. No a co na to SUN. Tlaci ABSOLUTNE TRAPNE JSF... ako alternativu javy. Ja vyvijam v JSF - samotne je nepouzitelne, obalili sme to RichFAces - je to sajrajt, na to spring webflow... Efektivita ? Ziadna!!!. Travim cas obrovskou reziou namiesto toho aby som sa sustredil na zadanie , co je to za co som plateny. SUN za cele tie roky nebol schopny pokryt oblast aplikacii s webovym rozhranim , preboha nech sa chlapci aspon inspiruju Apache Wicketom, ten naznacil cestu...

  15. jaro Says:

    Ten predosly prispevok bol odo mna 🙂

  16. jaro Says:

    To ADSF: A hlavne ze ma java dobe meno medzi bankarmi a poistovakmi. Pani zo SUNU vyavaju ovela vecsiu namahu a davku kreativity pri vymyslani vsakovakych "enterprise" skratiek a vydavania tony specifikacii

  17. goddard Says:

    1. jako vzdy, nez se cesti programatori vyhrabou ze sveho JEE sveta a opravdu se neco dozvi o svete okolo, trva to. clanek je to pekny, ale na takovy zaver je imho trochu brzo - jfx je v kompilovane verzi bezmala rok a je a bylo mozne ziskat s jfx vice zkusenosti nez jen cekat na jfx v1.0 a poslat to do pekel.
    2. pretahovani appletu z prohlizece neni ficura jfx, ale noveho jdk6u10, je potreba mezi tim rozlisovat - cili jakykoli, ne jen jfx applet tohoto muze vyuzit
    3. jfx sdk tusim obsahuje api pro praci s DB, a o "dynamicnosti" jfx neni treba pochybovat. klicove slovo bind zajistuje automaticky update promennych (vcetne fci) a je v podstate implementaci java enterprise beans binding jsr (nebo jak se tomu nadava). velmi pekna vec 🙂

  18. Lukáš Křečan Says:

    To goddard: Ano, uznavam jsem JEE programator, o JavaFX jsem obcas neco zaslechl, ale moc me to nezajimalo. Podle toho jak nam to tu Sun na Devoxxu tlacil do hlavy to vypada, ze to s tim mysli vazne.

  19. Lukáš Křečan Says:

    Jinak, JavaFX stavi na Jave. Tzn. vsechno co muzu udelat v Jave, muzu udelat v FX. Muzu volat WS, muzu volat nativni kod, muzu pouzit Swing, muzu delat cokoliv se mi zachce. Co clovek moc nezaslechne je, ze FX muze neprimo ozivit stare dobre aplety.

  20. adsf Says:

    To Lukáš Křečan:
    No musim ta sklamat, slovo aplet vyvolava u vela developerov a aj obycajnych uzivatelov skor negativne myslienky ci pocity a tak ked niekomu spomenies ze by tato technologia mohla ozivit aplety tak sa hned zacnu smiat a zatracovat taku technologiu. Podla mna by mali vymysliet novy nazov. Bohuzial je to hlavne chyba SUNu, ktory za tych vyse 10 rokov nebol schopny applety nijak zlepsovat a teraz prichadza trochu neskoro.

  21. v6ak Says:

    Který obyčejný uživatel ví, co je to aplet?

  22. menion.asamm Says:

    Zdravim, nevim jestli jste nekdo zkousel neco v Jave FX napsat, ale kdyz jsem ji videl tak jsem neodolal a po necelem puldni zkouseni jsem vytvoril zajimavy kalendar. Nejde o to co ale jak ... v J2SE delam tez kratce ale i za tu chvilku vim ze ve swindu udelat neco zajimaveho neni uplne jednoduche. JavaFX se zameruje na snadne vytvareni RIA aplikaci a to myslim ze se dari. Cekal jsem trosku ze pri vysloveni slova skriptovaci, bude nejaka snadna provazanost primo mezi strankou a "appletem" ale bohuzel se mi nepovedlo vytvorit ani applet, ktery by se mohl odkazovat na casti stranky ani nijak provazat samotny programek s HTML kodem tak zatim nevim no ... ale jinak bych se JavyFX tak brzo nevzdaval byt vami ... vzdyt se jen staci podivat na ukazky .. aleston tem z vas co funguji 😉 Pekny vecer

  23. adsf Says:

    To v6ak:

    By si sa divil. Poznam vela ludi, ktory niesu z IT priemyslu a poznaju pojem applet.

  24. v6ak Says:

    To: menion.assamm: S provázáním HTML a něčeho vloženého nemám zkušenosti, ale AFAIK to aspoň trošku půjde přes param - aspoň jednosměrně.
    To adsf: No já právě asi ani ne. Ale pravda, hádkami typu ano, ne, ano, ne, ... to nevyřešíme.

  25. Lukáš Křečan Says:

    Na Devoxxu předváděli jak z JavaFX apletu ovládat HTML v kterém je obsažen. Bohužel už si nepamatuju jak to dělali, ale jde to. (možná FX.getAttribute("javafx.applet"), ale pak nevim co dál). Jinak JavaFX je pěkná hračka, bylo by dobré kdyby se uchytil, ale bude to mít hodně těžké a možná to bude ještě pár verzí trvat.

  26. komofei Says:

    Chcel prispiet svojou skusenostou o behu na linuxe. Neviem preco, ale ked som zasiel na javafx.com, zvolil si prvu aplikaciu "Effects Playground: Applying Filter Effects on Graphics", hned sa mi natiahnla, vyhodilo to namna asi š upozornovacie okna a aplikacia sa mi hned spustila. Bez problemu mi to uploadlo obrazok z disku a aplikacia becala. Takze neviem, preco sa pise, ze na linuxe to nieje podporovane. Moja konfiguracia: Kubuntu 8.10, firefox 3.0.5, java version "1.6.0_01". Asi je to fakt vec len konfiguracie, avsak nic specialne som preto nerobil.
    Inac vytiahnut applet na desktop sa mi nepodarilo - asi preto, ze nemam spominanu javu 1.6.0_10.

  27. Maxo007 Says:

    Z javascript kodu je mozne volat kod javafx a opacne:
    http://javafx.com/docs/tutorials/javafx-javascript