Uma das coisas mais chatas hoje para desenvolver aplicações Java é a necessidade de configuração.
E não me entendam errado, eu acho que a possibilidade de configuração é uma coisa excelente …
Acho que estou batendo demais nesta tecla, mas isto não é culpa apenas da plataforma …
Vejam o seguinte exemplo …
Alguem chega para você e diz que tem uma solução para persistência automática dos objetos, mas a aplicação precisa seguir alguns padrões para isto funcionar …
Bom, este é só um exemplo, o padrão adotado poderia ser qualquer um …
Qual seria a sua reação para com este framework de persistência?
…
Bom, eu fiz um teste e apresentei esta solução a algumas pessoas e a reação foi exatamente a mesma em todos os casos …
…
Todos disseram algo semelhante com:
Ahh, mas eu não gosto deste padrão, o framework suporta o padrão de nomes XYZ que eu criei para usarmos na empresa?
…
Eu respondia: não, o padrão precisa ser este, caso contrario precisa-se configurar a classe inteira ou classe por classe.
Ahh, então o framework é ruim, não serve, ainda esta muito no inicio, ….
Por que eu quero um framework para configurar automaticamente se eu vou precisar configurar manualmente?
Agora a mesma situação com o Ruby on Rails por exemplo, a grande maior parte dos desenvolvedores RoR que conheço, simplesmente aceita o padrão de nomenclatura do RoR, pelo menos para aplicações novas (claro que este tipo de solução não se encaixa para problemas legados) …
Ou seja, sera que sou só eu que acho que as coisas deveriam ter uma configuração padrão, e só nos obrigar a configurar quando quisermos fugir deste padrão?
e principalmente, se quisermos alterar apenas um pequeno pedaço da aplicação, por exemplo, apenas uma das entidades quer seguir outro nome, só configurar aquela entidade, e não a aplicação toda por causa disto …
Levando isto ao extremo, coisas como a API de Servlets, deveria permitir que frameworks se auto configurassem …
que deveriamos ser obrigados a fazer menos coisas repetidas, e utilizar menos código repetido, por que por exemplo, o web.xml que utilizo é identico em 90% das aplicações …
e sou obrigado a copiar e colar ele sempre …
e no dia que eu descobrir um bug nele, precisarei alterar todas as minhas aplicações …
qual é o problema com facilitar a vida do usuário/desenvolvedor?
Ai alguem vai dizer, mas as ferramentas deveriam fazer isto para você …
Bom, ai temos alguns outros argumentos …
EJBs estão esperando uma ferramenta para facilitar o trabalho desde a versão 1.0
JSF ainda esta esperando uma ferramenta a altura do Visual Studio (este é o caso que chegou mais proximo de conseguir algo na minha opinião, o que estragou foi a mania que temos de “quero fazer do meu jeito”, inclusive foi esta mania que fez eu não gostar da primeira versão do Java Studio Creator, o meu argumento era que a aplicação ficava muito engessada, o que não era realmente tão verdade assim, ele só não deixava eu trabalhar da forma como eu queria, eu não aceitei os padrões dele)
SWING ainda esta esperando uma ferramenta …
E por que as coisas não poderiam simplesmente ser amigáveis ao desenvolvedor, e permitir a utilização de ferramentas também?
(Alguem lembra do Delphi? É perfeitamente possível e fácil criar formulários 100% via código na mão, e mesmo assim tem um editor de formulários espetacular … )
e por ultimo …
Estas ferramentas não são criadas simplesmente por que não é possível, ou por que não aceitamos elas por estarmos mal acostumados?
Sera que nenhuma empresa investe em criar estas ferramentas por que desenvolvedores java estão tão acostumados a passar trabalho que gostam disto? mesmo que em algum nível inconsciente?
PS.: acho que escrevi praticamente a mesma coisa ja, só não lembro se foi aqui no blog ou em algum forum por ai
Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!
Tags: Java
Na verdade, você sempre “prega” isso, seja em resposta a algum post em forum, seja dentro de outro tópico aqui no seu blog. Acompanho seu pensamento….
Eu acho que na verdade o desenvolvedor Java, se acostumou a trabalhar arduamente, um pensamento comum é: “Ahhh não gosto dessas coisas visuais, não fica do jeito que eu gosto!” ou, “Gosto de ter o controle sobre o que estou fazendo!”. Mas, a verdade é que, muitos ainda tem um certo preconceito com ferramentas visuais, justamente porque muitos vieram do Delphi ou VB e quiseram quebrar o paradigma. Mudar os conceitos, e agora, se veem diante de ter que voltar a velha forma de como trabalhavam.
Outra coisa que eu vejo sobre este assunto, é que muitos não conseguem pensar sobre orientação a objetos, com a possibilidade de drag´n drop (acho que já disso isso, enfim…)
Sobre a configuração padrão, é um pouco ruim mesmo no começo, você ter que adotar o padrão da ferramenta e não ela adotar o seu padrão. Uma coisa que ainda hoje não existe, é eu poder dizer pra ferramenta qual o padrão que quero adotar, claro que dentro de uma cetra restrição.
Citando um exemplo no Hibernate, quero que ele gere minhas tabelas no banco de dados. Po legal, ele gera as tabelas, relacionamentos, tudo bonitinho, mas por exemplo, gostaria que ao invés de ele gerar o nome da tabela igual o nome da classe, ele colocasse um “T001_” na frente, e fosse incrementando conforme ele vai gerando as tabelas. E os campos de FK, ele gerasse com o mesmo nome do campo da tabela de relacionamento, etc… (acho que da pra fazer isso, mas vc tem que extender uma classe do hibernate, e botar código java dentro para ser possível fazer algo assim)
Bom, isso foi um exemplo, mas é isso que realmente falta nas ferramentas. Um pouco de configuração pra deixar do jeito que o cara gosta. Por exemplo como vc citou acima, se tivesse uma tela, ou arquivo de configuração, onde o cara diria como ele queria que o framework trabalhasse, ou que padrao ele adotasse, então sim IMHO haveria uma grande adoção.
Valeu rodrigo.
Reply to this comment“EJBs estão esperando uma ferramenta para facilitar o trabalho des da versão 1.0″
Ouch! “des” não é uma palavra da nossa língua portuguesa.
Reply to this commenturubatan,
Reply to this commentconcordo contigo, acho que a maior parte do trabalho hoje é pra fazer configuração, muito copiar e colar, e xml ate não aguentar.
tenho estudado JSF ultimamente, acho que precisa de configuracao demais, nisso o spring é um pouco melhor.
flw
Bruno, obrigado pela correção, ja arrumei no texto …
Reply to this commentcharles, só pra constar, o spring não é tão melhor que isto assim não
Toda vez que eu ouço um argumento de alguém que realmente reinventou a roda em nome do seu controle, eu tenho uma frase pronta:
“- Outro dia ouvi falar que certos analistas gostam de fazer isto, mas é por insegurança. Você está com problemas?”
Mas falando sério, eu compreendo que seja natural do ser humano. Diante da opção entre fazer e ler muito, as vezes optamos por fazer e apanhar depois. Eu pelo menos peço que façam ensaios antes de implementar, baseado naquela velha máxima: “-Ou você experimenta antes de implementar no projeto, ou o seu projeto vira o experimento!”.
Mas no que tange a normalização em si, eu resolvi isto criando um teste (pouco usado, confesso), envolvendo ora Aspectos e ASM. E, especialmente, Expressões Regulares para validar a normalização da base. E o pior é que funcionou. No retrospecto, vejo que construir pequenas ferramentas ajudam bastante nesta parte de validação. Mas, sem dúvida, sempre teremos este dilema.
Reply to this comment