JavaFX Script Índice História | Estrutura da linguagem | Aplicações | Compiladores e IDEs |...


Java (linguagem de programação)Plataforma Java


JavaFXSun Microsystemsplataforma JavaRIAsJavaFXGNU General Public LicenseOpenJFXIDEsJavaFXJavaFXJavaFXSVGHelloworldapp.fx.JPG




JavaFX Script é uma linguagem de script utilizada na plataforma JavaFX criada pela Sun Microsystems, que faz parte da plataforma Java. O domínio da plataforma engloba o desenvolvimento de RIAs (Rich Internet Application) para desktops e dispositivos móveis. A plataforma JavaFX compete diretamente com outras opções para RIAs como Adobe Flex e Microsoft Silverlight.
JavaFX Script está sob a licença GNU General Public License , através do projeto OpenJFX patrocinado pela Sun.




Índice






  • 1 História


  • 2 Estrutura da linguagem


  • 3 Aplicações


  • 4 Compiladores e IDEs


  • 5 Exemplos


  • 6 Ligações externas





História |


A linguagem inicialmente era um projeto do desenvolvedor Chris Oliver da Sun Microsystems, era chamada F3 (Forms Follow Function) e tinha como propósito tornar o desenvolvimento de interfaces de usuário mais fácil para os programadores. Tinha características como suporte por IDEs (Integrated Development Environment), tipagem estática e compilada, portanto com suporte a erros em tempo de compilação, que foram mantidas na versão oficial.



Estrutura da linguagem |


JavaFX Script é uma linguagem de scripts compilados , orientada a objetos, com uma sintaxe declarativa onde é informado quais os objetivos e não como atingi-los. O sistema de tipos da linguagem é baseado no sistema de tipos de Java, porém utiliza a inferência de tipos, onde os tipos são identificados pelo compilador, característica que permite determinar erros de programação antes da execução do programa, diferente de outras linguagens como Javascript.
Abaixo um exemplo de declaração de variáveis que demonstra a inferência de tipos:


package exemplo1;
def a = 100.50;
var b = 10;
var minhaStr = "Isso é uma String";

println( "a é do tipo {a.getClass()}" );
println( "b é do tipo {b.getClass()}" );
println( "minhaStr é do tipo {minhaStr.getClass()}" );

/*


  • Saída:

  • a é do tipo class java.lang.Float

  • b é do tipo class java.lang.Integer

  • minhaStr é do tipo class java.lang.String

  • /


No exemplo acima a palavra reservada 'def' serve para definir valores constantes, e a palavra 'var' variáveis.


def a = 100.50;
var b = 10;
var minhaStr = "Isso é uma String";
var str2:String = "Outra String";
b = 10.2;
minhaStr = 1060;
println( "a é do tipo {a.getClass()}" );
println( "b é do tipo {b.getClass()}" );
println( "minhaStr é do tipo {minhaStr.getClass()}" );

/*


  • Saída:

  • ex.fx:7: warning: possible loss of precision

  • found : Number

  • required: Integer

  • b = 10.2;

  • ^

  • ex.fx:8: incompatible types

  • found : Integer

  • required: String

  • minhaStr = 1060;

  • ^

  • 1 error

  • 1 warning

  • ERROR: javafxc execution failed, exit code: 1

  • /


Pode-se observar pelos exemplos acima que a linguagem tem tipagem implícita (inferência de tipos pelo compilador), explícita (pelo programador) e estática (uma vez determinado o tipo da váriavel ele não pode ser modificado).
Por ser construída no topo da plataforma Java a linguagem também oferece integração com suas classes já produzidas sem a necessidade de reescrever código.



Aplicações |


JavaFX tem aplicações no desenvolvimento de interfaces de usuário para desktops e dispositivos móveis. Existem outras plataformas como o Adobe Flex, que utiliza os recursos do Adobe Flash podendo ser utilizado em todos os browsers com suporte a essa tecnologia e o Microsoft Silverlight. Todos estes citados tem o interesse de melhorar o processo de criação de interfaces e prover uma rica experiência com softwares para os usuários.



Compiladores e IDEs |


Programas utilizando a linguagem podem ser desenvolvidos em ambientes bem conhecidos pelos desenvolvedores como as IDEs Eclipse e Netbeans. Para compilar será necessário o compilador javafxc, que é parte do pacote do SDK da plataforma JavaFX no site sobre da plataforma na própria Sun.
Existem também diversos plugins para softwares muito utilizados como o Adobe Photoshop e Adobe Illustrator que exportam os gráficos criados para JavaFX e outras que permitem a exportação de gráficos SVG.



Exemplos |


HelloWorld (HelloWorld.fx)

package helloworld;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.*;
import javafx.scene.text.*;

Stage {
title: "HelloWorldFx"
width: 250
height: 250
scene: Scene {

fill : LinearGradient {
endX: 0.0
stops: [ Stop { offset: 0.0 color: Color.LIGHTGRAY },Stop { offset: 1.0 color: Color.GRAY } ]
};
content: Text {
font : Font {
size : 24
};
x: 25, y: 120
content: "Hello World!";

}
}
}

Após compilar e executar esse é o resultado:


Helloworldapp.fx.JPG


Números Perfeitos (np.fx)

package nps;

import java.lang.Math;
import java.lang.System;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

function isPrimo( p:Integer ):Boolean{
if( p > 2 and (p mod 2) == 0 ){ /*println( "Divided by 2" );*/ return false;}
if( p > 3 and (p mod 3) == 0 ){ /*println( "Divided by 3" );*/ return false;}
if( p > 5 and (p mod 5) == 0 ){ /*println( "Divided by 5" );*/ return false;}
var rt = Math.floor( Math.sqrt( p ) );
var divisor = Math.floor( Math.sqrt( rt ) );
while( divisor ⇐ rt ){
if( divisor > 1 )
if( (p mod divisor) == 0 ){
return false;
}
divisor++;
}
return true;
}

function proxPrimo( last:Integer ):Integer{
var nextP = last + 1;
var testResult = isPrimo( nextP );
if( not testResult )
nextP = proxPrimo( nextP );
return nextP;
}
/**


  • @return 0 caso não seja possível calcular um primo de mersenne a partir do primo 'p', ou o primo de mersenne

  • /


function calcMersenne( p:Integer ):Integer{
var m:Integer = Math.pow( 2 , p ) - 1;
if( not isPrimo( m ) ){
m = 0;
}
return m;
}

function isPerfeito( p:Integer , prime:Integer ):Boolean{
var sum = 0;
var n = 1;
var max;
if( p ⇐ 6 ){
max = Math.pow( 2 , prime) - 1;
while( n ⇐ max ){
sum += n++;
}
}else{
max = Math.pow( 2 , (prime - 1)/2 );
var i = 0;
while( i < max ){
sum += (n*n*n);
n += 2;
i++;
}
}
if( p == sum ) return true;
return false;
}
/**


  • @return 0 caso não seja possível calcular um número perfeito a partir do primo 'p', ou o número perfeito

  • /


function calcPerfeito( p:Integer ):Integer{
var e = Math.pow( 2 , p - 1 );
var mersenne = calcMersenne( p );
if( mersenne == 0 ) return 0;
var perfect:Integer = e * mersenne;
if( not isPerfeito( perfect , p ) )
return 0;
return perfect;
}

function listaPerfeitos(){
var p = 1;
var i = 0;
var perfeito;
var n = 5 ;
println( "Max de números perfeitos?" );
n = Integer.parseInt( new BufferedReader( new InputStreamReader( System.in ) ).readLine() );

while( i < n ){
p = proxPrimo( p );
perfeito = calcPerfeito( p );
if( not (perfeito == 0) ){
println( "Perfeito usando o primo {p}: {perfeito}" );
i++;
}
}

}

listaPerfeitos();

/**


  • Entrada: 5

  • Saída:

  • Perfeito usando o primo 2: 6

  • Perfeito usando o primo 3: 28

  • Perfeito usando o primo 5: 496

  • Perfeito usando o primo 7: 8128

  • Perfeito usando o primo 13: 33550336

  • /



Ligações externas |




  • Site oficial do JavaFX (em inglês)


  • Referência da Linguagem JavaFX Script (em inglês)


  • Tutorial da Sun Microsystems para JavaFX Script (em inglês)


  • Planet JFX Community Wiki (how-to's, exemplos, tutoriais) (em inglês)


  • Guia para construção de UIs com JavaFX Script (em inglês)

  • Site oficial do JavaFX (Traduzido)

  • Artigo sobre Tipos de dados em JavaFX Script








Wiki letter w.svg

Este artigo é um esboço. Você pode ajudar a Wikipédia expandindo-o.

Editor: considere marcar com um esboço mais específico.



Popular posts from this blog

Couldn't open a raw socket. Error: Permission denied (13) (nmap)Is it possible to run networking commands...

VNC viewer RFB protocol error: bad desktop size 0x0I Cannot Type the Key 'd' (lowercase) in VNC Viewer...

Why not use the yoke to control yaw, as well as pitch and roll? Announcing the arrival of...