O Liferay Portal sempre foi uma aplicação rica em recursos, com milhares de funcionalidades e opções resultando em bilhões de cenários possíveis de implantação. Ainda assim, por trás de toda a configuração o núcleo central do Liferay é tudo ou nada. Vamos apresentar as estratégias que estão sendo utilizadas para introduzir modularidade no Liferay e melhorar a qualidade, facilitar a manutenção e ainda permitir que funcionalidades opcionais sejam completamente removidas ou facilmente atualizadas.
Liferay Symposium Brazil 2014
11 de Novembro de 2014
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...Rogério Moraes de Carvalho
Nesta palestra, eu apresentei informações de como usar os seus conhecimentos de desenvolvimento Web para construir apps para publicação na nova Windows Store do Windows 8 usando HTML5, CSS3 e JavaScript. Eu abordei os seguintes tópicos:
Windows Cliente: Evolução
Windows 8
Microsoft Surface
Demo – Windows 8
Windows Store apps
Linguagens suportadas
Windows Runtime (WinRT)
Ferramentas
Licença de desenvolvedor
Demo – Licença
Projetos JavaScript
Demo – Projeto JavaScript
Links úteis
O documento apresenta uma palestra sobre as novas tecnologias .NET Core, ASP.NET Core e Entity Framework Core. Aborda os principais conceitos como arquitetura modular e multiplataforma destas tecnologias, ferramentas como .NET Core CLI e Visual Studio Code, além de recursos como Entity Framework Code First e ASP.NET Core MVC.
Nesta palestra, eu apresentei um resumo das principais novas características e melhorias do .NET Framework 4.5 para desenvolvedores da plataforma .NET. Eu abordei os seguintes tópicos:
O .NET Framework
.NET Framework: Versões
Linguagem C#: Versões
Suporte a async & await
Biblioteca de classes portátil
.NET para Windows Store apps
Entity Framework 5
ASP.NET Web Forms 4.5
ASP.NET MVC 4
Windows Communication Foundation (WCF) 4.5
Windows Presentation Foundation (WPF) 4.5
Windows Workflow Foundation (WF) 4.5
Melhorias na Base Class Library
Links úteis
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...Rogério Moraes de Carvalho
O MVP Virtual Conference (MVP V-Conf) é um novo evento virtual de dois dias apresentado por especialistas em tecnologia independentes que utilizam tecnologias da Microsoft diariamente. Conecte-se e veja o que a comunidade de usuários avançados está dizendo sobre o mundo de possibilidades mobile-first, cloud-first com tecnologias Microsoft reestruturadas.
Seguem as 5 trilhas do evento:
- IT Pro Track (English)
- Developer Track (English)
- Consumer Track (English)
- LATAM Track (Spanish)
- Brazil Track (Portuguese)
Na minha palestra, eu apresentei informações sobre como executar ASP.NET MVC 6 no Mac OS X e no Linux. A ideia foi apresentar um passo a passo de como configurar os sistemas operacionais Mac OS X e Linux para desenvolvimento de aplicações ASP.NET MVC 6, e ASP.NET 5 em geral.
Eu apresentei os seguintes tópicos na minha palestra:
- .NET no Linux e no Mac OS X
- ASP.NET 5 e ASP.NET MVC 6
- Visual Studio Code
- Linha de produtos Visual Studio 2015
- Ambientes de desenvolvimento
- Tecnologia de contêiner
- Suporte atual em Linux e Mac OS X
- Demonstração e recursos adicionais
Livro - código limpo caps (3,4) (clean code)André Justi
O documento apresenta um resumo de dois capítulos do livro "Clean Code" de Robert Martin sobre funções e comentários em código. O apresentador André Justi discute princípios como: funções devem ser pequenas e fazer uma coisa; usar nomes descritivos; evitar comentários quando possível explicando-se no código; usar Javadocs em APIs públicas.
Aqui são apresentados conceitos básicos a plataforma Java. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...Rogério Moraes de Carvalho
Nesta palestra, eu apresentei informações de como usar os seus conhecimentos de desenvolvimento Web para construir apps para publicação na nova Windows Store do Windows 8 usando HTML5, CSS3 e JavaScript. Eu abordei os seguintes tópicos:
Windows Cliente: Evolução
Windows 8
Microsoft Surface
Demo – Windows 8
Windows Store apps
Linguagens suportadas
Windows Runtime (WinRT)
Ferramentas
Licença de desenvolvedor
Demo – Licença
Projetos JavaScript
Demo – Projeto JavaScript
Links úteis
O documento apresenta uma palestra sobre as novas tecnologias .NET Core, ASP.NET Core e Entity Framework Core. Aborda os principais conceitos como arquitetura modular e multiplataforma destas tecnologias, ferramentas como .NET Core CLI e Visual Studio Code, além de recursos como Entity Framework Code First e ASP.NET Core MVC.
Nesta palestra, eu apresentei um resumo das principais novas características e melhorias do .NET Framework 4.5 para desenvolvedores da plataforma .NET. Eu abordei os seguintes tópicos:
O .NET Framework
.NET Framework: Versões
Linguagem C#: Versões
Suporte a async & await
Biblioteca de classes portátil
.NET para Windows Store apps
Entity Framework 5
ASP.NET Web Forms 4.5
ASP.NET MVC 4
Windows Communication Foundation (WCF) 4.5
Windows Presentation Foundation (WPF) 4.5
Windows Workflow Foundation (WF) 4.5
Melhorias na Base Class Library
Links úteis
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...Rogério Moraes de Carvalho
O MVP Virtual Conference (MVP V-Conf) é um novo evento virtual de dois dias apresentado por especialistas em tecnologia independentes que utilizam tecnologias da Microsoft diariamente. Conecte-se e veja o que a comunidade de usuários avançados está dizendo sobre o mundo de possibilidades mobile-first, cloud-first com tecnologias Microsoft reestruturadas.
Seguem as 5 trilhas do evento:
- IT Pro Track (English)
- Developer Track (English)
- Consumer Track (English)
- LATAM Track (Spanish)
- Brazil Track (Portuguese)
Na minha palestra, eu apresentei informações sobre como executar ASP.NET MVC 6 no Mac OS X e no Linux. A ideia foi apresentar um passo a passo de como configurar os sistemas operacionais Mac OS X e Linux para desenvolvimento de aplicações ASP.NET MVC 6, e ASP.NET 5 em geral.
Eu apresentei os seguintes tópicos na minha palestra:
- .NET no Linux e no Mac OS X
- ASP.NET 5 e ASP.NET MVC 6
- Visual Studio Code
- Linha de produtos Visual Studio 2015
- Ambientes de desenvolvimento
- Tecnologia de contêiner
- Suporte atual em Linux e Mac OS X
- Demonstração e recursos adicionais
Livro - código limpo caps (3,4) (clean code)André Justi
O documento apresenta um resumo de dois capítulos do livro "Clean Code" de Robert Martin sobre funções e comentários em código. O apresentador André Justi discute princípios como: funções devem ser pequenas e fazer uma coisa; usar nomes descritivos; evitar comentários quando possível explicando-se no código; usar Javadocs em APIs públicas.
Aqui são apresentados conceitos básicos a plataforma Java. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
No dia 28 de novembro de 2012, eu apresentei a palestra "Desenvolvimento para dispositivos móveis - iOS, Android, Windows Phone, Windows 8 e Firefox OS". A palestra foi escolhida democraticamente, dentre várias opções disponíveis, numa votação entre os alunos da instituição. O objetivo principal da minha apresentação foi dar uma visão geral das principais plataformas de desenvolvimento para dispositivos móveis disponíveis no mercado atualmente, além de uma com potencial: Firefox OS.
O documento discute as novidades da plataforma Java EE 7, incluindo o foco em serviços de computação em nuvem, auto provisionamento e multi-tenancy. A especificação Java EE 7 também trará melhorias em APIs existentes como JPA, JSF e JAX-RS e novas APIs como JSON-P e WebSocket. O lançamento está previsto para o primeiro semestre de 2013.
GraphQL é uma linguagem de consulta e postagem de dados baseada em grafos para APIs. A apresentação introduz o GraphQL, discutindo o que é e não é, sua história, linguagens, ferramentas e partes importantes como tipos, consultas, mutações e assinaturas. Vantagens incluem flexibilidade do cliente e contratos bem definidos, enquanto desvantagens são complexidade, desempenho e gerenciamento de autorizações.
Palestra ministrada na Trilha DevTest do The Developers Conference 2019 em Florianópolis sobre automação de testes de API com RestAssured e virtualização de serviços com Wiremock
Leitor de Códigos no Android com Barcode Scanner API - ZXingVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/leitor-de-codigos-no-android-com-barcode-scanner-api-zxing
Neste conjunto de slides vamos, passo a passo, ao estudo completo da biblioteca Barcode Scanner API para assim utilizar de maneira simples, mas robusta, o projeto ZXing, em aplicativos Android, na leitura de simbologias de códigos de barras.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=BAR_CODE_LEITOR&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
O documento introduz os conceitos de AOP e como ele é implementado no Spring Framework. Apresenta as motivações para AOP, como ele permite a implementação modular de aspectos transversais e benefícios como evolução mais fácil de sistemas. Explica os principais conceitos de AOP no Spring como aspectos, joinpoints e advisors e demonstra um exemplo prático de como aplicar um advice de logging em uma classe de negócio usando Spring AOP.
De a máxima cobertura nos seus testes de APIElias Nogueira
Palestra ministrada no Reginonal Scrum Gathering Rio 2019 no dia 27/06/2019 sobre como dar uma cobertura de testes para uma API além do teste unitário e de integração, com um foco totalmente prático e com execução em pipeline.
Nesta apresentação, conheceremos o que o Dagger 2 traz de novo em relação ao seu antecessor, e como ele pode ajudar a deixar a arquitetura da sua aplicação mais organizada de limpa. Além disso, poderemos explorar como ele ainda pode ajudar na testabilidade, fazendo com que o container de dependências possa ser facilmente substituído para injetar mocks em nossos testes. (Título inspirado na música Harder Better Faster Stronger do Daft Punk :D)
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
A empresa 4linux é pioneira no ensino de Linux à distância no Brasil, com mais de 30.000 alunos satisfeitos. Ela possui experiência em missões críticas, é parceira de treinamento da IBM e foi a primeira empresa no Brasil a oferecer certificação LPI.
1. A biblioteca Android-State permite reter o estado de objetos em atividades, fragmentos e visualizações em aplicativos Android de forma simples.
2. Ela funciona internamente utilizando o SaveInstanceState, mas de forma transparente ao desenvolvedor, evitando código boilerplate.
3. Há casos em que o ViewModel é mais apropriado, como quando se precisa reter listas grandes de objetos, devido às limitações do SaveInstanceState.
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
O documento discute estratégias para executar testes automatizados de forma paralela em web e mobile. Ele apresenta como usar grids com Selenium e Appium para distribuir testes em vários nós, reduzindo o tempo de execução. A solução proposta utiliza containers Docker para criar grids dinâmicas que escalam automaticamente com base na demanda de testes.
O documento descreve o framework Grails para desenvolvimento web ágil utilizando Java e Groovy. Grails permite alta produtividade através de programação por convenção, é completo e evita repetições de código.
SelectionTracker Para Seleção de Itens no RecyclerView AndroidVinícius Thiengo
1. A biblioteca SelectionTracker fornece uma maneira fácil de implementar funcionalidade de seleção de itens no RecyclerView.
2. São necessárias as implementações das classes ItemKeyProvider, ItemDetailsLookup e ItemDetails para permitir que a SelectionTracker acesse os itens e suas informações.
3. Após adicionar a biblioteca e implementar essas classes, é possível inicializar um objeto SelectionTracker, vinculá-lo ao RecyclerView e gerenciar a seleção de itens.
1) Git é um sistema de controle de versão distribuído criado por Linus Torvalds para desenvolvimento do kernel Linux.
2) Em 2005, a comunidade Linux desenvolveu seu próprio sistema, o Git, após perder acesso gratuito ao BitKeeper.
3) O Git se tornou um sistema popular e maduro, mantendo qualidades como velocidade, suporte a branches paralelas e armazenamento distribuído.
Apresentação realizada no dia 13/04/2013, no 29º Guru-SP: gurusp.org/encontros/vigesimo-nono-encontro-do-guru-sp
Versão original em js: https://github.com/nuxlli/12factor-openruko
Criando uma grid para execução de testes paralelo com AppiumElias Nogueira
Este documento descreve como criar uma "grid" para execução paralela de testes automatizados usando o Appium. A grid conecta vários dispositivos móveis a um único controlador para permitir que testes sejam executados simultaneamente em diferentes dispositivos, melhorando a cobertura e reduzindo o tempo de execução. O documento discute os desafios da fragmentação de plataformas, como configurar o Selenium Grid e nós, e como escrever testes para aproveitar a execução paralela.
Na palestra "Docker com ASP.NET Core e Hospedagem no Azure", eu apresentei uma visão geral sobre contêineres, o Docker, o ASP.NET Core, Docker em contêineres Windows, Suporte a Dcoker no Azure, Visual Studio 2017 & Docker e Recursos para estudo.
True Time API Para Data e Horário NTP no AndroidVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/true-time-api-para-data-e-horario-ntp-no-android
Neste conjunto de slides vamos ao estudo da importância de se ter data e horário exatos em alguns domínios de problema Android.
Também aprenderemos como obter essa exatidão utilizando uma biblioteca específica para comunicação com servidores NTP, mais precisamente a biblioteca True Time Android.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=TRUE_TIME_API&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Integrazione Sistemi CRM (Joomla) & CRM (SugarCRM)Antonio Musarra
Il processo d’integrazione tra diversi tipi di sistemi informatici avviene attraverso l’utilizzo di software e soluzioni architetturali. In questa sessione di formazione, i sistemi informatici (a titolo d’esempio) da sottoporre al processo d’integrazione sono due e appartengono a due diverse tipologie:
Content Management System – CMS
Customer Relationship Management – CRM
Il CMS che prenderemo come riferimento è rappresentato dalla soluzione software Open Source (scritto in PHP) Joomla, invece il CRM che prenderemo come riferimento è rappresentato dalla soluzione software Open Source (scritto in PHP) SugarCRM.
Con queste “14 misere” slide ho cercato d’introdurre Liferay e come iniziare con il piede giusto per affrontare lo sviluppo di applicazioni ai voi che siete proprio “novelli”. Spero di essere riuscito con questo primo episodio a suscitare la vostra curiosità e interesse.
No dia 28 de novembro de 2012, eu apresentei a palestra "Desenvolvimento para dispositivos móveis - iOS, Android, Windows Phone, Windows 8 e Firefox OS". A palestra foi escolhida democraticamente, dentre várias opções disponíveis, numa votação entre os alunos da instituição. O objetivo principal da minha apresentação foi dar uma visão geral das principais plataformas de desenvolvimento para dispositivos móveis disponíveis no mercado atualmente, além de uma com potencial: Firefox OS.
O documento discute as novidades da plataforma Java EE 7, incluindo o foco em serviços de computação em nuvem, auto provisionamento e multi-tenancy. A especificação Java EE 7 também trará melhorias em APIs existentes como JPA, JSF e JAX-RS e novas APIs como JSON-P e WebSocket. O lançamento está previsto para o primeiro semestre de 2013.
GraphQL é uma linguagem de consulta e postagem de dados baseada em grafos para APIs. A apresentação introduz o GraphQL, discutindo o que é e não é, sua história, linguagens, ferramentas e partes importantes como tipos, consultas, mutações e assinaturas. Vantagens incluem flexibilidade do cliente e contratos bem definidos, enquanto desvantagens são complexidade, desempenho e gerenciamento de autorizações.
Palestra ministrada na Trilha DevTest do The Developers Conference 2019 em Florianópolis sobre automação de testes de API com RestAssured e virtualização de serviços com Wiremock
Leitor de Códigos no Android com Barcode Scanner API - ZXingVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/leitor-de-codigos-no-android-com-barcode-scanner-api-zxing
Neste conjunto de slides vamos, passo a passo, ao estudo completo da biblioteca Barcode Scanner API para assim utilizar de maneira simples, mas robusta, o projeto ZXing, em aplicativos Android, na leitura de simbologias de códigos de barras.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=BAR_CODE_LEITOR&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
O documento introduz os conceitos de AOP e como ele é implementado no Spring Framework. Apresenta as motivações para AOP, como ele permite a implementação modular de aspectos transversais e benefícios como evolução mais fácil de sistemas. Explica os principais conceitos de AOP no Spring como aspectos, joinpoints e advisors e demonstra um exemplo prático de como aplicar um advice de logging em uma classe de negócio usando Spring AOP.
De a máxima cobertura nos seus testes de APIElias Nogueira
Palestra ministrada no Reginonal Scrum Gathering Rio 2019 no dia 27/06/2019 sobre como dar uma cobertura de testes para uma API além do teste unitário e de integração, com um foco totalmente prático e com execução em pipeline.
Nesta apresentação, conheceremos o que o Dagger 2 traz de novo em relação ao seu antecessor, e como ele pode ajudar a deixar a arquitetura da sua aplicação mais organizada de limpa. Além disso, poderemos explorar como ele ainda pode ajudar na testabilidade, fazendo com que o container de dependências possa ser facilmente substituído para injetar mocks em nossos testes. (Título inspirado na música Harder Better Faster Stronger do Daft Punk :D)
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
A empresa 4linux é pioneira no ensino de Linux à distância no Brasil, com mais de 30.000 alunos satisfeitos. Ela possui experiência em missões críticas, é parceira de treinamento da IBM e foi a primeira empresa no Brasil a oferecer certificação LPI.
1. A biblioteca Android-State permite reter o estado de objetos em atividades, fragmentos e visualizações em aplicativos Android de forma simples.
2. Ela funciona internamente utilizando o SaveInstanceState, mas de forma transparente ao desenvolvedor, evitando código boilerplate.
3. Há casos em que o ViewModel é mais apropriado, como quando se precisa reter listas grandes de objetos, devido às limitações do SaveInstanceState.
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
O documento discute estratégias para executar testes automatizados de forma paralela em web e mobile. Ele apresenta como usar grids com Selenium e Appium para distribuir testes em vários nós, reduzindo o tempo de execução. A solução proposta utiliza containers Docker para criar grids dinâmicas que escalam automaticamente com base na demanda de testes.
O documento descreve o framework Grails para desenvolvimento web ágil utilizando Java e Groovy. Grails permite alta produtividade através de programação por convenção, é completo e evita repetições de código.
SelectionTracker Para Seleção de Itens no RecyclerView AndroidVinícius Thiengo
1. A biblioteca SelectionTracker fornece uma maneira fácil de implementar funcionalidade de seleção de itens no RecyclerView.
2. São necessárias as implementações das classes ItemKeyProvider, ItemDetailsLookup e ItemDetails para permitir que a SelectionTracker acesse os itens e suas informações.
3. Após adicionar a biblioteca e implementar essas classes, é possível inicializar um objeto SelectionTracker, vinculá-lo ao RecyclerView e gerenciar a seleção de itens.
1) Git é um sistema de controle de versão distribuído criado por Linus Torvalds para desenvolvimento do kernel Linux.
2) Em 2005, a comunidade Linux desenvolveu seu próprio sistema, o Git, após perder acesso gratuito ao BitKeeper.
3) O Git se tornou um sistema popular e maduro, mantendo qualidades como velocidade, suporte a branches paralelas e armazenamento distribuído.
Apresentação realizada no dia 13/04/2013, no 29º Guru-SP: gurusp.org/encontros/vigesimo-nono-encontro-do-guru-sp
Versão original em js: https://github.com/nuxlli/12factor-openruko
Criando uma grid para execução de testes paralelo com AppiumElias Nogueira
Este documento descreve como criar uma "grid" para execução paralela de testes automatizados usando o Appium. A grid conecta vários dispositivos móveis a um único controlador para permitir que testes sejam executados simultaneamente em diferentes dispositivos, melhorando a cobertura e reduzindo o tempo de execução. O documento discute os desafios da fragmentação de plataformas, como configurar o Selenium Grid e nós, e como escrever testes para aproveitar a execução paralela.
Na palestra "Docker com ASP.NET Core e Hospedagem no Azure", eu apresentei uma visão geral sobre contêineres, o Docker, o ASP.NET Core, Docker em contêineres Windows, Suporte a Dcoker no Azure, Visual Studio 2017 & Docker e Recursos para estudo.
True Time API Para Data e Horário NTP no AndroidVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/true-time-api-para-data-e-horario-ntp-no-android
Neste conjunto de slides vamos ao estudo da importância de se ter data e horário exatos em alguns domínios de problema Android.
Também aprenderemos como obter essa exatidão utilizando uma biblioteca específica para comunicação com servidores NTP, mais precisamente a biblioteca True Time Android.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=TRUE_TIME_API&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Integrazione Sistemi CRM (Joomla) & CRM (SugarCRM)Antonio Musarra
Il processo d’integrazione tra diversi tipi di sistemi informatici avviene attraverso l’utilizzo di software e soluzioni architetturali. In questa sessione di formazione, i sistemi informatici (a titolo d’esempio) da sottoporre al processo d’integrazione sono due e appartengono a due diverse tipologie:
Content Management System – CMS
Customer Relationship Management – CRM
Il CMS che prenderemo come riferimento è rappresentato dalla soluzione software Open Source (scritto in PHP) Joomla, invece il CRM che prenderemo come riferimento è rappresentato dalla soluzione software Open Source (scritto in PHP) SugarCRM.
Con queste “14 misere” slide ho cercato d’introdurre Liferay e come iniziare con il piede giusto per affrontare lo sviluppo di applicazioni ai voi che siete proprio “novelli”. Spero di essere riuscito con questo primo episodio a suscitare la vostra curiosità e interesse.
Il Web 2.0 è un termine utilizzato per indicare genericamente uno stato di evoluzione di Internet (e in particolare del World Wide Web), rispetto alla condizione precedente. Si tende ad indicare come Web 2.0 l'insieme di tutte quelle applicazioni online che permettono uno spiccato livello di interazione sito-utente (blog, forum, chat, sistemi quali Wikipedia, Youtube, Facebook, Myspace, Twitter, Gmail, Wordpress, Tripadvisor ecc.).
Introduzione ai sistemi di Content Management System (CMS)Antonio Musarra
Un Content Management System, in acronimo CMS, letteralmente "sistema di gestione dei contenuti", è uno strumento software installato su un server web studiato per facilitare la gestione dei contenuti di siti web, svincolando l'amministratore da conoscenze tecniche di programmazione.
Allo User Group Italiano su Liferay di Bologna: Overview del futuro prossimo su Liferay.
OSGi (Open Service Gateway Initiative) è una specifica che permette di costruire applicazioni modulari a componenti (i Bundle) e che introduce una programmazione Service Oriented, permettendo una separazione tra interfaccia ed implementazione molto più rigorosa di quella nativa Java. Esistono diverse implementazioni (container) di OSGi, conformi alle specifiche.
Microservices: The OSGi way A different vision on microservicesMiguel Pastor
The document discusses microservices and an OSGi-based approach to implementing microservices. It describes traditional monolithic application architectures and their limitations in scaling. It then covers different ways of scaling applications, including scaling across servers (X-axis), data partitioning (Z-axis), and decomposing applications into loosely coupled services (Y-axis). The document proposes an OSGi-based implementation of microservices using OSGi modules and services. It also discusses remote OSGi services as a way to distribute services across multiple machines for true isolation and independent scaling.
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterpriseMilen Dyankov
The document discusses microservices and their characteristics including componentization via services, being organized around business capabilities, treating products instead of projects, having smart endpoints and dumb pipes, decentralized governance and data management, infrastructure automation, designing for failure, and evolutionary design. It provides examples of how OSGi services demonstrate some of these characteristics.
1. O documento descreve um seminário sobre Java oferecido pela Sun Microsystems, apresentando os cursos, palestrantes e agenda do evento.
2. A tecnologia Java é introduzida, destacando suas origens, conceitos como orientação a objetos, portabilidade, segurança e desempenho.
3. Instruções para instalação do Java Development Kit (JDK) são fornecidas para preparar os participantes para o desenvolvimento de aplicativos Java.
SpringSource Tool Suite, tc Server e dm ServerDr. Spock
O documento descreve o SpringSource Tool Suite, que inclui o Eclipse IDE, o plugin Spring IDE, o servidor de aplicação Spring TC Server e o servidor OSGi Spring DM Server. O Spring IDE adiciona funcionalidades ao Eclipse para desenvolvimento com o framework Spring, enquanto os servidores Spring TC Server e Spring DM Server fornecem ferramentas de monitoramento e compatibilidade com OSGi.
Este documento fornece uma introdução aos testes automatizados, abordando conceitos como: objetivos da automação de testes, tipos de testes, ferramentas como Selenium e Cucumber, e técnicas como TDD. O documento também discute como identificar elementos na página e interagir com eles durante a automação.
O documento discute o Apache DeltaSpike, um conjunto de extensões portáteis para o CDI que fornece funcionalidades úteis para aplicações Java. O DeltaSpike inclui módulos como segurança, JPA, JSF e agendamento de tarefas. Ele permite injeção de dependência tipada, configuração de projeto, recursos injetáveis e internacionalização de mensagens. O DeltaSpike facilita o desenvolvimento Java usando o CDI sem ser um framework completo.
O documento apresenta o DeltaSpike, um conjunto de extensões portáteis para CDI que fornecem funcionalidades úteis para aplicações Java que não são suportadas pela especificação CDI. O DeltaSpike inclui módulos para segurança, JPA, JSF, validação de beans, agendamento de tarefas e outros que facilitam o desenvolvimento com CDI. O DeltaSpike não é um framework completo, mas sim um conjunto de ferramentas que estendem as capacidades do CDI.
Eu apresentarei a palestra “ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem” na edição de Brasília. Veja nesta palestra, as novidades mais recentes das novas plataformas de desenvolvimento multiplataforma da Microsoft:
- ASP.NET Core 1.0 (anteriormente chamado de ASP.NET Core 5), que é o novo framework de desenvolvimento web multiplataforma da Microsoft que contém o ASP.NET Core MVC (anteriormente chamado de ASP.NET MVC 6) que, agora, está integrado com o ASP.NET Core Web API.
- .NET Core 1.0 (anteriormente chamado de .NET Core 5), novo framework de uso geral que contém um subconjunto do .NET Framework e outras APIs únicas.
- Entity Framework Core 1.0 (anteriormente chamado de Entity Framework 7), que é o novo framework de mapeamento objeto relacional da Microsoft e não somente isso, pois há extensões para suporta acesso a bancos de dados NoSQL, dentre outros paradigmas de acesso a dados.
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
O documento resume a história do ASP.NET, desde sua criação em 2002 até o desenvolvimento do ASP.NET vNext. Aborda perguntas comuns sobre o vNext e destaca suas principais características como modularidade, ciclo de desenvolvimento rápido, independência de plataforma e código aberto.
O documento apresenta um treinamento sobre Android embarcado, abordando tópicos como histórico do Android, versões, características, comunidade, licenças e certificação. Também discute sobre a arquitetura do Android, componentes do sistema e passo-a-passo para portar o Android para novos dispositivos.
Palestra apresentada no TDC Recife 2019, na trilha de DevOps.
Apresento uma ferramenta de CI/CD da Microsoft, o Azure Pipelines, serviço que é parte do Azure DevOps, do ponto de vista de um time com quase nenhuma experiência montando um CI/CD. Mostrei algumas funcionalidades que tornaram nossa experiência com a ferramenta mais tranquila e que contribuíram com que a curva de aprendizado fosse a menor possível.
O documento fornece uma visão geral e comparação de três frameworks PHP populares: Zend Framework 2, CodeIgniter e Yii. Descreve os recursos, comunidades de suporte, bancos de dados suportados, facilidade de desenvolvimento e sites que utilizam cada framework.
Venha conhecer as principais tecnologias disponibilizadas para o desenvolvimento de aplicações Web utilizando a plataforma Java Enterprise.
Neste mini-curso serão demonstrados conceitos e exemplos das bibliotecas para o desenvolvimento Java EE, como: JSF, JPA, CDI EJB, JAX-RS, dentre outras.
O documento descreve o framework Grails para desenvolvimento web ágil utilizando Java e Groovy. Grails permite alta produtividade através de programação por convenção, é completo e evita repetições de código. É composto por um framework para Java e uma linguagem de script chamada Groovy.
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
O documento resume as principais novidades da linguagem Visual Basic 2010, incluindo: (1) co-evolução com C# para receber novos recursos simultaneamente; (2) direcionamento da evolução da linguagem por Anders Hejlsberg; (3) recursos que melhoram a produtividade como implicit line continuation, auto-implemented properties e collection initializer; (4) suporte a lambda expressions, array literals e melhorias em parâmetros opcionais.
O documento fornece uma introdução sobre CDI (Contexts and Dependency Injection) em 3 frases:
CDI é uma API que implementa injeção de dependência e contextos, fazendo parte da especificação Java EE 6 como uma alternativa para frameworks como Spring e Google Guice. CDI permite a criação e gerenciamento de objetos através de anotações e permite definir o escopo de vida dos componentes usando contextos como request, conversation e application.
JSF 2.0: Uma Evolução nas Interfaces Web com JavaDr. Spock
Este documento apresenta as principais características do framework JavaServer Faces 2.0 e da plataforma Arduino/Program-ME. A agenda inclui uma discussão sobre JSF, benefícios, deficiências da versão anterior, novidades do JSF 2.0 e demonstrações dos projetos ScrumToys e Program-ME. O documento também fornece mais informações sobre esses tópicos.
1) O documento discute DevOps na AWS, incluindo o que é DevOps, a história de DevOps na Amazon, e serviços da AWS para DevOps.
2) Serviços como o AWS CodeBuild, AWS CodeDeploy e AWS CodePipeline podem automatizar o processo de build, teste e deploy de aplicações.
3) A AWS fornece diversas ferramentas para implementar práticas DevOps como entrega contínua e infraestrutura como código.
O documento discute o controle de versão no contexto da empresa SOL7. Apresenta conceitos básicos de controle de versão e do SVN. Detalha a realidade do controle de versão na SOL7, incluindo o que já existe e o que falta, e propõe um ciclo PDCA para evoluir o processo.
Java é uma plataforma de desenvolvimento de software composta por máquina virtual Java, linguagem de programação Java e bibliotecas padrão. Java possui três grandes áreas: Java SE para aplicações de desktop, Java EE para aplicações web e Java ME para dispositivos móveis. A comunidade Java contribui para o desenvolvimento da plataforma por meio do Java Community Process.
Semelhante a Liferay e Modularização com Arquitetura OSGi (20)
Audio available: https://www.liferay.com/web/events-symposium-north-america/recap
Liferay makes it easy to integrate your application with powerful search engines. However, it may be hard to diagnose why your most important content isn't showing up the way you need it to. This session will recap the key concepts for indexing and querying with Liferay Search, and present a number of techniques to guarantee your documents will be found with best possible relevance.
André de Oliveira joined Liferay in early 2014 as a senior engineer and leads the Search Infrastructure team. He's been a Java developer and architect for the last 15 years. Ever since discovering Elasticsearch, he's vowed never to write another SQL WHERE clause again.
Liferay's new search engine is extremely powerful. This session will show how the new OSGi infrastructure in DXP made it possible for us to introduce several new modular extension points in Search so customers can add their own search engine mappings, build custom queries for individual fields, programmatically fine tune boosting and relevance, and go beyond the Search Portlet with new Search Pages that can be assembled from both out-of-the-box portlets and brand new components built from scratch - for the ultimate customer experience.
André "Arbo" Oliveira joined Liferay in early 2014 as a senior engineer and leads the Search Infrastructure team. He's been writing code for a living for 22 years, 14 of them as a Java developer and architect. Ever since discovering Elasticsearch, he's vowed never to write another SQL WHERE clause again.
Search no Liferay 7 vem com muitas novidades aproveitando não apenas a nova arquitetura modular do Liferay, mas também um dos players mais inovadores do mercado: Elasticsearch, substituindo Lucene como mecanismo de busca padrão do Portal. Nesta sessão vamos explicar os conceitos básicos de buscas no Portal para iniciantes, cobrir tópicos avançados como clustering e escalabilidade, anunciar melhorias (Elasticsearch e Solr) como agregações, filtros e geolocalização, "mais como este" e outras novas consultas, e novíssimos recursos Enterprise como monitoria de cluster out-of-the-box com Marvel e segurança com Shield.
The core Search frameworks in Liferay 7 have been significantly retooled to benefit not only from Liferay's new modular architecture, but also from one of the most innovative players in the market: Elasticsearch, which replaces Lucene as the default search engine in Portal. This session will cover topics like clustering and scalability, unveil improvements (both Elasticsearch and Solr) like aggregations, filters, geolocation, "more like this" and other new query types, and also hot new features for the Enterprise like out-of-the-box Marvel cluster monitoring and Shield security.
André "Arbo" Oliveira joined Liferay in early 2014 as a senior engineer and leads the Search Infrastructure team. He's been writing code for a living for 22 years, 14 of them as a Java developer and architect. Ever since discovering Elasticsearch, he's vowed never to write another SQL WHERE clause again.
Onde nenhum desenvolvedor jamais testou: Introduzindo testes unitários em código legado
André Ricardo Barreto de Oliveira
(“Arbo”)
Core Software Engineer @ Liferay
Agilidade@Recife 2014
Este documento discute técnicas para escrever testes unitários para código legado, como testes de caracterização para documentar o comportamento atual e uso de isolamento através de mocks para evitar dependências. Também aborda como alcançar cobertura total de código, testar casos especiais e validações, e escrever testes para reproduzir bugs.
Escrevendo testes unitários para código legado: técnicas de isolamento
Liferay e Modularização com Arquitetura OSGi
1. Liferay e
Modularização com
Arquitetura
OSGi
André Ricardo Barreto de Oliveira "Arbo"
Core Engineer
Liferay do Brasil
@arbocombr
@Liferay_BR
#SymposiumBrazil
Liferay Symposium Brazil 2014
4. A busca por modularização
Tamanho do software crescendo extraordinariamente
(Pressões de desenvolvimento)
Deploy e redeploy parcial com granularidade mais fina
(Pressões de produção)
Oportunidades de comercialização com flexibilidade
(Pressões de negócio)
5. Pressões de desenvolvimento
Não modular
Código fonte demora para checautar
Make demora para construir
Testes demoram para fornecer
feedback
Distribuições demoram para fazer
download
Histórico de commits misturando
funcionalidades
Dependências circulares
comprometendo refactoring
Modular
Projetos menores constroem e
testam mais rápido, com histórico
limpo
Dependências bem definidas, sem
circularidades
Downloads reduzidos, incrementais
e transparentes
Separação de interface e
implementação
Melhor testabilidade de
componentes individuais
6. Pressões de produção
Não modular
Upgrade? "Tem que parar o servidor"
Deploy de bugfix crítico?
"Tem que parar o servidor"
Melhoria isolada?
"Tem que parar o servidor"
Dependency hell: conflitos de versão
em bibliotecas compartilhadas
Class loader hell:
ClassNotFoundException,
ClassCastException
Modular
Hot deploy e redeploy de fixes e
melhorias, sem paradas
Desligar pontos quentes conhecidos
mantendo no ar o resto da aplicação
Subir recursos somente se
dependências estiverem presentes
Múltiplas versões da mesma
biblioteca coexistindo no servidor
Isolamento de class loaders com
injeção de dependências
7. Pressões de negócio
Não modular
Relatórios esperando para entrar
junto com funcionalidades
Falta framework de plugins para
injetar consultas e relatórios
dinamicamente, on the fly
Vender o produto base + extensões,
plugins, módulos, combos
Enxugar o produto para derrubar
barreiras de entrada
Novos segmentos de mercado
Modular
Relatórios, consultas, exports com
time-to-market acelerado
Standard bem suportado para
componentes e serviços dinâmicos
Produto base enxuto, simples de
implantar e usar
Adaptar e reagir à entrada e saída
de features no ambiente
Definir facilmente pontos de
extensão para plugins de terceiros
8. Um mundo modular
Arquitetura modular é uma mudança de paradigma.
É projetar a sua aplicação assumindo ser possível:
Fabricar e testar peças menores em isolamento;
Substituir peças em produção com a aplicação rodando;
Fornecer peças novas para estender e aumentar a aplicação.
E claro, tendo a tecnologia para fazer tudo isso.
9. Liferay Portal
Liferay Portal: portlet container
Paradigmas modulares implementados e encorajados há anos:
Arquitetura extensível de portlets, plugins e serviços...
Hot deploy...
Separação entre interface e implementação...
Evolução natural: oferecer tecnologia modular de ponta a ponta.
Próximo passo e futuro da arquitetura modular do Liferay Portal?
11. OSGi: modularização em Java
OSGi: padrão de tecnologia da plataforma Java para modularização
Tecnologia madura: 15 anos de melhorias e evolução
Bancada por grandes players: Oracle, Red Hat, Eclipse, IBM, Liferay
Todos os principais app servers Java EE já são baseados em OSGi
Focada em standards e especificações, variadas implementações
Posta à prova com sucesso em numerosos projetos e produtos
12. OSGi: conceitos essenciais
Bundle: o módulo OSGi
Bundle container
Ciclo de vida do bundle no deploy
Objeto BundleActivator
OSGi Services
Export-Package & Import-Package
Espaços de classes isolados
Injeção de Dependências
13. Bundle: o módulo OSGi
(nada mais que um JAR)
Em OSGi, o módulo não passa de um JAR comum.
META-INF/MANIFEST.MF
Bundle-Name: Liferay Search API
Bundle-SymbolicName: com.liferay.search.api
Bundle-Version: 1.0.0
Export-Package: com.liferay.search.api;version="1.0.0"
(Não se preocupe,
cabeçalhos são inseridos automaticamente
por ferramentas como bndtools.)
14. OSGi bundle container
JAR? Nada de Java SE classpath,
nem Java EE lib em WAR ou EAR.
Bundle JAR: deploy é copiar o arquivo
no diretório do container OSGi.
"Como assim container? Mais um servidor?"
Não, seu app server Java EE favorito
na certa já é um container OSGi!
Implementações de bundle containers são bibliotecas.
(Apache Felix)
Mesmo aplicações Java desktop embarcam bundle containers
para oferecer mecanismo de plugins.
(Eclipse Equinox)
15. Ciclo de vida do bundle:
deploy no OSGi container
Assim que é copiado no container: INSTALLED
Todas as dependências satisfeitas: RESOLVED
Executando objeto BundleActivator: STARTING
Bundle levantado e funcionando: ACTIVE
16. BundleActivator
Um bundle jar com BundleActivator reage ao entrar ou sair do container.
(Sem necessidade de static class initializer)
Bundle-Activator: com.liferay.search.elasticsearch.Activator
package com.liferay.search.elasticsearch;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
public void start(BundleContext context) {
// Inicializações em geral, registrar serviços...
// INSTALLED -> RESOLVED -> STARTING -> ACTIVE
}
public void stop(BundleContext context) {
// De-registrar serviços, liberar recursos alocados
// ACTIVE -> STOPPING -> RESOLVED -> UNINSTALLED
}
}
17. OSGi Services
(nada mais que uma interface)
Um OSGi Service pode ser qualquer interface Java. Não precisa mais que isso.
package com.liferay.search.api;
public interface SearchEngine {
public SearchResult search(String query);
}
Bundle jar embarca a classe implementadora:
import com.liferay.search.api.SearchEngine;
import org.osgi.service.component.annotations.Component;
@Component(service = SearchEngine.class)
public class ElasticsearchSearchEngine implements SearchEngine {
public SearchResult search(String query) { /* ... */ }
}
Declarative Services (DS): anotações com várias opções para definir Serviços.
18. Export-Package
Import-Package
Bundle jar declara quais Java packages oferece para outros bundles,
e também quais Java packages necessita de outros bundles.
Bundle-Name: Liferay Search Portlet
Bundle-SymbolicName: com.liferay.search.portlet
Import-Package: com.liferay.search.api;version="1.0.0"
Bundle-Name: Liferay Search API
Bundle-SymbolicName: com.liferay.search.api
Export-Package: com.liferay.search.api;version="1.0.0"
Bundle-Name: Liferay Search Elasticsearch Implementation
Bundle-SymbolicName: com.liferay.search.elasticsearch
Import-Package: com.liferay.search.api;version="1.0.0"
Java packages de interfaces
de serviços são exportados,
mas não os packages das
implementações.
Ao iniciar um bundle,
o container procura
os Import-Package.
Deve existir outro
bundle oferecendo
como Export-Package.
Se não encontrar, o bundle não é resolvido e não inicia.
Se encontrar, roda o BundleActivator e registra os serviços.
19. Espaços de classes isolados
Em Java SE, qualquer classe pública
fica visível para todo o classpath.
Em OSGi, mesmo classes públicas
só são visíveis internamente no bundle.
Cada bundle em seu próprio classloader:
isolamento de espaço de classes.
E ainda assim os objetos transitados
são Java puro, sem proxies.
E mais: Import-Package e Export-Package
declaram o número da versão.
Como cada bundle tem classloader isolado,
o mesmo container pode ter múltiplas versões
da mesma biblioteca, componente ou serviço.
Fim do dependency hell.
20. Injeção de dependências
OSGi container com anotações Declarative Services (DS):
injeta automaticamente a instância recebida de outro bundle,
remove a instância quando o outro bundle sai de operação.
@Component(service=Searcher.class)
public class Searcher {
@Reference
protected void setSearchEngine(SearchEngine searchEngine) {
this.searchEngine = searchEngine;
}
protected void unsetSearchEngine(SearchEngine searchEngine) {
this.searchEngine = null;
}
}
Frameworks clássicos: injeção estática, somente no wiring inicial.
OSGi: injeção e remoção dinâmicas, a qualquer momento, sem parar a aplicação.
24. Novidades no Liferay 7:
Portlets clássicos JSR-168, JSR-286
Portlets e Liferay Services clássicos (WAR) continuam a funcionar
"as is", sem qualquer tipo de conversão
São expostos automaticamente no container como serviços OSGi
Services clássicos podem ser injetados em novos componentes via
API OSGi (em vez de static *Util)
Fazer deploy, redeploy, desinstalar, iniciar e parar:
independente de ferramentas específicas de cada app server
26. ... e o novo Portlet OSGi
package com.liferay.symposium;
import java.io.IOException;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.osgi.service.component.annotations.Component;
@Component(
service = Portlet.class,
property = {
"com.liferay.portlet.display-category=category.sample", "com.liferay.portlet.instanceable=true",
"javax.portlet.display-name=My DS Portlet", "javax.portlet.security-role-ref=power-user,user"
})
public class MyPortlet extends GenericPortlet {
protected void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
response.getWriter().print("Hello World!");
}
}
(sem mudanças)
(sem mudanças)
27. Portlets e Declarative Services (DS)
import org.osgi.service.component.annotations.Component;
@Component(
service = Portlet.class,
property = {
"com.liferay.portlet.display-category=category.sample",
"com.liferay.portlet.instanceable=true",
"javax.portlet.display-name=My DS Portlet",
"javax.portlet.security-role-ref=power-user,user"
})
public class MyPortlet extends GenericPortlet
{
/* ... */
}
28. Novidades no Liferay 7:
Portlets e Services OSGi
Portlets e Services: serviços OSGi nativos, embarcados em bundles (JAR)
Properties em anotações no portlet (em vez de arquivos XML)
Dependências declaradas: independente da ordem de deploy, Portlets e
Services aguardam suas dependências serem resolvidas e iniciadas
Detecção de quebras de API, com baselines e versões:
joyful upgrades, previsíveis, melhor documentados
Seus Portlets e Services definindo os próprios pontos de extensão, com
anotações, se beneficiando de todo o ciclo de vida OSGi... Marketplace!
Ênfase em expor a API e esconder as implementações:
melhores testes + abre as portas para remoting
29. Deployable WAR clássico
em app server
WAR, para os app servers - mesmo
só serviços e temas sem web context
Deploy Liferay dependente da
implementação de deploy de cada
app server
Especificação de portlets nem sequer
define empacotamento e deploy
"Damos o war, confiamos no app
server para expor serviços na outra
ponta"
Novidades no Liferay 7:
Hot deploy com OSGi
Deployable JAR bundle
em Liferay Portal OSGi Container
Plugin simples JAR OSGi bundle -
mesmo com portlets, web resources,
JSP
Deploy de plugins não atravessa
mais o app server, apenas o
container OSGi
Em OSGi, o modelo de
empacotamento e deploy é definido
na especificação.
Simples, direto e previsível.
30. Novidades no Liferay 7:
Escolha suas ferramentas
Antes: plugin WAR obrigatoriamente
construído via Liferay SDK
(ou Maven, sob limites)
Agora: plugin OSGi bundle é um simples JAR,
dispensando o Liferay SDK.
Ant, Maven, Gradle, Eclipse, IntelliJ...
ou a tecnologia de sua preferência!
Repositório público de artefatos Liferay
para resolução de dependências
(Releases, oportunamente dev snapshots)
31. Novidades no Liferay 7:
A Modular Liferay
Desde sempre, destaque do Liferay Portal:
grande variedade de features "out of the box"
Mas com isso... distribuição padrão "all or nothing"
Para Liferay 7+: Lightweight core
Em andamento: extração massiva de módulos "presos" no core
Polls, Bookmarks, Currency, Web Proxy, Iframe, Blogs...
Download do Liferay Portal básico será bem menor...
Implantações enxutas... com os componentes que você escolher.
32. Para saber mais:
http://www.osgi.org/Technology/HowOSGi
Liferay dev.life broadcast:
http://youtu.be/KPjmB5yj8Og
http://youtu.be/NB3jAh_FhuI
Liferay Developer Blogs:
https://www.liferay.com/web/raymond.auge/blog
Welcome to a modular future :-)
andre.oliveira@liferay.com
@arbocombr
@Liferay_BR
#SymposiumBrazil