Esse é meu primeiro post

Então, deve fazer um ano e meio que eu não posto (bosto?) aqui. Porém, se você ainda é um sobrevivente, saiba que estou de casa nova: www.objectzilla.com.br.

Te vejo lá.

Viagens alucinógenas na maionese (2)

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido.

O fanzoca do Java é uma pessoa legal (diferentemente do fanzoca do Linux, que é um chato de galochas, porque além de ficar enchendo o saco quando a gente fica usando o Windows na frente dele, ele resolveu parar de tomar banho enquanto a Palmolive não trocar todas as máquinas Windows para Linux) mas seu ufanismo, às vezes, irrita. Principalmente quando faz comparações com C++ e diz que esta é uma linguagem grande e complexa. Não discordo desse fato, porém difamar uma linguagem por ser muito grande é a mesma coisa que difamar a sua avó por ter muitas rugas. Ou você acha que Java não sofrerá as ações do tempo? Imagine como seria Java em 2035? Acredito que deva ser uma coisa muito medonha, com a novíssima classe javax.dirtywork.WebApplication, que promete pela milésima vez acabar com todos os seus problemas, dividindo espaço na JRE com java.util.Date e seus vários construtores e métodos depreciados.

Mas o futuro a Deus pertence, vamos falar de hoje! A versões do Java lançados anteriormente foram o Java 5 em 2004 (9 anos) e Java 6 em 2006 (11 anos). Nesse período, Java era uma criança doce e comportada. Tudo bem que às vezes nos dava nos nervos com suas infantilidades (vide o EJB, o CMP, os Applets, o JDO…), mas no geral era adorável. Mas agora com a chegada da adolescência, Java está testando todos os limites, resolveu que agora é livre e que não é mais dono de ninguém. Tudo bem, faz parte da idade. Mas será que é certo deixá-lo assim tão solto? Não sei, suas amizades não são lá das melhores, como por exemplo o Ruby. O Java vive dizendo que estão numa boa, mas o Ruby, nas costas, fala mal de umas e outras do Java.

O Java, agora, também está achando que pode tudo! Resolveu que num próximo release, vai ter tudo que lhe der na telha. Quer ter closures, quer ter properties, quer até ter XML embutido nele. Vê se pode? Será que ele não percebe, que se depois não gostar, fica difícil voltar atrás! Os pais dele esperam que ele não vá para o mau caminho!

Viagens alucinógenas na maionese

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido.

Já reparou que quem gosta de Java odeia C++? Mesmo os dois tendo uma sintaxe parecida? Pode me encher os ouvidos de argumentos técnicos, mas eu descobri a razão dessa briga há uns meses atrás na Califórnia: Java é Hamlet! Leia o resto deste post »

Falha técnica

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido.

Aviso aos navegantes: um raio perto da minha casa queimou o modem do Speedy, o roteador wireless, a placa de rede do meu computador, o meu DVD e, pra finalizar, a geladeira. Por isso fiquei uma semana sem postar. Mas não se preocupe, porque a boa notícia (boa?) é que eu aumentei meu buffer de posts, então vocês receberão novos posts diariamente.

Quanto à Conexão Java, estarei lá. Mas me não espere me ver com todo aquele pseudo-deslumbramento que o pessoal do GUJOrkut tem, pra mim é só um evento como qualquer outro. No mais é só, larga essa leitura enfadonha e vai ver um site de mulher pelada. Tchau e até amanhã.

Ruby, Top of the Pops

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido. Mas não se assuste, como esse texto tem alguma coisa de interessante, eu farei uma versão atualizada lá. E só removerei este texto depois de passar o link aqui.

A Edição número 51 de Java Magazine troxe um artigo sobre JavaFX nada excitante, pois mostrou um formzinho bobo, ao invés de um desenho 2D interativo, que eu acredito ser esse seu forte. Mas isso é assunto pra outro post, o mais me irritou no artigo foi a seguinte declaração (tudo bem que se fala de linguagens dinâmicas em geral, mas acerta em cheio o Ruby): Leia o resto deste post »

A caveira de Craig McClanahan (e o porquê do XML ter sido tão importante)

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido. Mas não se assuste, como esse texto tem alguma coisa de interessante, eu farei uma versão atualizada lá. E só removerei este texto depois de passar o link aqui.

No post anterior, comentei sobre a opinião de Bruno Borges dizendo que a especificação é lerdinha. Hoje, irei comentar sobre a opinião de que Craig era o homem errado na especificação do Faces.

É piada corrente (piada?) de que a única coisa que Craig fez de bom foi o Tomcat, o resto (Struts e JSF) foi um lixo. Não é bem assim, temos a mania de olhar as coisas do passado com os olhos do presente e criticar os criadores por não terem uma maldita bola de cristal para saberem o que aconteceria no futuro se fizessem desse ou de outro jeito.

Bruno Borges chamou de “Tríplice Aliança” a referência de um objeto via programação java, página JSP e arquivo XML (Mas o que interessa na verdade é o “meio-de-campo”, ou seja, XML.). Porém, considerando o ano de 2000, quando o Struts surgiu (ao mesmo tempo que o então chamado J2EE surgiu), haveria para os frameworks uma alternativa ao XML? Leia o resto deste post »

Hey Hey Hey Hey Hey Hey Hey Hey Hey Hey! Do you wanna drink some alcohol?

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido. Mas não se assuste, como esse texto tem alguma coisa de interessante, eu farei uma versão atualizada lá. E só removerei este texto depois de passar o link aqui.

Muita gente do Java tira suas dúvidas e responde as dúvidas dos outros no Orkut GUJ, tem gente “estrela” lá, e tem até moderadores que ficam moderando o que possa parecer imoderável. Mas o que muita gente desconfia mas que não ousa falar é que todo mantenedor de fórum A-DO-RA quando ocorre uma discussão inflamada, pois todo o trabalho que eles tiveram para manter o fórum foi recompensado pela briga alheia. Mas é claro, precisa ter uma boa pauta pra começar uma discussão. Não foi o que aconteceu com o The Server Side, onde eles tiveram a idéia mais boboca do mundo: qual é o melhor? Struts ou JSF?

Tinha tudo pra ser mais uma lenga-lenga sem fim até que Bruno Borges apareceu e colocou um post em inglês que se resume a dois tópicos: Leia o resto deste post »

Common Lisp é um assunto seríssimo

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido.

Tá achando que manjo de Lisp? Neca de Pitibiriba. Minha experiência com essa linguagem se limitou a apenas um dia de aula de Linguagens de Programação com o Professor Zorzo na UFSCar, que no período em que estudei lá (2002 a 2005) significava das 8h00 às 9h30 e das 10h00 às 11h30; além de um trabalhinho não muito complicado.

Lembro apenas que era uma linguagem com muitos parânteses (não que eu ache isso um problema (eu mesmo uso parênteses como um recurso narrativo onde é apresentada uma idéia paralela enquanto eu deixo a outra em suspensão (reparou que tá chovendo muito nesses dias? Não dá nem vontade de subir a serra no fim de semana))) e que tinha um shell próprio (na época pré-Ruby, uma blasfêmia) e era uma linguagem onde fazíamos manipulações de uma lista encadeada fazendo recursão.

Leia o resto deste post »

O momento em que Java quase virou .Net e C++ ao mesmo tempo

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido. Mas não se assuste, como esse texto tem alguma coisa de interessante, eu farei uma versão atualizada lá. E só removerei este texto depois de passar o link aqui.

Isso já tem mais de um ano, mas em novembro de 2006 o arquiteto da Sun Danny Coward propôs a inclusão de propriedades em seu blog. Para quem está com preguiça de ler, ele sugeriu que a linguagem Java tivesse, ao invés de getters and setters, tivesse a expressão property, ficaria assim:

public property String foo;

E para a leitura de propriedades, seria feita dessa maneira:

a->Foo = b->Foo;

ao invés de:

a.setFoo(b.getFoo()) ;

Isso gerou uma polêmica desgraçada pra muitos javeiros, mas a crítica a ela se dividiu em algumas correntes:

1- Aqueles que acharam que isso seria copiar o .Net com sintaxe do C++. Pra mim, isso é bobagem. Java pode e deve ter influências de outras linguagens, basta, é óbvio, saber escolher aquilo que seja compatível com a filosofia do Java, e saber identificar os pontos fracos das soluções já implementadas. Dizer “isso não foi inventado aqui” não funciona, o Ruby é um exemplo de uma linguagem que não tem vergonha de dizer que se inspirou em outras linguagens, e olha que não é ruim não.

2- Aqueles que identificaram que propriedades não podem ser mapeadas com métodos. E com razão, eu poderia ter facilmente void setMyLink(URL myLink) e void setMyLink(String myLink) em uma mesma classe. Mas como eu mapearia isso para properties (que deve ter um comportamento similar ao de variáveis)? E sem falar que Beans tem um certo problema com coleções, pois não há nada que faça um objeto que possua uma List ter conhecimento da inserção e remoção de elementos desta List e que ao mesmo tempo esse objeto seja reconhecível pelos frameworks que exijem o padrão Bean.

3- Aqueles que acham que isso tiraria a programação explícita do Java. Eu não gosto muito de dogma, e acredito que se possa criar abstrações que facilitem a vida do desenvolvedor. O uso de propriedades poderia tirar deixar um pouco mais implícito, mas também não tornaria a linguagem confusa.

Mas uma coisa ninguém falou, pra quer melhorar os getters e setters se ela está decaindo a cada dia? É isso mesmo que você leu: DE-CA-ÍN-DO. Por várias razões:

1- Estou convencido de que nunca na história desse país, o uso de gettes e setters foi tão criticado. E isso porque uma classe com apenas getters e setters não é muito diferente de uma struct no C-zão. Se você duvida, procura no Google (e no GUJ também) sobre crítica aos getters e setters. Você vai até se deparar com as bibas Paulo Silveira e Philip Shoes, o “Calçado” tendo piti quando escutam que get e set faz com a aplicação fique orientado a objeto. É obvio que isso é mentira! Já participei de dois projetos onde havia um monte de “Bean”, que todo mundo passava a mão, com um monte de “objetos” de “negócio” em volta deles fazendo muita merda. O primeiro, com o objetivo de substituir um legado com problema de manutenção, resultou num programa com problema de manutenção. E o segundo, resultou num programa tão matador que o projeto morreu antes de mostrar seu ROI.

2- Já reparou que o Hibernate pode ser usado com annotations? Já reparou que a JPA é só annotations? Já reparou que existe um container de IoC leve chamado Google Guice que pode ser usado só com annotations? Aquela dependência de getter e setter está caindo cada vez mais. Possivelmente seu uso só servirá para pegar e mudar valores do modelo e jogar na visão (isso se não inventarem outra coisa mais interessante pra fazer isso).

É claro que ainda haverá momentos em que o uso de getters e setters se torna “inevitável” (na verdade, para um desenvolvedor, inevitável significa algo que poderia ser impedido em situações normais, não fosse a preguiça de pensar, mais o chefe que só tá lá porque deu a bunda pro gerente, mais a falta de café e mais o prazo apertado), mas acredito que as situações possíveis vão diminuindo, à medida que vão surgindo alternativas interessantes.

Então resta a dúvida, pra que mexer em algo que já não é tão indispensável assim?

O Linux não me ama

Agora em novo endereço: www.objectzilla.com.br. Atualize-se, este conteúdo será logo removido.

Este sábado instalei o Ubuntu 7.10, depois de uma certa frustração do Ubuntu 7.04 porque não reconhecia o som, nem a placa de rede. Lembro que na versão anterior eu havia conseguido rodar o som, de uma maneira misteriosa que eu nem mesmo sei, o que sei foi que eu fiz um monte de coisa, instalei e desinstalei o Alsa de vários jeitos e num reboot mágico o som apareceu, só a conexão sem fio que não funcionou, o Ndiswrapper não reconhecia os drivers da minha placa de rede. Agora, com essa versão atual, o Ndiswrapper funcionou que é uma beleza, o som não.

E o pior é que eu tive uma certa ilusão quando as propagandas do Ubuntu dizia que a distro procurava os drivers proprietários e sugeria a instalação se houvesse uma conexão à internet disponível (eu tinha, antes da conexão sem fio, havia um fio azul claro atravessando a casa, e que quando alguem tropeçava, derrubava aquele roteador que parece mais leve que o ar), mas achei que ele serviria pro áudio, pro wireless e pra tudo mais. Não, só funcionou pra placa de vídeo NVidea. Ora, apesar de na versão 7.04 não ter nada parecido, eu conseguia instalar esse driver facilmente. Mas o problema com som e placa de rede sem fio está tão problemático de resolver quanto na versão anterior.

Porém, eu gostei da nova versão porque tem o Compiz Fusion, mas é assim, é que-nem trocar XP pelo Vista, nova embalagem com o mesmo conteúdo.

De qualquer maneira, farei o som funcionar, a luta continua!