Lançado Mentawai 2.5.1 ainda mais simples com site novo e documentação toda refeita e revisada!

44 respostas
S

Depois de um bom esforço estamos lançando o novo site do Mentawai. A documentação foi reescrita do ZERO e revisada. Nunca foi tão fácil fazer aplicacões web com Java de uma maneira simples, direta e clara. Acesse o site e leia a descrição abaixo:

http://www.mentaframework.org

O Mentawai é um framework web full-stack, action-based, MVC e open-source em Java criado em Junho de 2005. Desde então ele tem sido fiel à sua filosofia que é oferecer uma solução simples de alto nível para o desenvolvimento de aplicações web sem XML e Annotations, usando uma configuração programática centralizada para preparar e ligar todas as partes de uma aplicação web. Ele suporta inteiramente o princípio KISS utilizando altos níveis de abstração para exterminar qualquer complexidade. Se você não for capaz de entender ou utilizar qualquer funcionalidade do framework a culpa é do framework e não sua.

Uma das principais características do Mentawai é a sua abordagem full-stack, ou seja, você não precisa utilizar nenhum outro framework para implementar as funcionalidades recorrentes de toda aplicação web. Tudo é abstraído e fornecido pelo framework de uma maneira simples de entender e fácil de utilizar. Essa é a mesma abordagem utilizada por outros frameworks como o Ruby on Rails, Play e Riffe.

Por incentivar uma configuração programática via código Java, o Mentawai elimina a famosa programação em XML ou a Annotations Programming (também conhecida como Annotationmania) bastante comum na maioria dos frameworks Java. O Mentawai foi o primeiro framework web em Java a seguir esse caminho ainda em 2005.

Resumindo, o Mentawai oferece:

:arrow: Uma solução full-stack (completa) pra desenvolvimento web, desde IoC (Inversão de Controle), passando por autenticação, acesso a banco de dados, envio de email, validação, tags da camada de visão, Ajax, etc.
:arrow: Dedicação completa ao princípio KISS. Se não for simples e fácil então há um erro no sistema.
:arrow: Uma abordagem programática para a configuração, o que não significa que não haja convenções e padrões para tudo.
:arrow: Alta produtividade com prazer no desenvolvimento de aplicações web, para que você possa focar no seu projeto sem que o framework te atrapalhe.

Caso queira experimentar você pode dar uma olhada no quick start: http://www.mentaframework.org/mtw/Page/QuickStart/mentawai-quick-start

Caso queira ver a aplicacão de referência: http://www.mentaframework.org/mtw/Page/RefApp/mentawai-aplicacao-de-referencia

Qualquer dúvida, crítica ou comentário estamos a disposicão.

44 Respostas

M

saoj anda inspirado ultimamente… parabéns pelos projetos.

S

Quando a motivacão aparece é bom aproveitar antes que ela vá embora. :slight_smile:

Recomendo dar uma olhada no suporte de IoC do framework. Na minha opinião um dos melhores que existem: http://www.mentaframework.org/mtw/Page/IoC/mentawai-inversao-de-controle

H

Você é meio suspeito de falar né?! :lol: :lol: :lol:

Parabéns aí pela iniciativa. [=

S

Você é meio suspeito de falar né?! :lol: :lol: :lol:

Parabéns aí pela iniciativa. [=

Totalmente suspeito!!! Mas se achar um framework web que ofereca um suporte a IoC, DI e Auto-Wiring mais completo simples e transparente que o Mentawai me avise. Pode existir mas eu nunca vi…

@Override
public void setupIoC() {
 
    ioc("userDAO", JdbcUserDAO.class); // para a minha interface UserDAO eu quero utilizar a implementação JdbcUserDAO
    // (...)
}

public class UserAction extends BaseAction {
     
    private final UserDAO userDAO;
     
    public UserAction(UserDAO userDAO) {   // <==== Constructor DI: Vai receber um JdbcUserDAO aqui
        this.userDAO = userDAO;
    }
 
    // (...)
}

É simples assim. E o framework faz todo o wiring de forma automática.

R

Você poderia dar uma breve descrição do que é Configuração Programática?

Para nós mortais que não temos acesso a quase nada além do GUJ, rs.

D

Eu vou aceitar o desafio.
Preciso desenvolver um aplicativo de controle de estoque, para um ramo de atividade de intensa movimentação, com alto consumo de banco de dados, devido às idas e vindas dos produtos.
Pois bem, hoje mesmo irei baixar as libs do menta e irei desenvolver o projeto.
Vamos ver se daqui a 3 meses ele está concluído e rodando perfeitamente, sem qualquer outro framework.
Caso esteja, eu volto aqui e dou o relato e toda a informação a respeito de como foi desenvolver o projeto com o mentawai.

S

digaoneves:
Você poderia dar uma breve descrição do que é Configuração Programática?

Para nós mortais que não temos acesso a quase nada além do GUJ, rs.

Sendo bem objetivo, sem enrolar:

Num framework FULL-STACK há diversas coisas que precisam ser setadas ou configuradas. Por exemplo, IoC é bem óbvio. No Mentawai você faz isso na classe AppManager que é a tal da configuracão programática, ou seja, é PROGRAMA ou código Java ao invés de XML ou Annotation.

public class AppManager extends ApplicationManager {

    // (...)

    @Override
    public void setupIoC() {
    
        ioc("userDAO", JdbcUserDAO.class); // para a minha interface UserDAO eu quero utilizar a implementação JdbcUserDAO

       // (...)
    }
}

Em outros frameworks você faria isso via XML central ou Annotations espalhadas pelo seu código. No Mentawai a configuracão é CENTRAL e PROGRAMÁTICA. Vantagens disso:

  • Mais prazerosa e natural.
  • Menos propensa a erros pois a IDE compila e checa pra vc.
  • Auto-complete, auto-compile e refactoring e todas as sacadas do Eclipse pra Java.
  • Flexibilidade. Como vc configura 100 actions diferentes num XML ou via annotations? Com o Mentawai vc faz um for loop ou o que quiser. A configuracao está no seu comando e não o oposto.

Isso em 2005 foi uma pequena revolucão. Todos foram contra, claro. Só que hoje em dia quase todos os frameworks comecam a se render a configuracao programatica. Spring, Hibernate, etc.

Etnretanto essa não é o grande diferencial do Mentawai. É parte do diferencial mas o grande barato do framework é a:

  • PRODUTIVIDADE
  • SIMPLICIDADE
  • FACILIDADE
  • FULL-STACK
  • STAY OUT OF THE WAY APPROACH

Querendo ver a configuracao programática na prática, veja aqui: http://websvn.soliveirajr.com/filedetails.php?repname=MentaTutorials&path=%2FMentaRefApp%2Ftrunk%2Fsrc%2Fmain%2Fjava%2Forg%2Fmenta%2FAppManager.java

Veja como as actions, os filtros, o envio de email, o IoC, etc são configurados.

S

drsmachado:
Eu vou aceitar o desafio.
Preciso desenvolver um aplicativo de controle de estoque, para um ramo de atividade de intensa movimentação, com alto consumo de banco de dados, devido às idas e vindas dos produtos.
Pois bem, hoje mesmo irei baixar as libs do menta e irei desenvolver o projeto.
Vamos ver se daqui a 3 meses ele está concluído e rodando perfeitamente, sem qualquer outro framework.
Caso esteja, eu volto aqui e dou o relato e toda a informação a respeito de como foi desenvolver o projeto com o mentawai.

Não vai precisar de FRAMEWORK nenhum. Nem Spring, nem Hibernate, nem nada. Eu gosto de SQL mas entendo que muitos gostam do Hiberante, logo o Mentawai oferece um ótimo suporte ao Hibernate caso e apenas caso vc queira usá-lo.

Esse é o grande barato dos frameworks FULL-STACK como Ruby on Rails, Play e Mentawai. Tudo, tudo mesmo, foi abstraído. Vc não precisa trazer Spring, Hibernate, Log4J, commons email, file upload, JSTL, JAAS, blah, blah, blah. Com essa salada de frameworks, exterminar a complexidade e ABSTRAIR vira uma tarefa impossível.

Há vários sistemas em producao usando o Mentawai com milhares de acessos simultâneos.

D

Oi Sérgio,

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 :wink:

[]'s

S

(Alarme falso)

R

http://www.mentaframework.org

Sérgio, corre lá que o site tá fora do ar!

S

Rodrigo Vieira Pinto:
http://www.mentaframework.org

Sérgio, corre lá que o site tá fora do ar!

Pra mim funciona no firefox mas no chrome não aparece nada… Que ótimo !!! :slight_smile:

Acho que agora está ok !!! Dá uma olhada aí… Era pau no meu Chrome !!!

D

@saoj, muito legal o fw, de cara impressiona pela quantidade de recursos, é muito trabalho, e pelo que vi muito bem feito.

Parabéns.

Só um detalhe, no IoC, não seria mais legal usar Classe da interface e não a String?

@Override
public void setupIoC() {
 
    ioc("userDAO", JdbcUserDAO.class); // for my UserDAO interface, I want to use the JdbcUserDAO implementation
}
@Override
public void setupIoC() {
 
    ioc(UserDAO.class, JdbcUserDAO.class); // for my UserDAO interface, I want to use the JdbcUserDAO implementation
}
I

Usei num projeto comercial o Menta 1.13+displaytags+Jasperreports+MySQL5.0(jdbc).

Eu era muito cru em WEB, pois sempre fui desenvolvedor Swing(a qual continuo até hoje), e os conceirtos são fáceis.
Era uma aplicação que não era gigante(algumas centenas de usuários), mas em dados períodos do mês essas centenas acessavam os dados no mesmo dia gerando relatórios feito loucos.O footprint da App era baixíssimo, até o dono do server falou que o uso de memória geral era baixo da minha app.O único cuidado especial que tive foi de fazer um cache para os dados mais acessados dos relatórios, tirando isso, era puro CRUD de dados.

Se a qualidade é a mesma, recomendo o Menta para qualquer um que for desenvolver para WEB, e se tivesse um projeto novo na área provavelmente o faria. :wink:

S
daveiga:
@saoj, muito legal o fw, de cara impressiona pela quantidade de recursos, é muito trabalho, e pelo que vi muito bem feito.

Parabéns.

Só um detalhe, no IoC, não seria mais legal usar Classe da interface e não a String?

@Override
public void setupIoC() {
 
    ioc("userDAO", JdbcUserDAO.class); // for my UserDAO interface, I want to use the JdbcUserDAO implementation
}
@Override
public void setupIoC() {
 
    ioc(UserDAO.class, JdbcUserDAO.class); // for my UserDAO interface, I want to use the JdbcUserDAO implementation
}

Por isso que eu gosto e falar que é o melhor que existe, para alguém se sentir desafiado, pensar e colocar uma sugestão de alto nível como essa sua. :)

Mas acho que não, pelo seguinte:

Quando vc faz injection via construtor, o nome é IRRELEVANTE como vc muito bem notou. Mas quando vc faz INJECTION vai setter o nome é o nome da propriedade. Mas poderia também tentar adivinhar o setter pelo seu parâmetro, como é feito com o construtor. :roll:

Entretanto o que vc falou é muito certo e facilita refatoracao. String são sempre propensas ao erro. No caso de injection por construtor o nome do componente é irrelevante, pois em Java os parametros de um construtor ou método não possuem "nomes" que podem ser acessados por reflection.

Poderia haver o caso de vc ter a mesma interface e dois componentes diferentes para a mesma interface !? Daí isso que vc falou não funcionarei, certo? Mas estou pensando aqui e acho que esse caso deve ser bem raro.

Vou pensar nisso que vc falou. Realmente faz um certo sentido. Eu falei que o IoC era bom e não perfeito. Tudo pode ser sempre melhorado ad eterno. Valeu pela dica!

UPDATE1: O Spring se eu não me engando marca componentes por NOME e não por interface. A única coisa que me vem a mente aqui é que para descobri o setter apenas pelo tipo do parametro vai dar um trabalho e pode gerar ambiguidade. Por nome vc vai direto na propriedade. Mas não sei se isso é uma boa desculpa não... Vou avaliar essa mudanca no MentaContainer.

UPDATE2: Nem que eu tenha que fazer um smiples UserDAO.class.getSimpleName() por trás dos panos já seria muito melhor.

Bom, acho que depois dessa sua dica a coisa vai ficar no ponto, mas dessa vez não vou falar nada. :)

J

Amigo… eu tenho a mesma opnião que a sua… Hoje no atual sistema estou usando Servlet e também fiz um sistema próprio que estou usando Servlet (na verdade implementei um Front Controller), pois geralmente se precisa de coisas que o framework não faz…
Testei o Prime Faces e gostei bastante, mas minha opnião sobre JSF é que só serve para aplicativos web e não para sites e mesmo assim deixa a desejar em alguns pontos, pois minha opnião é que quando se utiliza o Browser, o sistema fica melhor se tiver cara de site e não o contrário… acho que tentativa de fazer sistema com cara de desktop no browser é meio furada… já tive tanto problema com isso que hoje prefiro muito mais usar swing ou swt, pois ainda acho que o overhead de se fazer muito ajax causa problemas de performance e sincronismo dificeis de solucionar (as vezes dependendo do framework quase impossiveis).
Hoje estou utilizando Servlet, JSP, JSTL e DWR. Custom Tags também, mas por incrivel que pareça cheguei a conclusão que as vezes um pequeno scriptlet não faz mal (mas são raros os casos)… dar tanta volta para evitar um scriptlet de 3 linhas as vezes não vale a pena!

Sérgio,

Participo a pouco tempo do GUJ (embora o leia a muito… muito tempo)… e tenho um pensamento parecido com o seu em relação a como deve ser o desenvolvimento Web… eu gostei do Menta mas nunca o utilizei em um projeto… pois a maior parte dos sistemas que defini a arquitetura do zero precisavam compartilhar componentes entre desktop e web e preferi fazer tudo na unha com POJOs para não perder flexibilidade… talvez o Menta atendesse bem…

Vou testar a nova versão e quem sabe não migre alguns sistemas próprios para ela.

S

Para aplicacoes distribuídas ou que precisem de integracao com EJB, WebServices, Desktop, etc. é legal adicionar uma segunda camada na sua aplicacao de SERVICE. Logo ao invés de:

Action -> DAO -> VIEW

Action -> SERVICE -> DAO -> VIEW

A aplicacao de referencia também foi implementada com essa arquitetura aqui: http://websvn.soliveirajr.com/listing.php?repname=MentaTutorials&path=%2FMentaRefAppWithService%2Ftrunk%2Fsrc%2Fmain%2Fjava%2Forg%2Fmenta%2F&#a481b86b6eecd19ba856562af62299f20

(Gracas ao Robert que implementou uma aplicacao sinsitra de reserva de passagens aéreas com o Mentawai)

D

@saoj minha sugestão foi pensando justamente na Refatoração via IDE, Strings são sempre complicadas...

Aproveitando que você falou da injeção via setter, como funcionaria sem anotações? O Container carre todos os setters procurando quais deles esperam um tipo injetável?

O Spring realmente usa nomes pra identificar os beans, e usa a mesma padronização que você quando você omite o identificador declarando o bean via anotação. Mas nos settrs você diz em "quais" setters você quer injetar.

Uma ideia que contemple o cenário em que há 2 beans implementando a mesma interface seja uma sobescrita com terceiro parâmetro:,

@Override
public void setupIoC() {
 
    ioc(UserDAO.class, JdbcUserDAO.class); // cria o bean userDAO
    ioc(UserDAO.class, JPAUserDAO.class, "jpaUserDao"); // cria o bean jpaUserDAO


}

UPDATE: Aumenta a verbosidade, que você quer evitar, mas só no caso incomum, no caso comum continua como antes.

S

Sim, se vc tira o “nome” do IoC e deixa apenas o TIPO então tem que fazer isso mesmo. Teria ver se tem como colocar algum cache para fazer isso APENAS uma vez e cachear o setter encontrado. Se bem que o hit de performance aí deve ser irrelevante, acredito eu.

Por nome vc vai direto ao ponto, ou seja pega o método setNome.

É para pensar mas via interface é muito melhor para a refatoracao e evitar typos, o ponto forte da configuracao programática.

Esse caso de vc usar duas implementacoes diferentes na mesma aplicacao ao mesmo tempo me parece bem raro. É meio contraditório. Vc vai querer usar uma coisa ou outra.

J

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.

Vou tentar!

Obrigado

F

davidbuzatto:
Oi Sérgio,

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 :wink:

[]'s

++

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.

F

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.

J

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!

S

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.

R

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”

K

saoj

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 ?

S

kdoigor:
saoj

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 ?

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.

Isso foi implementado na versão 2.5.2 já liberada. A documentação foi atualizada: http://www.mentaframework.org/mtw/Page/IoC/mentawai-inversao-de-controle

Fiz um esquema bem simples:

O MentaContainer (e o Mentawai) continua por NOME, só que internamente ele faz:

private final String getBeanName(Class<?> klass) {
    	String s = klass.getSimpleName();
    	return s.substring(0, 1).toLowerCase() + s.substring(1);
    }

Então vc pode usar o tipo sem problemas. E se tiver conflito aí vc abandona o tipo vai por nome mesmo. O método ioc(…) aceita ambos.

A única desvantagem pequena disso é que para o IoC:

ioc(UserDAO.class, JdbcUserDAO.class);

A seguinte injeção por setter não vai funcionar, o que não faz muito sentido de qualquer jeito:

public void setMySuperUserDAO(UserDAO userDAO) { ... }

Continua tendo que ser:

public void setUserDAO(UserDAO userDAO) { ... }

Valeu pela dica. Vale lembrar que o Lucas Cavalcanti também deu ótimas dicas para o MentaContainer aqui: http://www.guj.com.br/java/213719-mentacontainer-ioc-simples-e-rapido

J

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 ?

Quantas pessoas desenvolveram os frameworks relacionados ao Mentawai ?

Existe alguma comunidade, igual ao JCP, que define uma lista de possíveis melhorias para a próxima versão ?

Uma empresa que investe hoje milhões em um projeto, pode confiar que daqui 10 anos ainda terá documentação e
suporte caso necessite ?

S

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 ?

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.

http://www.mentaframework.org/mtw/Page/Team/mentawai-team?lang=pt

Não.

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.

[/quote]

D

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.

R

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 ?

Quantas pessoas desenvolveram os frameworks relacionados ao Mentawai ?

Existe alguma comunidade, igual ao JCP, que define uma lista de possíveis melhorias para a próxima versão ?

Uma empresa que investe hoje milhões em um projeto, pode confiar que daqui 10 anos ainda terá documentação e
suporte caso necessite ?

EJB 2 tem tudo isso… você usaria?

J

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.

S

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.

F

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”

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)

F

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.

Parabéns!!!

S

Valeu pelo feedback, Flávio. Achei o seu comentário lá na lista de comentários sobre o framework.

O framework evoluiu bastante desde 2006, mas a filosofia, a API e o core ainda são os mesmos. Recomendo dar uma olhada no código-fonte da aplicacão de referencia: http://websvn.mentaframework.org/listing.php?repname=MentaTutorials&path=%2FMentaRefApp%2Ftrunk%2Fsrc%2Fmain%2Fjava%2Forg%2Fmenta%2F&#add3186eadc3225fa7327869c7ea70ac7

Segue abaixo o seu feedback:

F

Puxa vida que legal! Nem me lembrava disso.

Mãos à obra então.

Abraço,

saoj:
Valeu pelo feedback, Flávio. Achei o seu comentário lá na lista de comentários sobre o framework.

O framework evoluiu bastante desde 2006, mas a filosofia, a API e o core ainda são os mesmos. Recomendo dar uma olhada no código-fonte da aplicacão de referencia: http://websvn.mentaframework.org/listing.php?repname=MentaTutorials&path=%2FMentaRefApp%2Ftrunk%2Fsrc%2Fmain%2Fjava%2Forg%2Fmenta%2F&#add3186eadc3225fa7327869c7ea70ac7

Segue abaixo o seu feedback:

“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.

N

O Facebook calou a minha boca por ser desenvolvido em PHP e ter um desempenho fora de série…

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!

F

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!

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!

N

fredferrao:

o front continuava Rails, não sei se trocaram!

Ja trocaram pra java!

W

Parabéns!!!

N

So um detalhe interessante do facebook, eles foram os criadores do cassandra inicialmente e recentemente eles mudaram pra hbase com o hadoop que era mais interessante pra arquitetura deles, eles possuem muita flexibilidade em mudar de arquitetura, muito bom isso!

EDIT: Parabéns sergio, muito interessante o framework realmente, não fosse o play 1.2.x iniciaria meu próximo projeto com o menta!

C

Peço desculpa pela falta de atenção em postar uma dúvida aqui.

Aprecio a compreensão de todos.

I

cirolacerda

Por favor, poste sua duvida em um topico de Frameworks brasileiros, dúvida não tem nada a ver com notícia, e muito menos reupar um tópico que nào tem nada a ver com o assunto principal do mesmo

Criado 11 de maio de 2012
Ultima resposta 24 de jan. de 2013
Respostas 44
Participantes 23