niedziela, lutego 1

JavaFX - new Java begin ?

Witam;


od pewnego czasu nosiłem się z zamiarem zobaczenia na co stać JavaFX; słyszałem o nim tylko z opowieści, a wszystkie opinie jakie znałem były dość sceptyczny, można by wręcz powiedzieć, że negatywne; koleżeńska agitacja spowodowała, że do nowego dziecka Sun'a byłem nastawiony na nie;


zacząłem od tutoriala o JavaFX pobranego z witryny Sun'a; na sam początek dowiaduję się, że w nowym języku pojawiły się takie typy jak: String, Number, Boolean, Duration, Void i Null; sam język posiada typy dynamiczne, pomyślałem sobie Python;


następne przyszły sequence, nowa rzecz; czytałem ten rozdział z przerażeniem myśląc sobie pełen język skryptowy, a gdzie mój język co się z nim stało(mój język = Java); pojawiły się w tym rozdziale takie słowa kluczowe jak: insert "something" before|after element[2], delete i reverse, które to pozwalają na dodawanie, usuwanie, odwrócenie kolekcji; dodatkowy smaczek niesie ze sobą zdanie jakie znalazłem podczas czytania: „Note: In truth, sequences are immutable, meaning that once created they never change. When you modify a sequence by inserting or deleting items, for example, behind the scenes a new sequence is created and the sequence variable is reassigned, giving the impression that the sequence was modified.”, wydaję mi się, że ta implementacja nie jest najbardziej trafiona i takie każdorazowe przepisywanie będzie mogło w niedalekiej przyszłości zabić wydajnościowo aplikacje;


kolejny rozdział którym się rozczarowałem to Expression i tutaj dalej język skryptowy, oraz zapis 'bardzo fajnej' sekwencji:

var seq = for(i in [1..10]) i*i;


ostatnim zagadnieniem jakie opisze jest Data Bindings and Triggers - totalne zaskoczenie, oczywiście na wielki plus; Dla mnie osobiście możliwości jakie poznałem w tym rozdziale są tym czego mi brakowało w języku programowania; wykorzystując programowanie aspektowe można było to osiągnąć ale teraz mamy te możliwości w języku programowania;


bindowanie zmiennych:

var x = 0;
var y = bind x;
x= 1;
println(y); //1


kolejny przykład zaprezentuje jeszcze większe możliwości mechanizmu bindowania;

var localVar = 1;
bound functionOne(paramA : Integer) : Integer{
  paramA*localVar;
}
var myA = 2;
var a = bind functionOne(myA);
myA = 4;
println(a);
localVar = 2;
println(a);

wynik jaki otrzymamy na konsoli będzie postaci:

4
8


ale jeżeli pozbędziemy się słowa kluczowego bound z definicji funkcji, wynik jaki otrzymamy będzie postaci:

4
4


jak to się dzieje, słowo kluczowe bind powoduje zbindowania tylko zmiennych jakie zostały użyte do wywołania funkcji, a słow kluczowe bound powoduje zbindowanie wszystkich zmiennych użytych w funkcji; dlatego też po zmianie jakiejkolwiek zmiennej użytej w ciebie funkcji spowoduje ponownie wywołanie funkcji;

Triggers, do tej pory znane były mi z baz danych, a tu nagle:

var password = "foo" on replace oldValue {
  println("old:{oldValue}");
  println("new:{password}");
}
password = "bar";


a na naszej konsoli:
old:
new:foo
old:foo
new:bar


myślę, że po samym wyniku z konsoli można już stwierdzić jak działają triggery w JavaFX;



po zapoznaniu się z ostatnim rozdziałem uświadomiłem sobie fakt, że JavaFX ma przed sobą bardzo świetlana przyszłość, chodź jeszcze dość odległą; po stronie Sun'a pozostaje jeszcze opracowanie mechanizmu integracji z innymi technologiami, oraz bogatej biblioteki elementów GUI, jeżeli by JavaFX miała konkurować z takimi technologiami jak: Adobe Flash i Flex, AJAX, Microsoft Silverlight.



.. wkrótce kilka słów o GUI w JavaFX.