Pular para o conteúdo principal

JavaFx: Flexibilidade na manipulação de String

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:
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

Marcelo Cuin disse…
Olá, gostaria de divulgar nosso blog sobre JavaFX. www.javafx.com.br
Abraços...

Postagens mais visitadas deste blog

10 reasons why we love JSF

1. One-slide technology: it's so simple that I can explain basic JSF with one slide. 2. Easy to extend: components, listeners, render kit, Events, Controller, etc. 3. Real-world adoption: JBoss, Exadel, Oracle, IBM, ... 4. Architecture model: you can choose between more than 100 different architecture. 5. Open-mind community: using JSF you are going to meet very interesting people. 6. We are using JSF the last 5 years and we found very good market for JSF in Brazil 7. Progress: look to JSf 1.1 to JSF 1.2, JSF 1.2 to JSF 2.0. People are working really hard! 8. Many professionals now available 9. It's a standard. It's JCP. Before complain, report and help! 10. Ed Burns, spec leader, is an old Globalcode community friend! EXTRA: My wife is specialist in JSF. She's my F1 for JSF :) Nice job JSF community! -Vinicius Senger

Transmissão do minicurso Google App Engine

Os minicursos gratuitos realizados através da iniciativa Open4Education da Globalcode têm sido transmitidos ao vivo em forma de webcast e eu tenho acompanhado pessoalmente muitos deles, conversado com os alunos no chat, observando a qualidade e as limitações das transmissões. Sem dúvida o aproveitamento presencial é muito maior, principalmente pelo networking e pelo foco dado ao conteúdo. Mas, para aqueles que não estão em São Paulo o custo benefício é sensacional. Mesmo perdendo um pouco nas transmissões, é muito melhor poder assistir os minicursos à distância. Com o sucesso das transmissões do Profissão Java e do The Developer's Conference 2010 queremos melhorar e atingir um público ainda maior, e é por isto, que iremos fazer a primeira transmissão ao vivo em parceria com a WTV Streaming hoje! Os principais benefícios desta parceria são: Transmissão do vídeo e não apenas do conteúdo que está sendo projetado Captação e edição do conteúdo, para posterior disponibilizaç...

Brasil e a força de trabalho: Futuro incerto

Mais de 70 mil brasileiros estariam empregados se tivessem formação em TI (...) Apesar do bom salário, este profissional tem se tornado artigo raro no Brasil, o que explica as vagas neste setor estarem entre as dez mais difíceis de serem preenchidas (...) MDIC (Ministério do Desenvolvimento, Indústria e Comércio Exterior) vai avaliar carência de profissionais de TI no país (...) O presidente do Confea admitiu, no entanto, que, no curto e no médio prazo, parte das vagas terá de ser ocupada por profissionais do exterior porque o país não terá como suprir as carências de imediato (...). Notícias como estas estão sendo veiculadas todo o tempo e há anos. Em novembro de 2010 postei em Globalcoder´s um artigo sobre esta mesma questão e, passados quase seis meses, parece-me que o cenário realmente mudou ... para pior. Assim como as notícias sobre este fato, temo também em tornar-me entediante com a minha abordagem insistente em destacar esta que considero uma verdadeira calamidade nac...

JavaOne 2012, muitos resultados para comunidade Brasileira

Mais um JavaOne pra entrar pra história. É sempre muito especial participar do evento, saber quais são as tendências, conversar com tantas pessoas que estão fazendo o futuro da plataforma Java. Participar dos coqueteis, fazer networking, assistir os keynotes, comer uma boa comida chinesa no House of Nanking e aproveitar os muitos restaurantes Tailandêses da cidade. Mas, este ano eu senti que o evento teve mais energia e momentos especiais para a comunidade Brasileira. Muitas palestras de amigos e membros do SouJava, cuja caravana teve quase 30 participantes vestindo orgulhosamente a camiseta do grupo. Alguns resultados do SouJava, da Globalcode e da comunidade Brasileira de forma geral: User Group Forum foi um sucesso. Foi um dia de evento (domingo) organizado pelos grupos de usuários. Graças ao Bruno Souza nós tivemos muita atuação e participação. Coordeamos a montagem da grade junto com Jonh Yeary e apoio de outros líderes de grupos de usuários. Tivemos palestra de vários Br...

JSF 2 - Composite Components, você não precisa mais ser um ninja

Estamos em uma nova era da computação, os dados não estão mais localizados em um banco dentro de sua empresa, vivemos a explosão de redes sociais, informações são geradas a todo instante, e se torna essencial que sua aplicação conheça os serviços disponíveis na web e consumam suas APIs geralmente disponíveis por serviços REST. Legal, mas como ficam meus aplicativos Java EE neste novo cenário? Para quem vem acompanhando a evolução da plataforma, é notório que todo esforço vem sendo utilizado para aumentar a produtividade e a integração com novos serviços. Basicamente duas especificações surgem com muita força para atender este cenário, a JSR - 314 (JSF-2) e JSR - 311 (JAX-RS), neste post exploraremos a JSR-314 (JSF2) e sua nova forma de criar Composite Components. Uma das grandes queixas dos desenvolvedores JSF era a complexidade em criar composite components, era necessário um vasto conhecimento sobre o ciclo de vida de uma aplicação JSF. Agora, você não precisa ser mais um “ninja” em ...

Sistema interativo de TV Digital com Ginga-J

No início de 2009, os estudantes de Sistema de Informação do Centro Universitário de Votuporanga ( UNIFEV ), Caio César Pereira de Souza e Rodrigo Gonçalves Constantino me apresentaram uma proposta para que eu fosse co-orientador junto ao professor orientador Djalma Domingos da Silva , em seu Trabalho de conclusão de curso (TCC) com tema TV Digital. A base que motivou o assunto, foi a palestra apresentada por Maurício Leal na I Conferência Java Noroeste sobre o tema TV Digital, realizada em 2006 em Votuporanga-SP. Ficamos muito entusiasmados com a possibilidade de interatividade na TV Digital, e a grande quantidade de possibilidades de desenvolvimento de aplicativos nesta área. Acompanhamos de perto as notícias na imprensa e todo o esforço e iniciativas realizadas pelo Fórum do Sistema Brasileiro de TV Digital Terrestre (SBTVD) , que organizou e produziu especificações ABNT, normatizando o sistema de TV Digital Terrestre. O foco do TCC foi realizar o desenvolvimento de uma pequena ...