<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>j2ee.pl - związani z javą &#187; Technologie</title>
	<atom:link href="http://j2ee.pl/category/technologie/feed/" rel="self" type="application/rss+xml" />
	<link>http://j2ee.pl</link>
	<description>związani z Javą</description>
	<lastBuildDate>Mon, 24 Aug 2009 11:45:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GeeCON 2009</title>
		<link>http://j2ee.pl/2008/12/30/geecon-2009/</link>
		<comments>http://j2ee.pl/2008/12/30/geecon-2009/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 12:44:43 +0000</pubDate>
		<dc:creator>Dariusz Sot</dc:creator>
				<category><![CDATA[Kalendarium]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Wydarzenia]]></category>

		<guid isPermaLink="false">http://j2ee.pl/?p=518</guid>
		<description><![CDATA[No i doczekaliśmy się kolejnej imprezy związanej z Javą! Mowa o GeeCON, pierwszej międzynarodowej konferencji poświęconej Javie i RIA w Polsce. Impreza ta jest organizowana w grodzie Kraka w dniach 7 i 8 maja 2009r. przez Polską Grupę Użytkowników Języka Java, Czeską Grupę Użytkowników Języka Java oraz Poznańską Grupę Użytkowników Języka Java.

Założenia konferencji to m.in:

udział [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.geecon.org" target="_blank"><img src="http://j2ee.pl/wp-content/uploads/2008/12/geecon.png" alt="" title="geecon" width="206" height="85" class="alignleft" style="float: left;margin: 20px;" /></a><br />No i doczekaliśmy się kolejnej imprezy związanej z Javą! Mowa o <strong>GeeCON</strong>, pierwszej międzynarodowej konferencji poświęconej Javie i RIA w Polsce. Impreza ta jest organizowana w grodzie Kraka w dniach 7 i 8 maja 2009r. przez Polską Grupę Użytkowników Języka Java, Czeską Grupę Użytkowników Języka Java oraz Poznańską Grupę Użytkowników Języka Java.</p>
<p><span id="more-518"></span></p>
<p>Założenia konferencji to m.in:</p>
<ul>
<li>udział wielu prelegentów światowej sławy</li>
<li>prezentacje w języku angielskim</li>
<li>czas trwania to 2 dni po 2 sesje</li>
<li>niski koszt uczestnictwa</li>
<li>lokalizacja zmienna w kolejnych edycjach</li>
</ul>
<p><strong>Co w programie?</strong> Tematyką konferencji mają być języki dynamicznie typowane (m.in. Groovy, Ruby) oraz wymiana doświadczeń w zakresie nowoczesnych metodyk tworzenia oprogramowania oraz projektowania architektury złożonych rozproszonych systemów informatycznych. Dla każdego coś dobrego!</p>
<p>Konferencja potrwa dwa dni, więc będzie sporo okazji do spotkań oraz wymiamy zdań ze specjalistami, wśród nich Guillaume Laforge, Charles Nutter, Scott Davis i wielu innych. Oczywiście nie zabraknie także stałych bywalców: Jacka Laskowskiego oraz Waldemara Kota. Wszystko wskazuje zatem na to, że to wydarzenie przejdzie do pamięci wszystkich sympatyków języka Java a także wpisze się w rozkład jazdy javowych konferencji zwłaszcza, że organizatorzy planują organizować ją co roku w innych miastach a nawet krajach.</p>
<p>Póki co dokładna cena uczestnictwa na konferencji nie jest znana gdyż zależy od ilości zgłoszeń, ale jest szacowana na zbliżoną do 80 €. </p>
<p>Więcej aktualnych informacji można znaleźć na stronie konferencji: <a href="http://www.geecon.org">GeeCON 2009</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://j2ee.pl/2008/12/30/geecon-2009/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Exadel Flamingo</title>
		<link>http://j2ee.pl/2008/12/12/exadel-flamingo/</link>
		<comments>http://j2ee.pl/2008/12/12/exadel-flamingo/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 13:00:05 +0000</pubDate>
		<dc:creator>Dariusz Sot</dc:creator>
				<category><![CDATA[Inne biblioteki]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Flamingo]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://j2ee.pl/?p=471</guid>
		<description><![CDATA[Ostatnimi czasy można zauważyć rosnącą popularność aplikacji typu RIA. Istnieje wiele technologii służących do tworzenia takich aplikacji – najważniejsze z nich to Adobe Flex oraz JavaFX. O ile pierwsza z nich ma już swoją pozycję na runku, to o drugiej jeszcze nie słychać zbyt dużo w kontekście portalowych stron WWW.
Jak wiadomo, w przypadku nowych technologii [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://exadel.com/web/portal/flamingo" target="_blank"><img src="http://j2ee.pl/wp-content/uploads/2008/12/images.jpeg" border="0" alt="" title="Exadel" width="90" height="48" class="alignleft size-medium wp-image-472" style="margin: 5px; float: left;" /></a>Ostatnimi czasy można zauważyć rosnącą popularność aplikacji typu RIA. Istnieje wiele technologii służących do tworzenia takich aplikacji – najważniejsze z nich to Adobe Flex oraz JavaFX. O ile pierwsza z nich ma już swoją pozycję na runku, to o drugiej jeszcze nie słychać zbyt dużo w kontekście portalowych stron WWW.</p>
<p>Jak wiadomo, w przypadku nowych technologii zawsze najtrudniejszy jest ten ‘pierwszy krok’:</p>
<ul>
<li>jak skonfigurować środowisko?</li>
<li>jak stworzyć szkielet projektu?</li>
<li>jak to wszystko spiąć żeby dobrze działało?</li>
</ul>
<p>Na wszystkie powyższe pytania i problemy jest jednak prosta i szybka odpowiedź: <strong>Exadel Flamingo</strong>.<span id="more-471"></span></p>
<p><strong>Na problemy – Flamingo</strong></p>
<p>Flamingo to zestaw bibliotek i komend służących jako pomoc w wygenerowaniu i konfiguracji szkieletu aplikacji typu RIA. Obsługa generatora Flamingo jest bardzo prosta. Polega na odpowiedzi na kilka pytań zadawanych w formie wizarda – na ich podstawie jest generowany odpowiedni projekt. Flamingo bazuje na Mavenie i każdy wygenerowany projekt jest w tej konwencji. Dzięki temu bardzo prosto można odnaleźć się w projekcie – oczywiście dla ludzi znających tą konwencję, ale chyba w dzisiejszych czasach znajomość Mavena jest raczej powszechna ;-)</p>
<p>Wygenerowany kod szkieletu posiada pełne wsparcie i jest skonfigurowany do pracy pomiędzy Flexem lub JavąFX a JBoss Seamem lub Springiem. Każdy znajdzie więc coś dla siebie, gdyż Seam to raczej podstawowa sprawa jeżeli chodzi o aplikacje EJB3, a Spring – to już klasyka. Wybór jest więc zatem ograniczony do najbardziej popularnych aktualnie technologii i oznacza, że  w ogromnej większości przypadków takiego ograniczenia nie trzeba sztucznie obchodzić.</p>
<p>Wygenerowany szkielet jest naprawdę kompletny, Flamingo zajmuje się tutaj wszystkim:</p>
<ul>
<li>generuje odpowiednie klasy (klasę) odpowiedzialne za (bardzo prosty) model danych</li>
<li>generuje warstwy aplikacji, włączając w to serwisy oraz DAO oraz konfiguruje całą komunikację, począwszy od interfejsu użytkownika a kończąc na bazie danych</li>
<li>generuje strukturę aplikacji webowej, z wszystkimi wymaganymi plikami</li>
<li>generuje podstronę logowania, przez co mechanizm autoryzacji jest już gotowy do rozszerzenia</li>
<li>generuje szkielet do testów oraz podstawowy test</li>
</ul>
<p><strong>Jak to działa?</strong></p>
<p>Odpalmy zatem Flamingo – robimy to poprzez uruchomienie konsoli i wpisaniu ‘<em>flamingo create project</em>’ (binaria flamingo muszą być dostępne). Famingo zacznie ściągać wszystkie biblioteki, o ile ich już nie posiadamy w naszym lokalnym repozytorium Mavenowym i następnie uruchamia konsolowego wizarda. Nie będę opisywał kolejnych pytań, bo są raczej oczywiste – zamieszczę tylko zrzut z mojej konsoli:</p>
<pre>
Please choose the type of application to generate (flamingo-seam, flamingo-spring):[flamingo-spring]
flamingo-spring
Please enter the location in which your new application will be created (i.e. c:/java/development):
S:/_Projects/Java/J2EE
Enter the project name (e.g. myproject):
Flex
Please enter the root package name for your project (e.g. com.mydomain.myproject): [pl.j2ee.flamingo]
pl.j2ee.flex
Will this project have Flex or JavaFX user interface? (flex, javafx): [flex]
flex
Will this project use Hessian or AMF protocol? (amf, hessian): [amf]
amf
What kind of database are you using? (hsql, mysql, oracle, postgres, mssql, db2, sybase, none): [hsql]
hsql
Enter the JDBC URL for your database (e.g. jdbc:hsqldb:.): [jdbc:hsqldb:flex]
jdbc:hsqldb:flex
Enter database username: [sa]
sa
Enter database password: []

Do you want to update the database schema each time you deploy? (y, n): [y]
y
Enter the entity class name (Flex source files to view and modify entities will be generated as well):
Department
-------------------------------------------------------------------------------------
    G e n e r a t i n g   A n d r o M D A   P o w e r e d   A p p l i c a t i o n
-------------------------------------------------------------------------------------
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/flamingoproject.properties'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/flex/pom.xml'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/flex/src/main/flex/pl/j2ee/flex/view/DepartmentManager.mxml'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/flex/src/main/flex/pl/j2ee/flex/vo/Department.as'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/flex/src/main/flex/main.mxml'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/flex/src/main/resources/services-config.xml'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/pom.xml'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/readme.txt'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/pom.xml'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/java/pl/j2ee/flex/Department.java'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/java/pl/j2ee/flex/DepartmentDAO.java'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/java/pl/j2ee/flex/DepartmentDAOImpl.java'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/java/pl/j2ee/flex/service/DepartmentService.java'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/java/pl/j2ee/flex/service/ILoginService.java'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/java/pl/j2ee/flex/service/LoginService.java'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/resources/applicationContext-test.xml'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/resources/applicationContext.xml'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/resources/hibernate.cfg.xml'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/webapp/index.html'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/main/webapp/WEB-INF/web.xml'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/test/java/pl/j2ee/flex/dao/DepartmentDAOTest.java'
    Output: 'file:/S:/_Projects/Java/J2EE/Flex/web/src/test/java/pl/j2ee/flex/DataSourceTestCase.java'
-------------------------------------------------------------------------------------
    New application generated to --> 'file:/S:/_Projects/Java/J2EE/Flex/'
-------------------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 24 seconds
[INFO] Finished at: Fri Nov 28 14:36:08 CET 2008
[INFO] Final Memory: 10M/20M
[INFO] --------------------------------------------------------------
</pre>
<p>No, i tyle :-) Proste, prawda? </p>
<p><strong>Wygenerowany kod</strong></p>
<p>Przechodzimy teraz do folderu gdzie wygenerował się nasz szkielet. Po wejściu do niego możemy zbudować cały projekt – poprzez ‘<em>mvn clean install</em>’. Po chwili – naszym oczom ukazuje się jakże pożądany komunikat: „<em>Build Successful</em>” (na konsoli widać także przeprowadzony test zapisu naszej klasy modelowej – także mechanizm testowania działa poprawnie). Świetnie, mamy coś co działa i się buduje, ale co tak naprawdę wygenerowaliśmy? Spróbujmy zatem zdeplyować naszą aplikację. Po wrzuceniu wara do Tomcata niestety okazuje się, że nie ma róży bez ognia – konsola krzyczy że nie mamy wymaganej biblioteki do <em>HSQL</em>. Przechodzimy zatem do odpowiedniego pliku POM (w web) i po jego otworzeniu – widzimy co jest nie tak. Usuwamy zbędną linijkę &#8216;&lt;scope&gt;test&lt;/scope&gt;’ dla dependency <em>HSQLDB</em>, zapisujemy zmiany i ponownie budujemy projekt (‘<em>mvn clean install</em>’). Ponownie wrzucamy wara do tomcata i już – aplikacja wstała poprawnie!</p>
<p>Nie pozostaje nic innego jak teraz przejść do przeglądarki i zobaczyć nasze dzieło. Po uruchomieniu odpowiedniego adresu naszym oczom ukazuje się piękna strona we flashu, która żąda od nas danych do zalogowania. Dane te nie są istotne, to i tak jest stub – metoda do autoryzacji zawsze zwraca ‘<em>true</em>’ ;-)  Po poprawnym zalogowaniu przechodzimy do jedynej dostępnej strony – listy obiektów domenowych (w moim przypadku ‘<em>Department</em>’). Mamy tutaj możliwość przeglądania wszystkich wpisów oraz funkcjonalności dodania nowego, edycji oraz usunięcia istniejącego. Sama lista oferuje jeszcze możliwość sortowania wyników. Ostatnią funkcjonalnością jest jeszcze oferowana przez guzik ‘<em>Logout</em>’ opcja wylogowania się z systemu. I to by było na tyle!</p>
<p><strong>To działa!</strong></p>
<p>Jak widać z powyższego tekstu – wystarczy ściągnąć Flamingo, rozpakować, odpalić wizarda i mamy już gotowy szkielet aplikacji <em>RIA</em>. Należy przy tym podkreślić, że w całym procesie od momentu pomysłu o szkielecie aplikacji flexowej do jej uruchomienia ani razu nie potrzebowalismy uruchomić żadnego IDE. <strong>Niesamowite!</strong> Co więcej, wygenerowany szkielet ten jest kompletny i tak naprawdę jest już w pełni działającą aplikacją o minimalnej funkcjonalności, przedstawiającą funkcjonalności bardziej na zasadzie ‘how to’. Wystarczy zaimplementować poprawne logowanie oraz rozszerzyć model dziedziny – i mamy w bardzo przystępny sposób pokazaną drogę w świat <em>RIA</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://j2ee.pl/2008/12/12/exadel-flamingo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaFX</title>
		<link>http://j2ee.pl/2008/10/13/javafx/</link>
		<comments>http://j2ee.pl/2008/10/13/javafx/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 12:40:11 +0000</pubDate>
		<dc:creator>Maciej Żywioł</dc:creator>
				<category><![CDATA[Technologie]]></category>
		<category><![CDATA[javafx technologie ria]]></category>

		<guid isPermaLink="false">http://j2ee.pl/?p=452</guid>
		<description><![CDATA[Platforma .NET w wersji 3.5 wprowadziła rewolucyjne podejście do projektowania interfejsów graficznych aplikacji, gdzie zamiast układania kontrolek i opisywania ich za pomocą kodu, używa się specjalnej odmiany XMLa, zwanego XAMLem, gdzie każdy obiekt jest komponentem (czyli może zawierać inne obiekty), gdzie wszystko jest renderowane za pomocą procesora graficznego i generalnie wygląda nieźle.
Java postanowiła nie pozostawać [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://j2ee.pl/wp-content/uploads/2008/10/javafx.jpg"><img class="alignleft size-medium wp-image-453" style="margin: 5px; float: left;" title="javafx" src="http://j2ee.pl/wp-content/uploads/2008/10/javafx.jpg" alt="" width="146" height="53" /></a>Platforma .NET w wersji 3.5 wprowadziła rewolucyjne podejście do projektowania interfejsów graficznych aplikacji, gdzie zamiast układania kontrolek i opisywania ich za pomocą kodu, używa się specjalnej odmiany XMLa, zwanego XAMLem, gdzie każdy obiekt jest komponentem (czyli może zawierać inne obiekty), gdzie wszystko jest renderowane za pomocą procesora graficznego i generalnie wygląda nieźle.</p>
<p>Java postanowiła nie pozostawać w tyle, i stąd pomysł technologii <strong>JavaFX</strong>, która nie dość, że w znakomity sposób ułatwia tworzenie aplikacji z kontrolkami Swinga, to jeszcze daje możliwość perfekcyjnego łączenia Swinga z elementami graficznymi z technologii Java2D oraz &#8211; docelowo &#8211; Java3D.<span id="more-452"></span></p>
<p>Pierwszy kontakt z JavąFX miałem jeszcze w kwietniu, kiedy to miałem za zadanie rozpoznać tą technologię z zamiarem potencjalnego wykorzystania w mocno opartej na GUI aplikacji. Wtedy była ona jeszcze w fazie rozwoju &#8211; zaawansowanej, ale jednak rozwoju. Oczywiście, tak jak człowiek uczy się przez całe życie, tak technologie nigdy nie przestają się rozwijać, jednak w tym przypadku oznaczało to typową wersję beta, gdzie nie wszystko jeszcze działało, nie wszystko było udokumentowane, a niektóre operacje miały nieprzewidziane skutki.  Ale już wtedy, muszę przyznać, JavaFX nieźle rokowała. Działała bardzo dobrze, wyglądała świetnie i była łatwa w obsłudze.</p>
<h2><strong>Co to jest?</strong></h2>
<p><strong>JavaFX</strong> jest technologią do tworzenia bogatych wizualnie aplikacji internetowych (RIA &#8211; Rich Internet Application), przeznaczona nie tylko pod wiele systemów operacyjnych, ale też &#8211; docelowo &#8211; na wszystkie urządzenia z ekranem („bring Java to all the screens of your life&#8221; brzmi hasło reklamowe). W tej chwili już jest dostępna wersja JavyFX na komputery (<strong>JavaFX Desktop</strong>), w 2009 roku ma być udostępniona wersja na urządzenia mobilne (<strong>JavaFX Mobile</strong>) a w 2010 planowane jest wdrożenie platformy TV (<strong>JavaFX TV</strong>).</p>
<p>Aplikacje te pisane są w języku <strong>JavaFX Script </strong>- podobnym składniowo do JavaScripta, w pełni zorientowanym obiektowo (obiekty opisywane w formacie JSON). Język daje możliwości powiązania (<em>binding</em>) właściwości różnych obiektów między sobą albo z wartościami zmiennych oraz zawiera mnóstwo efektów graficznych, statycznych oraz ruchomych (animowanych). Wszystko to pozwala na tworzenie zaawansowanych i bardzo efektownych interfejsów graficznych dla aplikacji &#8211; <a href="http://javafx.com/releases/preview1/demos/SwirlingSquares/launch.jnlp">ten prosty programik</a> prezentuje jednocześnie efekty graficzne (przezroczystość), jak i animację obiektów &#8211; oraz pozwala na utworzenie prostych aplikacji &#8211; takich, które nie kryją za sobą na tyle skomplikowanej warstwy biznesowej, żeby trzeba do tego było angażować cały model MVC, jak np. ten <a href="http://javafx.com/releases/preview1/demos/StockWatcher/StockWatcher.jnlp">prosty analizator amerykańskiego rynku akcji</a>.</p>
<p>Ale na szczęście JavaFX ma także zastosowanie tylko jako warstwa wizualna &#8211; kod w JavaFX Scripcie może zostać dołączony jako część projektu, napisanego w Javie, służąca tylko do jego wizualizacji, a pod spodem mogą znajdować się dowolnie skomplikowane funkcjonalności.</p>
<h2><strong>Dystrybucja</strong></h2>
<p>Na stronie <a href="http://www.javafx.com/">www.javafx.com</a> można pobrać specjalną wersję NetBeansa 6.1, która jest dostosowana do pisania w niej aplikacji JavaFX (oczywiście, posiadacze „zwykłego&#8221; NetBeansa 6.1 mogą bez problemu sobie JavaFX SDK doinstalować, w menu Tools -&gt; Plugins, zakładka Available Plugins). SDK dostarcza kilku użytecznych narzędzi, ułatwiających poruszanie się po języku JavaFX Script, takich, jak biblioteka obiektów i właściwości albo podręczny podgląd projektowanej aplikacji.</p>
<p>Podobny podgląd dostępny jest także w webowej (tzn. dostępnej przez Java Web Start) aplikacji <a href="http://download.java.net/general/openjfx/demos/javafxpad.jnlp">JavaFXPad</a> &#8211; w dolnej części okna mamy edytor kodu, gdzie możemy wkleić dowolny kod JavaFX Scripta, w górnej &#8211; podgląd aplikacji w czasie rzeczywistym.</p>
<h2><strong>Możliwości</strong></h2>
<p>Na stronach projektu znajduje się kilka przykładów aplikacji, prezentujących możliwości technologii, np. <a href="http://javafx.com/releases/preview1/samples/SmokeParticleSystem/description.html">symulacja dymu</a> albo <a href="http://javafx.com/releases/preview1/samples/Madness/description.html">losowe generowanie fraktali</a>. Ale większą bibliotekę przykładów można znaleźć na stronach Wiki projektu &#8211; zawarte tam są <a href="http://jfx.wikia.com/wiki/Code_Examples">przykłady kodu</a> do konkretnych zastosowań (np. połączenie z bazą danych czy wyświetlenie aplikacji na pełnym ekranie albo zawarcie jej na stronie WWW), oraz bardzo ciekawe <a href="http://jfx.wikia.com/wiki/Demos">dema</a> &#8211; z tych ostatnich na szczególną uwagę zasługuje <a href="http://blogs.sun.com/chrisoliver/entry/javafx_svg_translator_preview">SVG Translator</a> &#8211; program ten przerabia obraz w formacie SVG (<a href="http://pl.wikipedia.org/wiki/SVG">Scalable Vector Graphics</a> &#8211; wolny i otwarty uniwersalny format opisu dwuwymiarowej grafiki wektorowej) na &#8211; uwaga &#8211; kod w JavaFX Scripcie, który, uruchomiony, wygeneruje dokładnie taki sam obraz.</p>
<p>JavaFX w materiałach promocyjnych na stronie głównej obiecuje bardzo wiele, ale powyższe przykłady pokazują, że w owe obietnice można wierzyć &#8211; gdy już pojawi się finalna wersja <strong>JavaFX 1.0</strong>, będzie to wydarzenie, które śmiało będzie mogło być nazwane początkiem nowej ery.</p>
<h2><strong>Przykład</strong></h2>
<p>W ramach mojego rozpoznawania JavaFX naskrobałem taki prosty program, który prezentuje jednocześnie kilka istotnych cech tej technologii:</p>
<ul class="unIndentedList">
<li> Bezszwowe (<em>seamless</em>) połączenie elementów graficznych i kontrolek Swingowych</li>
<li> Powiązanie (<em>binding</em>) między właściwościami obiektów (wartość na suwaku z kątem odchylenia strzałki)</li>
<li> Animacja &#8211; spróbujcie kliknąć przyciski „Zero&#8221; i „Random&#8221;</li>
<li> Wreszcie i całe pole aplikacji można przesuwać w dowolne miejsce ekranu (czego akurat nie można przetestować w JavaFXPadzie, tylko po skompilowaniu programu np. w NetBeansie)</li>
</ul>
<pre>import javafx.ui.*;
import javafx.ui.canvas.*;
import javafx.ui.filter.*;
import java.lang.Math;

class Wind {
  attribute angle:Number;
  attribute sAngle:Number;
  attribute tAngle:Number;
  public operation setAngle(nAngle:Number);
  public operation zero();
  public operation random();
}

operation Wind.setAngle(nAngle) {
  tAngle = nAngle;
  sAngle = angle;
  angle = [sAngle..tAngle] dur Math.abs(tAngle-sAngle)*2 linear;
}

operation Wind.zero() {
  setAngle(0);
}

operation Wind.random() {
  setAngle((Math.random()*360).intValue());
}

class Windsign extends CompositeNode {
  attribute wind:Wind;
}

function Windsign.composeNode() =
  Group {
    var x = 50
    var y = 50transform: bind translate(x, y),
    onMouseDragged: operation(e) {
      x += e.localDragTranslation.x;
      y += e.localDragTranslation.y;
    }
    toolTipText: "You can totally drag me around!",
    content: [
      Circle {
        cursor: HAND,
        cx: 50,
        cy: 50,
        radius: 50,
        fill: cyan,
        stroke: blue,
        strokeWidth: 2,
      },
      Polygon {
        points: [50,0,
          55,98,
          50,95,
          45,98]
        fill: darkblue
        transform: bind rotate(wind.angle,50,50)
      }
    ]
  };
  Frame{
    var wind = Wind {}
    var ws = Windsign { wind:wind }
    title:"Windsign"
    background: white
    visible:true
    content:
      BorderPanel {
        top: FlowPanel {
          background: white,
          content: [
            Slider {
              min: 0,
              max: 360,
              minorTickSpacing: 15,
              majorTickSpacing: 45,
              paintTicks: true,
              value: bind wind.angle,
            },
            Button {
              text: "Zero",
              action: operation() {
                wind.zero();
              }
            },
            Button {
              text: "Random",
              action: operation() {
                wind.random();
              }
            }
          ]
        }
        center: Canvas {
          background: white
          content:ws
        }
      }
    }</pre>
<p>Kod zamieszczony powyżej można przekleić do okna edycji w programie JavaFXPad.</p>
<h2><strong>Źródła</strong></h2>
<ul class="unIndentedList">
<li> <a href="http://www.javafx.com/">http://www.javafx.com/</a> &#8211; bogata graficznie (utworzona w tej technologii) strona domowa projektu</li>
<li> <a href="http://java.sun.com/developer/technicalArticles/javafx/">http://java.sun.com/developer/technicalArticles/javafx/</a> &#8211; zbiór artykułów i tuto riali do JavyFX</li>
<li> <a href="http://java.sun.com/javafx/reference/">http://java.sun.com/javafx/reference/</a> &#8211; dokumentacja, pliki do pobierania i przykłady</li>
<li> <a href="http://jfx.wikia.com/wiki/Planet_JFX_Wiki">http://jfx.wikia.com/wiki/Planet_JFX_Wiki</a> &#8211; strona Wiki projektu JavaFX</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://j2ee.pl/2008/10/13/javafx/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
