terça-feira, 31 de agosto de 2010

Sun/Oracle - Novos nomes para as certificações

Dia 26 de agosto a Oracle anunciou formalmente as mudanças realizadas nos exames de certificação da Sun para adequação ao modelo de certificação Oracle.

A seguir o texto da nota enviada pela Oracle:

"Temos a satisfação de anunciar que, a partir de 1 de setembro de 2010, o Programa de Certificação Sun estará totalmente integrado ao Programa de Certificação Oracle. Todas as certificações em Java, Oracle Solaris, MySQL, Oracle Solaris Cluster e Open Office serão republicadas no Programa de Certificação Oracle com novos títulos de certificação Oracle.

O que você precisa saber:
  • Os exames terão o mesmo formato e os mesmos objetivos que tinham anteriormente no programa da Sun, portanto, não haverá qualquer impacto naqueles que estejam se preparando para obter a certificação.
  • Caso você possua, atualmente, um voucher de exame de certificação para um desses exames, ele terá validade até a data de vencimento e poderá ser resgatado.
  • Se atualmente você tiver uma certificação Sun, o título da certificação Sun atual ainda será reconhecido no Programa de Certificação Oracle e continuará válido.
  • Você poderá atualizar a sua certificação a qualquer momento para a versão da tecnologia mais recente, a fim de receber um título de certificação Oracle.
  • Caso esteja se preparando para um exame de certificação que realizará após o dia 1 de setembro de 2010, você receberá um título de certificação Oracle e poderá usar o logotipo do Programa de Certificação Oracle como forma de endosso da sua habilidade comprovada pela Oracle Corporation. "
Novos títulos para as certificações:

Oracle Certified Associate, Java SE 5/SE 6
(Sun Certified Java Associate - SCJA)
Oracle Certified Professional, Java SE 5 Programmer
(Sun Certified Java Programmer - SCJP SE 5)
Oracle Certified Professional, Java SE 6 Programmer
(Sun Certified Java Programmer - SCJP SE 6)
Oracle Certified Master, Java SE6 Developer
(Sun Certified Java Developer - SCJD)

Oracle Certified Professional, Java EE 5 Web Component Developer
(Sun Certified Web Component Developer - SCWCD EE5)
Oracle Certified Professional, Java EE 5 Business Component Developer
(Sun Certified Business Component Developer - SCBCD EE5)
Oracle Certified Professional, Java EE 5 Web Services Developer
(Sun Certified Developer for Java Web Services 5 - SCDJWS)

Oracle Certified Master, Java EE 5 Enterprise Architect
(Sun Certified Enterprise Architect - SCEA EE5)
Oracle Certified Professional, Java ME 1 Mobile Application Developer
(Sun Certified Mobile Application Developer - SCMAD)
Oracle Certified Professional, Java Platform, Enterprise Edition 6 JavaServer Pages and Servlet Developer
(Sun Certified JSP and Servlet Developer for the Java EE6 Platform)

Oracle Certified Professional, Java Platform, Enterprise Edition 6 Enterprise JavaBeans Developer
(Sun Certified EJB Developer for the Java EE6 Platform)
Oracle Certified Professional, Java Platform, Enterprise Edition 6 Java Persistence API Developer
(Sun Certified JPA Developer for the Java EE6 Platform)
Oracle Certified Professional, Java Platform, Enterprise Edition 6 Web Services Developer
(Sun Certified Developer for the Java Web Services for the Java EE6)
Oracle Certified Professional, Java Platform, Enterprise Edition 6 JavaServer Faces Developer
(Sun Certified Developer for the JSF for the Java EE6 Platform)

Conforme podemos observar, a Oracle também definiu algumas novas certificações que não existiam no programa oficial da Sun, como é o caso das certificações sobre JPA, JSF e EJB, o que permite que os profissionais possam fazer certificações mais específicas.

A Oracle informou que apesar do anúncio, os sistemas de certificação ainda estão sendo ajustados e, por isso, os nomes antigos ainda podem ser encontrados no site da Prometric e da Oracle.

Veja mais informações em http://education.oracle.com.


Academia Java e as novas certificações

Conforme informado pela Oracle, o conteúdo das certificações não sofrerá alterações. Por isso, as carreiras Academia Java e Intensivo Academia Java que oferecem conteúdo preparatório para a certificação SCJP (agora Oracle Certified Professional, Java SE 6 Programmer) também não precisarão ser alteradas.


Vídeo aulas

As vídeo aulas de revisão para certificação são partes integrantes das carreiras Academia Java e Intensivo Academia Java que visam auxiliar na preparação do aluno para a realização do exame de Certificação que agora chama-se "Oracle Certified Professional, Java SE 6 Programmer".

Apesar de não sofrer mudança de conteúdo, o primeiro vídeo dessa série será atualizado com as novas informações a respeito das certificações. Assim que a gravação tiver sido refeita, avisaremos aqui no Blog, portanto aguarde.

Quem tem acesso ?

Qualquer aluno ou ex-aluno das carreiras Academia Java ou Intensivo Academia Java têm livre acesso às vídeo aulas e podem assistí-las sem sair de casa e quantas vezes for necessário.

Se você cursou essas carreiras a partir de 2010, basta acessar a Academia Java, escolher o módulo "VA_JP - Revisão para Certificação", fazer seu login* e assistir aos vídeos.

Se você cursou essas carreiras antes de 2010, entre em contato com a Globalcode e solicite a liberação de seu acesso.

* Se você não lembra seu login, use a funcionalidade "Esqueci minha senha", informando seu endereço de email que está cadastrado no site da Globalcode.

[]s
Elaine Quintino Silva
http://www.globalcode.com.br/instrutores/ElaineSilva
http://twitter.com/elaineqsilva

segunda-feira, 30 de agosto de 2010

PHP: mais uma alternativa na plataforma Java

Java não é há tempos apenas uma linguagem, é uma plataforma. E a JVM já suporta várias outras linguagens além de Java. Na trilha de Java do The Developer’s Conference 2010, organizada pelo SouJava, eu, o Bruno Souza (Javaman) e o Jonnes Tahara falamos sobre outras linguagens que podem ser executadas em cima da JVM. Eu falei sobre o Quercus, e o Jonnes falou sobre Groovy.

O Quercus é uma implementação em Java do PHP. É open-souce, disponível sob licença GPL (nesses dias de disputas entre Google e Oracle é bom saber a licença open-source que você usa). Ele é um projeto Web que pode ser executado em qualquer web container JavaEE, permitindo a integração das funções básicas do PHP com bibliotecas Java. Após o deploy, nós colocamos nossos arquivos PHP dentro da raiz do projeto, como faríamos se fossem arquivos JSP.

Na apresentação fizemos a demonstração usando o Tomcat. Após fazermos o deploy, criamos uma página PHP incluindo registro num banco MySQL, outra página PHP que se utiliza da classe Date do pacote java.util e por fim uma página PHP que utilizava uma classe Java criada por nós para a demonstração. Tudo muito simples como é o PHP.

E o que você ganha com isso? Você pode reaproveitar a sua infra-estrutura Java para executar, e até mesmo integrar com seus sistemas legados, softwares escritos em PHP, como por exemplo aplicações de mídias sociais consagradas como Wordpress, phpBB, phpNuke entre outros tantos que existem prontos por aí.

Caso queira conferir os slides da apresentação, onde dou dicas de como executá-lo no Tomcat ou no JBoss, basta navegar pelos slides abaixo.




Abraços e bons códigos!

quinta-feira, 26 de agosto de 2010

Colaborar com o TDC 2010 foi ...

Tive a oportunidade de colaborar nos três dias do #TDC2010, e vou contar um pouco da trilha que participei no Sábado, a trilha Java.

Vou começar com uma curiosidade sobre o credenciamento, que estava marcado para ser iniciado as 8h30, porém antes deste horário mais de cem pessoas já estavam credenciadas, fato que mostra que o comprometimento da comunidade que madrugou em um Sabadão.
A abertura do Sábado foi realizada no Auditório, comandada pela Yara que além de realizar os agradecimentos chamou os coordenadores das trilhas do dia: Pablo Madril (Java), Felipe Rodrigues (Ruby), Alexandre Porcelli (noSQL) e Giovanni Bassi (.NET) para realizarem a apresentação das respectivas trilhas.

Depois fomos para a sala reservada para a trilha Java e a primeira palestra do dia foi: O tiro certo: como escolher APIs e frameworks Java que prosperam com Fabiane Nardon , Fabio Velloso e Ted, foi muito legal, no formato de perguntas e com a participação intensa de todos, e ficou claro que uma escolha realizada em um passado recente (2 ou 3 anos) "pode parecer uma péssima escolha” atualmente, em virtude das evoluções, e também que não existe “bala de prata” para resolver todos os problemas.

A sequência se deu por Uma Década de Java em Casos Reais, com os seguintes casos:
Fabiane Nardon apresentou o “Sistema de Saúde Pública em Java: Cinco anos depois do Duke's Choice Award”, considerado o maior sistema EJB do mundo com mais de 600 EJBs, mostrando as escolhas realizadas para atender as necessidades e o tempo (10 meses) apertado para o desenvolvimento da solução.

Outro caso, "Java na Integração Corporativa - O Caso da Telefonica" foi apresentado pelo Fabio Velloso, deixando claro a abrangência do grupo e como, nesta abrangência, uma decisão de cunho tecnológico (arquitetura, ferramentas, frameworks e outras) pode influenciar a vida de um batalhão de pessoas.

Wagner Roberto dos Santos contribuiu com "Um case de Mobile Payment com Java ME e Java EE 6", inclusive com uma esclarecendo sobre as possibilidades técnicas e como elas influenciaram as decisões para a implementação da solução.
Ana Abrantes e Yara Senger apresentaram “Java na Globalcode: 10 anos nos ajudando a crescer”, contando como uma solução in-house, feita sob medida, pode solucionar diversos problemas administrativos com a automatização de algumas tarefas e com a disponibilização de serviços, como a matrícula do #TDC2010, por exemplo.

Então chegou a hora do almoço, e fui com o Giulian e o Waldir forrar o estômago com umas esfihas, num local bem pertinho da Anhembi Morumbi, para poder voltar em tempo para o início das palestras da tarde.

Depois do almoço o Éder Magalhães falou sobre o “JavaFX em uma abordagem prática”, mostrando um quebra-cabeças feito com JavaFX e a integração transparente do JavaFX com o Java, por meio de uma aplicação CRUD.

O Bruno Souza, vulgo JavaMan, deu continuidade com o tema JVM uma plataforma para todas as linguagens , destacando a “Importância de outras linguagens na JVM” e afirmando ainda que a plataforma (JVM) e mais importante que a Linguagem.

Então para mostrar esta idéia Jefferson Prestes mostrou o “PHP na JVM com Querqus” e deixou claro que é possível rodar uma aplicação PHP em um Web Container Java com Querqus instalado, e ainda que é possível realizar a utilização de classes Java em páginas PHP. E Jonnes Tahara contribuiu apresentando a utilização de “Groovy com OFBiz” e esclarecendo sobre a possibilidade de customização do OFBiz através de código Groovy.

Então fizemos uma parada para o café e fomos finalizar a trilha no Auditório (TDC Stadium), com a palestra de Alberto Lemos (dr.Spock) e Danival Taffarel Calegari que apresentaram Dicas e Truques sobre performance em Java EE, JPA e JSF, uma prévia da apresentação que eles farão no JavaOne 2010, com aplicação de estratégias de desenvolvimento que acompanham a evolução da Plataforma Java.

E para encerrar as palestras da trilha, Bruno Souza falou sobre “Oracle vs Google. O que o OpenJDK tem a ver com isso?”, começou deixando claro a importância da portabilidade para a Plataforma Java, inclusive lembrando do processo da Sun contra a Microsoft, falou também dos males das patentes de software e como a utilização de uma máquina virtual Open Source no Android poderia ter evitado este embate.

Então chegou a hora do encerramento (do dia) com os agradecimentos e sorteios de muitos brindes dos patrocinadores. Depois foi a vez do happy hour, porém infelizmente não pude participar, fui a uma peça de teatro e prestigiar um amigo ator.

Enfim, como resumir os três dias de #TDC2010? Ao tentar responder esta pergunta lembrei-me de um álbum de figurinhas de antigamente: “Amar é ...”. O motivo da minha lembrança foi o comprometimento de todos para a realização do evento, pois o Dicionário Houaiss em uma das concepções da palavra amor é ... devoção de uma pessoa ou um grupo de pessoas por um ideal concreto ou abstrato; interesse, fascínio, entusiasmo, veneração”, e na realização deste evento encontramos literalmente um grupo de pessoas entusiasmadas colaborando para a realização concreta deste evento fascinante.

Até mais!
Marcelo de Castro
http://twitter.com/mcastroinfo
http://www.globalcode.com.br/instrutores/MarceloCastro

quarta-feira, 18 de agosto de 2010

Parceria Globalcode e Catho Educação

Globalcode e Catho Educação iniciaram as operações da parceria firmada recentemente.

A Catho Educação tem a missão de orientar profissionais sobre os cursos mais adequados para alavancar carreiras. Em função da experiência de mais de 30 anos que a Catho possui em ajudar profissionais a se recolocarem e as empresas a encontrarem os melhores profissionais, sabe as qualificações requisitadas pelo mercado.

Tomando como base esta experiência, foi firmada, especificamente para o segmento da tecnologia da informação, parceria com a Globalcode, que oferece as melhores opções de cursos para atender as demandas do mercado, cujo amplo e diversificado portfólio de treinamentos especializados atende anseios de profissionais de todos os níveis e campos de atuação na atividade de construção de software, cujas oportunidades de trabalho e evolução na carreira crescem a taxas impressionantes.

A operação integrada (sistêmica, inclusive) entre Globalcode e Catho tem ponto de partida no contato de interessados que acessam o website da Catho Educação (http://www.catho.com.br/cathoeducacao/instituicoes-parceiras) e são atendidos por consultores competentes e habilitados para uma orientação efetiva quanto às alternativas profissionais nas diversas vertentes de TI; a partir daí, informado sobre as especializações disponíveis, o interessado é direcionado para a Globalcode para matricular-se no curso que optou, em qualquer uma das Unidades da rede de parceiros (http://www.globalcode.com.br/empresa/unidades).

Inicialmente, a operação está restrita às Unidades São Paulo e Campinas, com as carreiras Academia do Java, Intensivo da Academia do Java e Academia do Programador, bem como, os cursos Core Java e Java para líderes e gerentes. Em breve, todas as doze Unidades e o portfólio completo de treinamentos estarão contemplados.

A viabilização desta iniciativa somente foi possível devido à competência e seriedade das duas empresas, já consagradas no mercado brasileiro como instituições que esmeram continuamente na disponibilização de serviços de alta qualidade e excelente índice de satisfação de seus clientes.

Waldir U. Hadad
Diretor Comercial
Globalcode

terça-feira, 17 de agosto de 2010

TDC 2010 : Quer colaborar ?


Como muitos já sabem, no próximo final de semana (dias 20, 21 e 22 de agosto) teremos a realização do evento The Developer's Conference 2010 que irá reunir profissionais de desenvolvimento de software de vários segmentos de tecnologia para discutir sobre tendências atuais e futuras.

No quarto ano de sua realização, a novidade de 2010 para o The Developer's Conference foi a diversificação dos temas que incluiu não apenas Java, mas também, outras plataformas, linguagens de programação e produtos de grande importância no mercado de desenvolvimento de software.

Sabemos que a realização de um evento desse porte jamais seria possível se não fosse o aspecto da colaboração entre a Globalcode e todas as empresas e profissionais envolvidos com cada uma das 13 trilhas do evento.

Agora, na reta final dos preparativos para o TDC 2010, queremos reforçar o aspecto da colaboração diretamente com a comunidade que sempre acompanha e participa dos vários eventos que a Globalcode tem realizado nos últimos anos.

Por isso, queremos convidá-lo a participar do evento, não apenas como ouvintes, mas como colaboradores.

Estamos selecionando 4 colaboradores da comunidade para cada uma das 13 trilhas, portanto precisaremos de 52 pessoas que estejam dispostas a nos ajudar nas tarefas de organização durante a realização do evento.

As funções do colaborador serão definidas pelo coordenador de cada trilha, mas devem envolver uma ou mais das tarefas abaixo:
  • organizar a entrada dos participantes da trilha;
  • fornecer apoio ao palestrante da trilha para eventuais problemas com micro, som, etc;
  • auxiliar o palestrante durante sessão de perguntas, por exemplo, levando microfone ao participante ou gerenciando a ordem dos interessados em perguntar;
  • auxiliar nas tarefas de credenciamento; etc.
Há duas modalidades para ser colaborador, e os benefícios dependem de como você quer colaborar.

Colaborando o dia todo:
  • Você ganha o direito de participar do evento sem custo nos três dias, podendo assistir à todas as palestras da trilha TDC Stadium ou a qualquer outra palestra em qualquer trilha que possua vagas, exceto no dia da trilha em que você estiver alocado como colaborador.
  • Você recebe uma camiseta do evento.
  • Seu nome e mini-currículo será divulgado no site do evento na página da trilha em que você estiver alocado.
Colaborando por meio período:
  • Você ganha o direito de participar do evento sem custo nos três dias, podendo assistir à todas as palestras da trilha TDC Stadium ou a qualquer outra palestra em qualquer trilha que possua vagas, exceto no dia da trilha em que você estiver alocado como colaborador.
  • Seu nome e mini-currículo será divulgado no site do evento na página da trilha em que você for alocado.
Como participar ?

Quem tiver interesse em se tornar um colaborador, veja o site do evento, escolha uma trilha e entre em contato com o coordenador via twitter, ou deixe um comentário aqui no blog.


Elaine Quintino Silva
http://www.globalcode.com.br/instrutores/ElaineSilva

quinta-feira, 5 de agosto de 2010

The Developer's Conference 2010 - Nova trilha de JavaEE

É com muito orgulho que anunciamos hoje mais uma grande novidade para o The Developer's Conference 2010. Em parceria com o JBoss User Group criamos uma trilha específica para Java EE, que será realizada na sexta-feira 20 de agosto.


O coordenador da trilha JavaEE é Leandro Lima, embaixador do JBoss User Group Brasil e coordenador de projetos no UOL.

A trilha de JavaEE já esteve em pauta diversas vezes entre os organizadores do evento, e esta realização em parceria com o JBoss User Group vai ser sensacional!

Portanto, você que quer saber mais sobre JavaEE 6, JSF 2.0, escalabilidade, clustering, arquiteturas, não pode ficar de fora.
 
Chamada de trabalhos para esta trilha até o dia 7 de agosto. Se você tem interesse acesse este link.

Acompanhe no Twitter #TDC2010

Literais da Linguagem Java

Na última semana, tive uma conversa com um profissional Java iniciante que me apresentou dúvidas sobre o uso de valores hexadecimal na linguagem, inicialmente entendi que ele precisava da representação textual de um valor hexadecimal, então apresentei um método da classe wrapper Integer, conforme segue:

int valor = 15;
System.out.println(Integer.toHexString(valor)); //Imprime f

Só então após mostrar este exemplo, ficou claro que ele precisava exatamente do contrário, ou seja, qual a forma mais fácil de converter um número hexadecimal para um número decimal para atribuição a uma variável primitiva inteira. Esclareci que para isso não havia necessidade de conversão, bastaria usar uma literal hexadecimal presente na linguagem Java da seguinte forma:

int valor = 0xf; // ou 0XF
System.out.println(valor); //Imprime 15

Este episódio me motivou a escrever este post sobre os literais da Linguagem Java, então vamos lá.

De acordo com a especificação da linguagem (The Java™ Language Specification Third Edition http://java.sun.com/docs/books/jls/ ) a definição de um literal na linguagem Java, em tradução livre, é que um literal é uma palavra do código fonte que representa um valor referente a um primitivo, uma (java.lang.)String ou uma referência nula. Vamos então conhecer os literais da linguagem Java.

Inteiros

Os literais inteiros são representados por números inteiros, ou seja, sem o separador de decimais ponto (.), podendo ser positivos (precedidos ou não do sinal de mais +) ou negativos (precedidos do sinal de menos -) e composto pelos dígitos pertencentes a base referente.
Estes literais são do tipo primitivo int, exceto se for incluído o caractere L (maiúsculo ou l minúsculo) como sufixo, que indica que o literal é do tipo long, vale ressaltar que o caractere L (maiúsculo) deve ser usado preferencialmente ao l (minúsculo), pois facilita a leitura, visto que o caractere l (minúsculo) é facilmente confundido com o dígito 1.
Os inteiros decimais (base 10) são compostos pelos dígitos: 0 1 2 3 4 5 6 7 8 9, não iniciados por zero (0), exceto o próprio zero (0), pois os literais que representam inteiros octais (base 8) são iniciados por zero (0) e compostos pelos dígitos: 0 1 2 3 4 5 6 7. Existem ainda os literais inteiros hexadecimais (base 16) que são compostos pelos dígitos 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F e iniciados pelo prefixo 0x (ou 0X).
Exemplos de literais inteiros:

Decimais: 0 -89 3568
Octais: 010 -028 -064
Hexadecimais: 0xCafe -0Xfefe 0xCade
long: 0XCOBOL -010L 78l

Ponto flutuante

Na linguagem Java uma literal do tipo ponto flutuante possui a parte inteira e a parte decimal separadas pelo ponto (.), e pode ser utilizada a notação E, ou representações hexadecimais com expoentes binários.
A notação E, utiliza para a representação do expoente decimal o caractere e (ou E) e uma literal de ponto flutuante hexadecimal utiliza o caractere p (ou P) para a representação do expoente binário.
Os literais em ponto flutuante são do tipo primitivo double, exceto se for incluído o caractere f (ou F) como sufixo, que indica que o literal é do tipo float. O caractere d (ou D) pode ser opcionalmente utilizado como sufixo para tipos double.
Estes literais podem ser positivos (precedidos ou não do sinal de mais +) ou negativos (precedidos do sinal de menos -) tanto na mantissa quanto no expoente, conforme exemplos:

Decimal: 1.0 -89.911 7895.05d
Notação E: -1e1D 1000e-3 0.31415e1
Hexadecimal: 0xFp-4 0X10.Ap1 0xCAFE.Ap+1
float: 3.14159f -2.5e9f 0x10.Ap-1f

Booleanos

As palavras true e false são literais do tipo primitivo boolean, ou seja, são valores que podem ser atribuídos diretamente para variáveis primitivas do tipo boolean, conforme código abaixo:

//declarando uma variável e atribuindo o valor booleano true
boolean teste1 = true;

Caractere

Um literal caractere é do tipo primitivo char, e pode ser representado por um único caractere ou uma sequência de escape entre aspas simples (‘). Um caractere pode ser representado por uma sequência de escape com o código hexadecimal Unicode (http://pt.wikipedia.org/wiki/Unicode, http://pt.wikipedia.org/wiki/UTF-16), precedido por \u, na seguinte faixa: de ‘\u0000’ até ‘\uFFFF’, ou ainda um código octal, precedido pelo caracter de escape \ (barra invertida) na seguinte faixa: de \000 até \377. A representação de escape octal foi inserida por compatibilidade com C, e devem ser preteridos pelo uso do Unicode.

Exemplos de literais char: 'a' ' $' 'Ω' '\u002E' '\177'

Caracteres de escape
Existem ainda os caracteres de escape que representam caracteres não imprimíveis, e também aspas simples, aspas duplas e barra invertida, utilizados conforme segue.

char backspace = '\b';
char tabulacao = '\t';
char novaLinha = '\n';
char novaPagina = '\f';
char retorno = '\r';
char aspasDuplas = '\"';
char aspasSimples = '\'';
char barraInvertida = '\\';

String

Um literal string é composto por zero ou mais caracteres entre aspas duplas ("), e uma literal string é sempre do tipo (java.lang.)String.
Devido a forma como os caracteres de escape Unicode são processados não é correto escrever "\u000a", devendo ser utilizado para tal "\n", e de forma similar deve ser usado "\r" ao invés de "\u000d".

String aspasDuplas = "\"";
String hello = "Hello";

Null

A palavra null, serve para anular uma referência a um objeto, para exemplificar:

/* declarando uma variável referencia do tipo Object
* e atribuindo um novo objeto
/*
Object referencia = new Object();
/* anulando a referencia, agora o objeto criado na linha
* anterior não está mais acessível pela variável referencia
*/
referencia = null;

Este post apresentou os literais da Linguagem Java sendo a maioria trivial, porém alguns nem tanto, como o literal hexadecimal com expoente binário, e é curioso saber também que 0xCOBOL é um literal da Linguagem Java.

Até mais!

Marcelo de Castro
http://twitter.com/mcastroinfo
http://www.globalcode.com.br/instrutores/MarceloCastro

quarta-feira, 4 de agosto de 2010

Animações em JavaFX com Duration e Timeline

A tipagem básica do JavaFX é formada por tipos numéricos, String, Boolean, - até aqui semelhante ao Java - Void, Function, Null e Duration. O type Duration foi criado para simplificar a definição de literais que determinam valores para uma duração/faixa/pedaço do tempo, veja alguns exemplos:

var milisegundos = 1500ms;
var segundos = 50s;
var minutos = 15m;
var hora = 1h;

var hs = 30m * 3; //1h e 30m 

Bem mais simples e pouco verboso em uma comparação com Java. Um detalhe importante é que o valor de qualquer uma das variáveis acima é mantido em milisegundos. Com println fica fácil conferir:

println("{hora} / {minutos} / {segundos} / {milisegundos}");
// Saída: 3600000ms / 900000ms / 50000ms / 1500ms

Uso de Duration se justifica, por exemplo, em animações gráficas e é por esse motivo que entra em cena o Timeline, outro importante elemento do JavaFX,  que provê a capacidade de atualização no estado dos componentes visuais em um intervalo de tempo, ou melhor, durante uma duration! Quando escrevo estado dos componentes, me refiro as propriedades desses componentes.

Fiz um exemplo bem simples, um Timeline com 10 ciclos de execução registrados (propriedade repeatCount), cada uma disparada de 2 em 2 segundos. Durante a execução um contador é incrementado e seu valor apresentado em uma label, veja o código:

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.text.Font;
import javafx.animation.Timeline;
import javafx.animation.KeyFrame;

var contador = 0;

var t: Timeline = Timeline {
    repeatCount: 10 //ciclos
    keyFrames: KeyFrame {
        time: 2s  //a cada 2 segundos
        action: function(){
            label.text = "{++contador}"
        }
    }
};
t.play();

var label = Label {
    font: Font { size: 60.0 oblique:true },
    translateX: 90,
    translateY: 40
};

Stage {
    scene: Scene {
        width: 240
        height: 170
        content : label
    }
}

O Timeline é composto por um ou vários KeyFrames, cada um executado individualmente, single Thread, em ordem respeitando o time definido. O KeyFrame indica quem sofre as mudanças e que tempo isso acontece.
Quem foi ao Profissão Java 2010 viu o sorteador de brindes, na realidade um gerador de números aleatórios, que criei usando esse conceito de Timelines para trocar imagens (os números em vermelho) e alguns outros detalhes gerando a sensação do sorteio.

Explorando um pouco mais Duration, Timeline e KeyFrame, montei outro exemplo um pouco mais incrementado ainda para esse post: um circulo que segue o mouse a partir de um clique, inspirado no Fish Simulator um demo oficial do JavaFX referência para demonstrar como funciona o Scene Graph.

Na propriedade values do KeyFrame, indico que translationX e translationY sofrem transição de estado, do eixo atual para o posição do clique do mouse, usando Interpolação Linear.


import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.shape.*;
import javafx.scene.input.*;
import javafx.scene.paint.*;
import javafx.animation.*;
import javafx.util.*;

class Circulando extends Circle {
    var transicao: Timeline = Timeline { };

    public function vai(x:Number, y:Number):Void {
        //interrompe a timeline em execucao
        transicao.stop();

        /*
         * pega a diferença entre as coordenadas
         * p/ calcular a distancia entre os pontos.
         */
        var difX = x - translateX;
        var difY = y - translateY;
        var dist = Math.sqrt(difX * difX + difY * difY);

        //c/ a distancia calcula o tempo, cada pixel em 10ms
        var t = 1s * dist / 100.0;

        transicao = Timeline {
            keyFrames: [
                KeyFrame {
                    time: t
                    values: [
                        translateX => x tween Interpolator.LINEAR,
                        translateY => y tween Interpolator.LINEAR
                    ]
                }
            ]
        }
        transicao.play();
    }
}

def c = Circulando {
    radius: 20, translateX: 50, translateY: 50, fill: Color.ORANGE
}

var s : Scene;

Stage {
    scene: s = Scene {
        width: 250
        height: 180
        content : Group {
            content: [
                c,
                Rectangle {
                    fill: Color.TRANSPARENT
                    width: bind s.width
                    height: bind s.height
                    onMousePressed: function(e:MouseEvent) {
                        c.vai(e.x,e.y);
                    }
                }
            ]
        }
    }

}

Já brincou c/ JavaFX? Não, então baixe o Netbeans e veja as funcionalidades para desenvolvimento usando JavaFX. Experimente, use os exemplos desse post!


[]s
Eder Magalhães

segunda-feira, 2 de agosto de 2010

The Developer's Conference 2010 - Nova trilha de Python

O The Developer's Conference 2010 está sendo organizado pela Globalcode e várias empresas e grupos de usuários de tecnologias:
 
A experiência está sendo sensacional, a interação com os organizadores é  riquissima, são muitas pessoas interessantes trazendo experiências diferentes para a organização do evento.

A reação das pessoas no twitter em relação a diversidade dos temas, dos preços, das palestra está sendo extremamente positiva. #TDC2010

Recebemos muitas sugestões para criação de uma trilha exclusiva de Python. Não poderia ser diferente, todos sugeriram Luciano Ramalho + Associação Python Brasil... Fizemos o convite e eles aceitaram o desafio de coordenar e apoiar uma nova trilha no TDC2010!


É com muito prazer que anunciamos formalmente a criação da trilha de Python no The Developer's Conference 2010: domingo 22 de agosto!

Observação: Se você já se inscreveu em uma trilha no domingo e quiser trocar a sua inscrição não se preocupe, entre em contato por telefone ou e-mail que nós resolveremos. Também é possível fazer a inscrição em duas trilhas no mesmo dia para aqueles que querem assistir palestras de duas trilhas. 

Aproveite, menos de R$ 3,00 por palestra.

Mas corra, já recebemos 401 inscrições!

RT @luciano: Chamada de palestras p/ a trilha Python no #TDC2010. 
Propostas até dia 7/8 p/ apresentar dia 22/8 em SP: http://bit.ly/bWIGP9

Yara Senger
http://twitter.com/yarasenger
http://twitter.com/globalcode
http://twitter.com/open4education
http://blog.globalcode.com.br/search/label/Yara
http://www.globalcode.com.br/instrutores/YaraSenger