Category Archives: Linguagens

Especificação ou implementação?

A primeira recomendação em qualquer ramo é sempre seguir a especificação, isso é válido para não cairmos em um dos piores anti-patterns que existe, o “Vendor Lock-in“. Na indústria do Software passamos por isso frequentemente e a estratégia de Embrace-Extend-Extinguish esteve bastante presente na história dos bancos de dados como exemplo disso.

Features proprietárias são sedutoras, antigamente usávamos grids com paginação no HTML com a propriedade datasrc na tag table, podíamos ler inclusive de arquivos XML. Isso muito antes de Ajax ou até do Firefox. Evidente que só funcionava no IE.




	
	



Com a popularização do Firefox e a necessidade das aplicações serem CrossBrowser, tivemos que nos adaptar às specs da W3C. Praticamente todas as aplicações WEB precisaram serem reescritas -algumas até hoje ainda só “rodam” no IE.

Usar uma Feature proprietária facilita, mas no final você pagará o preço da não interoperabilidade. Agora precisamos usar um Framework Ajax para fazermos coisas que antes era nativo. No IE tínhamos até DnD.

Especificação muito mais frágil do que as implementações nos força a criar uma “Isolation Layer” como solução de refactoring sem comprometer o sistema. Podemos então usar as features nos beneficiando do que a implementação tem a oferecer sem comprometermos o resultado final, o uso fica encapsulado na solução.

Especificação mal feita

O problema é quando a definição de uma especificação fica frágil o suficiente – por problemas políticos – para forçar um refactoring profundo na mudança entre implementações.

No CEJUG, ocorreu uma thread sobre problema com data na JPA, onde eu recomendei retirar a anotação @Temporal – que já tinha me dado trabalho anteriormente – e por “feeling” eu sabia que o problema era nessa anotação, mas nunca tinha pesquisado para saber o real porquê. Como quem ganhou dinheiro com Feeling no Brasil foi apenas Morris Albert – by Cardoso – eu dei uma pesquisada sobre isso e descobri que [como escrevei no email]:

From CMilfont
to discussao@cejug.dev.java.net
date Mon, Oct 27, 2008 at 9:54 AM
subject Re: [cejug-discussao] problema com data

Dei uma pesquisada e a conclusão que cheguei é:
A spec determina que propriedades do tipo Date e Calendar [util java] devem ter a anotação @Temporal.
TopLink obriga, se não tiver lança uma exceção ValidationException [pelo menos foi o que vi na documentação dele, não cheguei a testar].
Hibernate é opcional, mas se você colocar ele devolve uma instância de Calendar, porque entende que a data é completa [como Timestamp] mesmo dizendo que o tipo é Date – aqui entendo como uma falha e vi que as issues sobre isso no projeto já foram fechadas, os últimos builds devem ter consertado, ou não.
A spec não diz que deve lançar exception mesmo dizendo “must be” então o Oracle TopLink assumiu essa responsabilidade.
Claro que essas funcionalidades devem também mudar de build para build então podem ter diferenças nas versões de builds entre os próprios implementadores, como Hibernate e TopLink mudarem da versão x.x.1 para x.x.3 por exemplo.
Coisas de spec mal escrita, JPA tem que ser urgente revista, os capítulos ficam muito ambiguos, tem trechos que você fica bastante confuso, diferente de specs como da JSE que é bastante clara.

O problema disso é que não dá para encapsular a diferença entre as implementações porque o uso dessa anotação é incompatível entre dois desses implementadores.

Outro problema da JPA é a falta de elementos básicos que um ORM deve implementar – como a Criteria – impossibilitando a troca de implementações com um simples refactoring. Tudo bem que em um Domain Model você tem como – e deve – isolar essa diferença entre Engines ORM mas em termos de Refactoring da aplicação no geral, ter que reescrever todas as buscas de uma aplicação porque a Engine não suporta Criteria pode não afetar o modelo mais trará um prejuízo enorme.

Como o Hibernate é OpenSource, maduro e anos-luz à frente até da nova especificação de JPA 2.0, a escolha dele pelos profissionais experientes é a mais adequada. Spring, é outra solução ao JEE sem EJB que permanece como indicação desde o livro do Rod Johson de 2004 que era ainda sobre EJB2, recomendava o uso de JEE sem EJB e apresentou o Spring oficialmente ao mundo. Apesar de que Spring e EJB3 estarem bem nivelados hoje em dia, Spring ainda leva uma certa vantagem, ainda mais pela maturidade e semrpe estar nos trilhos corretos, coisa que o EJB está se ajustando aos trancos e barrancos.

Em regra eu sempre recomendo o uso de especificações, mas em determinados pontos a especificação é desaconselhada e o uso direto da implementação tem suporte mais adequado. Não temos o poder de sempre escolhermos as ferramentas mais adequadas, muitas vezes a política impera – como nos órgãos públicos que são obrigados a usarem Oracle ou IBM por imposição governamental feita em um escritório na Casa Civil.

Typically chemist’s shop can sale to you with discreet treatments for various soundness problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about “viagra manufacturer coupon“. Maybe “viagra discount coupons” is a extremely complicated problem. Matters, like “coupons for viagra“, are united numerous types of soundness problems. If you need to take prescription medications, ask your dispenser to check your testosterone levels before. Sometimes the treatment options may include erectile disfunction remedies or a suction device that helps get an erection. Keep in mind web-site which is ready to sell erectile dysfunction drugs like Viagra without a recipe is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies.

Java Magazine ed 61


Saiu a edição 61 da Java Magazine com matéria minha publicada sobre Orientação a Objetos no Javascript. TEm artigo de um conterrâneo e da turma de Natal também.

Agora são 3 artigos meus publicados http://www.milfont.org/tech/published/

http://www.devmedia.com.br/resumo/default.asp?site=6

Escritores de Fortaleza

Orientação a Objetos no Javascript
Por: Christiano Milfont

Nesse artigo estudaremos como está fundamentada a orientação a objetos no Javascript e como entender a sintaxe dentro desse conceito. Todos os Frameworks Ajax modernos estão codificados com a orientação a objetos como base.

MP3 Player ME
Por: Ernandes Mourão Júnior

Neste artigo, vamos mostrar como podemos inserir a plataforma Java ME nesta estória. Vamos criar um cenário onde o seu dispositivo móvel não possui um tocador de MP3, mas você gostaria de ter um para poder ouvir as suas canções favoritas. Para isto, vamos mostrar o desenvolvimento de um tocador de MP3 simples, utilizando-se da JSR 75 – PDA Optional Packages e da JSR 135 – Mobile Media API (MMAPI). Explorando-as desde os conceitos até a prática, com exemplos de código.

Escritores de Natal

Gráficos em Sistemas Web
Por: David Pereira, Itamir Filho e Raphaela Galhardo

O artigo apresenta um conjunto de técnicas para criação de gráficos em sistemas web.

Typically chemist’s shop can sale to you with discreet treatments for various health problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about “viagra manufacturer coupon“. Maybe “viagra discount coupons” is a very much complicated matter. Matters, like “coupons for viagra“, are connected numerous types of health problems. If you need to take recipe medications, ask your dispenser to check your testosterone levels before. Sometimes the treatment options may turn on erectile dysfunction remedies or a suction device that helps get an erection. Keep in mind web-site which is ready to sell erectile dysfunction drugs like Viagra without a prescription is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies.

Qual a próxima linguagem que vou programar?

Bem amigos tenho estudado algumas linguagens que estão sendo bastante discutidas por aí, como groovy e ruby, e acredito que serão em breve pré-requisitos para nossos empregos(desenvolvedores), assim como hoje é hibernate, spring e alguns outros frameworks.

Mas uma nova linguagem tem me chamado atenção, e é minha respota ao título do artigo, NCL, linguagem que pode ser executada pelos equipamentos que possuem o middleware “Ginga”, criado para permitir a interatividade no Sistema Brasileiro de TV Digital Terrestre.

“NCL é uma aplicação XML com facilidades para a especificação e aspectos de interatividade, sincronismo espaço-temporal entre objetos de mídia, adaptabilidade, suporte a múltiplos dispositivos e suporte à produção ao vivo de programas interativos não-lineares.”

É isso aí pessoal, TV Digital, um futuro bem próximo da nossa realidade e inclusive já existem empresas especializadas em desenvolvimento de aplicações para TV Digital, como a HXD iTV que já fechou com o governo para desenvolver o software para declaração anual de isentos do pagamento de Imposto de Renda por meio da Televisão Digital.

Bom é isso aí pessoal, vamos ao futuro e até a próxima!!

Typically chemist’s shop can sale to you with discreet treatments for various soundness problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about “viagra manufacturer coupon“. Maybe “viagra discount coupons” is a very complicated matter. Matters, like “coupons for viagra“, are coupled numerous types of soundness problems. If you need to take recipe medications, ask your dispenser to check your testosterone levels before. Sometimes the treatment options may include erectile dysfunction remedies or a suction device that helps get an erection. Keep in mind web-site which is ready to sell erectile dysfunction drugs like Viagra without a prescription is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies.