About this siteFeed sources and resources
unknown (71)
2008 November 20 (9)2008 November 19 (3)2008 November 18 (2)2008 November 17 (5)2008 November 16 (1)2008 November 14 (3)2008 November 13 (3)2008 November 12 (3)2008 November 11 (10)2008 November 10 (6)2008 November 09 (1)2008 November 08 (4)2008 November 07 (2)2008 November 06 (6)2008 November 05 (3)2008 November 04 (3)2008 November 01 (1)2008 November 03 (1)
2008 October 31 (2)2008 October 29 (2)2008 October 28 (3)2008 October 27 (4)2008 October 26 (1)2008 October 24 (2)2008 October 22 (4)2008 October 21 (4)2008 October 20 (5)2008 October 17 (2)2008 October 16 (2)2008 October 15 (3)2008 October 14 (2)2008 October 13 (2)2008 October 11 (1)2008 October 10 (2)2008 October 08 (2)2008 October 07 (2)2008 October 06 (2)2008 October 03 (2)2008 October 01 (2)2008 October 23 (1)2008 October 09 (1)2008 October 02 (1)
2008 September 26 (2)2008 September 25 (3)2008 September 24 (2)2008 September 21 (2)2008 September 16 (1)2008 September 13 (1)2008 September 12 (9)2008 September 11 (10)2008 September 10 (6)2008 September 09 (7)2008 September 08 (5)2008 September 07 (2)2008 September 06 (3)2008 September 05 (6)2008 September 04 (7)2008 September 03 (5)2008 September 02 (4)2008 September 01 (6)2008 September 30 (1)2008 September 29 (1)2008 September 23 (1)2008 September 22 (1)2008 September 19 (1)2008 September 18 (1)
2008 August 31 (4)2008 August 30 (2)2008 August 29 (9)2008 August 28 (6)2008 August 27 (21)2008 August 26 (9)2008 August 25 (7)2008 August 24 (3)2008 August 23 (2)2008 August 22 (8)2008 August 21 (18)2008 August 20 (14)2008 August 19 (21)2008 August 18 (16)2008 August 17 (8)2008 August 16 (9)2008 August 15 (6)2008 August 14 (10)2008 August 13 (13)2008 August 12 (12)2008 August 11 (13)2008 August 10 (6)2008 August 09 (6)2008 August 08 (7)2008 August 07 (15)2008 August 06 (15)2008 August 05 (24)2008 August 04 (65)2008 August 03 (19)2008 August 02 (23)2008 August 01 (62)
2008 July 31 (87)2008 July 30 (12)2008 July 29 (10)2008 July 28 (4)2008 July 27 (13)2008 July 26 (3)2008 July 25 (3)2008 July 24 (2)2008 July 23 (4)2008 July 22 (11)2008 July 21 (1)2008 July 20 (20)2008 July 19 (3)2008 July 18 (3)2008 July 17 (5)2008 July 16 (6)2008 July 15 (14)2008 July 14 (8)2008 July 13 (2)2008 July 12 (2)2008 July 11 (5)2008 July 10 (17)2008 July 09 (1)2008 July 08 (6)2008 July 07 (11)2008 July 06 (1)2008 July 05 (4)2008 July 03 (5)2008 July 02 (3)2008 July 01 (14)

Sven Drieling, "JavaFX -- Datenbank-Beispiele"  (indy.sven-drieling.de)  

Django on Jython on GlassFish, JavaFX performance  (blogs.sun.com)  

????????????:

Radio Receiver Icon

?Chris??, ????JavaFX???????: ????? JavaFX ????Java. ????Chris??JavaFX?????,JavaFX????????. ???JavaFX??????? (Robert, Per, Brian),???????????.

?Leo Soto??,????Django???????Jython??. ?? Leo's blog entry ? Wiki page How to Run it on GlassFish???????... ??????????????! Jython????????????! Frank????????Jython 2.5??????.

A Better Applet Experience, Part 2: Poster Frames  (weblogs.java.net)  

In part one of this series I showed you how to set up a loading image, including an animated spinner gif. In this part I'll show you how use a screenshot or poster frame to speed up page loading. Quicktime...

Video ringtones for your Java ME cell phone  (blogs.sun.com)  

Oh-ah, oh-ah. I met your children. What did you tell them? Video ringtones killed the music ringtones. Video ringtones killed the music ringtones.

See:

Video ringtones killed the music ringtones

Here's a quote:

 Vringo is a video sharing 
 community which allows you to 
 find and create video 
 ringtones (or Vringos) and 
 then share them with your 
 friends...  You choose the 
 clips you'd like your friends 
 to see and they choose the 
 clips they'd like you to see.
I heard you on the wireless back in Fifty Two. Fifty two? There were wireless devices back then? Oh yeah... radio... How retro.

JDK 6 and JavaFX (and NetBeans) on 32-bit Macs | Javalobby  (java.dzone.com)  

Java FX Script, primeros pasos - Parte 4  (blogs.sun.com)  

Cuando Sun present? JavaFX en JavaOne 2007, JFX Script era a?n un lenguaje interpretado. Sin embargo, desde un primer momento se aclar? que esto era s?lo temporal, mientras el lenguaje pasaba de ser el resultado de la investigaci?n personal (F3, de Chris Oliver) a un producto a ser introducido en el mercado. Es as? como, despu?s de un lapso de tiempo, JFX Script pas? de ser un lenguaje interpretado, a un lenguaje compilado, principalmente porque uno de las caracter?sticas principales que Sun pretende para las aplicaciones escritas en este lenguaje es un nivel de performance mayor que aquellas escritas en Javascript o ActionScript (de hecho, en los benchmarks realizados por Chris Oliver, el rendimiento de JFX Script fue 12 veces mayor que el de ActionScript.

Al cambio de categor?a del lenguaje se sumaron algunos cambios en la sintaxis, los cuales revisaremos hoy, siguiendo la guia de migraci?n de Planet JFX (simplemente porque fue una de las m?s completas que consegu?), como para dar por terminada esta parte, y comenzar luego con ejemplos algo m?s complejos y aggiornados.

Operaciones

Antes: el lenguaje diferenciaba entre funciones y operaciones.

class Foo {
      function times2(x) { return x * 2; }
      operation print(s) { System.out.println(s); }
  }

Ahora: La sintaxis actual fusiona los dos conceptos en uno ?nico: el de funci?n, y utiliza la palabra reservada "function" para declararlas. Es decir,  el ?nico cambio que debemos realizar es el de renombrar las operaciones a funciones.

 class Foo {
      function times2(x) { return x * 2; }
      function print(s)  { System.out.println(s); }
  }

Inicializaci?n de atributos

Antes: los valores iniciales de los atributos deb?an declararse fuera del cuerpo de la clase.

class Foo {
      attribute bar: Boolean;
  }

  attribute Foo.bar = true;

Ahora: esto se hace igual que en Java, es decir, dentro de la clase.

 class Foo {
      attribute bar: Boolean = true;
  }

Triggers de reemplazo

Antes: los triggers de reemplazo se defin?an fuera de la clase, utilizando la sintaxis "trigger on atributo = valor"

Sin inicializaci?n:

class Foo {
      attribute bar: Boolean;
  }

  trigger on Foo.bar = value {
      if (bar == true) {
          beep();
      }
  }
Con inicializaci?n:
class Foo {
      attribute bar: Boolean = true;
  }

  trigger on Foo.bar = value {
      if (bar == true) {
          beep();
      }
  }

Ahora: se definen dentro de la clase, como parte de la declaraci?n del atributo, utilizando la sintaxis "on replace"

Sin inicializaci?n: 

class Foo {
      attribute bar: Boolean on replace {
          if (bar == true) {
              beep();
          }
      };
  } 

Con inicializaci?n:  

 class Foo {
      attribute bar: Boolean = true on replace {
          if (bar == true) {
              beep();
          }
      };
  }

Cardinalidad

Antes: el operador de cardinalidad era el asterisco ('*').

class Foo {
  attribute names :String*;
}

attribute names = ["Monica", "Rachel", "Phoebe"];

Ahora: se utilizan en lugar del asterisco, los corchetes ("[]").

class Foo {
  attribute names :String[] = ["Monica", "Rachel", "Phoebe"];
}

Literales objeto sin atributos

Antes: pod?amos referirnos a literales objeto sin atributos utilizando solo el nombre de su clase.

Frame {
  title: "Show MenuSeparator"
  height: 180
  width: 320
  menubar: MenuBar {
    menus: Menu {
      text: "File"
      items: [MenuItem {
        text: "New"
      }, MenuItem {
        text: "Open"
      }, MenuItem {
        text: "Save"
      }, MenuSeparator, MenuItem {
        text: "Import"
      }]
    }
  }
  visible: true
}

Ahora: adicionalmente, debemos utilizar llaves ("{}").

Frame {
  title: "Show MenuSeparator"
  height: 180
  width: 320
  menubar: MenuBar {
    menus: Menu {
      text: "File"
      items: [MenuItem {
        text: "New"
      }, MenuItem {
        text: "Open"
      }, MenuItem {
        text: "Save"
      }, MenuSeparator {
      }, MenuItem {
        text: "Import"
      }]
    }
  }
  visible: true
}

Instancias con nombre

Antes: era posible utilizar algunas instancias con nombre, que representaban constantes predefinidas.

Frame {
  title: "White Frame"
  background: white
  ...
}

Ahora: es necesario utilizar las constantes predefinidas, o literales objeto.

Frame {
  title: "White Frame"
  background: Color.WHITE
  ...
}
O tambi?n:
Frame {
  title: "White Frame"
  background: Color {
    red: 1
    green: 1
    blue: 1
    opacity: 1
  }
  ...
}

Literales objeto an?nimo

Antes: pod?amos utilizar literales an?nimos y dejar que el interprete infiriese el tipo de ese bloque de c?digo.

...
    accelerator: {
      modifier: CTRL
      keyStroke: O
    }
....

Ahora: ante la ausencia de interprete, es obligatorio declarar el tipo de cada bloque.

...
    accelerator: Accelerator {
      modifier: KeyModifier.CTRL
      keyStroke: KeyStroke.O
    }
...

Sobreescribir funciones

Antes: pod?amos sobreescribir funciones sin necesidad de colocar el tipo de retorno en la declaraci?n de las mismas.

class MyWidget extends CompositeNode {
  ...
  function composeNode() {
    ...
  }
}

Ahora: es obligatorio escribirlo.

class MyWidget extends CompositeNode {
  ...
  function composeNode() :Node {
    ...
  }
}

Binding bidireccional

Antes: bastaba con colocar la palabra reservada "bind".

...
  TextField {
    value: bind model.firstName
  }
...

Ahora: la sintaxis de JFX Script compilado requiere del uso de la clausula "with inverse".

...
  TextField {
    value: bind model.firstName with inverse
  }
...

Casting de Number a Integer

Antes: el casting era autom?tico.

...
var real :Number;
num = 6.42;
var integer :Integer;
integer = real;
...

Ahora: para evitar perdida de precisi?n en la compilaci?n, debe utilizarse la funci?n "intValue".

...
var real :Number;
num = 6.42;
var integer :Integer = real.intValue();
...

Herencia

Al menos hasta la versi?n del compilador de JavaFX de marzo de 2008, puede que sea necesario utilizar la palabra reservada "as" para evitar algunos problemas de herencia. Es decir, lo que antes hubiesemos hecho de esta forma:

class Foo extends Rectangle {
  ...
}

...

...
  content: Canvas {
    content: Foo {
      ...
    }
    ...
  }
  ...
}

Ahora debemos hacerlo as?:

class Foo extends Rectangle {
  ...
}

var foo :Foo = Foo {
  ...
};

...
  content: Canvas {
    content: foo as Node
    ...
  }
  ...
}

Bucles

Antes: exist?an dos bucles, "for" y "foreach".

...

  for (Integer i = 0; i < element.length; i++) {
    System.out.println(element);
  }

  ...

  foreach (element in group) {
       System.out.println(element);
  }
...

Ahora: al igual que con las funciones y operaciones, estos dos conceptos se fusionaron en uno solo que utiliza la palabra reservada "for" en su declaraci?n. Este puede ser utilizado tanto como el "for" de Java as? como el "foreach" de JFX Script.

...

  for (Integer i = 0; i < element.length; i++) {
    System.out.println({element});
  }

  ...

  for (element in group where element.length() < 4) {
    System.out.println({element});
  }
...

Si bien esto no fue m?s que una traducci?n de la gu?a de conversi?n a JFX Script compilado, bastar? para que, junto con las partes anteriores de la gu?a, tengamos una lista mas o menos completa de la sintaxis del lenguaje. A partir de ahora, comenzaremos crear algunas aplicaciones sencillas, para comprender el funcionamiento de las funciones gr?ficas b?sicas. Como siempre, les dejo algunos sitios recomendados para visitar mientras voy d?ndole forma a las pr?ximas partes de este tutorial:

Nos vemos en la pr?xima entrega.

Fire Eagle updates from your Java phone  (weblogs.java.net)  

With all the travel I'm doing lately I've been looking for a convenient way to keep people who are interested in getting in touch with me updated on my current whereabouts - I don't know about you but I...

Silveira Neto " Blog Archive " JavaFX, Side Scrolling Gaming  (silveiraneto.net)  

Blog de JavaFX

... Django on Jython on GlassFish, JavaFX performance  (blogs.sun.com)  

A compilation of today's news of interest:

Radio Receiver Icon

From Chris a report on the performance improvements of JavaFX: where JavaFX is close to Java in performance. Big improvements since this Earlier Post. I know the JavaFX compiler team (Robert, Per, Brian) and they are all top notch.

From Leo Soto, the Django Framework now runs on Jython. See Leo's blog entry and the Wiki page for details... and How to Run it on GlassFish. One more scripting language and framework! Jython is moving much faster than I had anticipated; Frank is already Working on Jython 2.5.