Technologia JavaFX do wytwarzania oprogramowania RIA.



Podobne dokumenty
- dodaj obiekt tekstowy: /** Maciej */ Stage { title : "First JavaFX App" scene: Scene { width: 300 height: 300 content: [ ] } }

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie obiektowe

Java jako język programowania

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

WPROWADZENIE DO JĘZYKA JAVA

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

Delphi podstawy programowania. Środowisko Delphi

Programowanie obiektowe zastosowanie języka Java SE

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor

Java EE produkcja oprogramowania

Instrukcja instalacji Asystenta Hotline

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Programowanie w języku Python. Grażyna Koba

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Webowy generator wykresów wykorzystujący program gnuplot

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

uczyć się bez zagłębiania się w formalnym otoczeniu,

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

1 Podstawy c++ w pigułce.

Programowanie obiektowe. Wprowadzenie

Zastanawiałeś się może, dlaczego Twój współpracownik,

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Zdalny podgląd wizualizacji z panelu XV100 przez przeglądarkę internetową (WebServer)

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

Podstawy technologii WWW

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

OSGi Agata Hejmej

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Czym są właściwości. Poprawne projektowanie klas

Stawiamy pierwsze kroki

Tomasz Grześ. Systemy zarządzania treścią

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

kodowanienaekranie.pl

Bezpieczeństwo systemów komputerowych. Java i JavaScript. Java i JavaScript. Java - historia

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Podstawy technologii cyfrowej i komputerów

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Użycie Visual Basic for Applications ("VBA")

Wykład 1: Wprowadzenie do technologii Java

Asystent Hotline Instrukcja instalacji

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

Instalacja aplikacji

INSTRUKCJA INSTALACJI SYSTEMU

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Komputery I (2) Panel sterowania:

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Założenia projektu: Projekt ma zadanie pokazać praktyczne zastosowanie App Inventor 2, poprzez stworzenie prostej aplikacji do nauki słówek.

Programowanie na poziomie sprzętu. Programowanie w Windows API

Tworzenie aplikacji w języku Java

Voicer. SPIKON Aplikacja Voicer V100

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podstawy Programowania Obiektowego

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

IBM SPSS Statistics Wersja 25. Windows Instrukcja instalacji (licencja autoryzowanego użytkownika) IBM

Wprowadzenie do projektu QualitySpy

Jak ustawić cele kampanii?

Ćwiczenie 1. Przygotowanie środowiska JAVA

Platforma e-learningowa

Logowanie do aplikacji TETA Web. Instrukcja Użytkownika

To sposób w jaki użytkownik wchodzi w interakcje z systemem. Środowisko graficzne używa kombinacji graficznych elementów(przyciski, okna, menu) i

podstawowa obsługa panelu administracyjnego

ROZSZERZANIE MOŻLIWOŚCI...

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Autoryzacja zleceń z użyciem aplikacji Java Web Start "Pocztowy24Podpis"

Lekcja 1. Środowisko OMNeT++

Instrukcja instalacji programu STATISTICA

podstawowa obsługa panelu administracyjnego

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika)

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Transkrypt:

Technologia JavaFX do wytwarzania oprogramowania RIA. Tomasz Wróblewski 2009

Spis treści Spis treści.. 2 1. Preliminaria.... 3 2. Wprowadzenia do JavaFX.. 11 2.1 Rodzina JavaFX.. 11 2.2 JavaFX Mobile. 12 2.3 JavaFX Script 12 2.4 Powiązania pomiędzy JavaFX a Java.. 12 2.5 Cechy i korzyści płynące z JavaFX Script.. 13 2.6 Obecny status JavaFX Script. 14 2.7 Podsumowanie.. 15 3. Szybki start... 16 3.1 Wybór środowiska dla JavaFX. 16 3.2 Bundles Zawiniątka Paczki. 17 3.3 HelloJavaFX pierwsza aplikacja 17 3.3.1 Zrozumieć aplikację HelloJFX. 18 3.4 Zrozumieć bindowanie HelloJFXBind.. 25 3.4.1 Listing HelloJFXBind. 26 3.4.2 Dodane koncepcje 27 3.4.3 Bindowanie 29 3.5 Text obiekty i kolory 30 Tomasz Wróblewski 2009 2

1. PRELIMINARIA W rozdziale tym traktowanym jako rozmowy wstępne wprowadzę kilka podstawowych pojęć związanych z branżą IT, celem wprowadzenia i zaznajomienia ze specyficznym językiem, który to będzie towarzyszył nam w dalszej części niniejszej pracy. Generalnie, jak sam nagłówek wskazuje, zadaniem niniejszego opracowania jest przedstawienie nowo powstałej, ekscytującej technologii zwanej JavaFX. Technologia ta powstała z myślą o tworzeniu oprogramowania RIA (Rich Internet Application) co przetłumaczyć można jako bogate aplikacje internetowe. Aplikacje RIA dedykowane są dla różnych platform i urządzeń, takich jak: komputery desktop a w szczególności przeglądarki internetowe, urządzenia mobilne, telewizja, etc. Jak zatem można inaczej mówić o wyżej wspomnianej technologii? Okazuje się, iż z powodzeniem możemy używać takiego określenia jak język programowania. Istotnie, technologia JavaFX dostarcza nam język programowania wysokiego poziomu zwany też językiem skryptowym, wraz z interfejsem programowania aplikacji tj. API (Application Programming Interface) co tłumaczymy jako interfejs programowania aplikacji lub interfejs programu użytkownika a to wszystko po to, by tworzyć bogate i użyteczne, czasem i zabawne małe aplikacje zwane widgets czyli tzw. gadżety. Miłośnicy animowanej bajki pt. Inspektor Gadget z pewnością pamiętają głównego bohatera, który w swoim asortymencie posiadał niemal nieskończoną ilość sprytnie zaprojektowanych narzędzi gadżetów, które ratowały go z opresji w niebezpiecznych sytuacjach. Również w aplikacjach RIA możemy doszukiwać się pewnej analogii, mając na uwadze elementy aplikacji jak: okna, elementy kontrolne, które w ogólności możemy nazwać gadżetami. Dzięki nim aplikacja staje się funkcjonalna, i możemy znaleźć w niej odpowiednie narzędzia, niczym Inspektor Gadget w swoim kapeluszu bez dna. Co rozumieć zatem pod pojęciem języka skryptowego? Otóż język skryptowy jest formą języka programowania, który zazwyczaj jest interpretowany, a nie kompilowany jak ma to miejsce w większość przypadków. Tomasz Wróblewski 2009 3

Tradycyjne programy są konwertowane na stałe do pliku wykonywalnego, zanim zostaną uruchomione. Dla kontrastu, programy pisane w języku skryptowym są interpretowane po jednej komendzie w określonej jednostce czasu. Języki skryptowe są często używane do ułatwienia uwydatnienia składników sieci Web. Składniki o których mowa znajdują się po stronie serwera jednakże skrypty określonych stron WWW uruchamiane są po stronie klienta w przeglądarce internetowej użytkownika. W większości przypadków, łatwiej jest napisać kod w języku skryptu niż w języku kompilowanym, jednakże język skryptowy jest wolniejszy ponieważ instrukcje się są załatwiane na raz w podstawowej instrukcji procesora. Języki skryptowe dopuszczają natychmiastowe wywołanie i mogą łatwo komunikować się z programami napisanymi w innych językach. Języki skryptowe mogą być używane do tworzenia wyspecjalizowanych graficznych interfejsów użytkownika (GUI), czy też formularzy, które uwydatniają wygodę np. wyszukiwarek internetowych, klientów e-mial bazujących na przeglądarce Web czy szeroko pojętej e-komercji. Wiele przeglądarek wymaga by jej użytkownik dopuścił ustawienia, które pozwolą na wykonanie zawartości skryptów celem odniesienia korzyści ze wszystkich składników jakie zawiera odwiedzana strona internetowa. W niektórych przypadkach strony internetowe są praktycznie bezużyteczne do czasu gdy użytkownik komputera nie zadba o to, by ten uruchamiał lokalnie programy pisane w językach skryptowych. Wspomnieliśmy, iż technologia JavaFX Script jest formą języka programowania skryptowego interpretowanego. Co to oznacza? Program interpretowany, czasem zwany po prostu skryptem, jest programem, którego instrukcje są faktycznie serią logicznie ułożonych komend określonego systemu operacyjnego, przetwarzanych pojedynczo przez tzw. interpreter komend. I na odwrót interpreter komend żąda pewnych usług od systemu operacyjnego. Piszący programy interpretowalne muszą troszczyć się o rozważne posługiwanie tzw. lowlevel-storage, czyli ogólnie mówiąc zasobami maszyny. Tomasz Wróblewski 2009 4

Jak zauważyliśmy, ze względu na swój charakter programy interpretowalne nie są tak wydajne jak to ma miejsce w przypadku programów kompilowanych. O co w tym wszystkim chodzi? Programy kompilowane są poddawane procesowi kompilacji przez kompilator danego języka. Kompilator języka konwertuje źródło programu będące zbiorem stwierdzeń czy też instrukcji, na coś zbliżonego do ciągu zer i jedynek. Z tak spreparowanym ciągiem procesor maszyny jest w stanie ostatecznie sobie poradzić tj. zrozumieć i pracować na tak przekonwertowanym kodzie. Ponieważ cała ta praca związana z kompilacją jest wykonana jeszcze przed uruchomieniem programu, stąd programy kompilowane uruchamiają się i pracują o wiele szybciej, w przeciwieństwie do programów interpretowalnych. Programy interpretowalne pisane choćby w takim języku jak JavaFX są o wiele prostsze do napisania w porównaniu do programów pisanych pod kompilator. Programy interpretowalne są idealne do małych zadań, tudzież do spajania w jedność Seri programów kompilowanych, które pracują na poziomie programu interpretowanego. Poprzednio użyliśmy takiego określenia jak interpreter komend jest to część komputerowego systemu operacyjnego rozumiejąca i wykonująca komendy wpisane w sposób interaktywny przez istotę ludzką lub przez program. W niektórych systemach operacyjnych interpreter komend zwany jest shell em czyli muszlą skorupą powłoką. Przez system operacyjny zwany również OS em (operating system) rozumiemy program, który po wstępnym załadowaniu do pamięci komputera, zazwyczaj przez boot program zarządza wszystkimi innymi zasobami sprzętowymi jaki i innym oprogramowaniem tj. aplikacjami lub programami aplikacyjnymi. Aplikacje robią użytek z systemu operacyjnego poprzez wytyczanie żądań dla usług poprzez zdefiniowany wcześniej aplikacyjny interfejs programu (API). Ponadto użytkownik może oddziaływać bezpośrednio na system operacyjny przez interfejs użytkownika taki jak język komend lub graficzny interfejs zwany GUI (Graphical User Interface). Tomasz Wróblewski 2009 5

Boot program od angielskiego czasownika to boot lub boot up możemy przetłumaczyć jako: sprawić by komputer był gotowy do użytku i wprowadzania instrukcji. Często w środowisku IT mówi się przeto, iż bywają problemy z bootowaniem maszyny co ma zwrócić naszą uwagę na fakt, iż nastąpiła awaria i komputer nie chce się uruchomić na skutek zazwyczaj wymazania z dysku twardego programu służącego do przekazania procedury ładowania systemu operacyjnego do pamięci operacyjnej RAM (Random Access Memory). Tak więc zabootować komputer, to inaczej załadować, wgrać system operacyjny do pamięci głównej komputera. W chwili gdy system operacyjny jest załadowany, np. w komputerach osobistych zwanych PC (Personal Computer) widzimy początkowy ekran tj. zazwyczaj pulpit (w systemach z rodziny MS Windows). Ten moment możemy umownie przyjąć za fakt, iż maszyna jest gotowa dla użytkownika, by ten zaaplikował mu pewną porcję aplikacji tj. programów, by te następnie uruchamiać i wykorzystywać do wykonywania wcześniej zaplanowanych zadań. Czasem można zaobserwować komunikat informujący nas o tym, iż zachodzi potrzeba przeładowania systemu operacyjnego (np. po zainstalowaniu aktualizacji krytycznych dla systemu). Inaczej mówiąc procedura reboot oznacza po prostu konieczność ponownego załadowania systemu operacyjnego do pamięci głównej RAM. Najbardziej znane sposoby by to zrobić to tzw. restart miękki lub twardy. Warto mieć na uwadze fakt, że procedura bootowania systemu operacyjnego to nie to samo co jego instalacja. Instalacja jest oczywiście szerszym pojęciem i wiąże się z wyborem określonych opcji i odpowiednią konfiguracją podczas procesu instalowania. Ponadto po zainstalowaniu, system operacyjny znajduje się zazwyczaj na urządzeniu pomięci masowej zwanym twardym dyskiem HDD (Hard Disk Drive) lub SSD (Solid State Drive). Dopiero po procedurze instalacji OS staje się gotowy do następnej procedury bo otup tj. załadowania jego niezbędnych elementów do pamięci głównej maszyny. Ten krótki wątek poboczny pokazuje jak szerokie potrafi być pojęcie programu. Tomasz Wróblewski 2009 6

Aplikacja przeto, jest dowolnym programem, zaprojektowanym by spełniać specyficzne funkcje bezpośrednio dla użytkownika, lub w niektórych przypadkach dla innego programu aplikacyjnego. Przykłady programów aplikacyjnych zawierają procesory tekstu, programy bazodanowe, przeglądarki internetowe, narzędzia rozwojowe takie jak: rysowanie, modelowanie czy programy do edukacji i obróbki obrazu, jak i programy komunikacyjne. Jak wspomniałem wcześniej programy aplikacyjne używają usług systemu operacyjnego komputera jak i innych programów wspierających. Formalne żądania usług i zasobów dla komunikacji z innymi programami jakich używa programista piszący program aplikacyjny zwany jest API. Jako że była mowa o usługach systemu operacyjnego, przytoczmy zatem podstawowe usługi (system services) jakie spełnia system operacyjny: w multitaskingowych systemach operacyjnych, gdzie w jednym czasie może być uruchamiane kilka programów jednocześnie, OS determinuje, która aplikacja powinna zajmować zasoby maszyny (jak procesor) w odpowiedniej kolejności, oraz na jak długo należy ową aplikację dopuścić do wspomnianych zasobów, zanim ta je zwolni i dopuści do działania inną aplikację; zarządza współdzieleniem wspólnej pamięci głównej komputera pomiędzy różnymi aplikacjami; kieruje wejściem i wyjściem do jak i z urządzeń przyłączonych do komputera np. dysk twardy, drukarka, monitor, porty połączeniowe; przesyła wiadomości, komunikaty do każdej z aplikacji lub użytkownika interaktywnego czy operatora systemu zwanego administratorem, odnośnie statusu operacji i jakichkolwiek błędów,, które mogą się pjawić; może odciążać system zarządzania tzw. batch jobs np. przy drukowaniu tak że aplikacja inicjująca jest wolna tej pracy; Tomasz Wróblewski 2009 7

na maszynach, które dostarczają możliwości równoległego przetwarzania, system operacyjny może zarządzać jak podzielić program by ten mógł pracować na więcej niż jednej jednostce centralnej CPU procesor. Rozszyfrujmy teraz pojęcie, którego nie wahałem się użyć wcześniej, mam tu na myśli owo tajemnicze API. Application Programming Interface, co tłumaczyliśmy jako interfejs programowania aplikacji lub interfejs programu użytkownika, jest specyficzną metodą predefiniowaną przez konkretny system operacyjny lub program aplikacyjny. Reguły owej metody, według których programista pisze program aplikacyjny służą do wywołania żądań z systemu operacyjnego lub innej aplikacji. Mówiąc krótko API określa sposób komunikowania się, w szczególności z systemem operacyjnym. API może być skontrastowany dla przykładu z GUI (Graphical User Interface) czyli z graficzną, w odróżnieniu od czysto tekstowego interfejsu użytkownika, warstwą pomiędzy użytkownikiem a w szczególności systemem operacyjnym. To graficzny pośrednik, tłumacz żądań użytkownika w stosunku do usług oferowanych przez system operacyjny. Jest to graficzny sposób komunikacji, bowiem dla przykładu jeśli przeglądasz dowolną stronę internetową, to właśnie patrzysz na GUI aktualnie używanej przeglądarki internetowej. Jednak nie zawsze tak było. Pierwszymi interaktywnymi pośrednikami między użytkownikiem a OS-em były nie graficzne interfejsy zorientowane na tekst i użycie klawiatury. Polegało to zazwyczaj na wpisywaniu komend które wcześniej jednak należało poznać i pamiętać do czego służą. Dobrze znany interfejs komend z tzw. DOS a (Disk Operating System), który do tej pory można używać w systemach z Redmond tj. Microsoft Windows, jest przykładem typowego interfejsu tekstowego typu użytkownik komputer, używanego zanim pojawił się GUI. Tomasz Wróblewski 2009 8

Krokiem pośrednim w interfejsach użytkownika pomiędzy liniowo tekstowym interfejsem komend a graficznym interfejsem użytkownika był nie graficzny lecz bazujący na menu, interfejs który pozwalał na interakcję poprzez użyciu myszki, który pozwalał zaoszczędzić czas tracony na mozolnie wprowadzanych znakach do tekstowej linii komend. Dzisiaj najpopularniejsze systemy operacyjne dostarczają właśnie graficzny interfejs użytkownika. Typowym dla aplikacji jest używanie graficznego medium porozumiewawczego, wzbogaconego niejednokrotnie o własne interfejsy graficzne oraz różne graficzne idee. Jako pewną metamorfozę obiektu spotykanego w realnym życiu, będącą sposobem komunikowania się z szeroko rozumianym komputerem można przytoczyć obiekt zwany pulpit. Pulpit, rozumiany często jako przestrzeń robocza tradycyjnego stołu czy ławy, nazywany często bywa roboczo blatem. Istotnie, używając tej nomenklatury oraz sięgając po metaforę z życia biurowego, ów wcześniej wspomniany pulpit będący swego rodzaju GUI stanowi wyświetlaną na monitorze przestrzeń roboczą na której, tak jak na zwykłym biurku mogą znajdować się różne obiekty jak: dokumenty, książka telefoniczna, narzędzia do rysowania czy malowania, teczki projektowe, aktówki. Ponadto jak i w życiu, przestrzeń robocza biurka może być zajęta w całości lub tylko częściowo, w tym układzie możemy dopatrywać się analogi do wyświetlania na pulpicie innych uruchomionych aplikacji. Chodzi tu rzecz jasna o tryb wyświetlania window (tryb okna) czy też full-screen (tryb pełnoekranowy). Skoro mowa o trybie wyświetlania, to innym przykładem GUI może być właśnie okno, które w potocznym rozumieniu jest elementem niemal każdego budynku mieszkalnego. Tu zaś w kontekście GUI jest obszarem w którym wyświetlane są zadania związane z interakcją użytkownika z systemem operacyjnym czy innym programem. Jak już wspomniałem, elementami GUI mogą być takie obiekty jak: okna, kontrolki, rozwijalne menu, przyciski, listwy przewijania, ikony, wizardy, mysz (wskaźnik), i nie wątpliwie wiele innych do tej pory nie wymyślonych. Tomasz Wróblewski 2009 9

Wraz z rosnącym użyciem multimediów, jako część GUI możemy wyodrębnić dźwięk, głos, obrazy video. Często mówi się, iż dzisiejsze GUI z ich urządzeniami wejściowymi określane są czasem jako look and feel czyli po prostu spójrz i poczuj znaczy no nie mniej i nie więcej jak fakt, iż charakter tak szeroko rozumianego GUI jest na tyle intuicyjny, że wystarczy nań spojrzeć by z miejsca poczuć co było intencją twórcy, co do sposobu użytkowania owego GUI. Tak oto małymi krokami zbliżamy się do określenia, jak i do czego, może posłużyć nam nowa technologia programowania skryptowego zwana JavaFX. Kiedy bowiem tworzymy aplikacje możemy sięgnąć po wiele zorientowanych obiektowo narzędzi, które ułatwiają pisanie bogatych aplikacji internetowych, z których każdy element definiowany jako klasa bądź widet może być elementem większego obiektu pożądanego dla tworzonej aplikacji. Możemy sami tworzyć lub modyfikować predefiniowane metody, których używa obiekt, by ten był odpowiedzi dla potrzeb użytkownika. To wszystko, i wiele innych dostajemy kryje się pod technologią JavaFX. Tomasz Wróblewski 2009 10

2. WPROWADZENIE DO JAVAFX 2.1 Rodzina JavaFX Na corocznej konferencji zwanej JavaOne w Maju 2007, Sun Microsystems ogłosił nową rodzinę produktów, zwaną JavaFX. Cel jaki postawiono dla wspomnianej wcześniej rodziny produktów obejmuje umożliwienie efektywnego zagospodarowania i strategicznego rozmieszczenia bogatych zawartościowo aplikacji na urządzeniach konsumenta, owa strategia przejawia się w podjęciu próby ekspansji i wdrożenia aplikacji tworzonych za pomocą produktów z rodziny JavaFX, na takie urządzenia jak : telefony komórkowe telewizja małe systemy samochodowe przeglądarki desktop Według wizji Sun a, rodzina produktów JavaFX zakłada dostarczenie umiejętności, a raczej zdolności do kreowania interaktywnej zawartości aplikacji i usług począwszy od urządzeń desktop po mobilne urządzenia skończywszy na urządzeniach pokojowych jak telewizory. Hasło reklamowe, towarzyszące kampanii, brzmiące To all screens of your life podkreśla apetyt Sun Microsystems na chęć pokazania się na polu, na którye dotychczasowe rozwiązania multimedialne stosowane w tworzeniu stron WWW, nie miały dotychczas z założenia wstępu (Flash, Ajax, Silwerlight). Czy zatem aplikacje tworzone za pomocą rodziny produktów JavaFX mają szansę wkroczyć na wszelkie możliwe urządzenia ekranowe w naszym życiu? Według Rich a Green a (EVP Software Executive Vice President Software Of Sun Microsystems) owszem tak. Zwróćmy jednak uwagę na fakt, iż są to w obecnej fazie dalekosiężne plany bowiem na produkty z rodziny JavaFX składają się ta ten moment dwie technologie, o których będzie nam dane jeszcze usłyszeć poniżej. Tomasz Wróblewski 2009 11

2.2 JavaFX Mobile JavaFX Mobile to w gruncie rzeczy warstwowe oprogramowanie systemowe dla urządzeń przenośnych, na których programy budowane w technologii JavaFX Script mogą być uruchamiane. 2.3 JavaFx Script JavaFX Script jest natomiast językiem ukierunkowanym na tworzenie autorskiej zawartości aplikacji bez względu na to, jakie jest podłoże programistyczne (platforma programistyczna). Używając prostych skryptów deklaratywnych o treści autorskiej możemy tworzyć bardzo bogate interfejsy użytkownika. Tak więc jak już zostało powiedziane, używając skryptów deklaratywnych, technologia JavaFX Script staje się w pełni obiektowo-zorientowanym językiem programowania, wyposażonym w metody (zwane operacjami i funkcjami) i atrybuty. JavaFx Script jak i Java jest językiem o typach statycznych. 2.4 Powiązania pomiędzy JavaFX Script a Java Dla osób, które poświęciły dużo czasu w rozwijanie swoich umiejętności programistycznych w Javie a szczególnie w Java Swing, nie będzie zapewne niczym zaskakującym spostrzeżenie, iż Java jak i Java Swing posiadają zadziwiającą ilość możliwości, ale zarazem są one skomplikowane i nie aż tak oczywiste jak to może mieć miejsce w przypadku JavaFX Script. JavaFX Script niesie ze sobą całą moc Javy, ponieważ kod pisany w JavaFX Script może być w pełni wykorzystywany czy też użytkowany za pośrednictwem bibliotek Javy. Dla przykładu możemy wywołać metody oraz instancje czy klasy rodem z Java. Tomasz Wróblewski 2009 12

Wiele możliwości jakie dają nam interfejsy użytkownika (UI) w JavaFX Script odnoszą się niejako za kulisami do klas Java Swing przy czym są transparentne dla użytkownika i programista nie musi znać technologi Java Swing. Efekt owej sieci powiązań sprawia, że do budowania zawartości aplikacji można używać prostego i eleganckiego języka, który sprzęga moc programowania Java i Java Swing. 2.5 Cechy i korzyści płynące z JavaFx Script Lista poniżej opisuje wybrane, silne strony JavaFX Script, ważne z punktu widzenia osoby nie zajmującej się zawodowo programowaniem, bowiem zwróćmy uwagę na fakt, iż korzystając z JavaFx Script dostajemy: proste narzędzie o składni deklaratywnej, wyrażone poprzez interfejs użytkownika (UI), zawierający bogate grupy układów zwanych Code Snippets (strzępy kodu) przez co praca staje się łatwiejsza. Wszystko to pozwala na tworzenie bogatych grup układów zwanych też widgets sprawiających, iż praca w tak stworzonej aplikacji staje się łatwa, poprzez składny, przyjazny, przejrzysty i dobrze przemyślany interfejs, nie zależny od platformy docelowej. Budując zawartość aplikacji możemy tworzyć świetnie wyglądające, funkcjonalne interfejsy użytkownika nie będąc przy tym ekspertem w programowaniu; narzędzie, które wdraża możliwość wsparcia dla wzorca MVC (Model-Viev-Controller) z powodu bardzo wszechstronnej możliwości bindowania. Jest to duże uzupełnienie i poszerzenie składni deklaratywnego programowania, ponieważ atrybuty obiektów, włączając w to obiekty będące interfejsami użytkownika mogą przeskoczyć do wartości zawartych w klasie modelu jak i na odwrót; narzędzie, w którym koncepcja triggers ów - wyzwalaczy (funkcjonalność, która zostaje automatycznie wywołana w przypadku gdy zajdą pewne okoliczności, jak np. w przypadku gdy wartość pewnego atrybutu ulegnie zmianie) jak i poprzednio poszerza składnię deklaratywną i sprawia, że budowanie zaawansowanych UI staje się relatywnie łatwe; Tomasz Wróblewski 2009 13

możliwość pisania programów, które mogą być uruchamiane wszędzie tam, gdzie są uruchamiane programy w Javie, ponieważ pracują one w środowisku Java Virtual Machine (JVM). Trwają prace nad projektem zwanym OpenJFX Compiler Incubator Project. Celem owego jest stworzenie kompilatora dla JavaFx kodu, który będzie zamieniany na bajt kod JVM. Gdy będzie już w pełni zaimplementowany, szybkość wykonywania skryptów JavaFX będzie konkurować z szybkością Java kodu, nikogo bowiem nie trzeba przekonywać nad wyższością programów kompilowanych nad interpretowalnymi w kategorii szybkość wykonania, wszak do kategorii języków interpretowalnych zaliczamy JavaFX Script. potężną składnię deklaratywną do definiowania, modyfikowania oraz sekwencjonowania kodu. Zauważmy na koniec, że po stronie korzyści stoi ponadto fakt, iż JavaFX Script umożliwia szybki rozwój prototypowych aplikacji. Kolejnym za jest fakt, iż JavaFx Script może stanowić doskonały język do nauki koncepcji programowania w wieku wczesnoszkolnym, wszędzie tam gdzie zachodzi potrzeba wprowadzenia i zaznajomienia z szeroko pojętym tematem programowania. 2.6 Obecny status JavaFX Script Jak da się zauważyć, JavaFX Script z pomocą bibliotek Java jest obecnie bardzo solidnym i funkcjonalnym narzędziam, jednakże jest w fazie nieustannych zmian. Jest ciągle udoskonalana a klasy biblioteczne są ciągle ucieleśniane. Ponieważ projekt OpenJFX jest projektem otwartym, przeto społeczność JavaFX ma swój wkład do idei zawiązanych budowaniem JavaFx Script. Owa społeczność, która jednoczy w sobie zarówno rozwojowe narzędzia, zaopatrzeniowców, etc. ciągle udoskonala potencjał narzędzi budowniczych JavaFX Script dodając takie funkcjonalności jak refaktoring -ponowne przeglądanie kodu celem jego udoskonalania, np. fragmenty kodu powtarzające się dwa razy powinny zostać zamknięte przykładowo w funkcję. Tomasz Wróblewski 2009 14

2.7 Podsumowanie Podsumowując: Rodzina produktów JavaFx składa się z JavaFX Mobile i JavaFX Script; Jednym z celów (TARGET) do jakich ma dotrzeć JFXS to budowniczy treści autorskich, aplikacji prototypowych, których tworzenie za pomocą prostego języka skryptowego jest łatwe i pozwala ostatecznie uzyskać bogate interfejsy; skrypty JavaFX kładą nacisk na moc jaka daje nam Java oraz Java Swing mnogość i układ Widgets ów umożliwia prosty rozwój i zagospodarowanie interfejsów użytkownika, niezależnie od platformy docelowej; zdolność bindowania pomaga wspierać implementację dla wzorca Model-Viev-Controller (MVC) w lepszym stopniu niż sam skrypt deklaratywny a triggersy wspierają ich potencjał; programy pisane w JavaFX Script pracują w środowisku JVM, mogą więc pracować wszędzie tam gdzie zainstalowana jest wirtualna maszyna Javy. Architektura platformy pokazana jast na obrazku poniżej. Ponadto toczone są wysiłki nad kompilatorem kodu JFXS do bajtkodu JVM. Tomasz Wróblewski 2009 15

3 SZYBKI START Sekretem tego by iść naprzód, jest fakt by w ogóle zacząć. Jednak sekretem tego by zacząć jest podzielenie złożonego, przytłaczającego zadania na małe, z którymi można sobie poradzić, a następnie zacząć od pierwszego mniejszego. Mark Twain Idąc za radą Marka Twain a od czegoś musimy zacząć. To co można było powiedzieć tytułem wstęu zostało już powiedziane. Teraz skupmy się na pierwszym mniejszym zadaniu, tj. na wyborze środowiska za pomocą którego będziemy mogli tworzyć i rozwijać aplikacje w języku JavaFX Script. Uwaga. Bez zmniejszania ogólności rozważań przyjmę, iż w dalszej części prezentacji JavaFX będzie oznaczało dokładnie JavaFX Script celem skrócenia zapisu. 3.1 Wybór środowiska dla JavaFx Trzema najbardziej popularnymi środowiskami rozwojowymi pozwalającymi zacząć budować aplikacje pisane w JavaFX są jak następuje: JavaFX Pad - to proste i sprytne narzędzie pozwalające szybko wprowadzić kod i uruchamiać programy JavaFX. Jest to doskonała zabawka do pokazów, zabawy z kodem i nauki używania składników języka JavaFX; Eclipse z wtyczką JavaFx jest pełnoskładnikowym zintegrowanym środowiskiem rozwojowym (IDE Integrated Development Enviroment), które posiada wtyczkę wspierającą kodowanie JavaFX; NetBeans z wtyczką JavaFX jest kolejnym pełnoskładnikowym środowiskiem IDE. Uwaga. Bez względu na wybór środowiska będziemy potrzebować JRE 1.5 lub wzwyż, zaś dla środowiska IDE będziemy potrzebować J2SE JDK 5.0 lub wzwyż (które zawiera już JRE). Tomasz Wróblewski 2009 16

3.2 Bundles Zawiniątka - Paczki Dostępne pliki do pobrania można zorganizować ze względu na funkcjonalność jaka będzie nam potrzebna by zacząć budować aplikacje za pomocą JavaFX. Diagramy poniżej pokazują elementy do pobrania dla deweloperów (Developer Bundle), projektantów (Designer Bundle) i tych którzy preferują pracę z poziomu powłoki (command prompt ) systemu operacyjnego (stand-alone). 3.3 HelloJavaFX pierwsza aplikacja Od czasu gdy został wprowadzony język C, tradycją stało się, iż pierwszym programem do nauki jest wykorzystywana aplikacja z rodzaju Hello world bądź jak ktoś woli Witaj świecie. Przeto by nie łamać owej tradycji zaczniemy od omówienia krótkiego programu HelloJFX, wykorzystując do tego narzędzie JavaFX Pad, który możemy uruchomić bezpośrednio z Internetu z pod URL u: http://download.java.net.general/openjfx/demos/javafxpd.jnlp Zostanie otworzony JavaFX Pad poprzez Java Web Start (technologia dostarczania aplikacji). Każdorazowe odwiedzenie strony sprawdza status najnowszej wersji JavaFX Pad, pobiera a następnie automatycznie instaluje. Z adresu poniżej możemy pobrać kod źródłowy dla tego ćwiczenia: http://www.javafx.com.pl/download/hellojfx.rar Tomasz Wróblewski 2009 17

Gdy już uruchomiliśmy nasz pierwszy skrypt, spróbujmy wspólnie przejść przez listing aplikacji. Kod skryptu HelloJFX został wylistowany poniżej: 3.3.1 Zrozumieć aplikacje HelloJFX /* * Listing: Program HelloJFX.fx * HelloJFX.fx - Skrypt w stylu "Hello World" * Tomasz Wróblewski */ package hellojfx; import javafx.ui.*; import javafx.ui.canvas.*; Frame { title: "HelloJFX - Skrypt w stylu Hello World" height: 100 width: 400 content: Canvas { content: Text { font: Font { facename: "Sans Serif" style: BOLD size: 24 x: 10 y: 10 content: "Hello JavaFX" // pokazuje Frame na ekranie visible: true Tomasz Wróblewski 2009 18

Komentarze (Comments) W JavaFX istnieją dwa typy komentarzy (pamiętajmy, iż przyjęliśmy założenie, iż JavaFX rozumiemy, dla skrócenia i przejrzystości zapisu, jako JavaFX Script): komentarze wielo-liniowe i jedno-liniowe. Komentarze wieloliniowe zaczynają się dwoma znakami /* i kończą tymi samymi znakami postawionymi w odwrotnej kolejności */ - JavaFX ignoruje wszystko pomiędzy. Początek listingu skryptu HelloJFX.fx pokazuje przykład komentarza wieloliniowego. Jedno-liniowe komentarze zaczynają się od dwóch znaków // - wszystko co występuje po tych dwóch znakach w pojedynczej lini jest ignorowane. Przykład komentarza jedno-liniowego widać nieco niżej na końcu listingu. Deklaracja pakietu (package Declaration) Pakiety JavaFX są analogiczne z folderami w systemie plików. Dostarczają informacji o logicznej organizacji plików kodu źródłowego z których składa się aplikacja. W analizowanym przykładzie pakietem jest hellojfx który wskazuje, że plik źródłowy HelloJFX.fx znajduje się w folderze nazwanym hellojfx. Nazwy pakietów mogą składać się z więcej niż członu, np. kat1.kat2.hellojfx gdzie w tym przypadku kod źródłowy będzie zlokalizowany w folderze hellojfx który jest umieszczony w katalogu o nazwie kat2 itd. Przyjmuje się również nadawać jako nazwę dla pakietu na jego początku nazwę domeny firmy czy organizacji która zbudowała pakiet (w odwróconej kolejności, zaczynając od najwyższego poziomu nazwy domeny, jak com czy org etc. Deklaracja pakietu jest opcjonalna, ale to dobra praktyka by jej używać, nawet w trywialnych przypadkach. Uwaga. Jeśli deklaracja pakietu występuje jego oficjalne oświadczenie (statement) musi być na samym szczycie kodu źródłowego (z wyłączeniem białych znaków czy linii komend). Tomasz Wróblewski 2009 19

Oficjalne oświadczenia - wyciągi typu: import (import Statements) Programy JavaFX zwyczajowo używają bibliotek, które muszą być dołączone do JavaFX (opcjonalnie Java) kodu. W przykładzie naszym każde oficjale oświadczenie import wskazuje lokalizację (pakiet) klas JavaFX od których zależy reszta kodu HelloJFX.fx czy też poprawny wynik dla wyjściowych widgets ów czy sceny rysowania. Klauzula import może kończyć się znakiem * - wskazuje to, że program może użyć dowolnej klasy z pakietu. Alternatywnie można specyfikować nazwę każdej klasy którą zamierzamy użyć, jak napisałem poniżej: import javafx.ui.frame; Wszystkie aplikacje, no może z wyjątkiem tych najbardziej trywialnych powinny organizować swój kod źródłowy poprzez deklarację pakietów; zatem, plik kodu źródłowego używa klauzuli import by wskazać, że używa klas zawartych w plikach kodu źródłowego pakietu, który może mieć przykładowo inną nazwę, czy też być po prostu pakietem użytkownika. Oświadczenie import może pojawić się gdziekolwiek w kodzie źródłowym JavaFX i obojętnie kiedy zostanie raz napotkany, importowany plik JavaFX jest uznawany za przywłaszczony. Tomasz Wróblewski 2009 20

Kod deklaratywny definiujący UI (User Interface) Jednym z najbardziej ekscytujących składników języka JavaFX jest jego możliwość do przedstawiania graficznego interfejsu użytkownika (GUI Graphical User Interface) w tworzonych aplikacjach, używając prostej, konsekwentnej i silnej składni deklaratywnej. Programowanie deklaratywne w odróżnieniu od proceduralnego składa się z pojedynczych wyrażeń (zamiast wielu wyrażeń które wykonywane są sekwencyjnie). JavaFX wspiera oba typy programowania, jednak dobrą praktyką jest używać deklaratywnej składni wszędzie tam gdzie jest to możliwe. W naszym przykładzie cały program (z wyjątkiem wyrażeń package i import ) jest w duchu składni deklaratywnej w związku z czym zawiera jedno wyrażenie. Owo deklaratywne wyrażenie zaczyna się definicją obiektu Frame następnie widnieje otwierająca klamra falista, kończy zaś w ostatniej linii kodu,odpowiadająca klamrze otwierającej, zamykająca klamra falista. Zagnieżdżone wewnątrz są atrybuty obiektu Frame (jako atrybuty rozumiemy w tym przypadku zmienne, które skojarzone są z danym obiektem). Kod deklaratywny automatycznie tworzy instancje (przypadek, obiekt) każdej klasy JavaFX występującej w wyrażeniu. Ponadto zostają przypisane wartości do atrybutów nowej instancji. Dla zobrazowania powyższego, spójrzmy na kawałek kodu poniżej tworzącego instancję klasy Font: Font { facename: "Sans Serif" style: BOLD size: 24 Tomasz Wróblewski 2009 21