O guia para aprender o básico de JavaFX

Olá pessoal,

Há uns dias eu apresentei o meu projeto pessoal aprendendo-*. Recentemente eu consegui cobrir toda a API básica do JavaFX, gerando um guia interessante para quem quer rapidamente aprender o básico da tecnologia JavaFX, veja:

 

O que é JavaFX?

 

Fiquem a vontade para comentar, criticar e até contribuir com algo. O objetivo é reunir o conteúdo em um mini-livro atualizado para JavaFX 8.

Ainda estamos no início dessa ideia, mas continue acompanhando, pois o livro será gratuito e disponível para download!

 

 

API para os dados das eleições de 2014

Olá Pessoal!

Há quatro anos atrás, eu fiz uma API REST que deixaria disponível todos os dados das eleições para serem acessados usando HTTP com os dados do TSE.

Esse ano eu comecei um novo projeto, mas então encontrei o Transparência Brasil, que proporciona uma API muito completa com diversas informações sobre os candidatos, então não continuei o meu projeto…

O mais interessante dessa API é que ela já vem com exemplos de código e um API explorer muito bom(usando Swagger). Eles até estão organizando um hackthon, mas não me chamaram para participar 😦 no entanto, em um e-mail bem gentil, eles anunciaram essa API! 🙂

Se você é programador e quer fazer algo pelo seu país essa é uma grande oportunidade! Venha explorar a API e, se quiser, comente abaixo o que você criou!

 

Aprendendo Java e muito mais com a série de blogs “aprendendo-*”

Olá pessoal,

Faz bastante tempo que não posto por aqui! Essa postagem é bem rápida para divulgar esse projeto pessoal de blogs onde tenho uma série chamada aprendendo-*, onde eu mesmo blogo sobre diversos assuntos. Atualmente tenho os seguintes blogs

 

Blog sobre JavaFX http://aprendendo-javafx.blogspot.com.br/

Blog sobre JavaEE http://aprendendo-javaee.blogspot.com.br/

Blog sobre JavaSE http://aprendendo-javase.blogspot.com.br/

Temos também nosso canal no youtube: https://www.youtube.com/channel/UCqcrA3XWMvkFotZ4WNgBMsg

A ideia é estender para diversas áreas sempre com exemplos e material em português. Todos os blogs vão ter os tópicos bem organizados e assim que os tópicos básicos forem cobertos, focaremos em postagens mais avançandas e menos frequentes, ficando o blog como base de conhecimento para todos!

Gostou? Apoie a ideia curtindo nossa página no facebook e compartilhando nossas postagens! Obrigado.

Java consumindo menos memória que uma página do Gmail?

Eu estava vendo o status do projeto Pivot e algo me chamou a atenção: uma aplicação Java no navegador está consumindo menos que o meu GMail aberto. O mesmo vale para outras páginas. Vejam abaixo as evidências disso:

Total da aplicação Java(aproximadamente) = 1 + 48 + 11 + 12 = 72;
Gmail = 90 (sem contar a parte do Browser em sí)

Estamos falando de uma aplicação de demonstração de uma tecnologia, ou seja, contém todos os possíveis componentes do Pivot. Mais uma coisa, o navegador também estava consumindo muito mais, eu estava levando em conta só o processo do GMail, lembrando que ele precisa do chrome, que “come” mais um pouquinho. Um outro ponto importante é que eu mexi na aplicação para caramba para garantir que ela estaria usando tudo(várias instâncias já criadas) e não era somente um uso de memória da aplicação aberta. Depois de um tempo mexendo, o uso de  memória parou nesse valor (aprox. 48 mb), mas começou com em torno de 20 mb.

Não sou advogado do diabo, mas isso deve ser levado em conta na hora de escolher sua tecnologia e hoje com a volta do cliente rico Java (através do JavaFX), o desenvolvedor tem tudo que necessita em suas mãos.  Isso sem contar que teoricamente o JavaFX seria mais leve (e vai melhorar, pois será parte do Java 8) que o Pivot, pois contém uma API gráfica melhorada e recursos de aceleração gráfica(quando necessários).

Pense nisso!

OBS: Obviamente esse post não é sobre uma comparação mega profissional com todos os parâmetros e “testes de fogo” com as tecnologias. Não é também uma mega propaganda para o Java e nem um “flame”. A idéia é que antes essas aplicações Java “engoliam” memória e hoje a situação é outra: Java está muito mais leve!

E assim nasce o novo JUG do Vale do Paraíba…

Desde o tempo da faculdade fala-se de um JUG(Java User Group – Grupo de Usuários Java) para a minha região natal, no entanto, infelizmente nunca vi isso se concretizar.

Nos últimos meses tenho visto uma movimentação Java bem interessante na região, especificamente em São José dos Campos, onde “moro nos fins de semana”. Alguns alunos da FATEC de SJC criaram um blog bastante interessante e que foi inclusive retuitado pelo Twitter oficial do JavaFX. Na região também temos diversos nomes do mundo Java e várias empresas tem surgindo adotando a tecnologia em seus projetos. Por esses motivos, hoje no facebook resolvemos criar o nosso JUG.

A idéia inicial é nos reunirmos para apresentações e para que as pessoas se conheçam e futuramente realizar projetos, coding dojo, entre outros.

Se você é da nossa região não perca tempo e junte-se agora ao nosso grupo!

Grupo do Google
Página no Facebook

JAX-RS com Java

Você acha verboso e chato? Acha que perde tempo escrevendo código repetivo? Especificações relativamente novas, como JSR 311 e JSR 317, provam o contrário.


Com o foco em POJOs, a programação fica bem mais simples e divertida com essas especificações. No caso da JSR- 311 (JAX RS – API para criação de WEB Services RESTful) é impressionante a facilidade de criação e disponibilização de WEB Services seguindo o modelo arquitetural REST.

Hoje terminei a primeira parte do livro RESTful Java with JAX-RS. O livro cobre toda a especificação, dá uma passada nas três maiores implementações(JBoss RESTEasy, Jersey e Apache CXF) e depois nos preenche com diversos exemplos usando JBoss RESTEasy, a impĺementação que o autor, Bill Burke, lidera.

A primeira parte consiste em apresentar toda a especificação, ou boa parte dela, com exemplos práticos. A melhor parte é que não fazendo “@PATH” e “@GET”, como pensei que seria, por outro lado. Acabei por fazer na prática coisas que eu só tinha lido antes, como escrever meus próprios MessageBodyReaders e MessageBodyWriters.

. Por estar bastante envolvido com RESTEasy, o autor fala com uma simplicidade de pontos que poderiam ser chatos em outras abordagem, como a possibilidade de estender a API para outros métodos além dos básicos que o HTTP oferece (GET, POST, PUT, DELETE, HEAD, TRACE). Bill também aproveita para criticar pontos da atual especificação, como a ausência da especificação para clientes REST.

A parte sobre HATEOS ficou clara e motivadora. Quando achamos que a primeira solução que o autor passa é suficiente (<link rel=”next” href=”…” />), ele mostra problemas dessa forma de fazer a linkagem de recursos e fala sobre linkar recursos usando o cabeçalho da request HTTP. (li algo sobre isso nesse post ontem).

Falando em cliente aí vem uma crítica minha para o livro. Senti que poderíamos explorar mais a parte de cliente do CXF e o do Jersey.(aproveitem e vejam esse artigo mostrando o RESTEasy cliente em ação)  Para o RESTEasy isso foi bastante explorado. É possível sair com um conhecimento bom de RESTEasy se seguida a segunda parte do livro, que só contém exemplos. Também não gostei do excesso de “Isso foge do escopo desse livro” e “Como isso é semelhante ao que foi falado para X, não irei abordar”, enche o saco as vezes (mas gosto é gosto).

A segunda parte, ao lado da forma que o autor mantém as coisas simples, com certeza é o maior diferencial do livro. Não pense que você vai ver exemplos chatos que parecem só tem enrolar, os exemplos estão todos com testes e sempre adicionam algo a mais do que o autor citou no capítulo que o exemplo é relacionado. Também achei interessante o uso de Maven e a explicação feita sobre como usar. No geral quando leio, enchem de linguiça e dá raiva depois usar.

Enfim, recomendo o livro! E se não aprenderem a fazer RESTful WEB Services usando Java depois desse livro, que atualmente só tem em inglês,  nunca mais votem em mim!

TSE: Baixando todos os arquivos sobre candidaturas do site

Quanto tempo!

Estou carregando uma base relacional com dados de todos as candidaturas das eleições desse ano. Parece ser inútil, mas na verdade essa é primeira parte de um projeto um pouco maior. A segunda é disponibilizar essa base em forma de WEB Services REST e posteriormente expandir a base, adicionando os dados pós eleições e, enfim, adicionar dados do que os candidatos estão fazendo depois de eleitos para o povo!

Minha missão hoje era baixar os CSVs dos candidatos e salvar na minha máquina para eu carregar usando um programa Java na minha base (com JPA e as coisinhas que o povo gosta :D).

Analisando a página e como a mesma baixava o arquivo, foi fácil descobrir a formação da URL de onde o CSV é gerado:

http://divulgacand2010.tse.jus.br/divulgacand2010/jsp/exportarDadosCandidatoCSV.action?
siglaUF={Sigla}
&cdCargoCand={cargo}
&situacao={situacao}
&ordenacao={ordem}
&campoPesquisa=”+campoPesquisa

Sigla = sigla do estado: AC, AL, AP, AM, BA, CE, DF, GO, ES, MA, MT, MS, MG, PA, PB, PR , PE, PI, RJ, RN, RS, RO, RR, SP, SC, SE, TO
cargo =
3 – Governador
4 – Vice-Governador
5 – Senador
9 – 1º Suplente Senador
10 – 2º Suplente Senador
6 – Deputado Federal
7 – Deputado Estadual

situacao =
1 – Aptos
2 – Inaptos
3 – Todos

ordem = cand.NM_CANDIDATO

campoPesquisa = uma pesquisa que você deseja fazer


Para baixar os candidatos a governadores de São Paulo, por exemplo, você usa:


http://divulgacand2010.tse.jus.br/divulgacand2010/jsp/exportarDadosCandidatoCSV.action?siglaUF=SP&cdCargoCand=3&situacao=3&ordenacao=cand.NM_CANDIDATO&campoPesquisa=

A partir daí um for de for (estado e cargo) em Java e uma busca sobre como baixar arquivos usando a tecnologia da Oracle para trazer os csvs de forma automática. O melhor foi que tudo isso foi feito em menos de meia-hora! Poupando muito tempo de ficar baixando na mão.

Agora vou passar eles pra UTF-8 e usar o meu outro programa de carga desse CSV no banco de dados. É quase uma suíte de programas para as eleições 2010 😛