Modularidade com Java Module System & OSGi



Documentos relacionados
TDC2012. EJB simples e descomplicado, na prática. Slide 1

OSGi Um Sistema Dinâmico de Módulos para Java

Como sobreviver com Java 2? Saulo Arruda

Para Saber Mais O framework OSGi O mundo enterprise

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Spring: Um suite de novas opções para Java EE

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

Tutorial: Criando aplicações J2EE com Eclipse e jboss-ide

Desktop em minutos com genesis, Matisse, Java WebStart e JSR-296

Procedimentos para Configuração do Ambiente J2EE e J2SE em Ambiente Windows

Desenvolvendo aplicações desktop em Java: presente e futuro

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Demoiselle Tutorial Módulo 1 Arquitetura

Aplicativos JavaEE 6 modularizados com Web Fragments

J2EE TM Java 2 Plataform, Enterprise Edition

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

Prof. M.Sc. Fábio Procópio Prof. M.Sc. João Maria Criação: Fev/2010

Java II. Sérgio Luiz Ruivace Cerqueira

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Introdução à Plataforma Eclipse. Leandro Daflon

Integração Orientada a Serviços

Padrões Abertos, Componentização e SOA A chave para a evolução e criação de uma nova geração de sistemas de gestão comercial

OSGi - Open Services Gateway Initiative Também conhecido como Dynamic Module System for Java

IplanRio DOP - Diretoria de Operações GIT - Gerência de Infraestrutura Tecnológica Gerente da GIT

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério.

PORTARIA N Nº Rio de Janeiro, 24 de Outubro de 2013.

Criação de um novo projeto no Eclipse utilizando Maven

Enterprise JavaBeans. Java Deployment Course. por Jorge H. C. Fernandes DI-UFPE Julho de 1999

Demoiselle Framework. Palestrante: Flávio Gomes da Silva Lisboa JUN/2009

Aprenda como instalar o plugin EclipseUML no Eclipse e como utilizá-lo para fazer engenharia reversa de seu código-fonte.

Plataforma Open Source de Desenvolvimento e Sustentação de Sistemas. Daniel Darlen Lucius Curado Ridai Pombo

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux

Tese / Thesis Work Análise de desempenho de sistemas distribuídos de grande porte na plataforma Java

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

Java RMI. Alcides Calsavara

FICHA DE CATALOGAÇÃO DE REVISTAS DE NOTÍCIAS. Coleção

MÓDULO Programação para Web 2

Integração contínua com Hudson - Configuração, Extensão e Diversão! Fabiane Bizinella Nardon fabiane.nardon@zilics.com.br Zilics

EJB 3.1: A Community Update

Java Básico. Aula 1 por Thalles Cezar

WebWork 2. João Carlos Pinheiro.

2.4. Carregamento de classes e classloader hell

Stateful Session Beans

Tutorial 1.0. Instalação

JAVA ENTERPRISE EDITION: PERSISTÊNCIA DE BANCO DE DADOS

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Java e Banco de Dados: JDBC, Hibernate e JPA

Spring Framework Luiz Daniel Creão Augusto Sistemas de Middleware Avançados IME-USP /02

Sistema de Gestão Comercial Plataforma GSAN. Documento de Procedimento de Instalação

Introdução à Linguagem Java

Dispositivos móveis e o mercado Android Open Handset Alliance Informações sobre Android Arquitetura

Projetos Corporativos Baseados na Tecnologia Java Que Falham: O Que Podemos Aprender Deles?

UFG - Instituto de Informática

Framework. Marcos Paulo de Souza Brito João Paulo Raittes

SEÇÃO IV. Documento de Plataforma Tecnológica SISTEMA INTEGRADO DE GESTÃO GOVERNAMENTAL ETAPA 01 SEÇÃO IV DOCUMENTO DE PLATAFORMA TECNOLÓGICA

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

3 Serviços na Web (Web services)

Curso de Extensão Programação Orientada a Objetos com Java. Última atualização: 25/05/2010

Ambientação JAVA. Versão 0.1 MICHEL CORDEIRO ANALISTA DE NEGÓCIO (NTI 2014) 1 UNIVERSIDADE CEUMA 08/01/2014

Aplicações Desktop: Swing/SubMacroForms. Carlos Renato Alves Gouveia Novembro/2008

Nome N Série: Ferramentas

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Orientação a Objetos com Java

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

EA998/MC933 Guido Araujo e Sandro Rigo

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Introdução ao Android

Documentação Usando o Javadoc

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Manual de Procedimentos para Desenvolvimento de Softwares

PROJETO PEDAGÓGICO DE CURSOS

Desenvolvimento Web com Framework Demoiselle versão 1.0

MAC-0462 Padrões arquiteturais para sistemas baseados em componentes reconfiguráveis

Accessing the contents of the Moodle Acessando o conteúdo do Moodle

Padrões de Interação com o Usuário

Adotando OpenEdge Architect. Luciano Oliveira Sr. Instructor, Consultant Global Field Services

Casa do Código Livros para o programador Rua Vergueiro, º andar Vila Mariana São Paulo SP Brasil

Desenvolvimento Web TCC Turma A-1

FBV - Linguagem de Programação II. Um pouco sobre Java

J2EE. J2EE - Surgimento

Transcrição:

Modularidade com Java Module System & OSGi Vinicius Senger vinicius@globalcode.com.br vsenger.blogspot.com 1

Agenda > Novos problemas > OSGi Framework > Java Module System > Modularidade com Java SE e EE > Conclusão 2

Objetivos Explorar a situação atual de técnicas para componentização e modularidade de aplicativos Java de grande porte. 3

Agenda > Novos problemas > OSGi Framework > Java Module System > Modularidade com Java SE e EE > Conclusão 4

Novos problemas > Orientação a objetos não significa componentização; > Normalmente trabalhamos com apenas um classpath por máquina virtual; > JARs são frequentemente atualizados; > Alto acoplamento de outros JARs; 5

O mundo OO / JAR 6

Novos problemas > O sistema de classloader do Java não suporta versionamento, na prática: > Como podemos ter duas versões de um mesmo EJB rodando na mesma máquina virtual? > public / protected / default / private não são suficientes; > É preciso um public si pero no mucho ; 7

Carregamento de classes 8

Novos problemas > SOA, injeção de dependência, factories e frameworks tentam minimizar parte destes problemas; > OO não é suficiente; > JAR não é suficiente; > public / protected / default / private não são suficientes; > ClassLoader não é suficiente; 9

Agenda > Novos problemas > OSGi Framework > Java Module System > Modularidade com Java SE e EE > Conclusão 10

OSGi Framework > OSGi é um padrão de modelo de componentização para arquiteturas modulares; > O padrão é mantido pela OSGi Alliance; > Define uma série de serviços: log, config, preferences, event, deployment, HTTP, etc.; > JSR-291 = Dynamic Component Support for JavaTM SE 11

OSGi Framework > É uma uma infraestrutura para tornar aplicativos mais modulares: > Permite múltiplas versões de uma mesma classe dentro da mesma JVM; > Sistema de exportar pacotes mais robusto; > Controle de ciclo de vida de serviços; > Controle rigoroso nas dependências; > Tracking de serviços; 12

OSGi Framework The OSGi specifications are so widely applicable because the platform is a small layer that allows multiple Java based components to efficiently cooperate in a single Java Virtual Machine (JVM). *Texto retirado do site www.osgi.org 13

OSGi Framework > OSGi trabalha com conceito de bundle = aplicativo ou parte dele; > Um bundle seria o equivalente a um JAR, porém com informações manifest adicionais: > Identidade; > versão; > Dependências; > Exposições / publicações; 14

OSGi Framework > DEMO: O mundo OSGi... 15

OSGi Framework We are looking at OSGi the same way many other vendors are looking at it, as an enabling technology for dividing up a large software project and deploying the results. Eric Newcomer fundador IONA * Trecho de entrevista Infoq.com 16

OSGi Framework > Bundles podem ser instalados e gerenciados remotamente; > OSGi favorece arquiteturas orientadas a serviços; > Eclipse, WebSphere, Jboss, Jonas, BEA e Glassfish adotaram OSGi; 17

OSGi Framework > Não é comum encontrarmos OSGi puro em cenários de negócio; > OSGi Enterprise Expert Group foi criado para suportar as necessidades de vendors e desenvolvedores Java EE; > Futuramente devemos poder empacotar componentes EJB e beans Web como serviços OSGi; 18

OSGi Framework 19

OSGi Framework > Sua JVM pode sustentar mais de um branch CVS? > DEMO: O mundo das versões... 20

OSGi Framework 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 21

OSGi Framework > Criando um serviço OSGi: > Definimos uma interface, que será exposta: package sendmail.service; public interface MailService { } public void enviar(mail mail); > Implementamos a interface em uma classe que não será exposta; package sendmail.impl; public class MailServiceImpl implements MailService { } public void enviar(mail mail) {... } 22

OSGi Framework 23 > Devemos criar um ativador do serviço: public class Activator implements BundleActivator { private MailService service; private ServiceTracker mailservicetracker; public void start(bundlecontext context) throws Exception { service = new MailServiceImpl(); context.registerservice(mailservice.class.getname(), service, new Hashtable()); mailservicetracker = new ServiceTracker( context, MailService.class.getName(), null); mailservicetracker.open(); } public void stop(bundlecontext context) throws Exception { helloservicetracker.close(); helloservicetracker = null; service = null; } }

OSGi Framework > Manifest.mf: Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: SendMail Plug-in Bundle-SymbolicName: SendMail Bundle-Version: 1.0.0 Bundle-Activator: sendmail.activator Import-Package: org.osgi.framework;version="1.3.0", org.osgi.util.tracker;version="1.3.1" Export-Package: sendmail.service 24

OSGi Framework > Demo: rodando OSGi com Eclipse 25

Agenda > Novos problemas > OSGi Framework > Java Module System > Modularidade com Java SE e EE > Conclusão 26

Java Module System > Padrão JCP para resolver problemas semelhantes as propostas do OSGi; > Bundle = JAM (Java Module); > JSR 277: Java Module System: The R3 version of the Open Services Gateway Initiative (OSGi) specification defines a framework that enables the deployment of service-oriented applications (called bundles). However, the framework only supports package dependency based on the minimum version of a specification, and there is no support for exact version or version range. 27

Java Module System > Hibernate, Struts, JSF, Unified Process, Spring, Seam, OJB, AspectJ, WebWork, Agile... > OSGi & Java Module System: a nova guerra? 28

Java Module System > JDK 7 terá o Java Module System interoperando com OSGi; "We're announcing the availability of a new specification that defines the interoperability between the Java module system for SE 7 and OSGi bundles," What this means is in JDK 7, developers who create applications that use OSGi bundles will be able to run them unmodified on JDK 7. Danny Coward Sun Microsystems 29

Java Module System "I'm wondering why they needed to do the module support and not just go with OSGi support. But as long as the module support fully supports OSGi, that's OK," Anne Thomas Manes Burton Group 30

Agenda > Novos problemas > OSGi Framework > Java Module System > Modularidade com Java SE e EE > Conclusão 31

Modularidade com SE e EE > Devemos evitar um número excessivo de classes por JAR; > Evitar o uso de WEB-INF/classes; > Conheça bem o sistema de classloader do seu application server; > Usando JBoss, recomendamos o uso de SAR; 32

Modularidade com SE e EE > Evitar o uso de Class.forName; > Evitar a construção de Classloaders; > Adote uma infraestrutura moderna: seam / jboss microkernel, spring ou glassfish 3; > As soluções definitivas chegarão com Java 7 (dolphin); 33

Modularidade com SE e EE > Ao adotar OSGi: > Comece transformando seu aplicativo em um bundle; > Isole serviços em outros bundles; > Desenhe as dependências de classes; > Utilize um modelo de programação mais alto nível: > Apache ipojo > Spring DM > Jboss 5 34

Agenda > Novos problemas > OSGi Framework > Java Module System > Modularidade com Java SE e EE > Conclusão 35

Conclusão > OSGi é madura e robusta, mas adotar no baixo nível pode não ser adequado para cenários de negócio simples; > As especificações Java permitirão múltiplos sistemas de módulos; > OSGi = componentização + arquitetura orientada a serviços; 36

Links > http://www.osgi.org/about/technology > http://www.eclipse.org/equinox/ > http://www.javaworld.com/javaworld/jw-05-2008/jw-05-rightsize.html?page=1 > http://www.knopflerfish.org 37