sexta-feira, 31 de julho de 2009

LWUIT (The Lightweight UI Toolkit ) - Versão 1.2

Uns dias atrás começei a fazer um projeto que utilizava J2ME e para parte gráfica escolhi testar o LWUIT, pois vi que era bonito o layout e tinha bastantes recursos, era meio que parecido com fazer interfaces par Desktop com o swing. Quando começei a utiliza-lo fiquei meio triste com o desempenho dele, tentei rodar em um aparelho com a plataforma s40 da nokia, porém ele consumia muita memória e ficava inviavel, na verdade até no emulador da sun o negócio ficava lento. Para minha felicidade, dia 15 de julho saiu a versão 1.2 do LWUIT, e eu baixei logo para fazer uns tetes. A galera deu uma investida em performance, correções de bug e colocou uns efeitos a mais. Agora que a SUN está investindo, o LWUIT deve ficar bem bacana.

Abaixo tem as principais mudanças da nova versão e um teste de consumo de memória entre a versão mais nova e a versão antiga.

Highlights

  • New Styling concept added selected and unselected styles.
  • New LWUIT Designer with support for new styles, gradients, exporting ant task, Copy & Paste, complex image borders, improved preview and much more
  • Support for setUIID in Component allows customizing the component style selector
  • More options for background painting (gradients, tiling hints, centering).
  • Support for more elaborate scrolling use cases and nested scrolling
  • Initial support for SVG used everywhere in LWUIT including backgrounds and as icons seamlessly and ability to fallback gracefully when JSR 226 isn't supported on the device.
  • Initial support for upcoming MIDP 3 features when available such as truetype fonts.
  • Removed the resource builder Ant task and replaced it with a new Ant task based on the code of the LWUIT Designer for improved support/compatibility
  • New calendar component implementation featuring improved customizability and touch support
  • Initial resource file specification
  • Bug fixes and stability
  • Performance improvements


Teste de memória entre as versões:

Nesse teste eu rodei a aplicação DEMO do LWUIT e cliquei em cada opção do menu, para ver como ficaria o consumo de memória da aplicação. Depois de ter clicado em todas as opções da aplicação, a versão antiga ficou com:

Utilizada: 566300 bytes ou 553,02 Kb
Maxima: 1084156 bytes ou 1058,74 Kb

e a versão 1.2 ficou com:

Utilizada: 317004 bytes ou 309,57 Kb
Maxima: 832724 bytes ou 813,20 Kb

Teve uma melhora no consumo de memória e pelo gráfico da para ver que ele libera mais memória após o coletor de lixo passar.


Versão Liberada em 20080605
OBS: Clique na imagem para ver em alta resolução.




Versão 1.2:
OBS: Clique na imagem para ver em alta resolução.

segunda-feira, 20 de julho de 2009

Eclipse Galileo - A melhor IDE para desenvolvimento Java

Quem programa com Java ou até mesmo com outras linguagens como: C/C++, PHP, Python, deve estar acostumado a utilizar essa fantástica IDE, pois, além de ser a melhor IDE para desenvolvimento Java, ainda por cima é de graça. Já tentei utilizar o NetBeans pela atraente facilidade de criação de interfaces gráficas, porém, não consigo utilizar e nem simpatizo com o editor de código e performance do mesmo. Cheguei a testar outras IDE's de outras linguagens como o tão falado Visual Studio, porém, nem chegou perto do editor do eclipse e das boas práticas utilizadas no eclipse. Funcionalidades básicas contidas no eclipse, o Visual Studio precisava instalar diversos plugins, com isso, eu não me sentia confortável com a IDE.
Quem utiliza o eclipse de há um certo tempo, deve lembrar das dificuldades que era montar um ambiente com determinados plugins. Tinha que ter outras dependências, às vezes não era compatível as versões dos plugins com as dependências, e isso acabava assustando um pouco usuários iniciantes a utilizar a IDE. Hoje em dia o Eclipse amadureceu bastante e está extremamente simples a sua utilização, já vem com pacotes separados da IDE para determinada necessidade, seja para programar para ambiente WEB ou Mobile, para outras linguagens como C/C++, versão clássica para você instalar seus próprios plugins, entre outras. Recentemente foi lançada a nova versão do Eclipse, chamado de Galileo, e veio ainda mais estável, leve e com alguns recursos a mais. Vou citar algumas vantagens da IDE e alguns pontos que poderia melhorar em minha opinião.

Vantagens
  • O desempenho desta nova versão é altamente perceptível, está mais rápido e está consumindo bem menos memória, chegou em média até 200mb, enquanto antes tranquilamente consumia 500mb de memória. O code-complete também achei que ficou mais rápido.
  • Um recurso novo muito legal e que já estava na hora de inserir em novas versões era a seleção vertical, é muito comum necessitar de apagar apenas as colunas de um código, por exemplo: quando está testando api e copia trechos de código da internet que vem com os números das linhas.
  • Nesta nova versão corrigiu alguns bugs que aparecia com certa freqüência no Eclipse Ganymede, como StackOverflow no code-complete e NullPointerException quando fazia pesquisas por Strings nos aquivos.
  • Outra funcionalidade que estava devendo era a possibilidade de abrir um Shell do sistema operacional direto na pasta do projeto, para isso eu utilizava plugins a parte, pois como utilizo o maven para desenvolver minhas aplicações é comum ter essa necessidade. Nesta nova versão veio uma perspectiva chamada de “Remote System Explorer”, você pode acessar o projeto pela visão “Navigator” e clicar em “Show in Remote System View” e quando abrir a estrutura de pastas clicar em “Launch Shell”. Vai abrir dentro um próprio eclipse um Shell que possibilita executar os comandos como também copiar, compilar entre outras coisas com mais facilidade. Poderia ter um atalho do próprio “Package Explorer” para acessar um Shell.
  • Não posso esquecer de mencionar que existe uma grande quantidade de desenvolvedores criando plugins para diversas funcionalidades e frameworks. Esta é uma vantagem e tanto. (clique aqui para ver alguns )


Desvantagens
  • O Eclipse ainda não veio com um plugin padrão para utilização do Maven, por ser tão utilizado e útil, já deveria vir com o plugin instalado por padrão na IDE.
  • Outra funcionalidade que faz tempo que é esperada e não vem incluído por padrão, é o plugin para o SVN. Só existe o plugin para o CVS.
  • Alguns bugs ainda acontece ao fazer buscas nos projeto (Search-> File)
  • Existe um bug no Eclipse que, às vezes ele retira uma pasta de um projeto do Classpath (geralmente um pasta que contém recursos) e acaba a aplicação não achando o recurso (imagem, arquivo, properties ...), até o momento não aconteceu esse problema no Galileo, espero que esteja concertado.
  • Outra parte que o eclipse fica devendo é para desenvolvimento de aplicações Desktop, deveria existir um plugin bacana que possibilitasse uma maior produtividade com Interfaces, poderia utilizar layouts como o FormLayout, MigLayout.





É difícil de acreditar que existe uma IDE tão robusta como o eclipse e acima de tudo de graça. Corra e baixe o pacote da versão mais nova do Eclipse, que é mais adequado com a sua necessidade.
(Sugestão: Baixe a Versão WEB e insira os plugins que desejar, :) )

>>> Sessão de downloads - Eclipse Galileo <<<

terça-feira, 7 de julho de 2009

LWUIT (Lightweight UI Toolkit )

Eu já tinha ouvido falar à um tempo atrás que existia uma api para gráficos em J2ME bastante bonita, com efeitos de telas legais e tudo mais, mas nunca fui atrás fazer uma aplicação de teste, porém, como estou fazendo minha pós-graduação em dispositivos móveis e pagando a cadeira de JME, decidi fazer o projeto com ele. Fiquei com um pé atrás, pois, quero chegar a utilizar a aplicação em um ambiente real e não apenas para a disciplina, e pelo que tinha visto e ouvido falar, era tudo muito lindo, porém extremamente pesado. Montei o ambiente para fazer o projeto e nos primeiros testes com os emuladores, a aplicação ficou bem pesada.. ai fiquei cismado, porém fiz umas pesquisas e vi uns videos do pessoal utilizando o LWUIT nos devices e fiquei surpreso com o desempenho. Porém, para minha tristeza, acho que os cara do vídeo tava fazendo mágica, porque só em abrir a aplicação já consome 450kb de memória e ao abrir apenas uma outra tela, já vai para 750kb. Como meu celular é bem peba(rsrs), um nokia 2660, ele utiliza a plataforma S40, as configurações dele são:
Maximum User Storage 2 MB
Maximum Heap Size 600 KB
Maximum JAR Size 256 KB

logo, com 600kb de heap é meio que impossível colocar uma aplicação LWUIT nele com themas e e outros recursos, mesmo sendo otimizado.

Conclusão: A api é bem legal, mas está meio verde ainda. É uma boa opção, pois a Sun está investindo nela, já vem no sdk 3.0 do J2ME, e tem muita gente começando a usar, por exemplo, o pessoal de TV digital tá utilizando para fazer aplicações nos set-top-box. Para o futuro deve ser uma ótima opção, ou então, para devices novos que tem bastante recurso ( como os que usa a plataforma S60 da nokia ) .

Vídeo do mágico que colocou para rodar num celular nokia com plataforma S40:






Outros vídeos nos devices:

Um Samsung F480 com TouchScreen
Um HTC com TouchScreen

sexta-feira, 5 de junho de 2009

SCJP ( Sun Certified Java Programmer )

Ae pessoal (Será que alguém ler isso aqui ?!?!?), hoje foi um dia de surpresa para mim, fiz o exame do SCJP e passei...

Bem, falo surpresa não porque sou tapado e não consigo passar neste exame, mas porque eu fiz o exame sem estudar e consegui passar. A um ano atrás comprei o voucher da prova, comprei o livro para estudar, estudei e por diversos motivos (trabalho, e outras atividades que estavam tomando meu tempo) acabei não fazendo a prova e adiando, então esse mês (segunda passada) percebi que iria vencer o período de fazer a prova, dia 30 desse mês, ai marquei a prova para hoje 05/06, para fazer sem estudar e como eu peguei com a promoção de "retake", se não passasse podia fazer de novo, ai tentei ler o resumo do livro de Katie Sierra, e fui fazer a prova sabendo que a probabilidade de eu não passar era muito grande, e por surpresa passei, perguntei a mulher se eu fizer a prova de novo para poder aumentar a nota anularia a que fiz, ela disse que sim, bem.. vou pensar se vou fazer para aumentar a nota.
O mais legal foi a viagem, fui de moto e peguei um diluvio tanto na ida como na volta, em especial na volta porque estava de noite e eu não via 5 metros na frente, o céu todo macabro, preto e acinzentado ao mesmo tempo, parecia o filme independence day, rsrsrs, umas luzes vermelhas do carro da frente é o que dava para ver, ehehe e ainda tinha um danadim de um caminhão com uma luz alta atrás de mim me encandeando, sei não, hoje foi um dia engraçado e molhado, hehehe bem, que venha a próxima SCWCD ....

OBS: dessa vez quando comprar marco a prova para não ter o perigo de acontecer isso de novo e estudar direitinho, ehheh

Todas as certificações da Sun:

quinta-feira, 14 de maio de 2009

Cronômetro para Cubo Mágico

Apesar de gostar de informática, tanto que trabalho com isso, nunca tinha criado um blog e agora decidi criar para poder colocar, escrever, disponibilizar algo que achar legal.

Bem, ultimamente inventei de tentar montar um cubo mágico que tinha aqui em casa, por sinal um bem antigo, mais de 17 anos que ele existe. Ele era do meu tio e hoje está comigo e comecei a montar e descobri que é viciante, consegui montar e depois comecei a tentar baixar o tempo de montagem, e acabei sentindo a necessidade de criar um cronômetro para meu celular para medir o tempo de montagem do cubo.

Criei uma aplicação simples em J2ME, chamada CronCube que tem as seguintes funcionalidades:

[ Configurações ]

- possibilidade de ter uma espera antes de iniciar o cubo para analisa-lo.
- possibilidade de configurar o volume do bit.
- possibilidade de sugerir como misturar o cubo após terminar de monta-lo (L R U D F B, L' R' U' D' F' B').
- possibilidade de configurar a quantidade de laps para se tirar uma média de tempo de montagem.

- Cronômetro (essa não podia faltar, rsrs)
- pressionando a tecla '8' se tem o tempo parcial de montagem.
- pressionando a tecla '7' ou os comandos do celular pode pausar/continuar.

- Armazena os 10 melhores tempos de montagem do cubo.
- Armazena os 10 melhores tempos de média de montagem do cubo.

Aplicação: (Baixe a aplicação no link abaixo)
>>>>> CronCube 1.0 <<<<<



<- Telas da aplicação


OBS:
A aplicação foi testada em um aparelho nokia 2660, a resolução da tela é 128x 160


Tomara que seja útil para alguém que queira montar o cubo em qualquer lugar e conseguir medir seu tempo.

Quem quiser ver eu montando tem um video..
http://www.youtube.com/watch?v=KkaEKLcUdqE

*para quem nunca montou pode achar ate rapidinho, porém quem ja monta a muito tempo com diversos algoritimos e já monta em 10 segundos, 20 segundos, vai achar uma tartaruga, eheheh, bem, ta ai...



Obrigado pessoal...