Excesso de frameworks = excesso de complexidade

Bem, vamos lá. Acho que esta seção é a mais adequada.

Estamos passando por um momento estranho no mundo java ee principalmente. Existem N ou N+1 frameworks, a maioria deles faz a mesma coisa que o outro porém este se julga melhor que os anteriores por estou ou aquele motivo.

Poucas ferramentas neste mar de frameworks de nomes bonitos e que prometem fazer muito e deixar o nosso trabalho mais fácil, pouquissimas realmente cumprem o que prometem. É o caso do Hibernate, Struts (porque não?), Spring e mais uma meia dúzia. O resto é coisa de gente que estava sem o que fazer ou resolveu tentar a sorte, fazer um framework conhecido e quem sabe, quem sabe mesmo ganhar alguma coisa com isto.
É o caso dos brasileiros que andam fazendo framework mvc que promete fazer muito… no fim das contas, eles não estão trazendo nada de novo, simplesmente tentando reinventar a roda.

A curva de aprendizado está aumentando, a quantidade siglas também, no fim das contas, o nosso trabalho está mesmo ficando mais fácil? Iniciativas como o Ruby on Rails poderão quem sabe tomar o lugar desta sopa de letrinhas que se transformou o mundo Java EE?
E a compatibilidade entre essas ferramentas como anda? Até agora estou apostando uma grana com quem conseguir integrar o ajax4jsf com o sitemesh, duas ferramentas por sinal muito boas. Integrar estes dois sem fazer uma gambiarra parece muito complicado, a não ser que surja outra versão.

Já é hora de parar pra pensar, temos muitas ferramentas, mas a maioria não fala entre si e não são 100% integráveis. Nosso trabalho está ficando mais produtivo? Os frameworks estão cumprindo mesmo com esta promessa? Ou as ides que ficaram melhores? Isto tudo é muito discutível.

Cara, acho uma visão interessante.

Pra dizer a verdade apóio que tenhamos frameworks diversos no mercado. Isso faz com que cada vez mais tenhamos boas ferramentas para trabalhar e que se aprimoram a cada dia.

Mas também concordo plenamente, a integração é crucial em todas as situações.

A cada dia, a área de TI tem trabalhando mais fortemente com o conceito de integração. E por que não trazer isso para uma camada mais a baixo de nosso dia a dia.
Talvez inclusive facilitaria a própria integração de aplicações também, quem sabe né.

Até…

Vou tentar ser o menos mal-educado possível.
Porque muda-se processos? Só por diversão? Ou é porque algum dia você teve uma necessidade e o processo não lhe satisfez? Se você não acha uma ferramenta mais adequada, cria-se uma. E é o que os brasileiros estão fazendo. Reinventando a roda? Quanto tempo você estudou esses frameworks que você tanto critica? Ou você estudou pouco ou nada. Hibernate, Struts, Spring e mais a meia dúzia que me disses te satisfaz? RoR também? Criticas compatibilidade de frameworks mas os mesmos frameworks que cita(JSF, ajax4jsf, sitemesh) não são compatíveis entre si, sendo que os frameworks dos brasileiros tem uma compatibilidade muito boa com outros frameworks bem conceituados ( quais? Estude e veja, oras! ).

Sinceramente, acho esse seu comentário mais um desabafo de alguém que não conseguiu avançar muito, e enxerga tudo a mesma coisa. A curva de aprendizado aumenta de acordo com a complexidade do que se cria, não da quantidade de alternativas disponíveis para se criar. Consegues afirmar que as coisas ficariam mais fáceis ou melhores se só tivesse 1 ou 2 frameworks disponíveis?

Cansei, até!

[quote=maquiavelbona]Vou tentar ser o menos mau-educado possível.
Porque muda-se processos?
Só por diversão? Ou é porque algum dia você teve uma necessidade e o processo não lhe satisfez? Se você não acha uma ferramenta mais adequada, cria-se uma. E é o que os brasileiros estão fazendo. Reinventando a roda? Quanto tempo você estudou esses frameworks que você tanto critica? Ou você estudou pouco ou nada. Hibernate, Struts, Spring e mais a meia dúzia que me disses te satisfaz? RoR também? Criticas compatibilidade de frameworks mas os mesmos frameworks que cita(JSF, ajax4jsf, sitemesh) não são compatíveis entre si, sendo que os frameworks dos brasileiros tem uma compatibilidade muito boa com outros frameworks bem conceituados ( quais? Estude e veja, oras! ).

Sinceramente, acho esse seu comentário mais um desabafo de alguém que não conseguiu avançar muito, e enxerga tudo a mesma coisa. A curva de aprendizado aumenta de acordo com a complexidade do que se cria, não da quantidade de alternativas disponíveis para se criar. Consegues afirmar que as coisas ficariam mais fáceis ou melhores se só tivesse 1 ou 2 frameworks disponíveis?

Cansei, até![/quote]

Se está levando para o lado pessoal esquece de discutir comigo então. Se você é xiita por isto é problema seu.

O fato é: a curva de aprendizado está aumentando, Java não está mais produtivo que antes, eu falo da linguagem e dos padrões, não de IDE. As tecnologias estão aumentando em complexidade e os frameworks estão sendo ineficazes, a maioria, em cumprir o que um framework deve fazer:

  1. Ser produtivo.
  2. Melhorar o desempenho do processo de desenvolvimento.
  3. Encapsular complexidade.

Alguns conseguem, outros só chovem no molhado. Eu penso o seguinte: um framework não deve servir só pra encher linguiça nas páginas da java magazine, ele deve realmente ter utilidade. A maioria não serve pra muita coisa. Você fica dias pesquisando coisas simples e porquê? Porque tem muitas opções que deveriam servir, mas nenhuma serve. O projeto atrasa, os custos aumentam e o cliente fica nervoso porque vê seu dinheiro ir embora nessas coisas. Acho que metade dos frameworks atuais deveriam ser eliminados. É coisa de gente que não tem o que fazer.

Vou dar a visão de quem hoje é obrigado a trabalhar com um só framework proprietário (ASP.NET):

Adoro ter opção…
E já fiz a minha para JAVA: JSF + JPA + Spring.
Vou batalhar nisso um tempo e ver.

Mas quero ver o Menta e o VRaptor também, mesmo porque, me parece que são conceitos toltamente diferentes (não sei só li a respeito).

Nada como poder escolher e te-los gratuitamente.
Meu único medo era continuidade e suporte da ferramenta… e já estou perdendo :wink:

Concordo em partes,

Acho que, realmente, estava (eu disse estava) ficando muito complicado utilizar um framework. Como o struts e o hibernate 2, e os seus zilhões de XML e etc etc etc.

Mas, depois do RoR, muita coisa mudou na comunidade java, e, na minha opinião, os frameworks estão ficando mais fáceis de usar e com menos configuração. Como é o caso dos (brasileiros) Mentawaii e Vraptor, e até mesmo o Spring MVC e Hibernate 3 (com Annotations).

Acho que estamos no caminho certo.

Minha opinião.

Falow.

[quote=spark]…
Se está levando para o lado pessoal esquece de discutir comigo então. Se você é xiita por isto é problema seu.

O fato é: a curva de aprendizado está aumentando, Java não está mais produtivo que antes, eu falo da linguagem e dos padrões, não de IDE. As tecnologias estão aumentando em complexidade e os frameworks estão sendo ineficazes, a maioria, em cumprir o que um framework deve fazer:

  1. Ser produtivo.
  2. Melhorar o desempenho do processo de desenvolvimento.
  3. Encapsular complexidade.

Alguns conseguem, outros só chovem no molhado. Eu penso o seguinte: um framework não deve servir só pra encher linguiça nas páginas da java magazine, ele deve realmente ter utilidade. A maioria não serve pra muita coisa. Você fica dias pesquisando coisas simples e porquê? Porque tem muitas opções que deveriam servir, mas nenhuma serve. O projeto atrasa, os custos aumentam e o cliente fica nervoso porque vê seu dinheiro ir embora nessas coisas. Acho que metade dos frameworks atuais deveriam ser eliminados. É coisa de gente que não tem o que fazer.[/quote]

Não estou levando para o lado pessoal e se me achas xiita, problema…
Java está se estruturando muito rápido, abraçando conceitos e funcionalidades que poucas linguagens conseguem competir em tempo tão curto. Quanto tempo o C++ demorou para ser o que é agora? Compare com o Java para ver o que cada um tem e o tempo relativo.
Frameworks são produtivos, melhoram o desempenho e encapsulam a complexidade quando sabes o que procuras. Não serve para muita coisa ou não serve para você? Passar dias pesquisando é importante, senão como vai definir o que é melhor para algo? De ouvir alguém falar? Será que você chega para o seu chefe ou para o seu cliente e fala que algo é melhor porque alguém te disse que é? Nem preciso dizer o que eles vão responder.
Metade dos frameworks atuais? Quais? Com que critérios? Ficaria o Struts que é baseado todo em XML ao invés de um frameworks baseado em convenções? Hibernate ao invés de JDO porque é mais conhecido? ADF ao invés de MyFaces porque é mantido por uma corporação?
Frameworks não são criados para encher páginas de revista e sim fazer algo que não existe ou melhorar o que já é consagrado. Mais alternativas não complicam, na verdade facilitam encontrar uma solução. E se algo que quisesses fazer não existisse? Farias um framework para aquilo. Mas alguém não gostou de como foi implementado, faria outro, geraria uma diversidade útil. Framework não é album de figurinha que se cria para ser bonito, cria-se para suprir necessidades.

Até!

Isso é uma vantagem e desvantagem

Para os iniciantes o monte de siglas e frameworks assusta mesmo (eu sei eu me assustei). Depois com o tempo vc (caso não tenha desistido), passa a ver cada framework de forma mais crítica e poder escolher melhor.

O fato de terem vários fazendo a smesmas coisas acho positivo, mas mais q seja a mesma coisa cada um faz de uma forma diferente, no mínimo serve para ver como resolver o mesmo problemas de formas diferentes e se for uma idéia boa, ela pode ser adotada nos principais q estarão evoluindo … é praticamente um ecossistema a plataforma java.

Mas para os principiantes é o preço a se pagar por uma plataforma assim.

[quote=gbmesso]Vou dar a visão de quem hoje é obrigado a trabalhar com um só framework proprietário (ASP.NET):

Adoro ter opção…
E já fiz a minha para JAVA: JSF + JPA + Spring.
Vou batalhar nisso um tempo e ver.

Mas quero ver o Menta e o VRaptor também, mesmo porque, me parece que são conceitos toltamente diferentes (não sei só li a respeito).

Nada como poder escolher e te-los gratuitamente.
Meu único medo era continuidade e suporte da ferramenta… e já estou perdendo ;)[/quote]

Bem…se eu tiver que escolher, já que trabalho com Java e .NET, escolheria .NET, o tempo que eu gastaria aprendendo N Frameworks para trabalhar com J2EE eu uso para sair na balada e pegar a mulherada, ou jogando bola, ou praticando algum esporte…enfim, cada um faz o que quer com o tempo disponivel…questão de gosto pessoal… :slight_smile:

Acho que o problema não está na diversidade de frameworks, mas sim em ter o conhecimento necessário para escolher qual é o mais adequado para sua aplicação.

Os frameworks não fazem parte da especificação Java EE. Se você quiser menos opções, use apenas o que está na especificação. É claro que por isso suas aplicações podem ficar “ultrapassadas”. Imagine se todos utilizassem Entity Beans e EJB’s para tudo. Hoje há frameworks como o Hibernate e o Spring que contornam muito bem os problemas encontrados com as tecnologias citadas, e que inclusive tiveram suas idéias principais incorporadas na nova especificação Java EE. Um dos papéis da comunidade é justamente servir de termômetro para saber se o que está na especificação está sendo bem aceito.

A pro-atividade da comunidade java é tida como uma das mais interessantes características da mesma. A comunidade, sempre que se vê diante de uma solução não ideal, cria a sua própria solução. Foi assim com o Hibernate e muitos outros frameworks. Isso é um ponto positivo.

Conclusão: cada framework tem um objetivo. Ou é para MVC, ou para persistência, etc. Escolha o melhor frame para sua necessidade. Um ponto forte dos frames MVC nacionais é a facilidade e rapidez no desenvolvimento. Se esse é um quesito para uma aplicação sua, por que não utilizá-los?

:wink:

Eu acho melhor você ter para o seu chefe

  • Temos 20 opções de framework para ver se resolve o nosso problema.
    do que ter
  • Temos 2 opções de framework que bem possível que não resolva o nosso problema.

Solução para a última?

  • Vamos criar um novo framework!
  • Para que? Colocar mais um? Dificultar cada vez mais? Vamos mandar um request for enhancement para os criadores do framework X e esperar que eles façam algo.

O resto já dá para imaginar.

Até!

[quote=clodoaldoaleixo]
Bem…se eu tiver que escolher, já que trabalho com Java e .NET, escolheria .NET, o tempo que eu gastaria aprendendo N Frameworks para trabalhar com J2EE eu uso para sair na balada e pegar a mulherada, ou jogando bola, ou praticando algum esporte…enfim, cada um faz o que quer com o tempo disponivel…questão de gosto pessoal… :)[/quote]

Mas você não precisa aprender N Frameworks para trabalhar com J2EE. Se você quiser, pode trabalhar com Struts, por exemplo, a vida inteira :shock: e sair na balada etc etc ! As pessoas estudam vários frameworks porque querem/buscam uma produtividade/facilidade maior de fazer as coisas, coisa que você não tem muita opção com .NET. Se amanhã eles resolverem adotar um “Struts.Net” ou outra “Porcaria.Net”, você vai ter que usar aquilo e pronto, mesmo que sua produtividade não seja tão boa.

ASOBrasil

Para quem não concorda com o que eu disse vou deixar uma pequena reflexão.

Imagine que você está em um projeto X e precisa aprender algo AGORA. Exemplo, Facelets e usar ajax4jsf.

Experimenta procurar no google, usando tomcat 5.5 que é o server mais básico que existe, tenta rodar. O tempo que você irá levar até reunir as informações que precisa, o tempo resolvendo bugs malditos e mais um monte de outros problemas é o que conta.

Não estou dizendo que precisamos saber todos os frameworks, mas hoje em dia até mesmo um ou outro está dificil de se utilizar. Não estou exagerando.

Realmente, para mim isso é falta de planejamento. Todo projeto, na fase de concepção, já começam a estudar as tecnologias a serem utilizadas e a viabilidade. Se não é viável aprender ou utilizar, estudam outra. Se só eu não soubesse algo, aí quem está “errado” sou eu, mas se é uma tecnologia nova para toda o grupo, não existe essa de aprender agora.

Até!

Ter opções não é o problema, o problema é fragmentar o mercado com zilhões de opções redundantes. Quando algo novo surge ele deveria olhar em volta e pensar em evoluir o que já existe, não apenas criar uma base de código toda nova, com uma maneira de configurar e utilizar toda nova, só porque seu projeto permite utilizar alpiste no lugar de arquivos de configuração.

Bons frameworks (e o struts Action não é um bom framework, só para deixar claro :P) são criados exatamente para serem extensíveis. Ao inventar uma funcionalidade X qualquer você não deveria eescrever todo um framework e sim extender os disponíveis.

Então, respondendo, sim, existe muita redundância e o mercado está muito fragmentado com diversas opções que fazem a mesma coisa do mesmo modo. Claro que existem exceções, mas na maioria das vezes o que as pessoas querem é ficar ricos e famosos com um framework novo que faz o mesmo que o anterior faz, só que diferente.

A propósito, quanto ás respostas mal-educadas acima:

Isso aqui é um fórum. Se toda vez que alguém levantar uma idéia nova for recebido deste modo o debate acaba e isso vira cada vez mais helpdesk 24 horas gratuito.

Não sei como responder a esse seu post depois de ler esse seu outro post aqui: http://www.guj.com.br/posts/list/52386.java

Também quanto a esse seu comentário aqui:

[quote=“Spark”]É o caso dos brasileiros que andam fazendo framework mvc que promete fazer muito… no fim das contas, eles não estão trazendo nada de novo, simplesmente tentando reinventar a roda.
[/quote]

Me sinto no direito de dizer que vc realmente não vai conseguir chegar a lugar nenhum tentando desmerecer o trabalho dos outros por puro recalque. Deixe esse recalque de lado e vá estudar. Seria o melhor que vc faz, não pra mim, mas para vc mesmo.

Sendo bem objetivo:

  • Quantos idiomas existem no mundo? Quantos idiomas vc fala? Vc está preocupado com a complexidade do idioma mongol? Não né… Ok…

  • Quantas linguagens de programaçao existem? Quantas vc sabe? Vc está preocupado com a complexidade da linguagem E (http://en.wikipedia.org/wiki/E_programming_language) ??? Não né… Ok

  • Estamos falando de frameworks web ou frameworks no geral? Hibernate e Spring não são frameworks web.

  • Struts não é um bom framework. Se fosse o Struts 2 teria algo do Struts 1 e como podemos ver não há praticamente nada. O Struts 1 foi jogado no lixo e o Struts 2 é um refactoring do WebWork.

  • Se vc acha que Configuração Programática, Sticky Actions, Configuração por Script (beanshell, groovy), só para citar algumas, não são inovações, ok…

  • Se vc acha que simplicidade é algo não muito importante para um framewrok web, então ok…

  • Se, como vc mesmo disse:

[quote=“Spark”]Mentawai também deve ser outra droga, todo framework que se preze usa xml…
[/quote]

vc deve realmente achar que todo framework que se preze deve usar XML, principalmente para validaçao… Então ok…

Já é a segunda ou terceira vez que vc bate nessa tecla, ficando claro o seu sentimento dúbio e recalcado. Quer debater, quer argumentar, o GUJ está aberto pra vc. Se vc acha que alguns brasileiros estão perdendo tempo fazendo frameworks web, tudo bem. Basta ignorar e usar outra coisa. Struts 1 como vc falou. Só peço que contenha a sua revolta e/ou recalque.

Mais um vez procure estudar e leia bastante. Ninguém nasce sabendo…

Quanto a existência de muitos frameworks web isso é bom e praticamente força com que os próximos que vierem a surgir tenham que ser bem simples e com uma curva de aprendizado muito baixa. Ninguém hoje em dia tem tempo e/ou quer perder meses aprendendo mais um framework web. A simplicidade ao extremo se tornou um pré-requisito básico, coisas que ao meu ver nunca foram fornecidas por webwork, struts, spring mvc, jsf, etc.

Há outras pessoas que compartilham da mesma opinião que a minha, dá uma olhada só:

Fiquei curioso… :slight_smile:

Que promessa vc espera de um framework ? Por favor dê exemplos.

O que vc espera de uma ferramenta 100% integrável? Estamos falando de ferramentas pagas ou open-source? Por favor dê exemplos.

[quote=spark]
Já é hora de parar pra pensar, temos muitas ferramentas, mas a maioria não fala entre si e não são 100% integráveis. Nosso trabalho está ficando mais produtivo? Os frameworks estão cumprindo mesmo com esta promessa? Ou as ides que ficaram melhores? Isto tudo é muito discutível.[/quote]

Minha opnião:

Vejam o exemplo do Linux, porque depois de mais de uma década, ainda existem mais de 100 distribuições (sem falar nas comerciais) e mesmo assim o Linux ainda é esmagado por completo pelos outros SO?

Eu vejo isso pelo fato de 80% dessas 100 dsitros ai, fazerem exatamente a mesma coisa, mas com um nome diferente, com um ícone diferente por alguém não gostou e mandaram ele criar a própria distro.

Com os frameworks Java EE aconteceu a mesma coisa, todo mundo esta criando o seu framework, pra fazer exatamente o que algum outro já faz, mas que em alguns pontos acredita-se (e muitas vezes realmente fazem) pode-se fazer algo melhor.

Ai denovo, a liberdade virou libertinagem.

Exatamente o conceito que o Shoes falou, será que a granularidade não está muito alta?
Será que não seria melhor ter poucas opções, mas com mais possibilidades de extendê-las? de se tornarem masi flexivéis a nossas necessidades?

Vejo muita gente ai falando que escolher o que melhor se adequa e tal, mas de todos aqui, são pouquíssimos que tem esse poder de escolha, o que realmente ocorre é a pessoa sair de um projeto com Menta, e cair num projeto com Spring 2, e depois de 3 meses, a consultoria alocar o cara num projeto de Struts, ou com SuperUltraNewFWEE, ou seja, querendo ou não, os desenvolvedores vão ter que se interar de todas as novas soluções que vão aparecendo e tomando uma certa “popularidade”.

Por isso entendo quando alguém fala que escolheria fazer em .Net, mesmo não atendendo a contento. Não estou querendo dizer que temos que ficar parados numa única solução, mas tem muita gente reinventando a roda sim em Java EE, muito framework com uma ou outra funcionalidade a mais, que poderia muito bem ter sido adicionada num framework existente.

Acho que é isso.

Muitas opções sempre irão existir, não há como impedir isso a não ser que vc esteja em Cuba… Reclamar da quantidade de opções num mundo globalizado e aceleardo como hoje é chover no molhado…

Escolher uns 5 dentre o bolo e desses 5 escolher o que melhor lhe agrada. Struts, Spring MVC, Tapestry, Mentawai, VRaptor, JSF, etc fazem a mesma coisa mas de maneira bastante diferente e particular.

Se vc é consultor e tem que manter/cuidar de um projeto já pronto com um framework diferente a cada 6 meses, realmente sua vida pode ser complicada. Ou se vc olhar pelo lado positivo, quem melhor que vc poderá decidir pelo framework web a usar num projeto novo?

Algumas vezes pode ser bem mais vantajoso reescrever um projeto novamente usando as ferramentas e os frameworks certos ao invés de retalhar/concertar um projeto zoneado. Eu sugeriria isso para o cliente e garantiria satisfação, mesmo que eu tivesse que trabalhar um pouco mais na migração.