Seja bem vindo ao Fórum do JavaFree.org
Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.
Deseja participar? Crie sua conta ou efetue seu login
O Portal javafree.org inicia mais uma promoção para os usuários do fórum. Quem publicar mais posts válidos (perguntas ou respostas) entre 16/4 a 13/7 levará para casa um iPad 2 de 16GB!
ola, eu sou meio novo no assunto, gostaria de saber se alguem pode colocar uma arquitetura de um framework, quero saber para que serve e como funciona, onde trabalho estamos comecandoa aprogramar com jsp para as aplicacoes aqui....sou o unico estagiario do setor e gostrai de aprender mais sobre o assunto.....
Amigo, se vc está começando é melhor vc estudar mais sobre jsp e servlets. Se vc entender bem sobre estes assuntos fica mais facil de vc pensar em arquitetura de aplicação, pq vc vai saber o que pode e não pode fazer.
Usar frameworks ajuda muito, e existem vários para diversas finalidades, para qual vc está interessado?
queremos usar um framework para facilitar o desenvolvimento dos sistemas, tipo uma funcao para varios programas, entende?
_________________ JavaFree.org
Existem frameworks de vários tipos, para várias funções diferentes. Entre os mais famosos, estão:
[*:3aa89a77ae]Struts: implementação do padrão MVC para web. Auxilia no controle de navegação de aplicações web. [*:3aa89a77ae]Hibernate: framework de mapeamento objeto-relacional. Mapeia objetos Java para tabelas no banco, gerando todo o SQL necessário para consulta e atualização.
A base do conceito de frameworks e sua característica principal é a inversão de controle, também chamado de 'princípio de Hollywood': "don't call us, we call you".
Um framework é formado por um conjunto de classes abstratas e interfaces, que definem um esqueleto básico, contendo a lógica fundamental (fluxo/loop principal, por exemplo) da aplicação/subsistema. Seu código, específico à aplicação, é 'plugado' ao framework, sendo chamado em eventos pré-determinados (provavelmente configuráveis) do framework.
Geralmente, um framework é acompanhado de uma biblioteca de classes, que contém implementações padrão das classes abstratas e interfaces, além de outras classes que facilitem o uso do framework 'out-of-the-box'.
Frameworks visam reúso, tentando minimizar o código escrito pelo programador de aplicação, para que este represente apenas o código específico.
Se a sua intenção é criar um framework, vá aos poucos, criando componentes reusáveis. Um framework se adapta melhor à realidade se for desenvolvido a partir de sistemas reais, ao invés de 'inventado' do nada.
Mas se o que você quer é aprender a usá-los, dê uma olhada na seção de tutoriais que o dalton ('aspirante') indicou no post passado. Lá tem bastante coisa interessante
Tetsuo
_________________ In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
A base do conceito de frameworks e sua característica principal é a inversão de controle, também chamado de 'princípio de Hollywood': "don't call us, we call you".
Isso ai é a base dos frameworks com IoC não? Nem todos os frameworks são assim.
O Struts e o Hibernate. não são assim.
Framework é um monte de coisa pronta, que é igual pra muitas aplicações, e vai ser reutiilizado para agilizar a construção do software. Tipo estrutura pré-montada de construção. Facilita e agiliza a construção, porque eles produzem todas as coisas mais "dificeis" de fazer pra vc.
Pô, mas dá uma explicada nesses dois frameworks ai!
Hibernate é um framework de mapeamento objeto-relacional. Que blablablá é esse? É um framework que ajuda a programar totalemente orientado objeto e continuar usando banco de dados relacional.
A base do conceito de frameworks e sua característica principal é a inversão de controle, também chamado de 'princípio de Hollywood': "don't call us, we call you".
Isso ai é a base dos frameworks com IoC não? Nem todos os frameworks são assim.
O Struts e o Hibernate. não são assim.
Imagino que o Ronald nao estava se referindo ao pattern IoC. Mas sim quando ele diz "inversao de controle" é que o Framework passa a regrar todo o desenvolvimento da aplicação. É conforme as convenções dele, interfaces e classes abstratas que temos que seguir. Se isso não for feito nao é possivel usa-los. E no momento que acontece isso, a uma "inversão de controle" no desenvolvimento da aplicação.
rafamvc:
Framework é um monte de coisa pronta, que é igual pra muitas aplicações, e vai ser reutiilizado para agilizar a construção do software. Tipo estrutura pré-montada de construção. Facilita e agiliza a construção, porque eles produzem todas as coisas mais "dificeis" de fazer pra vc.
Sim, um framework é um monte de coisa pronta, até porque como já disse o Ronald a maioria vem com uma implementação padrão, mas todos (pelo menos os mais descentes) são baseados em interfaces e classes abstratas que formam o "esqueleto" ou arquitetura das aplicacoes ou componentes que serao desenvolvidos por eles. Note, um framework dificilmente atende a todos requisitos de uma aplicacao, normalmente usamos varios em conjunto para formar uma boa arquitetura para o sistema que será desenvolvido. Por exemplo, para um sistema web com acesso a banco de dados podemos usar.
Para controller MVC: Struts, WebWork, VRaptor. Para Camada de Visao: Velocity, JSP, Freemaker, JSF. Para Mapeamento O/R : Hibernate, OJB, Torque, etc.
Ainda podem ser usados outros frameworks que implementam outras partes do sistema, como fremeworks para DI, para autenticacao, etc.
rafamvc:
Pô, mas dá uma explicada nesses dois frameworks ai!
Hibernate é um framework de mapeamento objeto-relacional. Que blablablá é esse? É um framework que ajuda a programar totalemente orientado objeto e continuar usando banco de dados relacional.
Da uma procurada por eles no forum, já debatemos aqui assuntos dos mais variados sobre eles. Se depois persistirem duvidas posta que a galera esclarece tudo.
ola, eu sou meio novo no assunto, gostaria de saber se alguem pode colocar uma arquitetura de um framework, quero saber para que serve e como funciona, onde trabalho estamos comecandoa aprogramar com jsp para as aplicacoes aqui....sou o unico estagiario do setor e gostrai de aprender mais sobre o assunto.....
abracos obrigado
Primeiro olhe aqui, depois especifique melhor a dúvida.
A Paz!!
_________________ Paulo Henrique Borges de Melo JavaMetal - GoJava - GUJ - Ubuntu Linux - Rising Cross Sun Certified Java Programmer Bacharel em Ciência da Computação Especialista em Análise e Projetos de Sistemas de Informação _____________________________ "Que a cruz sagrada seja minha luz!!"
A base do conceito de frameworks e sua característica principal é a inversão de controle, também chamado de 'princípio de Hollywood': "don't call us, we call you".
Isso ai é a base dos frameworks com IoC não? Nem todos os frameworks são assim.
O Struts e o Hibernate. não são assim.
Como o fabio falou, eu não estava falando especificamente de IoC usado como 'marketing' dos containers lightweight (que foi redefinido como Dependency Injection, pelo Martin Fowler), mas sim de um princípio básico de todo framework.
O que eu quero dizer com isso? Vamos dar um exemplo:
Usando o Struts, o que você codifica? Actions e FormBeans. Mas como as requisições HTTP, recebidos pelo container Servlet, chegam às suas actions? Através do controller, provida pelo Struts. Isto é, suas Actions são chamadas pelo framework, diferentemente de bibliotecas, onde o seu código chama as funções que você precisa. Esta é a inversão de controle, o fluxo principal (configuração, recepção da requisição e escolha da ação apropriada) foi implementado pelo Struts, você apenas implementou as classes abstratas que ele define para poder 'plugar' a sua funcionalidade ao framework.
No caso do Hibernate, você pode dizer que nós o chamamos para fazer as queries, por isso ele não usa inversão de controle. Porém, preste atenção: você codifica os beans que vão ser mapeados, e faz os mapeamentos para as tabelas. Depois, você usa o Hibernate para instanciar os beans e carregá-los com os dados do banco, ele lê suas configurações e faz as ligações necessárias entre os beans e as tabelas. Você o chama, mas ele também chama suas classes, e o fluxo principal da lógica de persistência é determinada por ele, obedecendo às configurações feitas.
A inversão de controle também está presente nos toolkits de interface gráfica, onde eles controlam o loop principal da aplicação, e você apenas pluga os tratamentos dos eventos específicos à sua aplicação. Um outro caso seria a de callbacks. Por exemplo, no Jakarta Commons-DBUtils, para você fazer uma query, você usa o método QueryRunner.query(String, ResultSetHandler). A classe QueryRunner é quem implementa toda a lógica de obtenção da conexão de um datasource, PreparedStatement, ResultSet e fechamento dos três, delegando ao objeto ResultSetHandler, que você implementa e passa como parâmetro, apenas a lógica específica para ler o ResultSet.
A 'inversão de controle' dos 'containers IoC' é apenas uma utilização do princípio, que seria a de instanciar os objetos e resolver as dependências entre eles. E foi por que o termo 'inversão de controle' engloba muito mais que isso, que o Fowler, junto com os criadores de vários destes containers, definiu o padrão Dependency Injection (DI), para este uso específico.
rafamvc:
Framework é um monte de coisa pronta, que é igual pra muitas aplicações, e vai ser reutiilizado para agilizar a construção do software. Tipo estrutura pré-montada de construção. Facilita e agiliza a construção, porque eles produzem todas as coisas mais "dificeis" de fazer pra vc.
Bem, isso pode até ser um detalhe acadêmico, mas frameworks definem o esqueleto abstrato, as implementações padrão são apenas facilidades para que possamos usar o framework sem ter que implementar tudo. Tanto que geralmente (quando o framework é bem projetado, pelo menos) você pode substituir estes componentes com suas próprias implementações, bastando implementar algumas interfaces ou classes abstratas, isto é, eles não são 'estritamente necessários' ao framework, mas sim implementações convenientes.
Tetsuo
_________________ In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
Só pra enriquecer mais esse conceito de Framework:
Exitem ainda tipos de Frameworks: Verticais Horizontais
Bem, Frameworks verticais são confeccionados através da experiencia obtida em um determinado contexto específico. Esses são mais comumente chamados de Frameworks especialistas.
Um exemplo é vc ter trabalhado em vários projetos para gerenciamento de farmácias (que tema hein!!!)... Após alguns projetos neste ramo vc certamente notará pontos semelhantes entre estes projetos.
E são nestes pontos que será construido um Framework vertical(especialista) para gerenciamento de farmácias.
Onde seus proximos projetos seram confeccionados com maior rapidez e escalabilidade. onde só teram "ganchos" - Conceito abordado pelo ronald - para customizações por parte de seus novos projetos.
Um Framework Horizontal seria mais abrangente... Mas este ainda estaria em determinado contexto.
Struts é um exemplo de Framework Horizontal, pois ele é determinado a um contexto vasto, projetos WEB. Um outro Framework seria a API JDBC que é um para camada de persistencia
Em qualquer projeto de qualquer natureza se eu precisar de persistencia poderei usar JDBC, Hibernate e por ai vai...
O mesmo serve para o Struts, WebWork.
Poderia usar em conjunto Frameworks verticais e Horizontais colaborando entre si.
Poderia ter um projeto de gerenciamento de farmácias via WEB!!! legal hein!
Poderia ter um projeto de gerenciamento de farmácias via WEB!!! legal hein!
Pois é cara! Tem vários frameworks verticais que seriam hiperlegais de serem criados e não existem em java.... Se existem eu não sei. Outro dia eu tava procurando um framework de comercio eletronico e não achei nenhum! Você conhece algum?
serjao Offline
Posts: 2
ola, eu sou meio novo no assunto, gostaria de saber se alguem pode colocar uma arquitetura de um framework, quero saber para que serve e como funciona, onde trabalho estamos comecandoa aprogramar com jsp para as aplicacoes aqui....sou o unico estagiario do setor e gostrai de aprender mais sobre o assunto.....
abracos
obrigado
_________________
JavaFree.org
lap_junior Offline
Posts: 914
Amigo, se vc está começando é melhor vc estudar mais sobre jsp e servlets. Se vc entender bem sobre estes assuntos fica mais facil de vc pensar em arquitetura de aplicação, pq vc vai saber o que pode e não pode fazer.
Usar frameworks ajuda muito, e existem vários para diversas finalidades, para qual vc está interessado?
flw
_________________
JavaFree.org
Blog
serjao Offline
Posts: 2
queremos usar um framework para facilitar o desenvolvimento dos sistemas, tipo uma funcao para varios programas, entende?
_________________
JavaFree.org
lap_junior Offline
Posts: 914
Não, pode ser mais claro.
_________________
JavaFree.org
Blog
jgbt Offline
Posts: 1206
cara,
acho que vc ta confundindo o conceito de framework... da uma pesquisada sobre isso.
[]'s
_________________
João Bier
JavaFree.org
daltoncamargo Offline
Posts: 8772
Leia e tire suas próprias conclusões
http://www.javafree.com.br/home/modules.php?name=TopTut
_________________
Sugestão de Livros
ronaldtm Offline
Posts: 2299
Existem frameworks de vários tipos, para várias funções diferentes. Entre os mais famosos, estão:
[*:3aa89a77ae]Struts: implementação do padrão MVC para web. Auxilia no controle de navegação de aplicações web.
[*:3aa89a77ae]Hibernate: framework de mapeamento objeto-relacional. Mapeia objetos Java para tabelas no banco, gerando todo o SQL necessário para consulta e atualização.
A base do conceito de frameworks e sua característica principal é a inversão de controle, também chamado de 'princípio de Hollywood': "don't call us, we call you".
Um framework é formado por um conjunto de classes abstratas e interfaces, que definem um esqueleto básico, contendo a lógica fundamental (fluxo/loop principal, por exemplo) da aplicação/subsistema. Seu código, específico à aplicação, é 'plugado' ao framework, sendo chamado em eventos pré-determinados (provavelmente configuráveis) do framework.
Geralmente, um framework é acompanhado de uma biblioteca de classes, que contém implementações padrão das classes abstratas e interfaces, além de outras classes que facilitem o uso do framework 'out-of-the-box'.
Frameworks visam reúso, tentando minimizar o código escrito pelo programador de aplicação, para que este represente apenas o código específico.
Se a sua intenção é criar um framework, vá aos poucos, criando componentes reusáveis. Um framework se adapta melhor à realidade se for desenvolvido a partir de sistemas reais, ao invés de 'inventado' do nada.
Mas se o que você quer é aprender a usá-los, dê uma olhada na seção de tutoriais que o dalton ('aspirante') indicou no post passado. Lá tem bastante coisa interessante
Tetsuo
_________________
In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
rafamvc Offline
Posts: 8
Isso ai é a base dos frameworks com IoC não? Nem todos os frameworks são assim.
O Struts e o Hibernate. não são assim.
Framework é um monte de coisa pronta, que é igual pra muitas aplicações, e vai ser reutiilizado para agilizar a construção do software. Tipo estrutura pré-montada de construção. Facilita e agiliza a construção, porque eles produzem todas as coisas mais "dificeis" de fazer pra vc.
Pô, mas dá uma explicada nesses dois frameworks ai!
O Struts serve para facilitar a aplicação do modelo MVC.
Procurando por MVC? é um ótimo inicio
http://www.javafree.com.br/forum/viewtopic.php?t=8905
Hibernate é um framework de mapeamento objeto-relacional.
Que blablablá é esse?
É um framework que ajuda a programar totalemente orientado objeto e continuar usando banco de dados relacional.
fabio_patricio Offline
Posts: 1509
Imagino que o Ronald nao estava se referindo ao pattern IoC. Mas sim quando ele diz "inversao de controle" é que o Framework passa a regrar todo o desenvolvimento da aplicação. É conforme as convenções dele, interfaces e classes abstratas que temos que seguir. Se isso não for feito nao é possivel usa-los. E no momento que acontece isso, a uma "inversão de controle" no desenvolvimento da aplicação.
Sim, um framework é um monte de coisa pronta, até porque como já disse o Ronald a maioria vem com uma implementação padrão, mas todos (pelo menos os mais descentes) são baseados em interfaces e classes abstratas que formam o "esqueleto" ou arquitetura das aplicacoes ou componentes que serao desenvolvidos por eles.
Note, um framework dificilmente atende a todos requisitos de uma aplicacao, normalmente usamos varios em conjunto para formar uma boa arquitetura para o sistema que será desenvolvido.
Por exemplo, para um sistema web com acesso a banco de dados podemos usar.
Para controller MVC: Struts, WebWork, VRaptor.
Para Camada de Visao: Velocity, JSP, Freemaker, JSF.
Para Mapeamento O/R : Hibernate, OJB, Torque, etc.
Ainda podem ser usados outros frameworks que implementam outras partes do sistema, como fremeworks para DI, para autenticacao, etc.
Da uma procurada por eles no forum, já debatemos aqui assuntos dos mais variados sobre eles. Se depois persistirem duvidas posta que a galera esclarece tudo.
]['s
_________________
JavaFree.org
paulohbmetal Offline
Posts: 290
Primeiro olhe aqui, depois especifique melhor a dúvida.
A Paz!!
_________________
Paulo Henrique Borges de Melo
JavaMetal - GoJava - GUJ - Ubuntu Linux - Rising Cross
Sun Certified Java Programmer
Bacharel em Ciência da Computação
Especialista em Análise e Projetos de Sistemas de Informação
_____________________________
"Que a cruz sagrada seja minha luz!!"
ronaldtm Offline
Posts: 2299
Como o fabio falou, eu não estava falando especificamente de IoC usado como 'marketing' dos containers lightweight (que foi redefinido como Dependency Injection, pelo Martin Fowler), mas sim de um princípio básico de todo framework.
O que eu quero dizer com isso? Vamos dar um exemplo:
Usando o Struts, o que você codifica? Actions e FormBeans. Mas como as requisições HTTP, recebidos pelo container Servlet, chegam às suas actions? Através do controller, provida pelo Struts. Isto é, suas Actions são chamadas pelo framework, diferentemente de bibliotecas, onde o seu código chama as funções que você precisa. Esta é a inversão de controle, o fluxo principal (configuração, recepção da requisição e escolha da ação apropriada) foi implementado pelo Struts, você apenas implementou as classes abstratas que ele define para poder 'plugar' a sua funcionalidade ao framework.
No caso do Hibernate, você pode dizer que nós o chamamos para fazer as queries, por isso ele não usa inversão de controle. Porém, preste atenção: você codifica os beans que vão ser mapeados, e faz os mapeamentos para as tabelas. Depois, você usa o Hibernate para instanciar os beans e carregá-los com os dados do banco, ele lê suas configurações e faz as ligações necessárias entre os beans e as tabelas. Você o chama, mas ele também chama suas classes, e o fluxo principal da lógica de persistência é determinada por ele, obedecendo às configurações feitas.
A inversão de controle também está presente nos toolkits de interface gráfica, onde eles controlam o loop principal da aplicação, e você apenas pluga os tratamentos dos eventos específicos à sua aplicação. Um outro caso seria a de callbacks. Por exemplo, no Jakarta Commons-DBUtils, para você fazer uma query, você usa o método QueryRunner.query(String, ResultSetHandler). A classe QueryRunner é quem implementa toda a lógica de obtenção da conexão de um datasource, PreparedStatement, ResultSet e fechamento dos três, delegando ao objeto ResultSetHandler, que você implementa e passa como parâmetro, apenas a lógica específica para ler o ResultSet.
A 'inversão de controle' dos 'containers IoC' é apenas uma utilização do princípio, que seria a de instanciar os objetos e resolver as dependências entre eles. E foi por que o termo 'inversão de controle' engloba muito mais que isso, que o Fowler, junto com os criadores de vários destes containers, definiu o padrão Dependency Injection (DI), para este uso específico.
Bem, isso pode até ser um detalhe acadêmico, mas frameworks definem o esqueleto abstrato, as implementações padrão são apenas facilidades para que possamos usar o framework sem ter que implementar tudo. Tanto que geralmente (quando o framework é bem projetado, pelo menos) você pode substituir estes componentes com suas próprias implementações, bastando implementar algumas interfaces ou classes abstratas, isto é, eles não são 'estritamente necessários' ao framework, mas sim implementações convenientes.
Tetsuo
_________________
In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
mbjunior Offline
Posts: 319
Só pra enriquecer mais esse conceito de Framework:
Exitem ainda tipos de Frameworks:
Verticais
Horizontais
Bem,
Frameworks verticais são confeccionados através da experiencia obtida em um determinado contexto específico. Esses são mais comumente chamados de Frameworks especialistas.
Um exemplo é vc ter trabalhado em vários projetos para gerenciamento de farmácias (que tema hein!!!)...
Após alguns projetos neste ramo vc certamente notará pontos semelhantes entre estes projetos.
E são nestes pontos que será construido um Framework vertical(especialista) para gerenciamento de farmácias.
Onde seus proximos projetos seram confeccionados com maior rapidez e escalabilidade. onde só teram "ganchos" - Conceito abordado pelo ronald - para customizações por parte de seus novos projetos.
Um Framework Horizontal seria mais abrangente...
Mas este ainda estaria em determinado contexto.
Struts é um exemplo de Framework Horizontal, pois ele é determinado a um contexto vasto, projetos WEB.
Um outro Framework seria a API JDBC que é um para camada de persistencia
Em qualquer projeto de qualquer natureza se eu precisar de persistencia poderei usar JDBC, Hibernate e por ai vai...
O mesmo serve para o Struts, WebWork.
Poderia usar em conjunto Frameworks verticais e Horizontais colaborando entre si.
Poderia ter um projeto de gerenciamento de farmácias via WEB!!!
legal hein!
_________________
JavaFree.org
rafamvc Offline
Posts: 8
Pois é cara! Tem vários frameworks verticais que seriam hiperlegais de serem criados e não existem em java....
Se existem eu não sei. Outro dia eu tava procurando um framework de comercio eletronico e não achei nenhum! Você conhece algum?
Felt Offline
Posts: 62
acrescentando uma informaçãozinha hehehe
a minha definição de framework (bem simplista, estilo klaus prevayler ahuehua) é:
"um framework é uma aplicação incompleta"
os termos hotspots e frozenspots,, oq sao?
hotspots sao as partes que o usuario do framework deve implementar (o action do struts por ex)
frozenspot e o codigo que ja esta pronto (o servlet do struts)
outras palavras que eu nao li nos textos
black box
white box
glass box
sao classificações de tipos de frameworks
um aberto, um fechado e um com um pouco dos 2 (BEM resumidamente hehehe)
mbjunior Offline
Posts: 319
Bem lembrado Felt
_________________
JavaFree.org
Relacionados
addFieldError / addError visualizado na página jsp http://javafree.uol.com.br/topic-859122-addFieldError--addError-visualizado-na-pagina-jsp.html webwork CoolUriServletDispatcher http://javafree.uol.com.br/topic-13963-webwork-CoolUriServletDispatcher.html Pegar contexto numa Action http://javafree.uol.com.br/topic-849797-Pegar-contexto-numa-Action.html Plugin JSF para eclipse http://javafree.uol.com.br/topic-856680-Plugin-JSF-para-eclipse.html Trabalhando com Row http://javafree.uol.com.br/topic-9192-Trabalhando-com-Row.html Ajuda para TCC. http://javafree.uol.com.br/topic-854414-Ajuda-para-TCC.html Apresentação de Dados... Otimizando!!! http://javafree.uol.com.br/topic-855492-Apresentacao-de-Dados-Otimizando.html ???¿¿¿FRAMEWORK¿¿¿??? http://javafree.uol.com.br/topic-1496-¿¿¿FRAMEWORK¿¿¿.html ArrayList e Web Service http://javafree.uol.com.br/topic-859767-ArrayList-e-Web-Service.html