quinta-feira, 21 de outubro de 2004

Javascript. A pior linguagem do mundo!

Pois é, é isso que eu penso. Eu acho que Javascript é a pior linguagem que eu utilizo no meu dia a dia. Mas como sou desenvolvedor Web, não tenho outra escolha, então, tenho que engolir o Javascript.



Em qualquer linguagem, quando estamos escrevendo o código, já é possivel saber, ou pelo menos ter uma idéia, do que vai acontecer quando aquele código for executado. Com Javascript isso não acontece, só é possivel saber o que um trecho de código vai fazer executando o código. Nesse caso, o código pode funcionar como esperado, não funcionar, dar um erro normal, ou um erro maluco que não se pode endenter. E para qualquer tipo de código essas 4 situações são possiveis.



Um grande problema certamente são os diferentes navegadores executando o Javascript cada um a sua maneira. Qualquer código deve ser testado em no mínimo dois browser. Como eu não tenho o KDE, nem um iMac (aceito doações) , sempre testo meus sistemas web no Internet Explorer e em algum browser baseado no mozilla. O que permite que meu Html/Javascript vai poder ser rodado em todas as plataformas. E com isso, sou obrigado a por os inevitávies if (browser.isIE) no código.



Mas o pior do Javascript certamente é a falta de lógica. Já me vi com problemas do tipo 101.23 + 0.01 = 101.24000000001. Sim, só dei um round e resolvi o problema, mas a questão é, porque isso acontece?



E esse é só um detalhe, tem muitos outros problemas. Trabalhar com a arvore do HTML é uma coisa que sempre foge da lógica, e é preciso muitas tentativas para se chegar no objetivo final. Gosto de fazer sistemas dinamicos que não atualizam o HTML, mas as informações mudam atravéz do Javascript, e sempre é uma dor de cabeça, as vezes quase piro, mas confesso que a satisfação no final é bem boa. :)



Eu gostaria mesmo era de poder usar o Python no lugar do Javascript. Não to dizendo gerar conteudo dinâmico com o Python, mas sim manipular o HTML com Python, a mesma coisa que fazemos hoje com o Javascript, simplesmente utilizando a sintaxe, e a lógica do Python.



Enquanto isso não acontece, vou tomando muita agua do vazo para entender e programar melhor em Javascript, e torcendo para não precisar dele por muito tempo.

sexta-feira, 1 de outubro de 2004

Arquitetura Java para Web

Trabalhar com Java para Web é muito facil, desde que se utilize as ferramentas certas. Todos os problemas que pode se ter, alguém já passou, e provavelmente alguém já resolveu. Essa é a vantagem de uma plataforma matura.



No Java para o desenvolvimento de sistemas Web é recomendavel a utilização de Frameworks, que facilitam muito o trabalho, e deixam o programador se preocupar apenas com as regras de negócio. Detaco 3 framewords:

  • WebWork: já falei muito dele aqui, é um excelente framework para programação MVC com java para web. É facil de se usar e ajuda muito no desenvolvimento.
  • Velocity: é um sistema de templates para Java. Com o Velocity, toda a camada de visualização pode ser feita com tags especificas dele, e sem a necessidade de usar códigos Java no meio do HTML, como no caso do JSP
  • Hibernate: um framework que faz o mapeamento entre o modelo orientado a objetos e o modelo relacional. É uma unanimidade, é poderoso, é facil de usar. Com o Hibernate, buscar informações complexas do banco de dados se torna muito fácil.
O desafio maior é unir esses 3 framewords, e reconheço que essa não é uma tarefa muito facil. O Velocity já vem junto com o WebWork, mas por o Hibernate junto com eles de maneira correta é um desafio que pode deixar qualque um louco.



A primeira vez que utilizei essa arquitetura foi a uns 6 meses, apanhei muito, uns 3 meses depois precisei novamente e apanhei muito de novo, e essa semana me vi de novo nesse desafio. Ta certo que no inicio eu apanhava 5 dias, e agora apanho só um dia, mas com certeza não é um trabalho que faço com "um pé nas costas". Nesse caso, os detalhes fazem a diferença.



Para quem quer apanhar menos, tem um um exemplo muito bom feito pelo hibernate que integra as tecnologias. É o AdminApp, e para rodar ele só é necessário ter o mysql rodando.