Quando começamos a estudar uma nova linguagem é comum brincarmos com a impressão de textos, o clássico Hello World. O objetivo desse post é explorar características do tipo String no JavaFx a partir da definição de literais, concatenação de strings, o uso de expressões para atribuição de valores até o mecanismo nativo de internacionalização. No fim do post o leitor pode ter uma ideia de como o JavaFx torna flexível o uso java.lang.String.
JavaFx a Linguagem
Linguagem que compõe a Plataforma JavaFx mantida pela Oracle para a construção de aplicativos RIA para Desktop, Mobile e TV. É uma linguagem de Script, compilada, que roda sob a JVM, mais nova e com uma cara bem diferente do Java com a proposta de tornar o desenvolvimento RIA mais interessante.
O conteúdo de uma string pode ser definido com aspas duplas - da mesma forma que o Java - ou usando aspas simples:
Value Type
O tipo String é considerado Value Type, ou seja o conteúdo é imutável (qualquer manipulação gera um novo objeto) e o valor default de uma variável desse tipo é diferente de null.
No próximo trecho um exemplo de uma variável sem inicialização, com valor default:
String-expression
Uma alternativa mais inteligente e leve para concatenar strings através de { }. Com essa funcionalidade o código p/ mapeamento de queries (JDBC/JPA) no Java seria bem mais elegante!
Veja exemplos:
A concatenação é definida em tempo de compilação. Outro detalhe sobre expression é a opção de vincular uma condição ao conteúdo da string, a semântica parecida com o operador ternário do Java.
Simplicidade em aplicar formatação é mais uma caracterísitica de string-expression, veja exemplo de com data e um número:
i18n / String localization
O JavaFx adota um mecanismo nativo para interpretar strings através de chaves e valores mapeados em arquivo properties, de uma forma bem simples sempre que double hash ## for usado o fx processa o conteúdo como um chave.
A seguir um exemplo de como acessar a chave 'Mensagem Inicial' dentro de um script JavaFx, assumindo que o arquivo Teste.fx, essa chave deveria ser mapeada no arquivo Teste_pt_BR.fxproperties no mesmo diretório (pacote) do script fx. O sufixo pt_BR indica o locale da máquina, isso pode ser configurado via código, assumindo a escolha do usuário por exemplo.
Veja o exemplo:
Acesse o site principal da platataforma e veja mais sobre o JavaFx: http://javafx.com
Na Globalcode temos um mini-curso e Hands-on de JavaFx.
[]s
Eder Magalhães
www.yaw.com.br
twitter.com/youandwe
twitter.com/edermag
JavaFx a Linguagem
Linguagem que compõe a Plataforma JavaFx mantida pela Oracle para a construção de aplicativos RIA para Desktop, Mobile e TV. É uma linguagem de Script, compilada, que roda sob a JVM, mais nova e com uma cara bem diferente do Java com a proposta de tornar o desenvolvimento RIA mais interessante.
O conteúdo de uma string pode ser definido com aspas duplas - da mesma forma que o Java - ou usando aspas simples:
println('Aspas simples'); println("Aspas duplas");Outra característica similar ao Java, é a possibilidade de utilizar caracteres de escape, a seguir um exemplo do \t fazendo a tabulação no conteúdo:
println("Usando caracteres de escape: \ttab");Aspas simples podem ser usadas com aspas duplas ou vice-versa, sem a necessidade do \' veja:
println("Tudo 'junto' e misturado!"); //imprime: Tudo 'junto' e misturado!Um exemplo de string definido a partir de caracteres unicode:
// imprime: こんにちは、世界! println("\u3053\u3093\u306b\u3061\u306f\u3001\u4e16\u754c\uff01");
Value Type
O tipo String é considerado Value Type, ou seja o conteúdo é imutável (qualquer manipulação gera um novo objeto) e o valor default de uma variável desse tipo é diferente de null.
No próximo trecho um exemplo de uma variável sem inicialização, com valor default:
var s: String; println(s.equals("")); // imprime: true
String-expression
Uma alternativa mais inteligente e leve para concatenar strings através de { }. Com essa funcionalidade o código p/ mapeamento de queries (JDBC/JPA) no Java seria bem mais elegante!
Veja exemplos:
def nome = "Claudia"; println('Bem-vindo(a) {nome}'); //imprime: Bem-vindo(a) Claudia // repare que na quebra de linha ñ foi necessario o uso de + def sql = "select * from clientes c " "where c.nm like '{nome}'%";
A concatenação é definida em tempo de compilação. Outro detalhe sobre expression é a opção de vincular uma condição ao conteúdo da string, a semântica parecida com o operador ternário do Java.
println("Bem-vindo(a) { if (not nome.equals('')) nome else 'Desconhecido' }!");
Simplicidade em aplicar formatação é mais uma caracterísitica de string-expression, veja exemplo de com data e um número:
println("Hoje: {%tA java.util.Date{}}"); // tA formata o nome do dia var valor = 285.3668; println("Total a debitar: {%.2f valor}"); // imprime: Total a debitar: 285,37
i18n / String localization
O JavaFx adota um mecanismo nativo para interpretar strings através de chaves e valores mapeados em arquivo properties, de uma forma bem simples sempre que double hash ## for usado o fx processa o conteúdo como um chave.
A seguir um exemplo de como acessar a chave 'Mensagem Inicial' dentro de um script JavaFx, assumindo que o arquivo Teste.fx, essa chave deveria ser mapeada no arquivo Teste_pt_BR.fxproperties no mesmo diretório (pacote) do script fx. O sufixo pt_BR indica o locale da máquina, isso pode ser configurado via código, assumindo a escolha do usuário por exemplo.
//codigo JavaFx - Teste.fx println(##"Mensagem Inicial"); // imprime: Bem-vindo(a)A seguir o conteúdo no arquivo properties, repare que ambas chave e valor são definidas entre "":
"Mensagem Inicial"="Bem-vindo(a)"Caso o chave não exista, o JavaFx imprime o valor 'Mensagem Inicial'. Uma opção seria definir a chave c/ [] informando o valor default, usado caso a chave não seja encontrada.
Veja o exemplo:
println(##[Outra Mensagem]"Mensagem com valor default");
Acesse o site principal da platataforma e veja mais sobre o JavaFx: http://javafx.com
Na Globalcode temos um mini-curso e Hands-on de JavaFx.
[]s
Eder Magalhães
www.yaw.com.br
twitter.com/youandwe
twitter.com/edermag
Comentários
Abraços...