JSF é o futuro nas empresas?

Talvez tenha me expressado mal, não sérios e sim grandes. Todos os exemplos da 37Signals aos que você citou, possuem poucos usuários e baixa complexidade técnica.

Aliás, não sei o que tem por trás, mas pelo frontend, não vi nada de mais no Oracle Mix.

Já o Mingle exige 1G de memória como pré-rec, pra rodar uma aplicação relativamente simples.

Me equivoquei, realmente, lendo depois a nota da Oracle vi isso, valew :slight_smile:

As otimizacoes de performance estavam inclusas no trabalho, como em todo projeto que vai pra producao; testes de performance sao parte da suite de testes de aceitacao da grande maioria dos projetos da TW. E nao sei de onde vc tirou que o Mix tinha problemas "serios" de performance: o JRuby tem se comportado tao bem que eles nem se importaram em ligar o fragment caching ainda. O Mix em si mal foi otimizado, foi so resolver uns probleminhas no proprio JRuby e os resultados foram, IMNSHO, excelentes.

Concorda que anterior às modificações, a performance do JRuby tinha alguns problemas ? Foi a base da minha alegação, com o que havia lido algum tempo atrás.

[quote]

Por “legado solido” vc diz dezenas de milhares de sistemas usando Struts 1.x e EJB 2? Hmm… solido e marrom, ne?[/quote][/quote]

Não, estou falando de soluções como Terracota, Gigaspaces, GridGain, EJB3, Spring, Hibernate, Lucene, Compass, Drools e por aí vai … poderia ficar aqui até amanhã citando exemplos bacanas :slight_smile:

Só pra falar um poquinho de EJB2 que é sempre bem criticado, lembro que EJB não é somente EntityBeans, que foi o grande vilão da história.

Você tem os MDB´s, SLB´s , Controle de Transações que na época, não tinha alternativas como Spring e outras no mercado. Quem trabalhou aqui com Corba, sabe o quanto era complicado.

Voltado ao “Legado Java” , aliás essa plavra sempre tem conotação de coisa ruim, existe uma nova especificação EJB3 que está bem legal, aproveitando idéias bem sucedidas e conceitos de convenção ao invés de configuração.

CV, não me referi ao Legado dessa forma pejorativa. Cuidado com a conotação :slight_smile:

Ok, então Domain Model não é algo “bacana”.

[quote=Kenobi]Você há de concordar comigo que os profissionais Java ao decorrer desses anos amadureceram no quesito design. Hoje em dia ver um sistema com regras de negócio em Actions feito em Java é bem mais raro, ou o profissional é muito iniciante.
[/quote]

Não hei de concordar coisa nenhuma, hei de discordar. Continua a mesma coisa exceto pelos habituais nichos. E lha que nos últimos anos o que eu mais fiz oi andar de estado e estado conversando com pessoas e vivenciando projetos.

Pela última vez: Rails possui um Domain Model. o que você está falando não faz sentido, não é uma limitação (ou mesmo indução) técnica.

[quote=Kenobi]Extamente por isso e pensando em extensibilidade,papel do arquiteto como mencionado, é que busco uma solução mais abrangente, afinal o business plan de algumas companhias pode supreender.

Já peguei casos como a GE , que sua aplicação de Auto-Finance estava projetada para um crescimento de 30% ao ano e na prática foi mais de 168%.
[/quote]

Lá vem você mais uma vez com casos isolados (e nomes de clientes grandes para impressionar os incautos). Bons arquitetos sabem ser flexíeis e isso não tem a ver com escolher Rails ou Java. Já trabalhei em sistemas CGI PERL que desbancam a grande maioria dos sistemas em Java em escalabilidade. Isso depende da arquitetura.

Oracle Mix, Mingle são pequenos projetos? Startups?

Subsídio porque você quer. Escolher Grails ou Rails vai influenciar muito pouco nisso, YAGNI.

Aliás, um dos meus rojetos atuais é exatamente ma empresa muito grande que decidiu testar Rails num sisteminha desses e gostou tanto que agora quer migrar tudo que for mais web do que backend para ele. E se esta empresa for uma startup então as páginas amarelas no Brasil são fabricadas por uma empresa de garagem.

No sue último post você me chamou de fanático por sugerir JRuby ao invés do sagrado Java.

[quote=Kenobi]Daí que estava falando sobre alguns problemas que a plataforma ainda vai enfrentar, por ser muito nova e investir pesadamente nisso é um risco a ser considerado.
[/quote]

Nova? Estes projetos citados aconteceram em 2006, amigo. Pelo seu critério Java é muito novo, arriscado e etc.

Por favor, por favor, por favor aprenda Ruby antes de criticar. Criticas são ótimas, critique por exemplo a ausência de algo que chegue perto de um contrato como as interfaces em Java, critique o modelo fraco de threads, critique o fato de Rails engessar a maneira com que aplicações são criadas, critique o fato de Ruby não ter macros, de parecer com PERL… critique até mesmo o fato de não obedecer à AOP Alliance. Só não faça críticas que não fazem sentido como a acima. O uso do cachimbo faz a boca torta.

[quote=Kenobi]Vou começar pela evolução da plataforma e linguagem. Java não está sentado parado esperando o trem passar. Muitas iniciativas vem sendo incorporadas à cada versão, o que nos torna um pouco mais aderentes à realidade atual , quando comparados aos que você citou. Entretanto, voltando aos legados, C++ possui uma consistência sólida em alguns universos, tanto que o pessoal que desenvolve Games, utiliza intensivamente até os dias atuais e não cogita trocar tão cedo de linguagem para as suas engines. Lua pode vir para alguns casos, scripts, mas o core na maior parte dos casos é C++.
[/quote]

Games não são aplicações criadas por consultorias ou profissionais de tecnologia normais, sua comparação não faz sentido. C++ é muito bom em alguns casos, a maioria das coisas que era utilizado existem alternativas melhores como Java.

Eu sinceramente cansei de discutir com você sobre isso. A cada post você repete as mesmas coisas (“Rails tem regra de negocio nas actions”, “Ruby não tem AOP”, “o target de warmup da startup do peito do pé do pedro é preto”) que não só não fazem sentido bem como já foram refutadas nos posts anteriores. Buzzwords e suitspeak não ajudam a embasar um argumento. Eu tavez esteja ficando velho e rabujento mas esse tipo de discussão não tem mas graça.

Existem dois mecanismos de herança de tabela suportados por ActiveRecord, single-table inheritance e polymorphic association.

Mas o foco não devia ser na plataforma, porque plataforma é muito mais fácil de consertar que linguagem.

Vou rebater somente alguns pontos, pq tou sem saco de continuar isso. Você e eu temos posições completamente diferentes e não chegaremos a um consenso, não por fórum, talvez num evento, pessoalmente trocando experiências.

Também venho fazendo isso bastante e tenho outro ponto de vista, novamente são duas experiências, tanto a sua quanto a minha podem ser válidas, não são excludentes.

[quote]Lá vem você mais uma vez com casos isolados (e nomes de clientes grandes para impressionar os incautos). Bons arquitetos sabem ser flexíeis e isso não tem a ver com escolher Rails ou Java. Já trabalhei em sistemas CGI PERL que desmbancam a grande maioria dos sistemas em Java em escalabilidade. Isso depende da arquitetura.
[/quote]

Aqui Shoes, você chutou o pau. Não quis impressionar ninguém, somente dei nome aos bois para a citação não ficar subjetiva. Cuidado com suas alegações…

Sinceramente ? Minúsculos, compare a um ebay por exemplo, aí sim. Oracle Mix não é uma iniciativa nova ? Mingle também não ? Ambos sairam do forno há pouquíssimo tempo?

Tenho opinião contrária, até mesmo um ponto de extensibilidade para escalar, que com o Rails não é muito claro , essa é a opinião de diversos especialistas. Não vou começar a procurar os comentários dos blogs de caras que li, pq estou sem saco pra fazer isso agora …

Bom, tem milhares de casos consolidados que não precisaram recorrer à Sun. Diferente do desenvolvimento em JRuby, que ainda não há essa massa quantitativa e num dos primeiros projetos sérios, OracleMix, há reports de gargalos na engine.

[quote]Porr favor, por favor, por favor aprenda Ruby antes de criticar. Criticas são ótimas, critique por exemplo a ausência de algo que chegue perto de um contrato como as interfaces em Java, critique o modelo fraco de threads, critique o fato de Rails engessar a maneira com que aplicações são criadas, critique of ato de Ruby não ter macros, de parecer com PERL… Só não faça críticas que não fazem sentido como a acima.
[/quote]

Calma lá você, eu não critiquei o Ruby, estava falando de Rails nesse ponto. Tá doido ? Falei de AOP e dei um exemplo hipotético, poderia ser qualquer outra abstração, sobre o ponto de extensibilidade.

Não critiquei a Linguagem… Novamente você confunde as coisas, estou falando o tempo todo de Rails vs Grails e você vem falando de Java vs Ruby !!!

Dá uma lida com um pouco mais de atenção, tá faltando compreensão de texto.

Eu parei aqui, como disse anteriormente. Eu dei minhas considerações porque não gosto de Rails e você não respeitou, simples assim. Se eu gosto de AOP ? Se eu acho importante isolar a camada de negócios ? Esses são pontos de vista técnicos e vc Shoes não é o Sr. da razão.

Tentando mai uma vez (eu sou burro e não insistente):

1 - Rails separa Camadas. Pelo amor de Zahl, Rails tem um Domain Model! Não ter um DataMaper é uma coisa completamente diferente (e existem Data Mappers para Rals)
2 - Rails é em Ruby, você levantou o ponto da AOP. Se conhecesse minimamente o desenvolvimento em Ruby saberia que AOP como utilizado em Java simplesmente não é necessário (method_missing e toda a parafernalha de metaprogramação)

E se seu parâmetro de comparação é o eBay meu Zahl, me diz pra onde eu mando curriculum porque eu realmente gostaria de trabalhar num lugar onde este tipo de aplicação é comum. Aliás, falando em eBay eu estive em Chicago com os arquitetos deste e conversei bastante sobre o que eles usam lá. Se vocês acham que um site com este volume usa a arquitetura e os frameworks que estamos conversando aqui vocês estão muito enganados. Sites como o eBay precisam de uma arquitetura específica. Não precisa nem ser deste tamanho todo, quando trabalhava no maior portal de vídeos do país nós sabíamos muito bem que usar frameworks de mercado não ia servir. Para isso que serve um arquiteto.

Não adianta seu framework ser maduro (maduro é o que, quatro anos? dois?) porque se ele for ser utilizado neste tipo de aplicação não será sem modificações. E aí o target de warmup da startup do peito do pé do pedro é preto torce o rabo.

Eu não confundi em momento algum Domain Model com Mapper e sim fiz uma consideração sobre onde a regra de negócio está e como o pessoal usa normalmente.

Groovy mais uma vez, e podíamos comparar MOP vs AOP , outro tópico.

Qualquer profissional com um pouquinho mais de experiência e literatura, sabe que não são construídos com esses frameworks, que é de fato uma solução otimizada, até mesmo pelo fato do tempo que ele está no mercado.

[quote]

Não adianta seu framework ser maduro (maduro é o que, quatro anos? dois?) porque se ele for ser utilizado neste tipo de aplicação não será sem modificações. E aí o target de warmup da startup do peito do pé do pedro é preto torce o rabo.[/quote]

Uma coisa é otimizações para site como o referenciado , ebay, que é uma plataforma. Só para esclarecer, participo do programa de Developers do ebay , conheço bem a arquitetura, até porquê estou tocando um projeto nessa área.

Agora, completamente diferente é para um OracleMix , simples e sem nada demais. Se vc precisar de customização para esse tipo de aplicação, mostra que sua plataforma não está madura e sim em fase de desenvolvimento.

[]´s

Meus 2 centavos:

  1. Não acho que a discussão Rails vs Groovy vá levar a lugar algum. Ambos são praticamente equivalentes e vocês vão ficar discutindo gosto pessoal. Se eu fosse entrar nessa discussão de gosto, todo mundo que me conhece sabe que eu iria puxar a bola para o RoR. O ponto é que é a típica discussão que não leva a lugar algum e já deu bem para perceber isso.

O fato de Groovy usar coisas consagradas do Java não significa muita coisa. Existe equivalente no mundo RoR para tudo que foi citado. Só para dar alguns exemplos: MDBs, Busca textual, …

  1. Quanto a AOP, concordo com o Shoes. Não interessa se o Grails suporta isso ou não, AOP é irrelevante para linguagens dinâmicas. Minha opinião é até um pouco radical, mas eu sempre achei AOP puro buzz. Mesmo em linguagens estáticas, inversão de controle e injeção de dependências resolvem bem o problema. Para linguagens dinâmicas isso é brincadeira de criança.

  2. Os tais pontos de escalabilidade citados pelo Kenobi são (hoje) altamente questionáveis. Assim como inúmeros sistemas web enormes (porte do citado eBay), eu também sou partidário de arquiteturas “share nothing”. Minha opinião é que a escalabilidade tem muito pouco a ver com as linguagens/frameworks que você escolhe. Sinceramente, gostaria muito de ver bons argumentos do por quê, em uma aplicação web qualquer, um sistema totalmente distribuído (pode acrescentar sua sigla preferida… EJBs?) escala mais do que um outro que simplesmente aproveita bem o protocolo (rest?) e usa o conceito de “share nothing” com proxies reversos, caches distribuídos, etc.

  3. Colocar a regra de negócios no controller não é culpa do framework/plataforma. A culpa é dos programadores, e isso acontece em qualquer framework Java também, assim como pode acontecer com Grails. Existe até um movimento da comunidade contra esse tipo de coisa.

Aliás, só para provocar (denovo). :twisted:

[quote]

Aliás, só para provocar (denovo). :twisted: [/quote]

Comentários da própria página que você enviou :

Um Ebay? Adwords? Gmail? Amazon? All written in Java. In fact I went to a talk at Java One where the Ebay engineers talked about throwing out their C++ system and rewriting the whole thing in Java split up among several thousand Appservers because they needed to scale their development process.

ja q vc´s sao expert em jvs
alguem sabe onde eu posso conseguir algum tutorial que trabalhe com jsf gerando wml, ja procurei no google e nao consegui nada se alguem souber fico mto grato.

Kung, achei o link … sobre o que você apresentou 9 sites, tinha um outro tópico, onde fiz minha abordagem sobre Java para tais iniciativas:

http://www.guj.com.br/posts/list/45/70875.java#373910

[quote=lgweb]ja q vc´s sao expert em jvs
alguem sabe onde eu posso conseguir algum tutorial que trabalhe com jsf gerando wml, ja procurei no google e nao consegui nada se alguem souber fico mto grato. [/quote]

Isso é renderkit. Vá no seu faces-config e altere:

<application>
<default-render-kit-id>WML_BASIC</default-render-kit-id>
</application>

so isso? nao acredito ai e mto facil rsrsrsr, hei desculpe e que eu sou novatão mas e pra mudar conforme a requisicao tipo html manda a pg pro cara wml manda a pg correspondente?
Há to achando mto bacana este topico pena q tá alto nivel demais pra mim + eu xego lá um dia .
obrigado t+

Kenobi, cala a boca desse pessoal. Mostra o case study de Grails em que uma aplicação desenvolvida em menos de um mês bate em mais de 400-600 requests por segundo num único servidor.

[quote=Kenobi]Comentários da própria página que você enviou :

Um Ebay? Adwords? Gmail? Amazon? All written in Java. In fact I went to a talk at Java One where the Ebay engineers talked about throwing out their C++ system and rewriting the whole thing in Java split up among several thousand Appservers because they needed to scale their development process.[/quote]

Ok, mas eles não mudaram para Java para poder distribuir em várias camadas. Isso é o que eu estava questionando (o link foi só de provocação mesmo :slight_smile: ).

De qq forma, eu ainda não vi bons argumentos para o que questionei.

[quote=Fabio Kung][quote=Kenobi]Comentários da própria página que você enviou :

Um Ebay? Adwords? Gmail? Amazon? All written in Java. In fact I went to a talk at Java One where the Ebay engineers talked about throwing out their C++ system and rewriting the whole thing in Java split up among several thousand Appservers because they needed to scale their development process.[/quote]

Ok, mas eles não mudaram para Java para poder distribuir em várias camadas. Isso é o que eu estava questionando (o link foi só de provocação mesmo :slight_smile: ).

De qq forma, eu ainda não vi bons argumentos para o que questionei.[/quote]

Kung , deu uma olhada no meu post mencioando anteriormente, em outro tópico ?

Eu nao falei que voce confundiu. Voce falou que Rails nao separa Camadas. Voce falou que em Rails as regras ficam no Controller. É mentira, simples assim.

Ahm?

Entao qual o ponto em usar um portal desses na comparacao? Você falou em eBay como parâmetro, não eu.
O eBay não usar soluções de caixinha como falamos aqui (e ser irrelevante nesta discussao por consequencia) é fruto do vlume de acessos e não “ser uma platafomra”. Se fosse por sso Facebook e Flickr não seriam em PHP.

O cv não te respondeu isso? De qualquer modo como vou saber que Grails não va precisar de uma mudancinha para aguentar minha aplicação? Cadê os cases"

Mais de uma vez trabalhei em projetos (Java) em que tivemos que contatar o fornecedor da aplicação (o figura líder do projeto OpenSource) porque ele não atendia nossa demanda. É o tipo de coisa que acontece frequentemente quando você desenvolve mais que os sitezinhos de intranet que 99% das pessoas estão fazendo o tempo todo.

Kung, certíssimo. Rails e Grails são equivalentes, o que mata é o “vou usar Grails poque é Java”.

Essa briga entre Grails e Rails é ridícula, nem vou entrar nessa discussão.

Eu vim falar que dei uma olhada na integração de frameworks com Ruby, e parece que só o Spring tem, porque o Hibernate não tem; o Seam, apenas pro Grails (que é praticamente uma sintaxe Java) e nada que integre o EJB3 ou o Faces.

Acho que pro Rails ser perfeito, as comunidades Java e Ruby deveriam se unir e criar formas de integrar esses dois mundos; porque muitas empresas não podem se dar ao luxo de refazer rotinas escritas em Java para o Ruby, e nem de encarar as possíveis complexidades de uma integração manual.

Mudando de assunto, o rubinelli falou que o ActiveRecord implementa o Single Table Inheritance. Isso é uma ótima notícia, pois eu já vi tabelas de BD cujo tipo de dados é fixado por uma flag, mas que para o mundo OO seria melhor implementar como uma herança, pois as implementações dos métodos são diferentes. Exemplo clássico: a tabela Usuario que possui uma coluna tipo, que aceita somente dois valores: 1 pra PF e 2 pra PJ, mas que no Java seria uma classe abstrata (ou interface) Usuario, e seus filhos diretos UsuarioPF e UsuarioPJ. Apesar disso, ainda acho que seria legal ter um suporte do Hibernate para o Ruby, daria ao desenvolvedor liberdade de escolha.

Rails não é e não vai ser perfeito mas existem2 gandes benefícos na união Java x Ruby:

1 - Tirar proveito das funcionaldades do Rails na plataforma Java
2 - Aprender que com inguagens diferene (de Java) podemos ter benefícios dferentes e usar este conhecimento nos nosos próximos framewks. Um exemplo é a coisa do pring com DSLs.

Será que e difícil? (é uma perguna mesmo). Alguém já tentou brincar disso? O Hibernate é mais utilizado com DataMappers do que Acive Recors (o adráo AR, Não o framework) mas eu já utilizei desta forma.Aco que o problema é que deveria aver um objeto Java qe fosse a representação do objeto jRuby… hmm…

Por enquanto só dá para fazer se você modelar e mapear as Entidades do lado Java, tem gente que já fez. JRuby ainda não gera classes Java bonitinhas que pudessem ser registradas em uma SessionFactory, por enquanto cada script vira uma classe com dois métodos estáticos (ou algo parecido com isso).

Existe m buzz desde o nício de novmembro na litsa de jvm-languages sobre o JVM Dynamic Languages Metaobject Protocol, o Nutter chegou a fazer a primeira implementação em Ruby pode ser um bom passo mas acho que o Hibernate no seu estado atual não se adaptaria ao fato de java.lang.Object não ser o OTO (one true object) de uma linguagem dinâmica.