Sugestões para dois tipos de frameworks ?!

Ola pessoal,

Estou iniciando o desenvolvimento de um sistema empresarial para WEB. O sistema irá atender a aproximadamente 20 filiais da empresa através da internet. Eu tenho uma idéia como poderia ser, porém não sei ainda quais frameworks utilizar para agilizar e simplificar o desenvolvimento. A equipe de desenvolvimento é pequena. Precisamos de agilidade e facilidade no desenvolvimento (quanto menos codigo, melhor).

As ideias que tenho são as seguintes:

Interface:A grande maioria dos formulários poderá ser em HTML. Porém preciso que alguns (talvez uns 4) tenham uma interface mais ágil. Neste caso estou pensando utilizar Swing em Applets. O total será aproximadamente uns 40 formulários (Cadastros de clientes, fornecedores, emissao de nota fiscal etc.)

A camada do meio: será toda em servlet. Não descartei ainda o uso de EJB, mas não seria minha primeira opcao. Não sei ainda como posso tirar HTML dos servlets e as regras das paginas JSP. Entao primeiramente, precisamos de uma framework facil para fazer este isolamente entre regras e interface. Não sei se precisamos de um framework tao poderoso como Struts. Estava pensando em algo mais rapido e simples para desenvolver. O que vcs. sugerem ?

Base de dados: vamos utilizar banco conhecido e robusto. Dificilmente mudaremos este banco de dados. Para fins de performance e desenvolvimento estava pensando utilizar somente storeds procedures. Não estou muito preocupado em portabilidade. Minha preocupação é facilidade e agilidade no desenvolvimento. Vcs. acham que estou errado e que deveria partir para JDO ou Hibernate ?

TIA (thanks in advance),

Marcelo.

Um framework MVC aconselho o WebWork.
Ele é simples de usar e bastante poderoso.

Sobre o hibernate ou JDO, eu conheço um pouco do hibernate. Acho ele bastante produtivo. Store procedure é legal, mas acredito que trabalhando com camada de persistência você vai ganhar maior produtividade e independência de banco de dados.

Essas são minhas opiniões :lol:

Acho legal vc tentar ir pro lado mais forte: se a galera manja bem de programa SP no banco, vai por ai, mas ai vc fica preso no banco. O porem disso seria a velocidade de processamento ( indispensavel num ERP ) o que é mto bom. Tem tb algumas caracteristicas que mudam de banco pra banco ( exemplo de rowid no oracle ). Isso te ferra um pouco, pq se vc colocar tuas procedures ( teu sistema ) dependendo de algo assim, acho q nao vai ser legal de um dia precisar portar pra outro banco.

Se vc for pelo hibernate, por exemplo, vc tera tudo bem distribuido, porem, se precisar usar algo ~legal q um certo banco tenha, vc nao vai querer ( devido a portabilidade ): visto que no hibernate, se quiser, vc pode usar o SQL direto no banco, podendno usar os recursos dele.

Com relação a framework, se vc ta começando tudo do 0, entao é melhor começar direito: pegue o webwork e dá uma lida: eu nao conheci anda de web, li ele e gostei: ja sai programando umas paginas :smiley: hehehehe…
Mas se achar meio dificil, continua pelo JSP+Servlet que tb nao é tao ruim assim. So divida tudo direito e bonitinho. Mais tarde vc pode botar tudo no webwork, ou algo assim.

Eu to num processo desse, mas to fazendo em swing. Pensando em portar pra web, mas o pessoal acha q nao compensa, ja q iniciamos em swing. Eu acho q compensa sim, mas como nao tenho força de palavra. Tenho uma framework interna pra trabalahr com o banco, o que facilitou minha vida se eu precisar portar pra web: pordem, como te falei, to engessado com o oracle, pois fizeram mto uso de store procedures ( pl/sql ) usando mts recursos do proprio oracle, e inviabiliza a transação para um SQL Server, por exemplo ( minha opniao ). Por outro lado, tenho uma maior faciliadade em desenvolver algo utilizando o banco oracle ( bibliotecas ), caso o cliente precise.

Abraços!

Se voce não está afim de usar um framework de MVC como Struts ou webwork, pode usar a solução manual que é servlets processando o request e dando foward para um JSP gerar o HTML.

Obrigado pelas respostas.

Estou realmente comecando do zero. Nossa equipe de desenvolvimento tem pouca experiencia com Java. Estamos recebendo treinamento , comprando livros e tudo mais. Não vamos sair programando agora, a intenção é absorver a tecnologia, estudar e iniciar o projeto dentro de 6 meses. Mas mesmo assim estamos com muita dificuldade, pois a forma que progravamos anteriormente eh totalmente diferente (delphi estrutural). Por isto, estamos optando pela facilidade de codificacao.

E quanto ao uso de padroes de projeto ? Existe alguma recomendacoes de vcs. ? Estava vendo o Core J2EE patterns e consegui identificar pelo menos 2 que poderia estar utilizando: Data Access Object e Transfer Object. Quais são os outros padroes de projetos “obrigatorios” em um sistema de medio porte ?

Marcelo.

Quanto aos padroes de projeto, nao existe uma resposta pronta pra isso, mas voce vai provavelmente se interessar bastante em dois padroes: MVC e Inversao de Controle (ou Inversion of Control, IoC). Eles sao complementares, e usa-los pode representar uma melhora bastante significativa na qualidade do codigo.

E só um adendo sobre stored procedures (sqlserver) X código java:

Fiz uns testes um pouco complexos envolvendo consultas em algumas tabelas e alguns calculos. Com stored procedure tudo acontecia no banco, e ela só me retornava o resultado dos cálculos. Usando apenas java, obviamente era necessário pegar todos os registros pertinentes e então fazer a conta.

Cada processamento envolvia o acesso de aproximadamente 200.000 registros.

Tirando uma média de tempo de +/- 20 execuções, com sp demorou 1.7s e com java 3.0s.

Por 1.3s eu prefiro infinitamente ter um projeto bem arquitetado e manutenível do que uma lista imensa de stored procedures que nem podem ser guardadas em pastinhas.

Ola Lipe,

A performance não é minha maior preocupação. A maior preocupação é velocidade de programação. Como estou começando tenho muitaaaaass coisas para aprender (webwork, struts, velocity aahhhhhh :o ).

Não me decidi ainda sobre o uso ou não de SP. HOJE, para mim, fica mais rapido fazer SP do que aprender JDO ou HIBERNATE.

Programar JAVA é fácil. Construir aplicativos empresariais com JAVA…a história eh outra hein !!!

Já estou quase tirando meu Phd de louco !!!

[quote=“LIPE”]E só um adendo sobre stored procedures (sqlserver) X código java:

Fiz uns testes um pouco complexos envolvendo consultas em algumas tabelas e alguns calculos. Com stored procedure tudo acontecia no banco, e ela só me retornava o resultado dos cálculos. Usando apenas java, obviamente era necessário pegar todos os registros pertinentes e então fazer a conta.

Cada processamento envolvia o acesso de aproximadamente 200.000 registros.

Tirando uma média de tempo de +/- 20 execuções, com sp demorou 1.7s e com java 3.0s.

Por 1.3s eu prefiro infinitamente ter um projeto bem arquitetado e manutenível do que uma lista imensa de stored procedures que nem podem ser guardadas em pastinhas.[/quote]

[quote=“LIPE”]Cada processamento envolvia o acesso de aproximadamente 200.000 registros.

Tirando uma média de tempo de +/- 20 execuções, com sp demorou 1.7s e com java 3.0s.[/quote]

Que isso!? Tua maquina é super processadora!?! rsssssss…
Eu fiz um teste aqui utilizando banco oracle. Mesmo esquema: Store Procedures x Java.

O numero de registros era aproximadamente esse, mas o problema é que o processo , a cada registro lido, precisava ir no banco fazer mais e mais pesquisas. E calculos e mais claculos, e insere, e apagar registro novo.
Bem, resumindo: no banco~, em media demora 1min ( base de teste tah ! ), no java, tentando otimizar o maximo possivel de acesso ao banco, consegui fazer em 5min :shocked!: :shocked!:

Nem quero imaginar qdo tiver em produção , que demora 40 min!

Sinceramente, fiquei em duvida se eu sei mesmo programar…rsss…

Bem, tá registro ai :smiley:
Mas ainda prefiro os 5min do java e a portabilidade… hehehehehe

Abraços!

Hibernate compra muita performance no que se trata de relacionamento entre tabelas.

Usando um padrão como Open Session in View, voce pode usar muitos relacionamentos e não carregar eles caso não sejam necessarios, isso é feito de forma simples apenas configurando alguns XML, fazer isso com SP/hand code é muuito mais dificil e erros prone (mais código). Outra coisa é o caching do Hibernate, com o 2.1 é possivel obter muito mais performance por simplesmente manter boa parte os objetos no AS cacheados, isso é de extrema importancia para sites onde a taxa de leitura é majoritaria.

Eu tenho feito algumas coisas pra web com Java. Ao mesmo tempo tenho estudado alguns desses frameworks.

Tenho usado o struts, apenas porque comecei nele há algum tempo, antes de existir o WebWork. Muito tem se falado do WW. Acho que vale olhar. Não aconselho vcs montarem uma estrutura Servlets+JSP do zero. Vcs certamente irão encontrar problemas já encontrados e irão dar soluções que provavelmente já foram criadas. E provavelmente melhores. Então porque não reutilizar. Além disso, já que vcs têm pouca experiência em Java + Web, aproveita a experiência de quem criou estes frameworks. Eles não foram criados a toa.

Então, MVC pra web, sugiro Struts ou WebWork. Para persistência, independente de vc usar SP ou não, o hibernate (ou algum outro) vai lhe ser útil. É fácil de aprender, e poupa uma trabalheira grande. Já que vc está em fase de aprendizado, vale a pena olhar com carinho.

Tão importante ou mais que isso tudo, é a arquitetura da sua aplicação. Planeje ela direitinho, já que vc pensa em usar Swing tbem. Nao coloque suas regras de negócio nas Actions do Struts (no WW acho que é diferente, pois as Actions não estão atreladas ao mundo Http www.opensymphony.com).

Mas uma coisa é certa. Esse frameworks ajudam, diminuem o tempo de desenvolvimento e padronizam sua aplicação (pelo menos parte dela). O esforço de aprender certamente será menor do que o esforço de criar tudo do zero. Pior, certamente será menor do que dar manutenção neste sistema depois que ele estiver pronto como “A camada do meio: será toda em servlet”. Invista antes, para gastar menos depois.

É a minha opinião. Posso estar errado.

hehe meu pc não é tao poderoso assim não! athlon 2.2+ …

mas como você fez com java? deixou a conexão aberta e foi fazendo as coisas? porque se foi assim, esquece hehe

[quote=“LIPE”]hehe meu pc não é tao poderoso assim não! athlon 2.2+ …

mas como você fez com java? deixou a conexão aberta e foi fazendo as coisas? porque se foi assim, esquece hehe[/quote]

Huahauhauah… eu to num PIII 800 e pouco com 512…
Eu uso o pool de conexao da oracle, e sim, fecho a conecao sempre que utilizo, mas nao comito… deixo em aberto na sessao. no final sim, eu dou um comiit na sessao. :roll: :wink:

pq “esquece se nao fechar” ? Nunca deixei aberto, mas tipo estoura o buffer do jdbc ? Lesa a maquininha ?..rssss… :smiley: