SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Cool Open Source Libs
Nabil HACHICHA
GDG DevFest 2013 Algiers
Why Open Source?
● Better quality
○ Developed by many passionate developers
○ Innovation and enhancements over time

● Open standards & interoperability
● It’s hard to develop without it
Use case
● Develop & test a small app (Employees list)
Use case
Architecture

Request content from network
Use case
Architecture

ListView Adapter, based on a
simple POJO
Use case
Architecture

Fragment holding our ListView
Use case
Architecture

Parse HTML using Xpath
OkHttp
● Efficient Http client, based on java.net.
HttpURLConnection or Apache HttpClient
● Can also be used as as the transport layer
for Volley
OkHttp
● SPDY support, allows all requests to the
same host to share a socket.
● Transparent GZIP
● Silently recover from common connection
problems
● Recovers from problematic proxy servers
and failed SSL handshakes
● Connection pooling reduces request latency
(if SPDY isn’t available)
OkHttp
● SPDY support, allows all requests to the
same host to share a socket.
● Transparent GZIP
● Silently recover from common connection
problems
● Recovers from problematic proxy servers
and failed SSL handshakes
● Connection pooling reduces request latency
(if SPDY isn’t available)
OkHttp
● SPDY support, allows all requests to the
same host to share a socket.
● Transparent GZIP
● Silently recover from common connection
problems
● Recovers from problematic proxy servers
and failed SSL handshakes
● Connection pooling reduces request latency
(if SPDY isn’t available)
OkHttp
● SPDY support, allows all requests to the
same host to share a socket.
● Transparent GZIP
● Silently recover from common connection
problems
● Recovers from problematic proxy servers
and failed SSL handshakes
● Connection pooling reduces request latency
(if SPDY isn’t available)
OkHttp
● SPDY support, allows all requests to the
same host to share a socket.
● Transparent GZIP
● Silently recover from common connection
problems
● Recovers from problematic proxy servers
and failed SSL handshakes
● Connection pooling reduces request latency
(if SPDY isn’t available)
Picasso
● A powerful image downloading and caching
library for Android
Picasso
● Handling ImageView recycling and download
cancelation in an adapter
● Complex image transformations with minimal
memory use.
● Automatic memory and disk caching.
Code
Testsing
Robolectric
Mockito
FEST
Robolectric
● Run Android tests inside JVM
● Instruct Robolectric to configure Android
differently
○ use a non-standard manifest file
○ use French resources on a sideways high-res
display (qualifiers)
Mockito
● Mocking framework, with fluent API syntaxe
FEST
● Fixtures for Easy Software Testing
● Simplify software testing by providing a
fluent Assertions
● Just use assertThat
● FEST Android, extension of FEST
FEST
Example:
● Regular JUNIT
assertEquals(View.GONE,view.getVisibility())

● Regular FEST
assertThat(view.getVisibility()).isEqualTo
(View.GONE)

● FEST Android
assertThat(view).isGone()
Code
TDD
● objc-TimesSquare
○ calendar view for your apps

● PonyDebugger
○ Remote network and data debugging for your native
iOS app using Chrome Developer Tools

● SocketRocket
○ WebSocket client library

● objc-mocktail
○ stub out HTTP servers in your Objective-C app.

● KIF
○ Keep It Functional - An iOS Functional Testing
Framework
Thanks!
Q&A

Links http://square.github.io/

Más contenido relacionado

La actualidad más candente

Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
OdessaJS Conf
 
Proxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::StaticperlProxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::Staticperl
nohuhu
 
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
OdessaJS Conf
 
Scaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N BartlettScaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N Bartlett
mfrancis
 

La actualidad más candente (20)

Bye bye WCF, hello gRPC
Bye bye WCF, hello gRPCBye bye WCF, hello gRPC
Bye bye WCF, hello gRPC
 
Adopting language server for apache camel feedback from a java/Eclipse plugi...
Adopting language server for apache camel  feedback from a java/Eclipse plugi...Adopting language server for apache camel  feedback from a java/Eclipse plugi...
Adopting language server for apache camel feedback from a java/Eclipse plugi...
 
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
 
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
 
Proxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::StaticperlProxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::Staticperl
 
Sculpin
SculpinSculpin
Sculpin
 
Building a Modern JavaScript Framework by James Milner
Building a Modern JavaScript Framework by James MilnerBuilding a Modern JavaScript Framework by James Milner
Building a Modern JavaScript Framework by James Milner
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
 
Scripting Languages in OSGi
Scripting Languages in OSGiScripting Languages in OSGi
Scripting Languages in OSGi
 
Advent of magento2
Advent of magento2Advent of magento2
Advent of magento2
 
ApacheCon Core: Service Discovery in OSGi: Beyond the JVM using Docker and Co...
ApacheCon Core: Service Discovery in OSGi: Beyond the JVM using Docker and Co...ApacheCon Core: Service Discovery in OSGi: Beyond the JVM using Docker and Co...
ApacheCon Core: Service Discovery in OSGi: Beyond the JVM using Docker and Co...
 
Let your REST API talk @java2days
Let your REST API talk @java2daysLet your REST API talk @java2days
Let your REST API talk @java2days
 
Service Discovery in OSGi: Beyond the JVM using Docker and Consul
Service Discovery in OSGi: Beyond the JVM using Docker and ConsulService Discovery in OSGi: Beyond the JVM using Docker and Consul
Service Discovery in OSGi: Beyond the JVM using Docker and Consul
 
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
 
Nginx, PHP and Node.js
Nginx, PHP and Node.jsNginx, PHP and Node.js
Nginx, PHP and Node.js
 
Angular2 - A story from the trenches
Angular2 - A story from the trenchesAngular2 - A story from the trenches
Angular2 - A story from the trenches
 
Scaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N BartlettScaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N Bartlett
 
UNC Chapel Hill 2014 CTC Retreat - Carolina Cloudapps / RedHat OpenShift Ente...
UNC Chapel Hill 2014 CTC Retreat - Carolina Cloudapps / RedHat OpenShift Ente...UNC Chapel Hill 2014 CTC Retreat - Carolina Cloudapps / RedHat OpenShift Ente...
UNC Chapel Hill 2014 CTC Retreat - Carolina Cloudapps / RedHat OpenShift Ente...
 
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
 
Kong Ingress Controller - Fullstaq Show N Tell
Kong Ingress Controller - Fullstaq Show N TellKong Ingress Controller - Fullstaq Show N Tell
Kong Ingress Controller - Fullstaq Show N Tell
 

Destacado (20)

Analitica blog 2
Analitica blog 2Analitica blog 2
Analitica blog 2
 
SEXTING
SEXTINGSEXTING
SEXTING
 
2013 Lincoln MKZ
2013 Lincoln MKZ 2013 Lincoln MKZ
2013 Lincoln MKZ
 
Pk th1 semester 1-2013
Pk th1 semester 1-2013Pk th1 semester 1-2013
Pk th1 semester 1-2013
 
Bab 3
Bab 3Bab 3
Bab 3
 
Bahasan 2
Bahasan 2 Bahasan 2
Bahasan 2
 
Brown
BrownBrown
Brown
 
Un paseo por jumilla mi tierra natal
Un paseo por jumilla mi tierra natalUn paseo por jumilla mi tierra natal
Un paseo por jumilla mi tierra natal
 
KPC
KPCKPC
KPC
 
MAQUINARIA PIERALISI
MAQUINARIA PIERALISIMAQUINARIA PIERALISI
MAQUINARIA PIERALISI
 
U D 02.Sondas geotérmicas
U D 02.Sondas geotérmicasU D 02.Sondas geotérmicas
U D 02.Sondas geotérmicas
 
Как вести себя во время терракта
Как вести себя во время террактаКак вести себя во время терракта
Как вести себя во время терракта
 
Ecotourism
EcotourismEcotourism
Ecotourism
 
GHP Food Alliance SPM
GHP Food Alliance SPMGHP Food Alliance SPM
GHP Food Alliance SPM
 
Mapa1
Mapa1Mapa1
Mapa1
 
Brochure hernan beltran
Brochure hernan beltranBrochure hernan beltran
Brochure hernan beltran
 
Gestión y creación de contenidos para la web: ¿cómo escribir para la web?
Gestión y creación de contenidos para la web: ¿cómo escribir para la web?Gestión y creación de contenidos para la web: ¿cómo escribir para la web?
Gestión y creación de contenidos para la web: ¿cómo escribir para la web?
 
cracai
cracaicracai
cracai
 
Curtis
CurtisCurtis
Curtis
 
ISU presentation - Spring 2015
ISU presentation - Spring 2015ISU presentation - Spring 2015
ISU presentation - Spring 2015
 

Similar a GDG Algiers DevFest 2013 Cool AndroidLibs

Who needs containers in a serverless world
Who needs containers in a serverless worldWho needs containers in a serverless world
Who needs containers in a serverless world
Matthias Luebken
 

Similar a GDG Algiers DevFest 2013 Cool AndroidLibs (20)

GlassFish OSGi - Java2days 2010
GlassFish OSGi - Java2days 2010GlassFish OSGi - Java2days 2010
GlassFish OSGi - Java2days 2010
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
 
Kotlin REST & GraphQL API
Kotlin REST & GraphQL APIKotlin REST & GraphQL API
Kotlin REST & GraphQL API
 
Introduction to Apigility
Introduction to ApigilityIntroduction to Apigility
Introduction to Apigility
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
 
CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...
CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...
CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...
 
Who needs containers in a serverless world
Who needs containers in a serverless worldWho needs containers in a serverless world
Who needs containers in a serverless world
 
CON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project NashornCON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project Nashorn
 
OTN Developer Days - GlassFish
OTN Developer Days - GlassFishOTN Developer Days - GlassFish
OTN Developer Days - GlassFish
 
LCU14 310- Cisco ODP v2
LCU14 310- Cisco ODP v2LCU14 310- Cisco ODP v2
LCU14 310- Cisco ODP v2
 
Node.js Presentation
Node.js PresentationNode.js Presentation
Node.js Presentation
 
OSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P KriensOSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P Kriens
 
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps WayDevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
 
Netty training
Netty trainingNetty training
Netty training
 
Start Serverless with Golang!
Start Serverless with Golang!Start Serverless with Golang!
Start Serverless with Golang!
 
Apigility introduction v2 (glasgow php)
Apigility introduction v2 (glasgow php)Apigility introduction v2 (glasgow php)
Apigility introduction v2 (glasgow php)
 
PaaS options for .NET
PaaS options for .NETPaaS options for .NET
PaaS options for .NET
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache Karaf
 
Netty training
Netty trainingNetty training
Netty training
 
An introduction to Node.js application development
An introduction to Node.js application developmentAn introduction to Node.js application development
An introduction to Node.js application development
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

GDG Algiers DevFest 2013 Cool AndroidLibs

  • 1. Cool Open Source Libs Nabil HACHICHA GDG DevFest 2013 Algiers
  • 2. Why Open Source? ● Better quality ○ Developed by many passionate developers ○ Innovation and enhancements over time ● Open standards & interoperability ● It’s hard to develop without it
  • 3. Use case ● Develop & test a small app (Employees list)
  • 8. OkHttp ● Efficient Http client, based on java.net. HttpURLConnection or Apache HttpClient ● Can also be used as as the transport layer for Volley
  • 9. OkHttp ● SPDY support, allows all requests to the same host to share a socket. ● Transparent GZIP ● Silently recover from common connection problems ● Recovers from problematic proxy servers and failed SSL handshakes ● Connection pooling reduces request latency (if SPDY isn’t available)
  • 10. OkHttp ● SPDY support, allows all requests to the same host to share a socket. ● Transparent GZIP ● Silently recover from common connection problems ● Recovers from problematic proxy servers and failed SSL handshakes ● Connection pooling reduces request latency (if SPDY isn’t available)
  • 11. OkHttp ● SPDY support, allows all requests to the same host to share a socket. ● Transparent GZIP ● Silently recover from common connection problems ● Recovers from problematic proxy servers and failed SSL handshakes ● Connection pooling reduces request latency (if SPDY isn’t available)
  • 12. OkHttp ● SPDY support, allows all requests to the same host to share a socket. ● Transparent GZIP ● Silently recover from common connection problems ● Recovers from problematic proxy servers and failed SSL handshakes ● Connection pooling reduces request latency (if SPDY isn’t available)
  • 13. OkHttp ● SPDY support, allows all requests to the same host to share a socket. ● Transparent GZIP ● Silently recover from common connection problems ● Recovers from problematic proxy servers and failed SSL handshakes ● Connection pooling reduces request latency (if SPDY isn’t available)
  • 14. Picasso ● A powerful image downloading and caching library for Android
  • 15. Picasso ● Handling ImageView recycling and download cancelation in an adapter ● Complex image transformations with minimal memory use. ● Automatic memory and disk caching.
  • 16. Code
  • 18. Robolectric ● Run Android tests inside JVM ● Instruct Robolectric to configure Android differently ○ use a non-standard manifest file ○ use French resources on a sideways high-res display (qualifiers)
  • 19. Mockito ● Mocking framework, with fluent API syntaxe
  • 20. FEST ● Fixtures for Easy Software Testing ● Simplify software testing by providing a fluent Assertions ● Just use assertThat ● FEST Android, extension of FEST
  • 21. FEST Example: ● Regular JUNIT assertEquals(View.GONE,view.getVisibility()) ● Regular FEST assertThat(view.getVisibility()).isEqualTo (View.GONE) ● FEST Android assertThat(view).isGone()
  • 22. Code
  • 23. TDD ● objc-TimesSquare ○ calendar view for your apps ● PonyDebugger ○ Remote network and data debugging for your native iOS app using Chrome Developer Tools ● SocketRocket ○ WebSocket client library ● objc-mocktail ○ stub out HTTP servers in your Objective-C app. ● KIF ○ Keep It Functional - An iOS Functional Testing Framework