Te desafio (para que vc se motive com o desafio e tente alguma coisa) a mostrar uma maneira de fazer isso de forma mais abstraída. Acho que na sua cabeça vc acha que validação é apenas validar se o campo está presente ou não… :?
MAS TEM QUE INCLUDIR TODAS AS VALIDAÇÕES QUE EU ESTOU FAZENDO ALI, INCLUSIVE AQUELA DO USERNAME NO BANCO DE DADO.
Te desafio (para que vc se motive com o desafio e tente alguma coisa) a mostrar uma maneira de fazer isso de forma mais abstraída. Acho que na sua cabeça vc acha que validação é apenas validar se o campo está presente ou não… :?
MAS TEM QUE INCLUDIR TODAS AS VALIDAÇÕES QUE EU ESTOU FAZENDO ALI, INCLUSIVE AQUELA DO USERNAME NO BANCO DE DADO.
[/quote]
Eu, como um cara de nível Júnior, vi isso e entendi mais do que o link do Mentawai que postei:
// Create a bean validator and check for issues.
Set<ConstraintViolation<Member>> violations = validator.validate(member);
if (!violations.isEmpty()) {
throw new ConstraintViolationException(new HashSet<ConstraintViolation<?>>(violations));
}
Achei dahora! - Mas eu ainda não entendi um pouco direito como funciona a valdiação do Mentawai, vou ver com mais calma depois.
Quer dizer que se eu tentar salvar pelo Dao, ele lança erro de validação também? Se sim, interessante, tenho que ver como o BeanValidation se comporta nessa parte
Ele valida se o username não existe no banco de dados, ou seja, se é único.
A sua crítica não foi ruim não. Olhando rapidamente a aquela validação ali pode parecer meio zoneado mesmo. Mas eu acredito que seja porque tem muita validação acontecendo ao mesmo tempo ali, daí pode assustar.
Acho que dá para entender que existe uma validação para o campo “username”, onde o método checkUsernameAdd vai ser chamado e se retornar false a mensagem de erro será correspondente a chave “username_already_exists” (i18n).
Dá para fazer isso ainda mais simples? Talvez sim.
O mentawai é perfeito? Não! Pode melhorar? Sim. Tudo pode melhorar add-infinito.
O que é perfeito no Mentawai é a sua filosofia, isso na minha opinião pessoal.
EDIT:
Uma coisa que eu vi que pode melhorar é fazer assim:
Uma pequena diferença que faz muita diferença. O que vc achou?
Isso é para mostrar que o framework não é perfeito, mas a sua filosofia, de abstrair o máximo possível tudo é. Isso na minhã opinião. Vai ter sempre gente que vai preferir complexidade, vários métodos, vários objetos, vários frameworks, etc.
Como um amigo meu do trabalho me disse: Complexidade é maravilhoso, pois te garante no emprego. Ninguém vai ser maluco de te mandar embora para ter que assumir o seu código.
Classe abstrata, anoto uma implementação dela com Default. e depois onde eu quero injetar com inject. Se eu quiser injetar outra eu crio uma anotação e anoto com a anotação a classe injetável, depois uso @inject e @MinhaAnotacao (não sei se está 100% certo isso, tenho que rever)
Mas o ponto é que o JEE está batendo de frente com outros frameworks, antigamente isso era algo impossível. JEE era pobre, chato e verboso. Hoje está dahora!
Classe abstrata, anoto uma implementação dela com Default. e depois onde eu quero injetar com inject. Se eu quiser injetar outra eu crio uma anotação e anoto com a anotação a classe injetável, depois uso @inject e @MinhaAnotacao (não sei se está 100% certo isso, tenho que rever)
Mas o ponto é que o JEE está batendo de frente com outros frameworks, antigamente isso era algo impossível. JEE era pobre, chato e verboso. Hoje está dahora!
[/quote]
O Mentawai tem por filosofia não usar anotação pra nada. Foi uma opção que ele fez logo no início e se manteve fiel a isso. Tem gente que vai adorar e tem gente que vai odiar. O que não pode é querer agradar a todos porque aí vc acaba não agradando ninguém. Integridade é fundamental, tanto em pessoas como em sistemas.
Depois me diz o que achou da sugestão do call("checkUsernameAdd") para a validação. Depois que vc falou eu vi que aquilo tá meio verbose mesmo. Tem como abstrair mais. :) Aqueles métodos getInstance por exemplo estão poluindo a coisa apesar de enfatizarem a idéia de que a instancia é a mesma. (O que me parece um overkill tremendo!)
Eu gostei dessa nova forma que você sugeriu, mais direta.
Legal a filosofia de sempre melhorar, acho que foi isso que acabou com o Java, as pessoas que aprendiam simplesmente relaxavam, isso fez com que anos fossem perdidos travados no Java EE 5 e no Swing, por exemplo
Concordo, também não gosto frameworks baseados em componentes, eu não entendo pq a comunidade Java valoriza tanto isso, é assustador olhar uma view cheia de componentes. Mapeamento com Annotations é outra coisa bizarra que acabou sendo muito valorizada, ao invés de incentivar uma solução programática como no NHibernate do .NET.
Também sempre achei loucura isso no Java. Acho você iria gostar de trabalhar um dia num projeto ASP.NET MVC com C#. Não sou defensor da MS, tanto que não gosto do ORM dela, mas é muito gostoso trabalhar com ASP.NET MVC (baseado em action e cheio de convenções). No Java o máximo que gostei foi o Struts2, a qual a MS “copiou” pra fazer o ASP.NET MVC, tirando as partes chatas dele.
[quote=javaflex][quote=saoj]
Agora, não gosto de JSF. É gosto mesmo, não quero ninguém mexendo na minha página. Mas é gosto.
[/quote]
Concordo, também não gosto frameworks baseados em componentes, eu não entendo pq a comunidade Java valoriza tanto isso, é assustador olhar uma view cheia de componentes. Mapeamento com Annotations é outra coisa bizarra que acabou sendo muito valorizada, ao invés de incentivar uma solução programática como no NHibernate do .NET.
Também sempre achei loucura isso no Java. Acho você iria gostar de trabalhar um dia num projeto ASP.NET MVC com C#. Não sou defensor da MS, tanto que não gosto do ORM dela, mas é muito gostoso trabalhar com ASP.NET MVC (baseado em action e cheio de convenções). No Java o máximo que gostei foi o Struts2, a qual a MS “copiou” pra fazer o ASP.NET MVC.[/quote]
Não sabia que o ASP.NET MVC se baseou no Struts2. Interessante pois o Mentawai se baseou no WebWork que nada mais é que o Struts2. Mentawai venho antes do Struts2. Vc deveria dar uma olhada no Mentawai que tem configuração programática com properties por ambiente. Defende isso desde 2005.
[quote=saoj][quote=javaflex][quote=saoj]
Agora, não gosto de JSF. É gosto mesmo, não quero ninguém mexendo na minha página. Mas é gosto.
[/quote]
Concordo, também não gosto frameworks baseados em componentes, eu não entendo pq a comunidade Java valoriza tanto isso, é assustador olhar uma view cheia de componentes. Mapeamento com Annotations é outra coisa bizarra que acabou sendo muito valorizada, ao invés de incentivar uma solução programática como no NHibernate do .NET.
Também sempre achei loucura isso no Java. Acho você iria gostar de trabalhar um dia num projeto ASP.NET MVC com C#. Não sou defensor da MS, tanto que não gosto do ORM dela, mas é muito gostoso trabalhar com ASP.NET MVC (baseado em action e cheio de convenções). No Java o máximo que gostei foi o Struts2, a qual a MS “copiou” pra fazer o ASP.NET MVC.[/quote]
Não sabia que o ASP.NET MVC se baseou no Struts2. Interessante pois o Mentawai se baseou no WebWork que nada mais é que o Struts2. Mentawai venho antes do Struts2. Vc deveria dar uma olhada no Mentawai que tem configuração programática com properties por ambiente. Defende isso desde 2005.[/quote]
Pois é, MS pegou a idéia do Struts2, retirando as partes chatas e colocando a simplicidade do Rails, além de outras melhorias próprias.
Sobre Mentawai, eu to parado em Java há um tempo, mas já li muito e parece ser bom trabalho mesmo.
Não vejo nenhum problema.
Só achei que não fosse tão comum.
Vivendo e aprendendo.
Sobre a discussão eu também acho que a oracle definir o web profile foi uma coisa muito boa, pois você não precisa colocar um monte de jar no tomcat e o servidor já vai ter as dependências necessárias e evita usar servidor full para uma coisa que não necessitaria
Java (linguagem, API, especificação, plataforma, ferramentas etc…) é de uma empresa… hoje no caso a Oracle.
Se o profissional aprendeu a Linguagem Java e usa API, Especificação, Ferramenta… de outros fornecedores
diferentes é algo ruim do ponto de vista :
A) Quantidade e diversidade de informações;
B) Não alinhamento com certificações liberadas pelo "dono" da Plataforma/Linguagem...
Ou seja estudar Struts em vez servlets e jsp não ajuda nos estudos para uma certificação java web.
Depender de uma Empresa é um lixo
Sobre o ATUAL estado do JEE em relação ao “concorrente” comunitário ou não o JEE está bastante interessante mas:
A) Em que sentido ? Filas ? Web Services ? Performance ? EJB ? Segurança ? Camada Web somente ?
Não existe comparação entre JEE e Mentawai ou JSF ou Struts ou Play ou Servlets e JSP
Escrevi no item 3 a palavra ATUAL assim em uppercase porque como já informaram, a plataforma evoluiu, logo precisa ser comparada
com outras plataformas/ferramentas/frameworks que possuem itens de evolução que casam com os itens evoluidos pela plataforma.
Por exemplo: Criei um framework “X” que não possui IOC , é justo comparar o NÃO-IOC do framework X com o IOC do Spring ?
Para finalizar a minha opinião
Tudo é 0 e 1 no caso mais correto segundo os livros “tudo é assembly” como o Sérgio citou que não é considerada linguagem de máquina e sim de montagem / preparação
para uma linguagem de máquina. Logo a Abstração casa perfeitamente com a questão da Atualização da linguagem/framework/ferramenta…
O que nos leva a crer que daqui a pouco irá surgir algo Não melhor mas mais abstraído/atual que o JEE.
Aqui na empresa usamos JEE6 a mais de um ano substituindo o “Spring” e o apache CXF e usamos Mentawai também, retiramos o JSF por vários motivos.
[atualizado]
Isso me fez pensar filosoficamente sobre outro aspecto:
Podemos afirmar que o sucesso de determinado nicho de software se dá pelo trabalho constante ?
Oras, se alguém te fala que o GOL (carro) é bom e que vc deve comprar, vc vai lá e compra?!?!?
Ou seja, vc usa um framework terceiro pq ele é MELHOR ou MAIS ADEQUADO para determinado tipo de projeto, e principalmente, pq vc tem LIBERDADE de escolha.
O framework não é a sua salvação !! não é ele que vai fazer você ganhar dinheiro…
Mas sim a SOLUÇÃO que você desenvolve…
Já defendi muito JAVA, dizendo que era a melhor e ponto final, pra “min” hoje ainda é a melhor… porque atende minhas expectativas e desejos (Ohhhhh ;)) , mas hoje vejo linguagem como ferramenta, você não deve usar uma marreta para pregar um prego, logo existe soluções mais adequadas para cada “contexto”.
A dica que eu dou é procurem ser o MELHOR em alguma coisa, seja na linguagem ou no framework, se especialize estude e implemente muito…
Não seja mais um que quer apenas consumir o que a SUN / ORACLE / MICROSOFT faz… arregace as mangas e faça !!!
Existe o caso onde vc quer produtividade e entregar um projeto com qualidade e num tempo agressivo.
E existe o caso onde vc quer fazer as coisas na mão mesmo para aprender.
É no primeiro caso que se deve usar os frameworks. O problema é que alguns frameworks acabam complicando mais do que ajudando, então se o cara tivesse escolhido a opção 2 daria no mesmo.
Não estou entendendo essas coisas de liberdade não.
As especificações do JavaEE são todas montadas por processos da comunidade. Na empresa onde trabalho tem várias pessoas envolvidas no JCP e outras empresas também.
O Java já é baseado no OpenJDK, um projeto da comunidade. Até o JavaFX é código aberto…
Eu vejo menos liberdade usando Spring do que JavaEE. O Spring é da SpringSource, o javaEE é de quem? Da Oracle? Mentira, liderou o bean validation(por exemplo) é o Emanuel Bernard, que é da Red Hat. O CDI foi o Gavin King.
O SouJava ajuda em várias especificações e até o Guilherme Silveira, um dos fundadores do GUJ, também ajuda, no JAX-RS.
Isso é todo mundo se unindo para a melhor forma de desenvolvimento de aplicações “enterprise”.
Temos também as outras opções e são bem vindas. Por exemplo GWT é uma outra abordagem interessante. Mas para desenvolver, por exemplo, validação ou transações, como fazer de forma diferente? A Parte WEB é que fica a maior discussão
Por que usar um framework de terceiro e não usar JavaEE 6 ?
Uma possível resposta é:
Porque o cliente ou o arquiteto, ou o lider técnico, ou o dono da empresa ou qualquer outro stakeholder não quer, não permite não alguma coisa.
O meu comentário foi relacionado a isso.
Citando casos reais que aconteceram comigo e, errando de propósito os nomes das empresas, para não gerarmos problemas:
Banco BRDESCU quer que a parada seja feita com struts 2 e spring. O que fazer ?
N desenvolvedores esperando que você explique porque usar Struts 2 e você tendo que responder que isso felizmente ou infelizmente
direta ou indiretamente está pagando os salários deles porque o cliente quiz.
Entendeu agora a liberdade ? Não tem nada haver com comunidade.
Nessa mesma empresa um dos fatores que me fizeram procurar outro emprego foi o fato de não permitirem usar GNU/Linux devido a um negócio
chamado CMMI nível 5 que não “entendi” (entre aspas) até agora para que serve, logo após a compra da empresa por uma multi-nacional.
De qualquer forma William achei a criação desse tópico super interessante, é uma das coisas que gosto de discutir com colegas de trabalho, parabéns.
[quote=heliofrota][quote]
Não estou entendendo essas coisas de liberdade não.
[/quote]
Sua pergunta foi :
Por que usar um framework de terceiro e não usar JavaEE 6 ?
Uma possível resposta é:
Porque o cliente ou o arquiteto, ou o lider técnico, ou o dono da empresa ou qualquer outro stakeholder não quer, não permite não alguma coisa.
O meu comentário foi relacionado a isso.
Citando casos reais que aconteceram comigo e, errando de propósito os nomes das empresas, para não gerarmos problemas:
Banco BRDESCU quer que a parada seja feita com struts 2 e spring. O que fazer ?
N desenvolvedores esperando que você explique porque usar Struts 2 e você tendo que responder que isso felizmente ou infelizmente
direta ou indiretamente está pagando os salários deles porque o cliente quiz.
Entendeu agora a liberdade ? Não tem nada haver com comunidade.
Nessa mesma empresa um dos fatores que me fizeram procurar outro emprego foi o fato de não permitirem usar GNU/Linux devido a um negócio
chamado CMMI nível 5 que não “entendi” (entre aspas) até agora para que serve, logo após a compra da empresa por uma multi-nacional.
De qualquer forma William achei a criação desse tópico super interessante, é uma das coisas que gosto de discutir com colegas de trabalho, parabéns.
[/quote]
Valeu pelo esclarecimento e parabéns pela atitude de trocar de emprego por um príncipio, isso realmente é admirável!