Concurso de Mainframe para estudantes no Brasil

Agosto 27, 2008

A IBM está promovendo um sensacional concurso de mainframes para estudantes no Brasil. Basicamente os mesmos tem que se inscrever e realizar determinadas tarefas, umas simples outras complexas que podem demorar de semanas a meses.

Os prêmios vão desde camisetas, passando por PSPs e notebooks até vagas de trabalho na IBM!

Professores e alunos, aproveitem a oportunidade!

Veja mais em http://www.ibm.com/br/systems/z/concursomainframe/


Boa prática: fazendo concatenação de Strings em JAVA

Agosto 26, 2008

Quando fazemos concatenação de Strings em java, devemos tomar muito cuidado com os operadores +=, pois objetos do tipo String são imutáveis, então a JVM cria objetos temporários em memória, então, dependendo da quantidade de concatenações que você vai fazer, você pode obter um péssimo desempenho somente utilizando Strings.

A recomendação para solucionar o problema então é utilizar um objetos mais adequado as operações de concatenação, tal como o StringBuffer.

O objeto StringBuffer é mutável ao contrário do String, então podemos trabalhar com ele a vontade. Ao invéz de utilizarmos os operadores +=, utilizamos os métodos do stringbuffer, ex:

String teste1 = “Bom dia”;
String teste2 = “Fulano da Silva”;
StringBuffer strBuf = new StringBuffer();
strBuf.append(teste1);
strBuf.append(“, “);
strBuf.append(teste2);

Enjoy!


Boa prática para evitar null pointer exception

Agosto 25, 2008

Muitas pessoas tem o hábito de verificar se uma string é igual a “” da seguinte forma:

if (foo.equals(“”)){ …

Vamos supor que “foo” é nulo, você obterá um erro: “java null pointer exception”, concorda?

Uma boa prática na manipulação de comparação entre strings, para evitar isso, é escrever da seguinte forma:

if (“”.equals(foo)){ …

Dessa forma, não importa se “foo” é nulo ou não!

Melhore seu código!


Exemplo de Sessão em Java com JSP + Servlet

Agosto 22, 2008

Criei um pequeno projeto no Eclipse para servir como base na explicação de criação de sessões em Java.

O exemplo chama-se Sessao, tem duas páginas JSP e um servlet que valida o usuário. Segue o exemplo na figura abaixo:

Para baixar o código fonte, clique aqui.


Site com exemplos práticos para várias linguagens

Agosto 21, 2008

Se você assim como eu gosta de ver exemplost práticos, e acaba entendendo mais vendo algo funcional, sugiro que vá até este site: http://www.java2s.com/

Embora o mesmo tenha o nome de java2s, lá você encontrará exemplos aplicáveis a várias linguagens e tecnologias, por exemplo .net, C, c++, Oracle, etc, etc…

Ótimo bookmark! Enjoy!


Problema na implementação da TableModel em JVMs distintas

Agosto 20, 2008

Estava trabalhando com uma TableModel em minha máquina, com a JVM do Java 1.4.2 da IBM, e tudo estava funcionando perfeitamente. Quando fiz o deploy a aplicação, a mesma começou a bagunçar informações ou mesmo “quebrou”.

Adicionando alguns “System.err.println” a aplicação, percebi que no servidor, as colunas estavam em ordem diferente da  aplicação em minha máquina. Perdi um grande tempo para descobrir o que estava ocorrendo, e nada… Resolvi checar a versão da JVM no servidor e vi que era uma JVM da Sun, e não da IBM. Então resolvi fazer uma alteração no meu código, que era assim:

if (“rule”.equalsIgnoreCase(MinhaTableModel.getString(j,0)))
{ ….

Neste momento, estava pegando o valor na coluna 0 e linha j. Porém na JVM da Sun não estava rolando. Fiz o seguinte:

TableModelHelper helper = new TableModelHelper(context, t); // Utilizei um TableModelHelper
String rowType = helper.getString(i,”type”); // jogo os valores em variáveis, utilizando o NOME da coluna, e não o indice
String ruleName = helper.getString(i,”rule”);
if (“rule”.equalsIgnoreCase(rowType) )  // Ai sim comparo
{ …

Feito isso o código funcionou perfeitamente em ambas JVMs.

Percebe-ce um erro de implementação, possivelmente na JVM da IBM. Testei o código não corrigido, na versão 5, e nela, está tudo funcionando, então percebe-se o erro na versão 1.4.

Enjoy!


Um pequeno exemplo de otimização de código

Agosto 18, 2008

Essa eu peguei em vários pontos de um sistema Java que eu trabalho aqui na IBM. Eu estava comparando a utilização de algumas classes para servir de exemplo para algo que preciso implementar e vi muito disso:


for ( int j = 0; j < t.getRowCount(); j++ )
{

Ao fazer o loop, os programadores utilizam a instrução t.getRowCount(); a cada iteração! Imagine se você passa por esse loop um milhao de vezes, então, um milhão de vezes você irá no objeto “t” e vai perguntar para ele: “Amigão, quantas linhas você tem?”. Certamente isso vai dar trabalho para nosso processador.

Tá certo, concordo que é algo muito simples, mas imagine que esta prática é adotada em todo nosso sistema? E nosso sistema é realmente gigante… agora, some tudo! consideravelmente teremos quebra de desempenho!

Como resolver? Simmmmmmmmmmples:

int size = t.gerRowCount().
for ( int j = 0; j < size; j++ )
{

Simples e funcional!

Enjoy!


Fazer um curso Técnico ou um Bacharelado?

Agosto 11, 2008

Uma pergunta comum que fazem para mim e para amigos meus, é a pergunta que dá título a este Post: “Que curso devo fazer, algo técnico ou um bacharelado?”.

Para responder a esta pergunta, primeiro precisamos definir os dois tipos de curso.

Um curso técnico geralmente é um curso de menor duração, em alguns casos mais focado em um tema, por exemplo, redes, desenvolvimento em Java, etc.  Além dos cursos técnicos, que não tem reconhecimento como uma formação de nível superior, existem também os cursos superiores de graduação em tecnologia, que em relação aos bacharelados, são normalmente mais rápidos e mais focados. A definição do MEC para um curso desse tipo é:

É um curso de graduação, que abrange métodos e teorias orientadas a investigações, avaliações e aperfeiçoamentos tecnológicos com foco nas aplicações dos conhecimentos a processos, produtos e serviços.

Desenvolve competências profissionais, fundamentadas na ciência, na tecnologia, na cultura e na ética,com vistas ao desempenho profissional responsável, consciente, criativo e crítico.

Como todo curso de nível superior, o curso dessa natureza é aberto a candidatos que tenham concluído o ensino médio, ou equivalente, e que tenham sido classificados em processo seletivo.

Os graduados nos CST (Curso Superior em Tecnologia) denominam-se Tecnólogos e são profissionais de nível superior com formação para a produção e a inovação científico-tecnológica e para a gestão de processos de produção de bens e serviços.em ( www.mec.gov.br) outubro de 2006″

Já um curso de bacharelado, normalmente da menos enfase a prática e se prende a teoria, explorando conceitos e tecnologias com um “olhar mais científico”. Normalmente tais cursos tem maior duração e tem conteúdo mais abrangente, pois a idéia dos mesmos é formar alunos com uma ótima base científica para que estes possam partir para um mestrado, doutorado, etc.

Fazendo essas definições, facilmente notamos que um profissional que busca alocação no mercado, se dará melhor fazendo um curso técnico ou de tecnologia, enquanto um profissional que pretende seguir o “meio acadêmico”, partindo para um mestrado por exemplo, se dará melhor fazendo um curso de bacharelado.

É importantíssimo lembrar que se uma pessoa faz algo técnico, não quer dizer que ela não possa seguir carreira científica, muito menos dizer que uma pessoa que faz algo mais “científico”, não possa trabalhar no mercado corporativo!

Não podemos e não devemos falar jamais que uma pessoa que fez um curso técnico está melhor preparadoa para o mercado, ou ainda que se uma pessoa que fez um bacharelado terá uma melhor base teórica que alguem que fez um curso e tecnologia. Cada pessoa constrói sua própria bagagem na faculdade!

Agora, para tomar sua decisão, basta responder a duas perguntas:

1- Eu quero partir para o mercado de trabalho ou para um mestrado?

2- Tenho pressa para me formar ou tenho tempo para investir em uma base conceitual melhor?

Respondendo a estas perguntas, acredito eu que você saberá qual caminho seguir, então, faça sua decisão, mas saiba: nunca é tarde para mudar!


Curso de Java realizado em Assis

Agosto 7, 2008

Realizamos um curso de JAVA na Fundação Educacional do Município de Assis (FEMA) nas últimas semanas. O curso teve duração de 3 semanas e sua idéia era introduzir as pessoas no “mundo Java” e ao término do curso, torná-las desenvolvedores WEB.

O conteúdo do curso foi basicamente este:

  • OO + UML
  • A Tecnologia JAVA
  • IDE Java (Eclipse e Rational Application Developer)
  • Linguagem JAVA (tipos, estruturas, polimorfismo, herança, apis, anotations, etc,etc, etc)
  • Padrões (MVC, Singleton, Factory)
  • Swing
  • Banco de dados com DB2
  • JDBC
  • Servidores de aplicação (Tomcat e Websphere)
  • Servlets e JSP
  • Hibernate
  • JSF

Concluímos o curso com a sensação que os alunos, apesar do conteúdo recorde pelo tempo, aproveitaram muito bem o curso e tem plenas condições de se aprofundar nestas tecnologias.

O material do curso está distribuído pelos posts que eu já publiquei aqui e alguns que ainda publicarei!

Mais fotos do curso aqui.

Poucas pessoas sabem, mas a IBM apoia muito o meio academico, de diversas formas: palestras, cursos, etc. Saiba mais em http://www.ibm.com/br/university/. Fique a vontade para criar um curso neste modelo e/ou ainda pedir uma ajudinha da IBM para realizar algo neste sentido!

Parabéns pelo empenho dos aluno!


Aplicação exemplo Servlet + Hibernate

Agosto 6, 2008

Criei uma pequena aplicação para avaliar cursos, bem simples mesmo. Permite aos usuários darem sua opinião sobre um instrutor e sobre o curso.

O fim da aplicação é didático, é explicar um pouco de servlet + hibernate. Então, obviamente não espere o uso de tecnicas muito avançadas.

Fique a vontade para melhorar e enviar seus comentários.

Não esqueça de setar as configurações do banco de dados que você utiliza corretamente no arquivo de configurações do hibernate localizado em src.

Para baixar o código fonte, clique aqui. É um arquivo ZIP, com todas as bibliotecas que ele depende (Hibernate + DB2) junto, portanto é um pouco grande, tem aproximadamente 16 megas.

A aplicação funciona com DB2, mas se você quiser testar com outro banco, basta alterar a configuração do Hibernate e feito!

Se quer saber mais sobre Hibernate, veja meu post anterior. :-)

Enjoy.