SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
Prof. Adriano Teixeira de Souza
         Biblioteca de Classes e Frameworks
   “Reusar” software não é simples
   Maioria dos esforços resultam apenas
    reutilização de pequenos componentes
   Principais vantagens do uso de frameworks
    ◦ Aumento do reuso
    ◦ Diminuição do tempo para produção de família de
      aplicações
   Framework provê reutilização de
    ◦ Design
    ◦ Código
   Reuso em larga escala


                           Prof. Adriano Teixeira de Souza
   A primeira geração de OO situou-se sobre
    bibliotecas de classes para empacotar objetos
    para reutilização.

   Uma abordagem mais promissora é usar um
    framework de objetos.

   Frameworks são bibliotecas de classes pré-
    montadas que são empacotadas para provê
    funcões específicas. Frameworks tornará mais
    fácil montar aplicações com objetos.


                         Prof. Adriano Teixeira de Souza
   Bibliotecas
    ◦ Conjunto de classes relacionadas
      Funcionalidades de propósito geral
    ◦ Classes não relacionadas a um domínio de aplicação
      específica
      Em contrapartida às classes de um framework
   Diferença
    ◦ Grau de reutilização
    ◦ Impacto na arquitetura da aplicação
   Classe de uma biblioteca
    ◦ Reutilizada sozinha
   Classe de um framework
    ◦ Reutilizada juntamente com as outras em uma
      instanciação


                                Prof. Adriano Teixeira de Souza
Biblioteca                   Framework




   Classes instanciadas pelo cliente            Customização com subclasse ou
   Cliente chama funções                         composição
   Não tem fluxo de controle pré-               Chama funções da “aplicação”
    definido                                     Controla o fluxo de execução
   Não tem interação pré-definida               Define interação entre objetos
   Não tem comportamento default                Provê comportamento default



                                        Prof. Adriano Teixeira de Souza
   “Um framework é um conjunto de classes que constituem
    um design abstrato para soluções de uma família de
    problemas.”
                                      Johnson e Foote (1988)

   “Um framework é um conjunto de objetos que colaboram
    com o objetivo de cumprir um conjunto de
    responsabilidades para uma aplicação ou um domínio de
    um subsistema.”
                                             Johnson (1991)

   “Uma arquitetura desenvolvida com o objetivo de se obter
    a máxima reutilização, representada como um conjunto de
    classes abstratas e concretas, com grande potencial de
    especialização.”
                                            Mattsson (1996)
   Reusável
    ◦ Propósito final
    ◦ Para ser reusável, deve primeiro ser usável
      Bem documentado
      Fácil de usar
   Extensível
    ◦ Framework contém funcionalidade abstrata (sem
      implementação) que deve ser completada
   Seguro
    ◦ Desenvolvedor de aplicações não pode destruir o
      framework
   Eficiente
    ◦ Devido a seu uso em muitas situações, algumas das
      quais poderão necessitar de eficiência
   Um framework é uma estrutura de classes
    interrelacionadas, que corresponde a uma
    implementação incompleta para um conjunto de
    aplicações de um domínio.

   Esta estrutura de classes deve ser adaptada para a
    geração de aplicações específicas.

   A abordagem de frameworks orientados a objetos
    produz uma descrição de um domínio para ser
    reutilizada.

   Um framework é um esqueleto de implementação de
    uma aplicação ou de um subsistema de aplicação, em
    um domínio de problema particular.



                             Prof. Adriano Teixeira de Souza
   Frameworks não são simplesmente coleções de
    classes. Ao contrário, são caracterizados com rica
    funcionalidade e interconexões entre classes de
    objetos, que provêem uma infraestrutura para o
    desenvolvedor.

   Uma classe abstrata é um projeto para um único
    objeto. Um framework é o projeto de um conjunto
    de objetos que colaboram para executar um
    conjunto de responsabilidades.




                            Prof. Adriano Teixeira de Souza
   Um framework é uitilizado através de
    configuração ou conexão de classes
    concretas e derivação de novas classes
    concretas a partir das classes abstratas do
    framework.

   ... não apenas classes, mas a forma como as
    instâncias das classes colaboram ...




                         Prof. Adriano Teixeira de Souza
   A diferença fundamental entre um framework
    e a reutilização de classes de uma biblioteca.

    ◦ No caso de biblioteca de classes são usados artefatos
      de software isolados, cabendo ao desenvolvedor
      estabelecer sua interligação

    ◦ No caso do framework, é procedida a reutilização de
      um conjunto de classes interrelacionadas.




                            Prof. Adriano Teixeira de Souza
   Aplicação desenvolvida totalmente.

   Aplicação desenvolvida reutilizando classes
    de biblioteca.

   Aplicação desenvolvida reutilizando um
    framework.




                         Prof. Adriano Teixeira de Souza
   Os frameworks fornecem infraestrutura de
    projeto disponibilizada ao desenvolvedor da
    aplicação, que reduz a quantidade de código a
    ser desenvolvida, testada e depurada.

   As interconexões preestabelecidas definem a
    arquitetura da aplicação, liberando o
    desenvolvedor desta responsabilidade.

   O código escrito pelo desenvolvedor visa
    estender ou particularizar o comportamento do
    framework.

                         Prof. Adriano Teixeira de Souza
   Um papel do framework é fornecer o fluxo do
    controle da aplicação. Assim, em tempo de
    execução as instâncias das classes
    desenvolvidas esperam ser chamadas pelas
    instâncias das classes do framework.




                        Prof. Adriano Teixeira de Souza
   Um framework se destina a gerar diferentes
    aplicações para um domínio. Precisa, então,
    conter uma descrição dos conceitos deste
    domínio.

   As classes abstratas de um framework são os
    repositórios dos conceitos gerais do domínio
    de aplicação.




                        Prof. Adriano Teixeira de Souza
   No contexto de um framework, um método
    de uma classe abstrata pode ser deixado
    propositalmente incompleto para que sua
    definição seja acabada na geração de uma
    aplicação.

   Apenas os atributos a serem utilizados por
    todas as aplicações de um domínio são
    incluídos em classes abstratas.




                        Prof. Adriano Teixeira de Souza
   Os frameworks invertem a ótica de reuso das
    classes, da abordagem bottom-up para a
    abordagem top-down:

    ◦ O desenvolvimento inicia com o entendimento do sistema
      contido no projeto do framework, e segue no detalhamento
      das particularidades da aplicação específica, o que é
      definido pelo usuário do framework.

   Assim, a implementação de uma aplicação a partir
    do framework é feita pela adaptação de sua
    estrutura de classes, fazendo com que esta inclua
    as particularidades da aplicação.


                              Prof. Adriano Teixeira de Souza
   Com o framework pronto, benefícios
    ◦ Redução de custos
    ◦ Redução de time-to-market
   Motivos
    ◦ Maximização de re-uso (análise, design, código, testes)
       Reutilização de design feito por outros pode transferir conhecimento e
        experiência para o usuário do framework
    ◦ Desenvolvedores adicionam valor em vez de reinventar a roda
    ◦ Menos manutenção
       Fatoração de aspectos comuns a várias aplicações
       Uso de herança permite corrigir todas as aplicações com a troca de uma
        classe-mãe
         Cuidado com o "Fragile Base Class Problem” onde troca da classe-mãe
          quebra as filhas
    ◦ Melhora do código (menos defeitos) devido ao uso em várias
      aplicações




                                      Prof. Adriano Teixeira de Souza
   Outras vantagens
    ◦ Diminuição de linhas de código na aplicação
    ◦ Melhor consistência e compatibilidade entre aplicações
    ◦ Conhecimento sobre o domínio da aplicação é mantido
      dentro da organização
    ◦ Alavancagem do conhecimento de especialistas
      Framework oferece uma forma de empacotar o
       conhecimento de especialistas sobre domínios de problemas
      Assim, não se perde o conhecimento com a saída de
       especialistas e o conhecimento pode ser usado/estudado
       sem a presença do especialista
      Resultado: criação de patrimônio estratégico da empresa
       (Strategic Asset Building)




                               Prof. Adriano Teixeira de Souza
   Construir um framework é complexo
    ◦ Re-uso não vem sozinho: deve ser planejado
    ◦ É mais complexo e demora mais fazer uma aplicação
      tendo que construir um framework em vez de fazer a
      aplicação do zero
   Documentação é essencial para o usuário
    (desenvolvedor) poder utilizar o framework
   Dificuldade para manter compatibilidade com
    versões anteriores
    ◦ Frameworks se tornam mais maduros com o passar do
      tempo e as aplicações devem evoluir em paralelo
   Flexibilidade e generalização do framework
    podem trabalhar contra sua eficiência em
    algumas aplicações

                             Prof. Adriano Teixeira de Souza
   Benefícios são realizados em longo prazo
    ◦ Quem pode pensar em longo prazo quando se está
      competindo "On Internet time"?
      Poucas empresas
      Uma empresa aeroespacial demorou anos para fazer
       frameworks e começou a ter retorno na quarta missão


   Precisa-se modificar o processo de
    desenvolvimento e criar novos incentivos




                            Prof. Adriano Teixeira de Souza
Existem, literalmente, milhares de frameworks disponíveis para as
diversas linguagens de programação existentes. Diante desta
imensidão de “oferta”, é importante optar por um que atenda a suas
necessidades e que seja consoante a seu método e estilo de
trabalho. Inicialmente, pode parecer que usar um framework é pior
do que fazer uma “programação pura”.

Entretanto, tenha certeza:
vale a pena dedicar seu tempo nisso!
As vantagens vindouras de ter um projeto
bem estruturado e rodando numa plataforma
segura e estável compensam.




                               Prof. Adriano Teixeira de Souza
   .NET
Microsoft .NET (conhecido por .NET Framework -
em inglês: dotNet) é uma iniciativa da empresa
Microsoft, que visa uma plataforma única para
desenvolvimento e execução de sistemas e
aplicações. Todo e qualquer código gerado para
.NET, pode ser executado em qualquer dispositivo que possua
um framework de tal plataforma.

A plataforma .NET é executada sobre uma Common Language
Runtime - CLR (Ambiente de Execução Independente de Linguagem)
interagindo com um Conjunto de Bibliotecas Unificadas (framework).
Esta CLR é capaz de executar, atualmente, mais de 20 diferentes
linguagens de programação, interagindo entre si como se fossem uma
única linguagem.




                               Prof. Adriano Teixeira de Souza
   Java
    ◦ Struts (J2EE) - um dos frameworks mais usados em ambientes corporativos para
      construção de aplicações web. Usa o modelo MVC e caracterizado por uma
      camada de controle com uso de J2EE e XML.

    ◦ JavaServer Faces (J2EE) - baseado em tecnologia de servlets e JSP, pode ser
      usado como uma opção ao Struts.

    ◦ Spring - framework baseado em orientação a aspectos. Possibilidade de uso em
      conjuntos com outros frameworks MVC, como o Struts e JSF.

    ◦ Hibernate (Persistência de Dados) - conhecido framework de persistência de
      dados, que usa conceitos de banco de dados, além do mapeamento objeto-
      relacional (classes Java para tabelas de databases).




                                         Prof. Adriano Teixeira de Souza
   Java
    ◦ JUnit (testes) - talvez o mais usado framework Java, incluído em IDEs free ou
      comerciais. Para testes unitários em geral.

    ◦ Log4J (log) - amplamente usado e útli para geração de logs.

    ◦ Jakarta commons-log (log) - semelhante ao Log4J, sob o selo da Jakarta.

    ◦ Ant (build e deploy) - framework também amplamente divulgado da Jakarta
      para automatização de processos de construção, além de testes e distribuição.

    ◦ Jasper Report / iReport (geradores de relatório) - framework para geração de
      modo dinâmico de relatórios. Compatível com formatos xml, pdf e html.




                                         Prof. Adriano Teixeira de Souza
   PHP
    ◦ CakePHP – Um dos Frameworks de PHP mais utilizado. É um
      framework de desenvolvimento rápido para PHP que fornece
      uma arquitetura extensível para desenvolvimento, manutenção,
      e distribuição de aplicações. Usando design patterns
      conhecidos como MVC e ORM com convenção sobre o
      paradigma da configuração, reduz o custo do desenvolvimento
      e ajuda os desenvolvedores a escreverem menos código.

    ◦ Symfony - Destina-se a acelerar a criação e manutenção de
      aplicações web, e para substituir as tarefas repetitivas de
      codificação. É fácil de instalar em qualquer configuração e é
      compatível com quase todos os sistemas de banco de dados.




                                        Prof. Adriano Teixeira de Souza
   PHP
    ◦ Zend – É um dos frameworks PHP mais utilizados. É baseado na
      simplicidade, nas melhores praticas orientadas a objeto,
      licenciamento corporativo amigável, e uma base de código ágil
      rigorosamente testada. Zend Framework é focado na
      construção de mais seguras, confiáveis e modernas aplicações
      de serviços web, e APIs de fornecedores líderes como Google,
      Amazon, Yahoo, Flickr.

    ◦ Zoop - É estável, escalável e portátil. O Zoop é projetado para
      ser rápido, eficiente e limpo. É facilmente extensível e você
      optar por incluir apenas a funcionalidade que você usa.




                                         Prof. Adriano Teixeira de Souza
PHP




      Prof. Adriano Teixeira de Souza
   Python - Mais populares Frameworks de
    pilha completa
    ◦ Django - Framework para perfeccionistas, traz facilidades para
      construir melhores aplicativos Web mais rapidamente e com menos
      código. Ele encoraja o desenvolvimento rápido e limpo, com um design
      prático.

    ◦ Pylons – Framework leve que enfatiza a flexibilidade e o
      desenvolvimento rápido. Recentemente foi colocado em estado de
      manutenção com o lançamento do Pyramid, o seu sucessor.

    ◦ TurboGears – Combina SQLAlchemy(Model), Genshi(View),
      Pylons(Controller), Repoze e Tosca Widgets. Oferece um
      desenvolvimento rápido, com modelos de design amigáveis, um
      poderoso e flexível mapeamento relacionado a objetos (ORM).



                                        Prof. Adriano Teixeira de Souza
   Python
    ◦ web2py – De fácil uso, com tudo em um pacote sem
      dependências adicionais. Não tem arquivos de configuração, não
      requer instalação e pode ser rodado de uma unidade USB. Usa
      Python para MVC.

    ◦ Zope – Conhecido como o avô dos Frameworks de Python para
      Web, ele tem crescido em uma família de frameworks ao longo
      dos anos. A primeira versão foi lançada em 1999.

    ◦ Outros Frameworks de pilha completa
       CubicWeb, Enamel, GAE framework, Glashammer, Karringell, Nagare,
        notmm, Porcupine, QP, SkunkWeb, Spyce, Tipfy, Tornado, WebCore,
        web.py, Webware, Werkzeug, WHIFF, XPRESS.


    ◦ Frameworks básicos
       AppWsgi, Bobo, Bottle, CherryPy, circuits.web, Python Paste, PyWebLib,
        WebStack. Albatross, Aquarium, Divmod Nevow, Flask, JOTWeb2,
        Python Servlet Engine, Pyramid, Repoze.bfg, Quixote, Spiked.



                                              Prof. Adriano Teixeira de Souza
   Ruby
    ◦ Ruby on Rails – Mais conhecido framework da linguagem ruby para
      desenvolvimento Web. É um projeto de código aberto e as aplicações
      criadas utilizando o framework Rails são desenvolvidas com base no
      padrão de projeto MVC. Ruby on Rails foi uma extração de um projeto
      de David Heinemeier Hansson, o gerenciador de projetos Basecamp.
      Foi lançado a público pela primeira vez em julho de 2004. O Rails é
      um "meta-framework", uma vez que é uma junção de cinco
      frameworks: Active Record, Action Pack, Action Mailer, Active Support
      e Action Webservices.

    ◦ Padrino - O Padrino é um framework Ruby construído baseado no
      Sinatra. O Sinatra é uma DSL para agilizar a criação de aplicações web
      simples. Padrino foi desenvolvido para tornar mais fácil e divertido o
      código de aplicações web mais avançadas. São muitas as
      funcionalidades adicionais que o Padrino traz em relação ao Sinatra,
      como os helpers, geradores, mailer, seção administrativa, login, etc.



                                          Prof. Adriano Teixeira de Souza
   Ruby
    ◦ Cramp - Este é um framework web assíncrono orientado à eventos, baseado na
      biblioteca EventMachine. Nas palavras do próprio autor do framework (Pratik
      Naik), o Cramp não serve para a maioria das aplicações web que vemos por aí.
      O Cramp foi desenvolvido para fazer I/O disparado por eventos com maior
      segurança e desempenho – ideal para situações onde é necessário gerenciar
      uma grande quantidade de conexões abertas (APIs de streaming, por exemplo).

    ◦ Rango - O Rango é um framework web baseado em Rack, inspirado no Django.
      Leve e customizável, seu objetivo é ser mais robusto que Sinatra, porém menor
      que Rails e Merb. Para isso, foi feito de forma modular, permitindo que o
      desenvolvedor escolha seus componentes.

    ◦ Merb - Esse é um dos frameworks mais famosos para Ruby, e seu diferencial
      está na flexibilidade. O Merb permite que você escolha “monte” o framework,
      escolhendo o seu ORM, sua biblioteca de JavaScript e a linguagem dos
      templates através de plugins. Oferece uma série de funcionalidades, como
      ferramenta de testes e correio, monitor de exceções, e geradores. Baseado no
      padrão MVC.

                                         Prof. Adriano Teixeira de Souza

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Mini aula-java
Mini aula-javaMini aula-java
Mini aula-java
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
Introdução ao Java
Introdução ao JavaIntrodução ao Java
Introdução ao Java
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
 
Cactus xp
Cactus xpCactus xp
Cactus xp
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Padrão de Projeto - Adapter
Padrão de Projeto - AdapterPadrão de Projeto - Adapter
Padrão de Projeto - Adapter
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 

Destaque

Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...eneck
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webRegis Magalhães
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoRegis Magalhães
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Regis Magalhães
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Regis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosRegis Magalhães
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 

Destaque (20)

Paradigma mvc
Paradigma mvcParadigma mvc
Paradigma mvc
 
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
 
Easy Rails
Easy RailsEasy Rails
Easy Rails
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Pascal Tipos
Pascal TiposPascal Tipos
Pascal Tipos
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Prog web 06-php-oo
Prog web 06-php-ooProg web 06-php-oo
Prog web 06-php-oo
 
Prog web 07-pdo
Prog web 07-pdoProg web 07-pdo
Prog web 07-pdo
 
Java 14 Javadoc
Java 14 JavadocJava 14 Javadoc
Java 14 Javadoc
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Java 15 Jar
Java 15 JarJava 15 Jar
Java 15 Jar
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 

Semelhante a Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks

Reutilização
ReutilizaçãoReutilização
Reutilizaçãoemjorge
 
Frameworks da web - Uma ferramenta de reutilização de software
Frameworks da web - Uma ferramenta de reutilização de softwareFrameworks da web - Uma ferramenta de reutilização de software
Frameworks da web - Uma ferramenta de reutilização de softwareThomas Kanzig
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
Apresentação versão 1.5
Apresentação   versão 1.5Apresentação   versão 1.5
Apresentação versão 1.5oliveiraprog
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento webArlindo Santos
 
O que é framework
O que é frameworkO que é framework
O que é frameworkfcdigital
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetosGustavo Souza
 
Arquitetura de software e Frameworks
Arquitetura de software e FrameworksArquitetura de software e Frameworks
Arquitetura de software e FrameworksSergio Crespo
 
pec-12-patterns-intro.ppt
pec-12-patterns-intro.pptpec-12-patterns-intro.ppt
pec-12-patterns-intro.pptssuser7025cf
 
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Lucas Furtado de Oliveira
 

Semelhante a Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks (20)

Reutilização
ReutilizaçãoReutilização
Reutilização
 
Frameworks da web - Uma ferramenta de reutilização de software
Frameworks da web - Uma ferramenta de reutilização de softwareFrameworks da web - Uma ferramenta de reutilização de software
Frameworks da web - Uma ferramenta de reutilização de software
 
Aula05 frameworks
Aula05 frameworksAula05 frameworks
Aula05 frameworks
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Apresentação versão 1.5
Apresentação   versão 1.5Apresentação   versão 1.5
Apresentação versão 1.5
 
Iniciando no Codeigniter
Iniciando no CodeigniterIniciando no Codeigniter
Iniciando no Codeigniter
 
Iniciando com Codeigniter
Iniciando com CodeigniterIniciando com Codeigniter
Iniciando com Codeigniter
 
Desenvolvimento baseado em componentes
Desenvolvimento baseado em componentesDesenvolvimento baseado em componentes
Desenvolvimento baseado em componentes
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Reuso desw
Reuso deswReuso desw
Reuso desw
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento web
 
Padrões de design orientado a objetos
Padrões de design orientado a objetosPadrões de design orientado a objetos
Padrões de design orientado a objetos
 
O que é framework
O que é frameworkO que é framework
O que é framework
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetos
 
Arquitetura de software e Frameworks
Arquitetura de software e FrameworksArquitetura de software e Frameworks
Arquitetura de software e Frameworks
 
pec-12-patterns-intro.ppt
pec-12-patterns-intro.pptpec-12-patterns-intro.ppt
pec-12-patterns-intro.ppt
 
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
 
Travalho versao final
Travalho versao finalTravalho versao final
Travalho versao final
 
Framework usar ou não usar
Framework usar ou não usarFramework usar ou não usar
Framework usar ou não usar
 

Mais de Adriano Teixeira de Souza

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosAdriano Teixeira de Souza
 

Mais de Adriano Teixeira de Souza (20)

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de Exceções
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
 

Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks

  • 1. Prof. Adriano Teixeira de Souza Biblioteca de Classes e Frameworks
  • 2. “Reusar” software não é simples  Maioria dos esforços resultam apenas reutilização de pequenos componentes  Principais vantagens do uso de frameworks ◦ Aumento do reuso ◦ Diminuição do tempo para produção de família de aplicações  Framework provê reutilização de ◦ Design ◦ Código  Reuso em larga escala Prof. Adriano Teixeira de Souza
  • 3. A primeira geração de OO situou-se sobre bibliotecas de classes para empacotar objetos para reutilização.  Uma abordagem mais promissora é usar um framework de objetos.  Frameworks são bibliotecas de classes pré- montadas que são empacotadas para provê funcões específicas. Frameworks tornará mais fácil montar aplicações com objetos. Prof. Adriano Teixeira de Souza
  • 4. Bibliotecas ◦ Conjunto de classes relacionadas  Funcionalidades de propósito geral ◦ Classes não relacionadas a um domínio de aplicação específica  Em contrapartida às classes de um framework  Diferença ◦ Grau de reutilização ◦ Impacto na arquitetura da aplicação  Classe de uma biblioteca ◦ Reutilizada sozinha  Classe de um framework ◦ Reutilizada juntamente com as outras em uma instanciação Prof. Adriano Teixeira de Souza
  • 5. Biblioteca Framework  Classes instanciadas pelo cliente  Customização com subclasse ou  Cliente chama funções composição  Não tem fluxo de controle pré-  Chama funções da “aplicação” definido  Controla o fluxo de execução  Não tem interação pré-definida  Define interação entre objetos  Não tem comportamento default  Provê comportamento default Prof. Adriano Teixeira de Souza
  • 6. “Um framework é um conjunto de classes que constituem um design abstrato para soluções de uma família de problemas.” Johnson e Foote (1988)  “Um framework é um conjunto de objetos que colaboram com o objetivo de cumprir um conjunto de responsabilidades para uma aplicação ou um domínio de um subsistema.” Johnson (1991)  “Uma arquitetura desenvolvida com o objetivo de se obter a máxima reutilização, representada como um conjunto de classes abstratas e concretas, com grande potencial de especialização.” Mattsson (1996)
  • 7. Reusável ◦ Propósito final ◦ Para ser reusável, deve primeiro ser usável  Bem documentado  Fácil de usar  Extensível ◦ Framework contém funcionalidade abstrata (sem implementação) que deve ser completada  Seguro ◦ Desenvolvedor de aplicações não pode destruir o framework  Eficiente ◦ Devido a seu uso em muitas situações, algumas das quais poderão necessitar de eficiência
  • 8. Um framework é uma estrutura de classes interrelacionadas, que corresponde a uma implementação incompleta para um conjunto de aplicações de um domínio.  Esta estrutura de classes deve ser adaptada para a geração de aplicações específicas.  A abordagem de frameworks orientados a objetos produz uma descrição de um domínio para ser reutilizada.  Um framework é um esqueleto de implementação de uma aplicação ou de um subsistema de aplicação, em um domínio de problema particular. Prof. Adriano Teixeira de Souza
  • 9. Frameworks não são simplesmente coleções de classes. Ao contrário, são caracterizados com rica funcionalidade e interconexões entre classes de objetos, que provêem uma infraestrutura para o desenvolvedor.  Uma classe abstrata é um projeto para um único objeto. Um framework é o projeto de um conjunto de objetos que colaboram para executar um conjunto de responsabilidades. Prof. Adriano Teixeira de Souza
  • 10. Um framework é uitilizado através de configuração ou conexão de classes concretas e derivação de novas classes concretas a partir das classes abstratas do framework.  ... não apenas classes, mas a forma como as instâncias das classes colaboram ... Prof. Adriano Teixeira de Souza
  • 11. A diferença fundamental entre um framework e a reutilização de classes de uma biblioteca. ◦ No caso de biblioteca de classes são usados artefatos de software isolados, cabendo ao desenvolvedor estabelecer sua interligação ◦ No caso do framework, é procedida a reutilização de um conjunto de classes interrelacionadas. Prof. Adriano Teixeira de Souza
  • 12. Aplicação desenvolvida totalmente.  Aplicação desenvolvida reutilizando classes de biblioteca.  Aplicação desenvolvida reutilizando um framework. Prof. Adriano Teixeira de Souza
  • 13. Os frameworks fornecem infraestrutura de projeto disponibilizada ao desenvolvedor da aplicação, que reduz a quantidade de código a ser desenvolvida, testada e depurada.  As interconexões preestabelecidas definem a arquitetura da aplicação, liberando o desenvolvedor desta responsabilidade.  O código escrito pelo desenvolvedor visa estender ou particularizar o comportamento do framework. Prof. Adriano Teixeira de Souza
  • 14. Um papel do framework é fornecer o fluxo do controle da aplicação. Assim, em tempo de execução as instâncias das classes desenvolvidas esperam ser chamadas pelas instâncias das classes do framework. Prof. Adriano Teixeira de Souza
  • 15. Um framework se destina a gerar diferentes aplicações para um domínio. Precisa, então, conter uma descrição dos conceitos deste domínio.  As classes abstratas de um framework são os repositórios dos conceitos gerais do domínio de aplicação. Prof. Adriano Teixeira de Souza
  • 16. No contexto de um framework, um método de uma classe abstrata pode ser deixado propositalmente incompleto para que sua definição seja acabada na geração de uma aplicação.  Apenas os atributos a serem utilizados por todas as aplicações de um domínio são incluídos em classes abstratas. Prof. Adriano Teixeira de Souza
  • 17. Os frameworks invertem a ótica de reuso das classes, da abordagem bottom-up para a abordagem top-down: ◦ O desenvolvimento inicia com o entendimento do sistema contido no projeto do framework, e segue no detalhamento das particularidades da aplicação específica, o que é definido pelo usuário do framework.  Assim, a implementação de uma aplicação a partir do framework é feita pela adaptação de sua estrutura de classes, fazendo com que esta inclua as particularidades da aplicação. Prof. Adriano Teixeira de Souza
  • 18. Com o framework pronto, benefícios ◦ Redução de custos ◦ Redução de time-to-market  Motivos ◦ Maximização de re-uso (análise, design, código, testes)  Reutilização de design feito por outros pode transferir conhecimento e experiência para o usuário do framework ◦ Desenvolvedores adicionam valor em vez de reinventar a roda ◦ Menos manutenção  Fatoração de aspectos comuns a várias aplicações  Uso de herança permite corrigir todas as aplicações com a troca de uma classe-mãe  Cuidado com o "Fragile Base Class Problem” onde troca da classe-mãe quebra as filhas ◦ Melhora do código (menos defeitos) devido ao uso em várias aplicações Prof. Adriano Teixeira de Souza
  • 19. Outras vantagens ◦ Diminuição de linhas de código na aplicação ◦ Melhor consistência e compatibilidade entre aplicações ◦ Conhecimento sobre o domínio da aplicação é mantido dentro da organização ◦ Alavancagem do conhecimento de especialistas  Framework oferece uma forma de empacotar o conhecimento de especialistas sobre domínios de problemas  Assim, não se perde o conhecimento com a saída de especialistas e o conhecimento pode ser usado/estudado sem a presença do especialista  Resultado: criação de patrimônio estratégico da empresa (Strategic Asset Building) Prof. Adriano Teixeira de Souza
  • 20. Construir um framework é complexo ◦ Re-uso não vem sozinho: deve ser planejado ◦ É mais complexo e demora mais fazer uma aplicação tendo que construir um framework em vez de fazer a aplicação do zero  Documentação é essencial para o usuário (desenvolvedor) poder utilizar o framework  Dificuldade para manter compatibilidade com versões anteriores ◦ Frameworks se tornam mais maduros com o passar do tempo e as aplicações devem evoluir em paralelo  Flexibilidade e generalização do framework podem trabalhar contra sua eficiência em algumas aplicações Prof. Adriano Teixeira de Souza
  • 21. Benefícios são realizados em longo prazo ◦ Quem pode pensar em longo prazo quando se está competindo "On Internet time"?  Poucas empresas  Uma empresa aeroespacial demorou anos para fazer frameworks e começou a ter retorno na quarta missão  Precisa-se modificar o processo de desenvolvimento e criar novos incentivos Prof. Adriano Teixeira de Souza
  • 22. Existem, literalmente, milhares de frameworks disponíveis para as diversas linguagens de programação existentes. Diante desta imensidão de “oferta”, é importante optar por um que atenda a suas necessidades e que seja consoante a seu método e estilo de trabalho. Inicialmente, pode parecer que usar um framework é pior do que fazer uma “programação pura”. Entretanto, tenha certeza: vale a pena dedicar seu tempo nisso! As vantagens vindouras de ter um projeto bem estruturado e rodando numa plataforma segura e estável compensam. Prof. Adriano Teixeira de Souza
  • 23. .NET Microsoft .NET (conhecido por .NET Framework - em inglês: dotNet) é uma iniciativa da empresa Microsoft, que visa uma plataforma única para desenvolvimento e execução de sistemas e aplicações. Todo e qualquer código gerado para .NET, pode ser executado em qualquer dispositivo que possua um framework de tal plataforma. A plataforma .NET é executada sobre uma Common Language Runtime - CLR (Ambiente de Execução Independente de Linguagem) interagindo com um Conjunto de Bibliotecas Unificadas (framework). Esta CLR é capaz de executar, atualmente, mais de 20 diferentes linguagens de programação, interagindo entre si como se fossem uma única linguagem. Prof. Adriano Teixeira de Souza
  • 24. Java ◦ Struts (J2EE) - um dos frameworks mais usados em ambientes corporativos para construção de aplicações web. Usa o modelo MVC e caracterizado por uma camada de controle com uso de J2EE e XML. ◦ JavaServer Faces (J2EE) - baseado em tecnologia de servlets e JSP, pode ser usado como uma opção ao Struts. ◦ Spring - framework baseado em orientação a aspectos. Possibilidade de uso em conjuntos com outros frameworks MVC, como o Struts e JSF. ◦ Hibernate (Persistência de Dados) - conhecido framework de persistência de dados, que usa conceitos de banco de dados, além do mapeamento objeto- relacional (classes Java para tabelas de databases). Prof. Adriano Teixeira de Souza
  • 25. Java ◦ JUnit (testes) - talvez o mais usado framework Java, incluído em IDEs free ou comerciais. Para testes unitários em geral. ◦ Log4J (log) - amplamente usado e útli para geração de logs. ◦ Jakarta commons-log (log) - semelhante ao Log4J, sob o selo da Jakarta. ◦ Ant (build e deploy) - framework também amplamente divulgado da Jakarta para automatização de processos de construção, além de testes e distribuição. ◦ Jasper Report / iReport (geradores de relatório) - framework para geração de modo dinâmico de relatórios. Compatível com formatos xml, pdf e html. Prof. Adriano Teixeira de Souza
  • 26. PHP ◦ CakePHP – Um dos Frameworks de PHP mais utilizado. É um framework de desenvolvimento rápido para PHP que fornece uma arquitetura extensível para desenvolvimento, manutenção, e distribuição de aplicações. Usando design patterns conhecidos como MVC e ORM com convenção sobre o paradigma da configuração, reduz o custo do desenvolvimento e ajuda os desenvolvedores a escreverem menos código. ◦ Symfony - Destina-se a acelerar a criação e manutenção de aplicações web, e para substituir as tarefas repetitivas de codificação. É fácil de instalar em qualquer configuração e é compatível com quase todos os sistemas de banco de dados. Prof. Adriano Teixeira de Souza
  • 27. PHP ◦ Zend – É um dos frameworks PHP mais utilizados. É baseado na simplicidade, nas melhores praticas orientadas a objeto, licenciamento corporativo amigável, e uma base de código ágil rigorosamente testada. Zend Framework é focado na construção de mais seguras, confiáveis e modernas aplicações de serviços web, e APIs de fornecedores líderes como Google, Amazon, Yahoo, Flickr. ◦ Zoop - É estável, escalável e portátil. O Zoop é projetado para ser rápido, eficiente e limpo. É facilmente extensível e você optar por incluir apenas a funcionalidade que você usa. Prof. Adriano Teixeira de Souza
  • 28. PHP Prof. Adriano Teixeira de Souza
  • 29. Python - Mais populares Frameworks de pilha completa ◦ Django - Framework para perfeccionistas, traz facilidades para construir melhores aplicativos Web mais rapidamente e com menos código. Ele encoraja o desenvolvimento rápido e limpo, com um design prático. ◦ Pylons – Framework leve que enfatiza a flexibilidade e o desenvolvimento rápido. Recentemente foi colocado em estado de manutenção com o lançamento do Pyramid, o seu sucessor. ◦ TurboGears – Combina SQLAlchemy(Model), Genshi(View), Pylons(Controller), Repoze e Tosca Widgets. Oferece um desenvolvimento rápido, com modelos de design amigáveis, um poderoso e flexível mapeamento relacionado a objetos (ORM). Prof. Adriano Teixeira de Souza
  • 30. Python ◦ web2py – De fácil uso, com tudo em um pacote sem dependências adicionais. Não tem arquivos de configuração, não requer instalação e pode ser rodado de uma unidade USB. Usa Python para MVC. ◦ Zope – Conhecido como o avô dos Frameworks de Python para Web, ele tem crescido em uma família de frameworks ao longo dos anos. A primeira versão foi lançada em 1999. ◦ Outros Frameworks de pilha completa  CubicWeb, Enamel, GAE framework, Glashammer, Karringell, Nagare, notmm, Porcupine, QP, SkunkWeb, Spyce, Tipfy, Tornado, WebCore, web.py, Webware, Werkzeug, WHIFF, XPRESS. ◦ Frameworks básicos  AppWsgi, Bobo, Bottle, CherryPy, circuits.web, Python Paste, PyWebLib, WebStack. Albatross, Aquarium, Divmod Nevow, Flask, JOTWeb2, Python Servlet Engine, Pyramid, Repoze.bfg, Quixote, Spiked. Prof. Adriano Teixeira de Souza
  • 31. Ruby ◦ Ruby on Rails – Mais conhecido framework da linguagem ruby para desenvolvimento Web. É um projeto de código aberto e as aplicações criadas utilizando o framework Rails são desenvolvidas com base no padrão de projeto MVC. Ruby on Rails foi uma extração de um projeto de David Heinemeier Hansson, o gerenciador de projetos Basecamp. Foi lançado a público pela primeira vez em julho de 2004. O Rails é um "meta-framework", uma vez que é uma junção de cinco frameworks: Active Record, Action Pack, Action Mailer, Active Support e Action Webservices. ◦ Padrino - O Padrino é um framework Ruby construído baseado no Sinatra. O Sinatra é uma DSL para agilizar a criação de aplicações web simples. Padrino foi desenvolvido para tornar mais fácil e divertido o código de aplicações web mais avançadas. São muitas as funcionalidades adicionais que o Padrino traz em relação ao Sinatra, como os helpers, geradores, mailer, seção administrativa, login, etc. Prof. Adriano Teixeira de Souza
  • 32. Ruby ◦ Cramp - Este é um framework web assíncrono orientado à eventos, baseado na biblioteca EventMachine. Nas palavras do próprio autor do framework (Pratik Naik), o Cramp não serve para a maioria das aplicações web que vemos por aí. O Cramp foi desenvolvido para fazer I/O disparado por eventos com maior segurança e desempenho – ideal para situações onde é necessário gerenciar uma grande quantidade de conexões abertas (APIs de streaming, por exemplo). ◦ Rango - O Rango é um framework web baseado em Rack, inspirado no Django. Leve e customizável, seu objetivo é ser mais robusto que Sinatra, porém menor que Rails e Merb. Para isso, foi feito de forma modular, permitindo que o desenvolvedor escolha seus componentes. ◦ Merb - Esse é um dos frameworks mais famosos para Ruby, e seu diferencial está na flexibilidade. O Merb permite que você escolha “monte” o framework, escolhendo o seu ORM, sua biblioteca de JavaScript e a linguagem dos templates através de plugins. Oferece uma série de funcionalidades, como ferramenta de testes e correio, monitor de exceções, e geradores. Baseado no padrão MVC. Prof. Adriano Teixeira de Souza