Sim… minha aplicação esta quase desta forma.
Hoje tenho minhas classes Web que implementam uma interface AcaoWeb que é chamada pelo FrontController, e depois uma camada de Service e outra de DAO, além dos objetos de negócio que interagem diretamente com os services/daos também, além de conterem suas regras de negócio especifica!
Toda a parte dos objetos de negócio (DDD) bem como service e dao são simples POJOS… e não estão acoplados a nenhum framework (no caso dos DAOS estou utilizando JDBC com Stored Procedures, pois no banco de dados não há nenhuma permissão para select, update ou delete dinâmicos)…
A grande vantagem é a facilidade de compilação e reaproveitamento destas classes em Desktop e Web… pois a versão Desktop é client server (acredite mas tem telas que cospem milhares de registros em uma tabela e realmente o usuário perde produtividade com o uso de paginação, pois isso o desktop usa diretamente os POJOs, sem passar por Webservice, embora tenham também casos que estes POJOs são chamados a partir de webservices).
Poderia trocar meu front controller e ações web pelo Menta… já tentei trocar pelo Vraptor e não deu certo, pois precisa de algumas anotações para fazer a DI e estas anotações tornavam os DAOs dependentes do Vraptor e precisava dele para compilar também o aplicativo Desktop… começou a dar problema com outras dependências… enfim vi que iria mais atrapalhar do que ajudar…
Acredito que com o Menta não teria este problema, pois toda a parte de DI do meu sistema esta baseada em Setter Injection… e toda a configuração já é programática…
Acredito que o beneficio seja aproveitar as menta tags… além de não ter que evoluir mais o Front Controller, e se tiver alguma necessidade muito especial usar servlet diretamente.
Já usei Struts 1.x, JSF 1.x e tentei usar o VRaptor 3 algumas vezes, mas a quantidade de problemas que deu com as dependências me tiraram do sério… É mudar a versão de um jar que pronto, o negócio para de funcionar…
Enfim, eu simplesmente não acredito em frameworks Web em Java, pois nunca tive uma experiência plenamente boa e produtiva. Na primeira vez q vc precisa fugir um pouquinho do que qq framework que já usei faz, pronto, é aquela loucura. Ou seja, uso Servlets, JSPs, JSTL e algumas custom tags que criei… Desencanei dos frameworks há um bom tempo (vide as versões que usei). Podem me chamar de arcaico, contra produtivo, etc., mas ainda não consegui achar algo que realmente me atenda. Minha última empreitada foi testar JSF 2 com o Primefaces. Até que gostei, mas sinceramente, não sei se adotaria.
Vou experimentar o Menta para ver se mudo minha concepção sobre isso
[]'s[/quote]
++
O tal do controle 100% na mão, se customizado (porque ninguém quer levar 1 dia pra fazer um CRUD), vale qualquer esforço extra.
Eu vou dar um motivo bem básico contra frameworks Java Web: no mercado atual crescimento geralmente ta associado a mudanças de empresa. E tudo aquilo que vc gastou imensas horas pra aprender de especifico do framework (JSF, VRaptor, Menta, ADF, Struts, JCompany(mais conhecido como JLixo), Spring, Seam, pqp que mundo prostituto) vai pra VALA.
Não sou tão radical… acho que tudo depende da necessidade… as vezes fazemos até mesmo sistemas simples com data marcada para morrer…
Mas concordo que quando estamos fazendo algo complexo… que vai sempre estar evoluindo… e queremos uma vida longa ao mesmo… frameworks acabam atrapalhando a longo prazo!
Hoje vejo sistemas que desenvolvi em 2001/2002 com POJOs muito mais saudaveis do que sistemas desenvolvidos com Struts anos depois…
Mas acho que tudo depende… acredito que para determinadas coisas por exemplo, JSF é muito legal e até mesmo o melhor caminho!
Estava pensando em testar o play, mas nesse caso vou testar o menta primeiro. Vamos ver o que vai ser, pois o play se diz muito simples de programar, quero ver será o mesmo com o menta.
Já eu sou contra esse argumento, devido ao princípio que hoje precisamos de produtividade , um framework já foi desenvolvido para fazer coisas que todas as aplicações precisam, como: Autenticação , Autorização , Autitoria , Validação , Controle de Transações, Internacionalização, IoC (Invesão de Controle), etc… todos esses são aspectos que agregam valor (a nível técnico) ao software.
Pra q ter que implementar isso, perder quem sabe ANOS evoluindo padrões pra fazer esse tipo de coisa, e o Cliente onde fica ? acho que o objetivo de fazer software é ter clientes, e na grande maioria das vesses ganhar dinheiro (muito dinheiro 8) ) … acredito que o cliente não vai querer pagar também pelo “framework” que você desenvolveu… muito menos esperar você fazer ele…
Tive a experiência de participar do desenvolvimento de um framework próprio (por uma empresa privada) , alem dos motivos que falei acima, não é uma boa se você tem um equipe e funcionários, pelo fato de que , se você contrata funcionário com experiência, de “nada” vai adiantar a experiência que ele tem pois ele vai quer que aprender tudo que foi “inventado” nesse framework , e no caso do funcionário que sai ele vai sair viciado e com a sensação de que aquele conhecimento não vale muito… (baseado em fatos reais … =] ), sem falar que se der uma erro só quem fez vai saber resolver… muitas vesses não terá documentação… e não será testado o suficiente
Quando se usa uma framework já conhecido no mercado (Etc… para n citar nomes), ele tem documentação (que foi o motivo desse post !) e tem uma comunidade … a integração de um novo membro na equipe, e rápida e produtiva … sem ter que alocar tantos recursos para treinamento e capacitação, e também já é uma solução amplamente testada, pois muita gente usa…
Um problema que vejo é que muitos pensam no framework como a parte MAIS IMPORTANTE do software a ser desenvolvido, esperam que o framework vá fazer
aquela mágica e desenvolver pra ele… meus amigos por favor não pensem assim, a parte mais importante é aquela que você desenvolve… Procure estudar padrões de projeto, implementar uma arquitetura bacana, e estudar o problema que seu software vai resolver, seja um especialista nisso… só assim você vai ganhar dinheiro…
Meu amigo… seja PHP / JAVA / Ruby / Framework A / Framework B … o mais importa é a solução não a tecnologia… Seja o melhor na tecnologia que você escolher… e ela será a melhor pra você…. O Facebook calou a minha boca por ser desenvolvido em PHP e ter um desempenho fora de série…
Sou fan de Java, pela liberdade… posso desenvolver para o “capeta”…, pela arquitetura bem bolada , pela sua postura de padronização e pela maturidade da plataforma e soluções … (infelizmente so não para o arduino q estou gostando muito :? )
E finalmente sobre o mentawai, acredito que é um framework bem maduro, tenho vários projetos comerciais implementados nele, acho que uns 7 …,
não me deixou a desejar em nada até agora… e aquela coisa … é Open-Source amigão, não gosta ou ta faltando algo ? baixa o fonte e altera killer bytes…
manda pra equipe do mentawai pra contribuir tambem,
Vale apena estudar, estuda outros e comparem, veja qual é o melhor pra você, framework também é questão de gosto…
Pra min: “Mentawai é muito simples, poderoso e produtivo”
não conhecia o projeto e vi que ele tem várias features.
mas se pode me responedr se ele é mais simples que o apache click ? [/quote]
O Click é component-based, uma abordagem bem diferente então fica difícil de comparar. Mas eu sou suspeito para opinar. Recomendo dar uma olhada no site para ver como as funcionalidades do Mentawai são implementadas e comparar você mesmo. O site está bem organizado e tranquilo de entender. A documentação está em português e inglês.
OBS: O site do Mentawai foi feito utilizando o http://www.kawaiwiki.org que é feito com o Mentawai.
[quote=johnny quest]Acredito que o mentawai deva ser um excelente framework,
mas tenho algumas dúvidas…
Existe alguma empresa que investe, documenta e melhora a cada dia o framework ?
[/quote]
Como todo projeto open-source existe pessoas que investem o seu tempo vago para melhorar o framework a cada dia. Eles usam o framework em diversos projetos e é de interesse deles que o projeto evolua. Também recebemos feedback de pessoas que não são da equipe mas usam o framework e colaboram com opiniões, sugestões e patches.
A grande maioria dos projetos open-source não oferecem essa garantia e por isso mesmo são open-sources, ou seja, a empresa é livre para modificar o código daqui a 10 anos caso queira ou necessite.
Uma nova versão sem documentação é uma versão inexistente na prática. Se um projeto lança uma versão nova e não documenta ninguém vai usar.
Tudo tem seus prós e contras. Acho que a alternativa seria investir em algo de uma grande empresa como Oracle e Microsoft. Por exemplo, vc pode pagar zero por mysql ou pagar uma grana preta pelo Oracle e ter a Oracle por trás para te garantir. É uma questão de estratégia, gosto e grana disponível.
Vou experimentar. Preciso pensar em um projeto pessoal para por em prática.
Meu conhecimento de Java é somente acadêmico e algumas coisinhas pessoais bem simples, profissionalmente sempre atuei com plataformas Microsoft, mas estou querendo migrar para Java. Uma das dificuldades de alguém nessa posição de querer entrar no mercado Java sem ser via estágio pois já possuo alguns anos no mercado, é justamente essa epidemia de frameworks, e muitas vezes o empregador busca uma pessoa com conhecimento de framework, muitas vezes deixando os skills de programação em um segundo plano, ou seja, buscam um configurador e não um programador.
Migrar de C# para Java deveria ser quase transparente, falando puramente em código, mas justamente por isso que citei acima vira quase que plataformas totalmente diferentes.
O fato da coisa ser 100% via código pra mim já é um grande passo, odeio XML, o pouco que trabalhei com configurações em XML sempre deu dor de cabeça, mas concordo, é tudo uma questão de fazer a coisa bem feita.
Na verdade não usaria EJB 2, mas com certeza utilizaria o EJB 3.0 ou o EJB 3.1, pois foi uma evolução de uma tecnologia no decorrer do tempo, baseada no JCP e no Spring
e tende a somente melhorar no futuro.
Esse foi o ponto que perguntei, quem me garante que a tecnologia implementada terá uma evolução natural no decorrer dos anos, e não ficará depois de um determinado ponto
parado no tempo. Falo isso porque estou cansado de pegar projeto legado, com frameworks open source, que foram descontinuados e ter que se virar sem documentação, suporte ou ser vivo que tenha trabalhado com tal solução antes.
Muita empresa grande usou EJB1, EJB2, JSF1 e outras “especificações oficiais” e o resultado foi o que foi.
Isso é chato mesmo. Talvez seja mais um motivo para usar um framework full-stack e minimizar a salada de frameworks, tão comum no mundo Java. E mais uma razão para abraçar de corpo e alma o princípio KISS. Complexidade é o que há de pior em software development. Se o framework for simples e o mais alto nível possível (abstração alta) o cara consegue entender o que está acontecendo. Já se para ir de um ponto ao outro vc tem que passar por dezenas de atalhos intermediários vai ser um pé no saco. EJB e JSF começaram assim. Depois de muito marretarem e reclamarem os caras tentaram simplificar a coisa.
Eu já vi os dois lados da moeda. É realmente triste quando vc pega um sistema ou um framework onde a ZONA é tamanha e a quantidade de classes, entidades e interfaces é tão grande que vc fica de saco cheio de ter que entender aquela merda que um maluco fez achando que estava abafando. E claro: tem 90% de testes unitários.
Já eu sou contra esse argumento, devido ao princípio que hoje precisamos de produtividade , um framework já foi desenvolvido para fazer coisas que todas as aplicações precisam, como: Autenticação , Autorização , Autitoria , Validação , Controle de Transações, Internacionalização, IoC (Invesão de Controle), etc… todos esses são aspectos que agregam valor (a nível técnico) ao software.
Vale apena estudar, estuda outros e comparem, veja qual é o melhor pra você, framework também é questão de gosto…
Pra min: “Mentawai é muito simples, poderoso e produtivo”
[/quote]
Acho que vc não entendeu a argumentação.
“hoje precisamos de produtividade”
Ninguém aqui falou em trabalhar na mão pq é mais rapido que framework. E sim que vc tendo controle total, nao perderá N horas depois desvendando bugs do framework.
Também não concordo em desenvolver framework próprio. Agora se vc acha legal um mundo de desenvolvimento possuir 1 MOL de frameworks… paciencia.
“veja qual é o melhor pra você, framework também é questão de gosto”
Que ótimo que vc trabalha pra vc mesmo.
Mas a minha argumentação é qto ao mundo dos profissionais que vendem sua mao de obra pra outras empresas, e nao vendem software por si mesmo.
Que seria o exemplo de vc conseguir uma vaga pra trabalhar com Oracle ADF por 100 reais a hora.
O que acontece com seu aprendizado Mentawai? VRaptor? JCompany (daquilo que é ESPECIFICO deles)? ->> vai pro LIXO.
Quando vejo 1 profissional .NET sair de uma empresa onde trampou por anos e chegar em outra empresa MANDANDO BALA… vejo isso como evolução.
Quando vejo 1 profissional Java ter que perder um bom tempo a cada salto de empresa, vejo isso como retrocesso.
Estou falando do MERCADO e não das suas experiencias pessoais (ou traumas)
Não poderia furtar-me a dar os parabéns ao Saoj e toda a equipe do Mentawai que utilizei já em 2006 para um projeto de TCC. É verdade que era bem simplório para a época e servia para testar as capacidades do meu cluster de alta disponibilidade e balanceamento de carga. Aguentou o tranco valendo além de me poupar muitas horas.
Vou iniciar um novo projeto e estava até pensando em GWT, mas com esta notícia da atualização do Mentawai, decidi retornar.
[quote=“Flávio Reis”]
Por fim, posso relatar que o mentawai suportou cargas de trabalho enorme, utilizando o HibernateFilter, sem apresentar nenhum problema. Um AthlonXP 2600+ conseguiu atender a uma média de 700 requisições/segundo para consultas. Junto o cluster passou perto de 2000 requisições/segundo, pena eu não possuir mais clientes em meu mini-laboratório caseiro pra colocar o cluster em sua carga máxima de trabalho. Acredito que conseguiria chegar perto de 2500 requisições/segundo.
[/quote][/quote]
no entanto o que da performance ao facebook não é o frontend que é realmente feito em php e sim o backend feito em c++, java, erlang e python![/quote]
Exato, o PHP é apenas a casca do ovo, mas todo o core, que segura a fila de mensagens e tudo mais é em outras linguagens. Mesma coisa o Twitter, antes era todo Ruby/Rails, agora todo o backend é Scala, o front continuava Rails, não sei se trocaram!