SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Trilha – Java
Modularização em Java com OSGI
               Filipe Portes
         Mestre de Obra de Software




                                      Globalcode – Open4education
Mim Tarzan...
 Quase graduado em Ciência da Computação
 Um dos Coordenadores do Grupo de Usuários
 Java de Goiás - @gojava
 Mais de 5 anos de experiência com
 desenvolvimento e arquitetura Java
 Atualmente trabalha no Centro de Gestão e
 Estudos Estratégicos em Brasília – DF
 Sósia oficial do Brad Pitt


                                     Globalcode – Open4education
Modularização
         Definindo um módulo:

         “A Software Module is a deployable, manageable,
         natively reusable, composable, stateless unit of
         software that provides a concise interface to
         consumers”

               Instalável
               Gerenciável
               Reutilizável
               Combinável
               Não guarda estado
               Oferece uma Interface clara

Fonte: Java Application Architecture: Modularity Patterns with Examples Using OSGi   Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
2 Faces da Modularização
 Modelo de Desenvolvimento
   Formas de construir arquiteturas modulares, e tratar os
   problemas comuns nesse cenário.
   Design Patterns
 Modelo de Execução
   Foca em como gerenciador sistemas modulares em
   tempo de execução, ou seja, Plataformas que suportem
   um Eco-sistema Modular oferecendo recursos que
   facilitem e potencializem a modularização
   OSGI, jigsaw, etc...


                                                Globalcode – Open4education
Design Lógico e Físico
 Design Lógico: podemos dizer que são as
 relações entre as classes, métodos e pacotes.
 Como serão as camadas. Padrão MVC,TDD, DDD,
 TDC, ABC, XYZ, XPO...
 Design Físico: como serão as unidades de deploy
 desse software, apenas 1 projeto, 1 projeto
 principal e outros menores, como se dará a
 comunicação entre eles?



                                      Globalcode – Open4education
Uso vs Reuso
               Quanto maior a granularidade,
               menos dependências, mais fácil de
               usar e mais difícil de reutilizar.
               Quanto menor a granularidade, mais
               dependências, mais fácil de reutilizar
               e mais difícil de usar.




                                     Globalcode – Open4education
Design em camadas




 Design comum encontrado em diversos sistemas, nas camadas
 superiores observa-se uma granularidade maior, ou seja, entidades
 mais fácil de se usar, a medida que se desce para as camadas
 inferiores a granularidade diminui, ou seja, entidades menores e mais
 fáceis de reutilizar.



                                                         Globalcode – Open4education
Design Modular




                 Globalcode – Open4education
Globalcode – Open4education
Mudanças Isoladas




                    Globalcode – Open4education
Bibliografia
                                                              Excelente Livro sobre Modularização
                                                              de Software e Design Patterns com
                                                              exemplos práticos em Java e OSGI

                                                              “Esse livro non Ecxsisssteee” – Padre Quevedo
                                                              sobre esse livro

                                                              “Meu Precioooossooo” – Gollum sobre esse Livro

                                                              “Linnndo, Luuuxo, Maara, D++, Liiindoo” – Narcisa
                                                              sobre esse livro

                                                              “Aaaahôôôoo trem que pula” – típico goiâno sobre
                                                              esse livro




*As imagens utilizadas nos slides anteriores foram retiradas do livro, Por favor não me processem!!
http://www.amazon.com/Java-Application-Architecture-Modularity-Patterns/dp/0321247132                 Globalcode – Open4education
Principais Patterns
 18 patterns descritos no padrão GOF
 Base Patterns
    Manage relationships
    Module Reuse
    Cohesive Modules
 Depency Patterns
    Acyclic Relationships
    Physical Layers
 Usability Patterns
    Published Interface
    External Configuration
 Extensibility Patterns
 Utility Patterns
                                       Globalcode – Open4education
Jar Hell




           Globalcode – Open4education
Globalcode – Open4education
“Just about every software developer is an OSGi
         consumer today because just about every platform
         and every IDE use OSGi. The major platform vendors,
         including IBM, Oracle, and Red Hat are all using OSGi
         to build up their platforms. What's interesting is that
         OSGi hasn't penetrated the enterprise developer
         space yet. At least, it hasn't gone mainstream yet.
         Some people might complain that OSGi is too
         complex. But what they're really saying is that
         designing modular software is really really hard.
         Because it is.” – Kirk Knoernschild

http://java.dzone.com/articles/osgi-vs-jigsaw-kirk
                                                     Globalcode – Open4education
Globalcode – Open4education
Principais Benefícios
 Encapsulamento
 Deploy Dinâmico
 Versionamento
 Gerenciamento de Dependências
 Outros: http://www.osgi.org/Technology/WhyOSGi




                                                  Globalcode – Open4education
Globalcode – Open4education
Módulos = Bundles
 Bundle é um módulo ou parte dele

 Equivalente a um Jar, porém com diversas
 informações adicionais que são interpretadas pela
 plataforma.

   Identificador
   Versão
   Dependências (bundles e versões)
   Exposições/publicações


                                            Globalcode – Open4education
Life Cycle de um Bundle




                          Globalcode – Open4education
Services




           Globalcode – Open4education
Globalcode – Open4education
OSGI Services
 “This is similar to the service-oriented
 architecture made popular with web services.
 The key difference between web services and
 OSGi services is that web services always require
 some transport layer, which makes it thousands
 times slower than OSGi services that use direct
 method invocations.”

 *Retirado do site www.osgi.org




                                        Globalcode – Open4education
Bibliografia
 OSGI core especification versão 5:
 http://www.osgi.org/Download/Release5

 Modularidade com Java Module System & OSGi -
 vinicius senger
 http://www.thedevelopersconference.com.br/arquivos/TDC2
 008_OSGI.pdf




                                             Globalcode – Open4education
Demo
 OSGI + Maven + JavaFX = <3 <3
 Implementação Apache Felix
 https://github.com/filipeportes/ModuleFX




                                            Globalcode – Open4education
Dúvidas??
 Contato
   @filipeportes
   omeuefilipe@gmail.com
   https://github.com/filipeportes




                                     Globalcode – Open4education

Mais conteúdo relacionado

Mais procurados

Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeansSliedesharessbarbosa
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoFlávio Lisboa
 
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Rafael Oliveira
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Code Igniter & Zend Framework Uma UniãO De Sucesso
Code Igniter & Zend Framework   Uma UniãO De SucessoCode Igniter & Zend Framework   Uma UniãO De Sucesso
Code Igniter & Zend Framework Uma UniãO De SucessoJose Wilker
 
Introdução ao LiveOak
Introdução ao LiveOakIntrodução ao LiveOak
Introdução ao LiveOakjesuinoPower
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisGeorge Gastaldi
 
Unit Test JavaScript
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScriptDan Vitoriano
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento webArlindo Santos
 
Overview de Drupal pela Just Digital
Overview de Drupal pela Just DigitalOverview de Drupal pela Just Digital
Overview de Drupal pela Just DigitalJust Digital
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEBruno Borges
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAYelken Heckman Ferreira Gonzales
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webRodrigo Branas
 
Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)Marcos Batista
 

Mais procurados (20)

Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutenção
 
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Code Igniter & Zend Framework Uma UniãO De Sucesso
Code Igniter & Zend Framework   Uma UniãO De SucessoCode Igniter & Zend Framework   Uma UniãO De Sucesso
Code Igniter & Zend Framework Uma UniãO De Sucesso
 
Introdução ao LiveOak
Introdução ao LiveOakIntrodução ao LiveOak
Introdução ao LiveOak
 
Java Web, o Tutorial
Java Web, o TutorialJava Web, o Tutorial
Java Web, o Tutorial
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 Florianópolis
 
Unit Test JavaScript
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScript
 
Vraptor 3
Vraptor 3Vraptor 3
Vraptor 3
 
Drupal - WEG
Drupal - WEGDrupal - WEG
Drupal - WEG
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento web
 
Overview de Drupal pela Just Digital
Overview de Drupal pela Just DigitalOverview de Drupal pela Just Digital
Overview de Drupal pela Just Digital
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Introdução a Frameworks
Introdução a FrameworksIntrodução a Frameworks
Introdução a Frameworks
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
 
Micro frontend
Micro frontendMicro frontend
Micro frontend
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações web
 
Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)
 

Semelhante a Modularização em Java com OSGI

Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Filipe Portes
 
Da introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowDa introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowRicardo Longa
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012Luís Cobucci
 
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho DuroTDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Durotdc-globalcode
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfAndreCosta502039
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de ReusoDr. Spock
 
Organizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaOrganizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaJohnathan Cardoso
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosRafael Chaves
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedoresDrupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedoresPedro Rocha
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineEder Magalhães
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 

Semelhante a Modularização em Java com OSGI (20)

Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Da introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowDa introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools Flow
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012
 
Machine Learning Black Boxes
Machine Learning Black BoxesMachine Learning Black Boxes
Machine Learning Black Boxes
 
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho DuroTDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
O que devo procurar em um code review
O que devo procurar em um code review O que devo procurar em um code review
O que devo procurar em um code review
 
TDC 2012 - JDF
TDC 2012 - JDFTDC 2012 - JDF
TDC 2012 - JDF
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de Reuso
 
Organizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaOrganizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gosta
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedoresDrupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App Engine
 
Seminário
SeminárioSeminário
Seminário
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Java com Excelência
Java com ExcelênciaJava com Excelência
Java com Excelência
 

Modularização em Java com OSGI

  • 1. Trilha – Java Modularização em Java com OSGI Filipe Portes Mestre de Obra de Software Globalcode – Open4education
  • 2. Mim Tarzan... Quase graduado em Ciência da Computação Um dos Coordenadores do Grupo de Usuários Java de Goiás - @gojava Mais de 5 anos de experiência com desenvolvimento e arquitetura Java Atualmente trabalha no Centro de Gestão e Estudos Estratégicos em Brasília – DF Sósia oficial do Brad Pitt Globalcode – Open4education
  • 3. Modularização Definindo um módulo: “A Software Module is a deployable, manageable, natively reusable, composable, stateless unit of software that provides a concise interface to consumers” Instalável Gerenciável Reutilizável Combinável Não guarda estado Oferece uma Interface clara Fonte: Java Application Architecture: Modularity Patterns with Examples Using OSGi Globalcode – Open4education
  • 6. 2 Faces da Modularização Modelo de Desenvolvimento Formas de construir arquiteturas modulares, e tratar os problemas comuns nesse cenário. Design Patterns Modelo de Execução Foca em como gerenciador sistemas modulares em tempo de execução, ou seja, Plataformas que suportem um Eco-sistema Modular oferecendo recursos que facilitem e potencializem a modularização OSGI, jigsaw, etc... Globalcode – Open4education
  • 7. Design Lógico e Físico Design Lógico: podemos dizer que são as relações entre as classes, métodos e pacotes. Como serão as camadas. Padrão MVC,TDD, DDD, TDC, ABC, XYZ, XPO... Design Físico: como serão as unidades de deploy desse software, apenas 1 projeto, 1 projeto principal e outros menores, como se dará a comunicação entre eles? Globalcode – Open4education
  • 8. Uso vs Reuso Quanto maior a granularidade, menos dependências, mais fácil de usar e mais difícil de reutilizar. Quanto menor a granularidade, mais dependências, mais fácil de reutilizar e mais difícil de usar. Globalcode – Open4education
  • 9. Design em camadas Design comum encontrado em diversos sistemas, nas camadas superiores observa-se uma granularidade maior, ou seja, entidades mais fácil de se usar, a medida que se desce para as camadas inferiores a granularidade diminui, ou seja, entidades menores e mais fáceis de reutilizar. Globalcode – Open4education
  • 10. Design Modular Globalcode – Open4education
  • 12. Mudanças Isoladas Globalcode – Open4education
  • 13. Bibliografia Excelente Livro sobre Modularização de Software e Design Patterns com exemplos práticos em Java e OSGI “Esse livro non Ecxsisssteee” – Padre Quevedo sobre esse livro “Meu Precioooossooo” – Gollum sobre esse Livro “Linnndo, Luuuxo, Maara, D++, Liiindoo” – Narcisa sobre esse livro “Aaaahôôôoo trem que pula” – típico goiâno sobre esse livro *As imagens utilizadas nos slides anteriores foram retiradas do livro, Por favor não me processem!! http://www.amazon.com/Java-Application-Architecture-Modularity-Patterns/dp/0321247132 Globalcode – Open4education
  • 14. Principais Patterns 18 patterns descritos no padrão GOF Base Patterns Manage relationships Module Reuse Cohesive Modules Depency Patterns Acyclic Relationships Physical Layers Usability Patterns Published Interface External Configuration Extensibility Patterns Utility Patterns Globalcode – Open4education
  • 15. Jar Hell Globalcode – Open4education
  • 17. “Just about every software developer is an OSGi consumer today because just about every platform and every IDE use OSGi. The major platform vendors, including IBM, Oracle, and Red Hat are all using OSGi to build up their platforms. What's interesting is that OSGi hasn't penetrated the enterprise developer space yet. At least, it hasn't gone mainstream yet. Some people might complain that OSGi is too complex. But what they're really saying is that designing modular software is really really hard. Because it is.” – Kirk Knoernschild http://java.dzone.com/articles/osgi-vs-jigsaw-kirk Globalcode – Open4education
  • 19. Principais Benefícios Encapsulamento Deploy Dinâmico Versionamento Gerenciamento de Dependências Outros: http://www.osgi.org/Technology/WhyOSGi Globalcode – Open4education
  • 21. Módulos = Bundles Bundle é um módulo ou parte dele Equivalente a um Jar, porém com diversas informações adicionais que são interpretadas pela plataforma. Identificador Versão Dependências (bundles e versões) Exposições/publicações Globalcode – Open4education
  • 22. Life Cycle de um Bundle Globalcode – Open4education
  • 23. Services Globalcode – Open4education
  • 25. OSGI Services “This is similar to the service-oriented architecture made popular with web services. The key difference between web services and OSGi services is that web services always require some transport layer, which makes it thousands times slower than OSGi services that use direct method invocations.” *Retirado do site www.osgi.org Globalcode – Open4education
  • 26. Bibliografia OSGI core especification versão 5: http://www.osgi.org/Download/Release5 Modularidade com Java Module System & OSGi - vinicius senger http://www.thedevelopersconference.com.br/arquivos/TDC2 008_OSGI.pdf Globalcode – Open4education
  • 27. Demo OSGI + Maven + JavaFX = <3 <3 Implementação Apache Felix https://github.com/filipeportes/ModuleFX Globalcode – Open4education
  • 28. Dúvidas?? Contato @filipeportes omeuefilipe@gmail.com https://github.com/filipeportes Globalcode – Open4education