JavaFX Script
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. HistóriaA 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 linguagemJavaFX 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()}" ); /*
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()}" ); /*
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çõesJavaFX 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 IDEsProgramas 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
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:
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; } /**
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; } /**
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(); /**
Ligações externas
|