segunda-feira, 23 de abril de 2007

Wanna use Bluetooth with JME ? Try Marge !!

Hi all!!

Have you ever wanted to (or had to) develop a JME application with connectivity by Bluetooth but gave up ? Have you already thought: I'll create something to get it easier ?
So, two guys from Florianópolis thought the same and created a framework that can help you on creating applications with Bluetooth: The Project Marge (visit the project´s home page at: https://marge.dev.java.net/).

They are at the beginning, but with the available release you can create games and whatever you want. They said that the major goal of the project is create something easy to use and using the framework you would create bluetooth applications with a minimum knowledge on bluetooth theory, just with some gets and sets! ;-) .

I'll be involved at the project helping them creating a game support for the framework and providing all support at JME Brasil. They going to put all documentation at JME Brasil and providing some examples and articles about the framework.

I think it´s a great project and I'm sure you won´t waste your time visiting their home page!!

[]s!!!!
Neto

sábado, 21 de abril de 2007

Sun Tech Days @ São Paulo

Hi all!

Well, don´t be afraid... you are really at "Neto Marin" blog´s !!!
From now on i´ll ever write my posts in English to reach more users, but if you didn´t like it please let me know sending me an e-mail and I will send to you the translation of this post. It´s in my TO DO list create a portuguese version of this Blog ;-)

So, let´s talk about Sun Tech Days 2007 @ São Paulo (March 18-20) =D
It was a fantastic moment to get contact with many different kind of people and exchange a lot of experience and impressions about JME, major at the JME Day!

Yes! We had a day to discuss this great technology (in my opinion hehe) and to close with a "gold key" the participates of STD could discuss at the JME Fishbowl!!! A lot of (very) interesting themes was discussed and I had the great opportunity to talk about JME Brasil!!!

And because this, I did fantastics contacts like with Phil and Roger from Sun Microsystems about the Mobile and Embedded Community!!!

Also, I talked a lot with Bruno and Lucas about Marge Project (a bluetooth jme framework) and the decided to put all the project documentation at JME Brasil and I´ll collaborate with game extension to Marge Framework :-)


Well, I have a lot of news, but now I wanna sleep... after this three days driving everyday Campinas/São Paulo/Campinas I´m broken!!!

On next days I'll post my impressions (and opinions) about the themes explored at Sun Tech Days of this year!!

Thanks all!
Cya!!!!!!

segunda-feira, 9 de abril de 2007

Aqui jaz o Palm (e similares)! Vá em paz...

Bom dia a todos,

Começando a semana estava dando uma lida nas notícias do G1 (site de noticias da Globo) Quando me deparei com a matéria: Celular "faz tudo" decreta morte do Palm - que pode ser acessada em: http://g1.globo.com/Noticias/Tecnologia/0,,MUL18201-6174,00.html

Isso na verdade é algo que eu (por exemplo) já vinha conversando com algumas pessoas e a grande maioria era unânime em dizer que também achavam isso, mas que não tão rápido. Porém, nos últimos meses vimos uma INVASÃO dos famigerados "Smartphones" com seus teclados QWERTY e recursos que antes só encontravamos em palms (e claro em seus similares como Pocket PC entre outros). E como está escrito na própria matéria do G1 a venda desses dispositivos vêm mês a mês batendo recordes.

Outro fator que vem impulsionando isso é o incentivo que as próprias operadoras estão dando para esses tipos de aparelhos principalmente no mundo corporativo. Na Claro pode-se obter diversos tipos de Smartphones (Treo, Qtek, Nokia, etc) por preços melhores do que os handhelds disponiveis no mercado com recursos similares, e é claro, os Smartphones ainda fazem ligação ;-)

E aquela velha pergunta: E eu com isso? Os palms (e similares) já rodavam Java, o que eu ganho com os Smartphones?
O que ganhamos são devices com recursos ainda melhores e que estão ligados a uma rede, seja GPRS, EDGE, 3G... Sendo que antes, nem sempre os handhelds tinham alguma rede ao seu alcançe.

Pense nisso, você pode criar aplicativos incriveis para esses devices e conquistar um ótimo mercado!!!

Por isso: Don´t think BIG, think MICRO!! JME!!

[]s
Neto

quinta-feira, 29 de março de 2007

E a revista eletrônica JME Brasil vai sair =)

Bom dia pessoal !!!

Hoje pela manhã depois de trocar alguns e-mails fiquei ainda mais animado com a idéia da revista eletrônica JME Brasil!!
Já tinhamos algumas matérias confirmadas, como por exemplo:

  • Tutorial de JME Game - Parte I
  • IA em JME Games
  • Artigo sobre a criação de um Menu em Canvas com direitos e tudo mais!
Além de mais algumas pessoas que falaram que ia escrever algo, mas sem confirmação do tema ainda.
Mas hoje, conseguimos já mais alguns temas para colocarmos na revista:
  • Conectividade Bluetooth
  • Conectividade HTTP
E se você deseja escrever algo para publicarmos na revista, fique a vontade!!!
Me envie um e-mail com uma sugestão de tema, idéia, how-to, tutorial ou o que você quiser escrever e teremos muito prazer em colocar seu artigo na revista!

Vamos lá pessoal!

Você também faz parte dessa comunidade!!!!!

[]s
Neto

segunda-feira, 26 de março de 2007

Menu utilizando Canvas - Estilo Nokia, Sony Ericsson...

Sejam bem-vindos novamente ! :-)

Meu post hoje é para mostrar a vocês um menu que criei utilizando Canvas e me inspirando um pouco nos menus da Nokia (série 60, série N, etc), Sony Ericsson, entre outros modelos que mesclam figuras e textos.

A figura ao lado mostra o celular N95 da Nokia que utiliza esse conceito de Menu.

Funcionamento básico:
É um menu compo
sto por figuras, onde existe um "quadrado" de seleção que fica de fundo das figuras conforme o usuário navega pelas opções. O nome da opção é mostrado como título e fica no alto da tela ( o posicionamento exato depende da implementação de cada fabricante).

As figuras abaixo mostram o menu no emulado da Nokia para série 40 (duas primeiras imagens, sendo a segunda a continuação da primeira) e a ultima imagem uma figura do emulado para série 60.

Porque fiz esse menu?
Utilizo esse menu como o menu principal das minhas aplicações, e da forma como estava antes (eu fixava a quantidade de imagens por linha, e não havia scroll dos icones) eu tinha sérios problemas com modelos diferentes e telas diferentes, pois fiz a montagem inicial me baseando nos celulares da Série 40 2ª edição da Nokia (com um visor de 128x28).
Então resolvi criar um menu novo, onde a própria classe faria os cálculos de como posicionar as imagens na tela e assim não teria problemas com as diferentes telas de celulares.

Como reutilizar o menu?
Depois de fazer o dowload do menu, você irá encontrar o arquivo MenuNokiaStyleCanvas.java que é o menu em si.

Nessa classe você irá alterar apenas TRÊS variáveis:

  1. widthIcon: Largura do ícone em pixels.
  2. heightIcon: Altura do ícone em pixels.
  3. margemQuadrante: Margem do quadrante, servirá de base para desenhar o fundo que serve de indicação de seleção

Além disso, a carga com os dados de cada opção do menu será encontrada no método protected void carregaOpcoes(). Também coloquei alguns comandos para exemplificar alguns pontos e demonstrar outros.

E o código foi comentado da melhor maneira possível (na minha opinião) para que conforme você vá lendo o código, consiga entendê-los! ;-)

Esse menu ainda é uma primeira versão, pretendo adicionar diversas funcionalidades, mas acho que serve de base pro pessoal que ta começando e não tem muita noção de como fazer um menu sem ser aqueles terríveis lists !!! ;-)

No zip disponível, é possível encontrar o .jad e o .jar caso deseje testar o menu.
Arquivo disponível em: http://weblogs.java.net/blog/netomarin/archive/examples/MenuNokiaStyle.zip

[]s a todos!!!!

sexta-feira, 23 de março de 2007

Mais uma opção GSM no Brasil

Como a maioria já devia saber, a Vivo havia anunciado que iria construir uma rede GSM e passar a disponibilizar essa forma de telefonia para seus clientes. O motivo principal alegado oficialmente é de que queriam dar mais opções aos seus clientes que poderiam optar pelo uso de GSM.
Porém, o que circulou foi que na verdade, a migração para 3G da rede CDMA seria muito cara e também estavam tendo muitos custos com os royaltes pagos a Qualcomm.

Bom, e o que isso interessa para nós?
De acordo com a matéria no WNews ( Vivo já tem mais de 300 mil clientes GSM ), já existem em circulação mais de 300 mil aparelhos Vivo GSM no mercado, ou seja, mais 300 mil devices que suportam Java.
Resta saber, se a Vivo não fez nenhum bloqueio nesses celulares, o que não seria de se espantar.

É isso ai, e fiquem ligados porque amanhã irei disponibilizar para vocês um menu no estilo dos menus da Série 60 da Nokia aqui no meu blog.

[]s a todos!

sábado, 17 de março de 2007

(Não) Usando POO em JME

Normalmente, os programadoes que dão seus primeiros passos no JME tendem a trazer velhas (e boas) práticas da programação do Java "convencional" (JSE e/ou JEE), principalmente a forte utilização da POO (Programação Orientada a Objetos) e a utilização de padrões de projeto (os famosos Design Patterns).

É indiscutivel que essas práticas trouxeram inúmeras vantagens em relação a se desenvolver sem utilizá-las. Porém sua utilização no JME deve ser bem entendida e usada com extrema cautela para que o ganho em produtividade e reaproveitamento de código não se tornem causa de perda de desempenho e aumento do tamanho ocupado em memória pela aplicação - lembrando que os dispositivos que usam JME são bem mais limitados do que os que se utilizam de JSE e/ou JEE.

Porém, a palavra "limitado" para caracterizar os dispositivos que implementam o JME não é exagero, pois eles realmente possuem limitações em memória, armazenamento e processamento. Por isso, qualquer ganho de desempenho e memória por menor que seja se torna significativo, principalmente quando levamos em conta os recursos que temos disponíveis no celular. A uma hora dessa você já deve estar perguntando: "Então quer dizer que devo diminuir a criação de novos objetos e classes porque isso custa muito caro ?"

Você não precisa necessariamente sacrificar suas idéias de orientação a objetos ou deixar de usar um determinado pattern. O que se deve fazer é analisar o cenário da sua aplicação e adaptar o que já existe para as limitações dos devices. Então, o que se deve levar em consideração sobre ao excesso uso de orientação objetos? Veja abaixo:

  • O overhead natural da linguagem Java que é adicionado na geração do byte code a CADA CLASSE.
  • O custo para se executar o carregamento de cada classe nova gerada quando é utilizada.
  • O custo gasto para se alocar/desalocar a memória heap da classe em questão.
  • O custo para a montagem da pilha de execução e montagem do escopo da classe e dos métodos.
  • Além de se aumentar o número de objetos que o garbage collector precisa inspecionar.
O que fazer então para que todos esses custos se tornem o minimo possível ?
Algumas medidas podem ser tomadas, como por exemplo:
  • Atribua/recupere os valores diretamente das variáveis. Os métodos get/set fazem sua aplicação perder tempo entrando em um método, montando a pilha de execução, definindo o escopo da execução, etc.
  • Tente reutilizar ao máximo suas variáveis e assim evitando a perda do tempo que a KVM leva para fazer o class loader.
  • Quando for criar uma nova classe derivada de outra análise ao máximo se realmente precisa criar uma classe nova ao invés de usar as classes já existentes adicionando a elas os componentes do JME.
  • Somente crie novas classes quando precisar realmente adicionar algum comportamente diferente ao já existente na classe. O tratamento de comando não precisa ser feito especificamente dentro do componente que possue o comando, PENSE NISSO!!
  • Projetar suas novas classes que tenham o máximo de caracteristicas para que sejam reaproveitadas ao máximo, por exemplo: Quando for criar uma classe nova de personagem para o seu jogo, tente fazê-la de modo que todos os personagens usem a mesma classe, mudando apenas os atributos.
As vezes, o que não parece elegante do ponto de vista de POO ou de algum design pattern pode ser a diferença entre o sucesso e a falha de sua aplicação, pois ela roda em um dispositivo que na maioria das vezes não é o computador principal do usuário e mesmo assim o usuário quer respostas rápidas e precisas!
Abaixo estão dois artigos nos quais me baseei para escrever essa minha pequena contribuição para o melhor desempenho da sua aplicação.

Por isso, como eu sempre digo: Don´t think BIG! Think MICRO! JME!!

Referências: