quinta-feira, 5 de janeiro de 2012

Programação leve através de fundamentos sólidos

Estou começando hoje com este blog. Há algum tempo já pensava em fazer alguma coisa nesse sentido, mas, como todos que trabalham com tecnologia sabem, o tempo costuma ser escasso. Porém, se a gente fica adiando, a coisa acaba não saindo nunca. Portanto, vamos lá.

Como trabalho com java, os posts vão acabar sendo mais relacionados a isso, mas vou fazendo um esforço para abordar as tecnologias de forma mais abrangente e sem sectarismo.

Eu tenho algumas propostas com relação ao blog em si: Quando estava começando a estudar programação, tive dificuldade para achar materiais mais básicos que não fossem 'receitas de bolo', independente de serem configurações de ide, servidores ou o que seja. Essas contribuições dos colegas são importantes porque nos jogam diretamente na prática, pois a gente vai executando os passos até as coisas funcionarem. O problema é que nesse momento, estamos fazendo as coisas sem saber porque. Isso muitas vezes levanta dúvidas na cabeça dos iniciantes, pois, geralmente, os passos se referem a várias ferramentas e tecnologias diferentes para se realizar uma única coisa. Se você está querendo levantar um servidor, por exemplo, pode acabar tendo que criar um XML (ou pelo menos alterar um). Se você está querendo fazer uma conexão com um banco de dados, pode ter que setar a sua configuração via JDBC num trecho de código através da API java. Para quem está querendo começar, pode ser bem irritante, e não é incomum surgirem perguntas como:

  1. Porque tenho que por essas informações num XML, que é feio que dói de olhar, se poderia colocar isso num arquivo mais simples? (um properties talvez...)
  2. Esse trechinho de código tem uns nomes meio indecifráveis (no momento) e cada linha parece ter um formato contraditório com relação às outras. O que é Class.forName() ?
  3. Porque eu não posso criar uma conexão através de um 'new Connection(“”, ””, “”)'?

No meu começo, não achei respostas simples para perguntas desse tipo. Talvez a minha pesquisa tenha falhado, ou talvez as documentações oficiais tenham realmente um formato meio críptico, uma maneira meio formal demais de descrever as ferramentas. No caso dos fórums, mesmo nos tópicos básicos, as respostas são de pessoas que já atuam, para pessoas que já atuam. Seria mais fácil se tivesse achado coisas como:

  1. Claro que um properties é mais simples. Mas se você precisar hierarquizar o conteúdo dessa configuração, vai enroscar.
  2. Class.forName() é um método da api de reflection. Todas as suas classes são carregadas pela VM em algum momento. O que esse cara faz, é carregar o driver de conexão, que em java é uma classe, para a que ele esteja disponível quando você pedir uma conexão através do DriverManager.getConnection();
  3. Até pode. Mais vai dar bastante trabalho. O caso é que Connection é uma interface e você pode implementar sem problemas. Mas como você vai precisar conhecer mais uma pancada de coisas, por enquanto, é melhor usar a implementação que vem no jar do conector que você baixou. O que está acontecendo é que o DriverManager vai catar lá na VM o driver que você carregou com o Class.forName(), e ele sabe como te devolver a conexão prontinha.

Sei que esses exemplos são de pouco interesse mas o propósito era apenas dar um ponto de vista. Não estou dizendo com isso que falta boa vontade para tentar esclarecer dúvidas dos outros, mas apenas que acredito que posso contribuir para fechar um buraco nesse esforço.

Para além disso, no final essa coisa evoluiu e a minha conclusão hoje é que retornar aos detalhes das coisas mais básicas, e que a gente usa sem nem pensar mais, acaba sendo muito útil. Isso porque são os fundamentos, pelo menos para mim, que esclarecem as coisas complexas que virão pela frente.

Assim, estou na proposta que colocar aqui um conteúdo que ataque essa lacuna que eu senti (como outros talvez), mas também na ambição de colocar coisas que sejam úteis para os desenvolvedores não tão iniciantes (como eu). A meta é um dia surpreender os avançados.

Nenhum comentário:

Postar um comentário