# 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ó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:
* 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.
* 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)

Após compilar e executar esse é o resultado:

### Números Perfeitos (np.fx)

* @return 0 caso não seja possível calcular um primo de mersenne a partir do primo 'p', ou o primo de mersenne
* @return 0 caso não seja possível calcular um número perfeito a partir do primo 'p', ou o número perfeito
* 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