Rigidez Conceitual Burra em Java

Este post é sobre a comunidade Java que está enferrujando (eu me incluo na comunidade Java). Não sei se é porque a comunidade cresceu. Não sei se é porque temos muitas JSRs. Não sei se é porque a linguagem popularizou. E nem sei porque ainda achamos que daqui a 10 anos ainda estaremos programando em Java.

Vou listar aqui algumas coisas da nossa comunidade que me irritam profundamente:

1. Engolimos a J2EE

Todos nós fizemos BMPs, Service Locators, DTOs desnecessários. Empilhamos várias classes para ter um Session Bean. Implementamos várias javax.ejb.EJBObject, lançamos várias RemoteExceptions. Nós realmente pensamos que nossas aplicações teriam trilhares de usuários.

Não só isso. Nós olhamos para o Spring no início e não achávamos que isso iria dar em alguma coisa. Não demos crédito para o Hibernate no momento certo. Os POJOS poderiam ter tomado a cena muito antes. Nós demoramos para compreender que a Sun não era detentora da sabedoria suprema. Até na comunidade .Net essa ficha caiu mais rápido.

2. Nós pervertemos os POJOS

Livres do modismo J2EE e EJB 2.1 pra baixo, estávamos livres para melhorar nossos modelos, aplicar nossa teoria OO, parar de fingir que distribuimos objetos e ter uma visão mais enxuja. Infelizmente muitos de nós caíram na cilada do modelo anêmico. Ainda com sangue “Core J2EE Patterns” na veia, implementamos factories, DAOs e por influência de Struts 1, DTOs (com nome de VOs) emergiram como rãs nas pragas do Egito.

Fizemos o Martin Fowler perder seu precioso tempo escrevendo sobre Anemic Domain Model.

Pojos não são DTOs, pelo amor de Deus!

3. Nós cultuamos os XMLs

struts-config.xml, web.xml, hibernate.cfg.xml, persistence.xml, context.xml, ejb-jar.xml…

Sim, desenvolvedores foram para a plataforma .Net por nossa exclusiva culpa.

4. Torcemos o nariz para novidades

Quem não reclamou de Generics? Quem não reclamou de Annotations? Que atire a primeira pedra! Somos eternos insatisfeitos só para não sair da zona de conforto. Há quem diga que não gosta de tipagem dinâmica, Jboss Seam, Groovy, JDK com várias linguagens, scripting. Sim, ainda tem muita gente usando Struts 1, implementando DAOs na mão (afinal, hibernate é complicado….), implementando milhares de Factories, controlando transações na mão e estacionados na JDK 1.4.

5. Rigidez conceitual burra

Sinto muito, mas aqui eu não vou usar “nós”. Vocês são os primeiros a sacar os padrões. Vocês ainda estão discutindo framework MVC web. Vocês empilham classes, se enchem de interfaces. Vocês preferem fazer algo complicado por medo das críticas. Não estou suportando mais as discussões sobre DDD, repository, JPA e Hibernate. Por favor compreendam o que o Evans quis dizer com “Don’t Fight your Framework”. Não aguento mais ver trocentas camadas e DTOs. Não apliquem otimização prematura. Sejam pragmáticos. Respirem YAGNI. Abusem das Spike Solutions. Façam a coisa mais simples possível que funcione.

Enquanto vocês estão discutindo os padrões, todas as outras comunidades estão correndo por fora. Desculpem o desabafo. Teve um determinado momento onde gostava dessa rigorosidade da comunidade Java, porém, hoje vocês estão me fazendo flertar com a comunidade PHP.

Esta entrada foi publicada em agilidade, arquitetura, mercado. Adicione o link permanente aos seus favoritos.

40 respostas a Rigidez Conceitual Burra em Java

  1. Muitas de suas afirmações sobre java são corretas… outras beeeem exageradas…

    Agora… uma coisa é não usar java… que por N motivos pode nao ser a escolha correta…

    mas dai usar PHP ? Por favor… tanta coisa boa por ai vc vai cair no PHP ? Experimentou Ruby ? RoR essas coisas…

    PHP ? Meu deus… trocar de um mundo regrado diretamente para um mostro de variaveis globais (me desculpe mas 90% dos programdores em PHP fazem essas bizoinhices) ou receber em uma funcao um parametro do tipo “laranja” que faz se passar por uma “banana” e tem casca de “abacaxi” , cheiro de “jaca” e gosto de “cigarro” ? Não dá né…

    Mudar sim… mas vamos concordar que PHP em dias de RoR , DJANGO, .Net… é perda de tempo.

    CLARO que essa é apenas a minha opiniao… :)

  2. Roger Leite disse:

    Desabafos de um velho e rabugento desenvolvedor Java … algumas verdades mas muito, muito flame ! Minha humilde opinião …

  3. Concordo que java é rígido como você falou. Mas PHP? Putz… :)

  4. Leandro disse:

    Rodrigo,

    Sabe quando uma pessoa consegue falar tudo aquilo que vc pensa ?

    Cerca de 1,5 anos atrás eu fui em busca de alternativas…e encontrei: Hoje sou um fã apaixonado pelo Python e pelo Django(framework de desenvolvimento web) e descobri que SIM ! existe outros mundos além do Java.

    Hoje ao trabalhar com Python eu vejo o quanto as coisas podem ser mais simples.

    Parabéns pelo post.

  5. Miguel Baldi disse:

    Cara, o que posso dizer em primeiro momento eh: polemico. Seu post eh bastante polemico, porem tenho de concordar com quase tudo. Eu trabalho ha um bom tempo com java e todas as tecnologias relacionadas, e realmente, a cada dia perco mais um pouco de esperença com esta comunidade. A visiao que tenho atualmente, eh que os integrantes desta comunidade se afastam cada vez mais das metodologias ageis e de seus principios, preferem dar preferencia aos frameworks verbosos e que mais parecem trabalhos academicos, aos novos frameworks focados em produtividade e facilidade. Com isso quero dizer que seu post, no minimo faz pensar, e tomara que faça aqueles mais xiitas pensarem tbm. Valeu pelo excelente post, e desculpe a gramatica, estou digitando pelo celular.

  6. Rodrigo Yoshima disse:

    @Dyego @Vitor

    Sim…. meio exagerado né? Você tem contato com a comunidade PHP? Conhece alguns frameworks web PHP? Cake, Solar, Smarty, mvcphp só pra citar alguns.

    Dizer que PHP é 90% variáveis globais é a mesma coisa que acusar a comunidade .NET de usar Datasets ou a comunidade Java de usar XMLs pra tudo.

    Já estou usando Rails, mas a comunidade aqui é pequena. Falei PHP por provocação gratuita mesmo! ;) Falando sério. Essa comunidade está de fato se mexendo. Tornando seus sistemas mais organizados.

  7. Rodrigo Yoshima disse:

    @Roger

    Não tão velho. Nem tão rabugento. Me diga o que achou flame. Mas é um desabafo sim. E o problema não é a linguagem é a comunidade. Tá?!?!

  8. Roger Leite disse:

    @Rodrigo
    “Nós demoramos para compreender que a Sun não era detentora da sabedoria suprema. Até na comunidade .Net essa ficha caiu mais rápido.” FLAME!

    “[...] hoje vocês estão me fazendo flertar com a comunidade PHP.” SUPER FLAME !

    :D
    Rodrigo, concordo com o seu desabafo e com as suas criticas a comunidade Java. Pra mim, citar .Net e PHP como exemplos de comunidade que “estão correndo por fora” é flame.
    Se devemos seguir exemplos de produtividade e “coerência” no desenvolvimento, que seja citado o pessoal do Python com Django e RoR.

    Sem ofenças, também compartilho do seu desabafo.

  9. Andre disse:

    Concordo e digo mais, como programador Java estou me sentindo em um dentro de uma cova em um caixão, e o pessoal de Ruby, Python jogando terra. AHHH socorro, preciso sair daqui LOGOOO.
    Tem um problema mair a decisão de utilizar uma tecnologia não é minha, porque a empresa não é minha, no máximo posso dar uma sugestão mas provavelmente ela não vai ser aceita porque um USP-MESTRADO escreveu em alguma revista que “EJB é a única coisa escalável”.
    A conclusão. Bom preciso criar minha empresa o mais rápido possível.

  10. Conheco alguns frameworks PHP para Web sim…

    O problema não é o framework , na minha opiniao o PHP convida voce a fazer xunxos interminaveis…

    Sim… ele convida… ele diz… “olha AQUI… BOTA AQUI NESSA LINHA , NINGUEM VÊ E EU FUNCIONO !”

    Coisa que em outras linguagens alem de nao funcionar direito… ainda vira uma bomba em pouco tempo :)

  11. @Dyego
    “o PHP convida voce a fazer xunxos interminaveis…”

    Ele convida mas não obriga.
    Em qualquer linguagem é possível fazer coisas “duvidosas” inclusive no java.

  12. Leandro disse:

    A comunidade Java, em geral, é meio cabeça dura, acha que Java é a única bolacha que tem recheio… rsrsrs

    Mas como você disse, o problema não é a linguagem ou a plataforma, mas a mentalidade de uma galerinha que, digamos assim, xiita… (dammm… essa é velha!)

    Já falei sobre isso algumas vezes em meu blog (exemplo – http://codezone.wordpress.com/2008/02/04/nao-ha-uma-unica-linguagem-de-programacao), mas de uma forma mais polidinha… hehehe… vc não mediu palavras!!!

    Bem, de qualquer forma, gosto de Java, mas acho que tem muita coisa boa por ai, como RoR, porque exemplo, que gosto muuuuito.

    Valeu!

  13. @Danilo

    Existe uma diferença bem grande em “convidar” e “permitir”

  14. Leonardo Veríssimo da Silva disse:

    Eu incluiria um sexto ítem nas coisas que me irritam na comunidade Java: achar a plataforma superior a .Net ou PHP ou qualquer outra coisa.

    Reclamam da falta de orientação a objetos ou da qualidade porca dos outros, mesmo que a coisa mais comum de se encontrar em aplicações Java são: código cheio de static e pacotes de nome “com.empresa.vo” com 1473 classes.

    E pra quem reclama de PHP, saiba que existem frameworks como Zend Framework e CodeIgniter que tornam a codificação em PHP ágil e organizada.

  15. Rodrigo Yoshima disse:

    @Roger

    Não comparo com ROR e Python pois são comunidades menores e mais novas. Já PHP e .NET são maiores.

    A comparação com a comunidade PHP é minha dúvida atual:

    O que é mais fácil? Tornar um Javeiro pragmático ou tornar um PHPeiro mais controlado? Atualmente estou pendendo para a segunda alternativa.

    Valeu pela sua participação aqui no Débito Técnico.

  16. @Leonardo
    O que não falta é framework PHP… o que não quer dizer nada…

    repito a voce:

    Existe uma diferença bem grande em “convidar” e “permitir”

  17. Tony Fabeen disse:

    Realmente enche o saco desenvolver em Java para Web, principalmente depois de ter experiência com plataformas mais produtivas.

    Mas minha opinião é que certos tipos de evolução, principalmente relacionadas a desenvolvimento de software se dão com “cabeçadas” mesmo. Quem poderá dizer daqui a 10 anos, que práticas como XP, Scrum, desenvolver em RoR, Seaside, Merb, uatchatchá serão o melhor caminho ? Com certeza iremos evoluir, e sempre. O que não devemos fazer e ficar na zona de conforto, ou melhor “desconforto” e se acomodar.

    []s

    Tony.

  18. Eu entendo perfeitamente o que está dizendo! E também postei sobre isso no meu blog de forma mais amena um pouco. Perde-se muito tempo com lorotas e definições em vez de soluções! A comunidade perde tempo e se mantem estacionada em torno disso!

    O MVC é um bom caso de enrolação suprema! Você fica la discutindo quem chama quem eternamente em vez de atender somente e só as necessidades.

  19. Leandro disse:

    @Tony
    Concordo com você. Por que no lugar de criticar o novo, não podemos aprender com ele? Evoluir sempre. Porque sempre há uma maneira melhor de se fazer as coisas. Não querer enxergar isso é no mínimo burrice. IMHO.

    Aliás, é bom lembrar também que não existe só aplicações web para serem desenvolvidas. Há uma variedade de outros nichos. Dispositivos moveis, desktop, midleware, softwares de infra-estrutura, etc. Assim, não precisamos apenas de linguagens/plataformas que apenas resolvam problemas na esfera web.

    Java é ótimo em muitas coisas. Em outras nem tanto. E em outras, nada, nada, nada. A vida é assim… não se pode apenas ganhar…

  20. Yuri disse:

    Você falou algumas coisas corretas sim, outras como ja falado exageradas, uma coisa que você falou eu concordo plenamente,
    “Nós realmente pensamos que nossas aplicações teriam trilhares de usuários.”.
    Isso faz a diferença em que linguagem você vai trabalhar, eu trabalho com varias linguagens e estudo varias delas para ser mais flexivel na hora de escolher a linguagem mais adequada.
    Não escolho uma no acaso ou “tal linguagem é mais usada no momento” ou “PHP / Java ja era, vamos para Ruby ou Python”, escolho ela pela necessidade do sistema, quantos usuarios sao previstos, oque o sistema realmente precisa, as vezes uso varias delas junto, Java + Javascript/JRuby, Java + Properties em vez de XML, Ruby + Rails existe uma infinidade de escolhas.
    Muitos programadores esquecem de o porque existirem varias linguagens, chegando a comparalas para ver qual a melhor ou mesmo dizendo Tal é a evolução da Outra, algo realmente ignorante.
    Uma coisa que não concordo é o uso de “Nós” em muitos lugares.
    Mesmo assim apontou algumas das dificuldades que temos em java, parabéns pelo post ;)

  21. Sou um recém chegado à comunidade Java e confesso que já me deparo com a absurda burocracia – em parte desnecessária e realmente chata – dessa plataforma. Enquanto inciativas realmente práticas surgem a todo instante (como o RoR, pra citar um exemplo dos comentários), para a Web o Java é ainda aquele “elefante branco”. Claro, existem cenários em que toda essa tralha realmente faz sentido e é perfeitamente aceitável, mas outras simplesmente é muito mais prático, rápido e igualmente funcional – na Web – falar em PHP. E é ótimo que existam mesmo alternativas, não é?

    Do jeito que há um pouco de flame no post, tem flame também por parte de alguns comentários ridicularizando o PHP. Se o PHP virou pop e milhares de pessoas simplesmente acordaram de manhã e gritaram “mamãe, eu sou um programador”, definitivamente não é culpa ou fraqueza do PHP. Assim como o PHP, o Ruby e Python são excelentes linguagens e a princípio fazem tanto na Web quanto o Java, desde que o programador saiba o que tá fazendo.

    Parabéns pelo post, no mínimo gerou uma discussão interessante. :D

  22. André disse:

    Parabéns pelo post! É preciso ter coragem para pensar diferente e olhar para a frente.
    A comunidade Java não deve cometer os mesmos erros que os desenvolvedores C/C++ cometeram no passado.
    “O quê… usar Java… não tem ponteiros… Java é lento…”

    Resultado: o pessoal do C/C++ ficou para trás.

    “O quê… usar Python… não escala… Pyhton é lento…”
    e… a história se repete!

  23. Felipe Regalgo disse:

    Em geral concordo com tudo…

    a maioria dos programadores q eu conheço apenas estudam as “boas praticas” e como implementa-las… porém ao meu ver eles não estudam QUANDO usa-las…

    Então muitas vezes um programadors aplica um design pattern (DTO por exemplo) implementando da forma correta descrita no Livro, porém em um contexto que não deveria ser aplicado (quando não é aplicação remota por exemplo)..

    Tenho observado q a maioria quer fazer codigo na “modinha” e ficar colocando um monte de camada de delegação, design pattern´s, frameworks só pq alguem disse q é bom…. Eu concordo que seja bom determinada pratica, porém tem a hora certa de usar!!!

    O problema q eu vejo é esse, os programadores em geral não sabem a hora certa de aplicar as boas praticas, e esquecem do conceito KISS (Keep It Simple, Stupid) e partem para o KIWLP (Keep it with a lot of patterns!!) rs

    Também estou de saco cheio disso Rodrigo!!!! um monte de gente usando as coisas sem saber o pq estão usando… e deixando tudo complicado sem necessidade……

    Parabéns pelo post!!
    []´s

  24. José Renato disse:

    Realmente, polêmico.

    Estou usando JAVA há quase 1 ano, e eu acho que em algumas coisas, realmente, a situação se complica de mais (formatar um Date, q sufoco.. rs).

    Mas, não sei se a “evolução” em JAVA já começou, porque, pelo menos para mim, não está TÃO complicado assim. Usar Annotations para fazer os mapeamentos com JPA por exemplo, acho muito pratico.

    Agora, concordo com o que a maioria escreveu, temos que usar o que temos disponível com cautela, e não complicar nossas aplicações, mas isso é algo que vem com a experiência. Da para complicar com qualquer linguagem, seja JAVA, PHP, Python, C++…

    O grande problema é a quantidade de informação errada e precipitada que existe em relação ao uso de padrões e camadas e mais camadas, para tornar mais “flexível”. Mais uma vez, repetindo o que tem em comentários anteriores, KISS, KISS, KISS…

    O importante é:
    Funcionar, da melhor maneira possível, que seja mais rápida de se desenvolver, melhor de manter e que satisfaça o cliente. Afinal, o cliente não quer sabe se vc usou Observer, Singleton, DTO, ou seja la o que for, o que importa é o dinheiro no bolso dele, e que “essa porcaria de programa não trave na hora que mais for necessário” (palavras que já devem ter sido pronunciadas várias e várias vezes pelos nossos clientes).

    Então, concluindo, JAVA pode ser comparado a Bomba Atômica, que pode fazer o bem nas mão certas, mas pode destruir o planeta nas mão erradas.

    JAVA é muito bom…..

  25. Rafael Ponte disse:

    Excelente post Rodrigo!

    Infelizmente o mal da comunidade Java e talvez de outras comunidades seja a preguiça de entender a motivação e os fundamentos de patterns, conceitos e frameworks, logo eles acabam fazendo asneiras sem necessidade.

    Acredito que comunidades como o GUJ, blogs como o seu ou do Shoes ou do Guilherme tentam mudar isso.

    Abraços!

  26. Rubem Azenha disse:

    Para os itens 1 e 2, eu sempre digo: “Hibernate to the rescue!” e “Spring to the rescue!”.

    http://www.theserverside.com/tt/cartoons/Persistence/Persistence.jpg

    :)

  27. Rogério Figueiredo disse:

    Legal as considerações. mas lendo me fez refletir, que o problema não é a linguagem, java, php, .NET, ruby etc…
    E sim nos “as comunidades” que não sabemos usa-las. : )

  28. Alex disse:

    Rodrigo, antes de comentar o conteúdo do post, vou comentar o tom dele. O fundamento em que todas as metodologias ágeis estão baseadas é a coragem, e vc mostrou que tem e de sobra postando as verdades sobre uma comunidade anêmica.

    Antes do conteúdo, uma resposta rápida a 90% dos comentários nesse post:

    1 – Java continua sendo a grande linguagem que sempre foi. Ruby é melhor? Python é melhor? Sinceramente, pra mim as 3 são bastante parecidas.

    O que acontece é que existem frameworks mais ágeis para essas outras linguagens, como o Django e o Rails. Alguém aqui já usou o Grails? Eu usei e posso dizer com segurança que é tão ágil quanto, se não mais do que desenvolvimento com RoR, e ele roda em cima da JVM usando Spring, Hibernate, etc. O problema é que a inovação mudou de lugar, e todo mundo quer estar onde a inovação está. Não culpo ningiém por isso.

    2 – PHP não é ruim como todo mundo pensa. Assim como a comunidade Java, que a meu ver é “acadêmica” demais e pouco pragmática, a comunidade PHP não é pragmática, é mais da MARRETA mesmo… Querem fazer do jeito que funcione e pronto, não importa se vai ficar ruim de ler o código ou se vai levar 3 anos pra achar a causa de um bug.

    Um bom profissional pode usar PHP ao seu favor com OO e a vasta biblioteca do PEAR, além de algumas outras, e se quiser um bom framework, tem no mínimo o Symfony, o Zend Framework e o CakePHP (meu favorito), com o Cake e o Symfony sendo os mais parecidos com o Rails. Nada impede de vc escrever o seu próprio framework tb, e sendo uma linguagem de scripting loosely typed, fica bem fácil fazer coisas legais.

    3 – Spring é difícil! Cara, pra vc fazer um hello world no spring deve ter que escrever uns 3 mil XML, ou se não é isso, tá tão mal documentado que eu, acostumado a ler recomendação do W3C e spec do JSR não consegui entender em 15 minutos. Sinceramente,

    EJB3 é MUUUUITO mais fácil. Um @Resource ou @EJB e tá resolvido, sem dor. JPA tb é muito mais fácil do que Hibernate.

    Agora vamos ao post original (ufa)…

    CONCORDO e assino em baixo. Mas não acho que Rails ou Python ou alguma outra linguagem seja a solução. Acredito em algumas coisas:

    – Linguagens de scripting sem tipagem forte, como por exemplo JavaScript, simplificam o desenvolvimento por permitirem criação de tipos novos em runtime.

    – Essa mesma característica faz com que elas sejam ótimas para usar com serviços, (REST, POX, WS-*, JSON, etc) sem ter que gerar código.

    – Aplicações morreram. Precisamos desenvolver serviços. Não, não estou fazendo marketing de SOA ou pertenço a algum vendor do setor. Não, não acho que SOA é a solução de todos os nossos problemas, mas precisamos vencer a ditadura dos JARs e empacotamentos em geral de classes de API, tudo deve ser mais fácil e produtivo.

    Abs,

    Alex

  29. Marcio Duran disse:

    Concordo, com você Alex…

    Foi uma ótima observação a sua também, temos que quebrar paradigmas ….

    abraçosss

  30. Anderson Fortaleza disse:

    Há varias razões para a comunidade PHP ser tão mais dinâmica que a comunidade Java. Posso dar um exemplo delas.

    Quando comecei a programar pra Web, em 2000, comecei a estudar algumas soluções. Java era tão assustadoramente complexo que a tentativa nasceu morta.

    Quando tentei fazer algumas coisas em PHP vi que depois de 1 semana já estava prolífico na linguagem.

    @Yoshima
    “O que é mais fácil? Tornar um Javeiro pragmático ou tornar um PHPeiro mais controlado?”

    Essa é uma pergunta crucial, a resposta pra mim é muito clara. Quem acreditar estar no topo nunca vai achar que precisa descer ou andar pra lugar nenhum.

  31. Pingback: Débito Técnico » Blog Archive » O Mercado está mudando? (turmas de julho da Aspercom)

  32. Iperfly disse:

    Buenas pessoal.
    Trabalho com PHP.
    Porem na minha opinião essa coisa de ficar falando Java é isso, PHP é aquilo, RoR é aquele, e .NET é o Cara…putz. Toda linguagem de programação tem coisas boas e ruins, até pq oq é bom pra mim não necessáriamente é bom pra vcs. Vejam só o exememplo.

    “Sou desenvolvedor Java. Vem um futuro cliente me procurar para desenvolver uma aplicação em C, o que eu faço manda ele procurar outro pq não gosto de C? Fala serio.
    Mesmo se eu não souber C ou odiar C, vou ouvir oq ele precisa, verificar quanto ele esta disposto a investir, fazer um orçamento digno, com um valor que seja lucrativo pra mim, e fechar negócio.”

    Ai muitos de vcs devem estar pensando esse cara é louco. Ja que pelo ponto de vista lógico, se não gosto de C não sei praticamente nada de C. Ai que entra a questão, será que realmente vale a pena perder nosso tempo que falando mau das linguagens de programação, ou seria melhor ampliarmos nosso network(rede de contatos) com a mais ampla gama de desenvolvedores e afins?

    É isso ai. Espero não ter ofendido vcs.
    Abraço a todos.
    Bom final de semana.

  33. Marco Antonio disse:

    Rodrigo,

    Eu compreendi perfeitamente o que você quis dizer. Eu não sei o que acontece, mas infelizmente existe na nossa área um percentual muito alto de egocêntricos que se auto denominam mestres e que saem vomitando certas modinhas como se fosse verdade absoluta. O pior é que esses pseudo-mestres tem seguidores (geralmente pessoas com pouca experiência, sem humildade e principalmente sem bom senso) que saem multiplicando esse vomito por aí. O mais incrível é que isso nunca vai acabar. Desde 1993, quando comecei, tenho topado com esses tipos sempre. O que posso falar é que não se chateie com a comunidade e nem com a tecnologia Java por isso. Lembre-se que historicamente tudo o que se populariza demais corre o risco de ter o seu entendimento desviado ou mal interpretado.

    Sei que esse post é antigo mas quis deixar minha opinião mesmo assim.

    Aproveitando a oportunidade tenho estudado, refletido e pesquisado muito sobre arquitetura ultimamente. É sempre um grande desafio desenhar uma arquitetura adequada as necessidades do projeto, e seus artigos tem servido fonte de conhecimento pra mim.

    Parabéns e muito obrigado.

  34. Wescley Francisco Costa disse:

    @Rodrigo, blz?

    Eu to estudando java faz quase dois anos. tirei a SCJP e agoro estudo para a SCWCD, porém infelizmente ainda não trabalho com java e sim com produto antigo da MS, vendo suas criticas a algumas coisas da comunidade (que eu achava que tornava ela diferente para melhor das demais) eu começo a questionar-me: Vale a pena investir em Java? Eu ainda acredito, porém já penso em estudar outras tecnologias como Rails por exemplo

  35. Rodrigo Yoshima disse:

    Wescley, o problema é a comunidade e não a linguagem. Java hoje é mainstream e digo para você que teremos ainda MUITOS projetos JAVA. Eu ainda tenho muitos projetos Java e vejo que isso não vai mudar tão cedo.

    Porém, como conselho, estude outras coisas. Hoje vejo que JAVA, .NET e Ruby vão tomar o cenário (já estão tomando), então, pra quê fechar portas? Aprenda TUDO.

  36. Bjornn Borg disse:

    Muito legal esse artigo.
    Realmente já encontrei muitos projetos com trocentas camadas e em cada uma usando um DTO diferente. Realmente desnecessário.

    E uma outra coisa que concordo é com relação à otimizações prematuras. Sou totalmente contra tentar prever problemas e tentar ser perfeito. Acho melhor aplicar a teoria dos 80/20, onde com 20% do esforço se consegue 80% do benefício.

    Abraço.

  37. Mustang disse:

    Como dito, Java tem muitos problemas, mas dificilmente está estagnado como muito acham.

    Grails é uma excelente prova disso. Não é revolucionário como Rails mas evolucionário: melhorando a stack, focando em produtividade, agilidade e incorporando a filosofia e melhores praticas do RoR, Django, Smalltalk, etc…

  38. Morsello disse:

    Rodrigo, concordo 100% com todas as colocações.

    Mas particulamente com as camadas e camadas de abstrações em volta de modelos anêmicos. Prá que tanta camada se só se tem getters e setters com XML de cola? Só pode ser para gastar tempo e parecer que se trabalha em algo importante.

    Mas PHP e Ruby vão te fazer lembrar do por que se inventaram os compiladores e debuggers. Gastará seu tempo aí.

    Para sua sanidade, recomendo pensar seriamente em aderir à comunidade dos G3 (Groovy+Grails+Griffon).

    E´ o caminho mais suave para quem já está no Java World.
    E de quebra manter-se com o Spring, o Hibernate e o Tomcat.

    Recomendo. E como a comunidade ainda é pequena, tem poucos dogmas.

  39. Abraao disse:

    Eh por isso q amo C/C++ :D

  40. Pingback: VRaptor3: o framework Java mais CoC que eu já vi… | Engenharia de Software - Melhores Práticas/Patterns

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>