MyPage is a personalized page based on your interests.The page is customized to help you to find content that matters you the most.


I'm not curious

Programming Cloud Services for Android Handheld Systems Spring

Course Summary

In this course we will learn how to connect Android mobile devices to cloud computing and data storage resources, essentially turning a device into an extension of powerful cloud-based services on popular cloud computing platforms, such as Google App Engine and Amazon EC2.


  • +

    Course Syllabus

    The course is organized into the sections outlined below.Section 1: Talking to the Cloud with HTTP

    • Module 1: The HTTP Protocol
      • Introduction
      • What are Communication Protocols?
      • Intro to HTTP
      • Why HTTP?
      • What is a cloud service?
      • HTTP Request Methods
      • HTTP Request Anatomy
      • URLs Query Parameters
      • Mime Types Content Type Header
      • Request Body Encoding
      • HTTP Response Anatomy
      • HTTP Response Codes
      • Cookies
    • Module 2: Designing Applications with HTTP Communication
      • Building Cloud Services on HTTP
      • Protocol Layering / HTTP Design Methodologies
      • REST
      • HTTP Polling
      • Push Messaging

    Section 2: Building Java Cloud Services

    • Module 1: Java Servlets
      • What are Servlets?
      • A First Cloud Service with a Servlet
      • Web.xml
      • Video Servlet Code Walkthrough
      • Video Servlet Test Walkthrough with HttpClient
      • Securely Handling Client Data Avoiding Injection Attacks
    • Module 2: Better Abstractions for Building Java Cloud Services
      • Intro to Java Annotations
      • HTTP to Object Marshalling
      • Intro to JSON
      • The Spring Dispatcher Servlet and the Controller Abstraction
      • Intro to Spring Controllers
      • Accepting Client Data with RequestParam Annotations
      • Accepting Client Data with PathVar Annotations
      • Accepting Client Data with RequestBody Annotations and JSON
      • Handling Multipart Data
      • Generating Responses with the ResponseBody Annotation
      • Custom Marshalling with Jackson Annotations Serializers/Deserializers
      • Spring Boot Application Structure
      • Spring Controller Code Walkthrough
      • Spring Controller Test Code Walkthrough
    • Module 3: Better Client-side Communication Abstractions
      • Introduction to Retrofit
      • Retrofit Client Code Walkthrough
      • Android Retrofit Client Code Walkthrough
    • Module 4: Building Loosely Coupled and Extensible Java Services
      • Spring Dependency Injection Auto-wiring
      • Spring Configuration Annotations
      • Spring Dependency Injection Controller Code Walkthrough
      • Spring Dependency Injection Controller Test Code Walkthrough

    Section 3: Building Database-driven Java Cloud Services

    • Module 1: Persistent Objects
      • Object to DB Mapping
      • JPA
      • Entities
      • Repositories
      • Understanding SQL Injection Attacks
      • Spring Data Code Walkthrough
    • Module 2: RESTful Services for Persistent Objects
      • Spring Data REST
      • Spring Data REST Code Walkthrough

    Section 4: Restricting Service Access with User Accounts

    • Module 1: Secure HTTP Communication
      • Man in the Middle Attacks Public Key Infrastructure
      • HTTPS
    • Module 2: What was I Saying: Keeping Track of Sessions
      • Sessions
      • Spring Security Overview
      • Spring Security Configuration in Java
      • Building a Custom UserDetailsService
      • Setting up a custom UserDetailsService
      • The Principal
      • Spring Security Role Annotations
      • More Complex Expression-based Pre Post Authorize Annotations
      • Spring Security Controller Code Walkthrough
      • Spring Security Controller Test Code Walkthrough
    • Module 3: Authenticating Mobile Clients
      • Stateful Sessions with Cookies Why They Aren't Ideal for Mobile
      • Stateless Sessions with Tokens
      • OAuth 2.0
      • Spring Security OAuth 2.0
      • A Spring OAuth 2.0 Secured Service
      • A Retrofit Oauth 2.0 Client for Password Grants

    Section 5: Deploying to the Cloud Scaling

    • Module 1: General Scaling Strategies
      • Stateless vs. Stateful Applications
      • Horizontal Scaling
      • Auto-scaling Horizontally
      • Caching
      • Offloading to Cloud Provider Services
      • Asynchronous IO in Controllers
    • Module 2: Scaling Up Data Storage
      • NoSQL Databases
      • Optimizing for Key-based Lookups
      • Optimizing for Reads vs. Writes
      • Contention Sharding
      • Mongo DB
      • Spring Data Mongo DB
      • Database as a Service
      • Amazon Dynamo
      • Spring Data Dynamo DB
      • App Engine Big Table
    • Module 3: Automating Packaging Deployment
      • Deploying to Infrastructure as a Service
      • Deploying to Amazon EC2
      • Packaging Web Applications into WAR files
      • Adapting Spring Boot Applications for Google App Engine
      • Deploying to App Engine
    • Module 4: Performance Testing
      • Intro to Cloud Service Performance Testing
      • Apache JMeter
      • Building Realistic Tests

    Section 6: Patterns and Frameworks for Concurrent and Networked Server Software [Optional Material]

    • Module 1: Introduction to the Web Server Case Study
      • Applying Patterns and Frameworks to Concurrent and Networked Software
      • Overview of JAWS Web Server Case Study: Part 1
      • Overview of JAWS Web Server Case Study: Part 2
      • Overview of JAWS Web Server Case Study: Part 3
    • Module 2: Patterns and Frameworks for Service Access and Communication
      • Accidental Complexities with the Sockets API
      • The Wrapper Facade Pattern
      • ACE C++ Socket Wrapper Facades
      • Applying the ACE Wrapper Facades to a Web Client and Server
    • Module 3: Patterns and Frameworks for Synchronous Event Handling, Connections, and Service Initialization
      • The Reactor and Acceptor-Connector Patterns
      • The ACE Reactor Framework
      • Applying the ACE Reacto

  • +

    Recommended Background

    Ideally, students who take this course will be familiar with general object-oriented design and programming concepts (such as encapsulation, abstraction, polymorphism, extensibility ), fundamental Java object-oriented programming language features (such as classes, inheritance, interfaces, and generics available in Java, basic systems programming concepts (such as event handling, processes/threads, synchronization), and networking terminology (such as client/server and peer-to-peer architectures).  

  • +

    Course Format

    The class will consist of lecture videos with integrated quiz questions designed to ensure you understand the material covered in the videos. Students in this track will also complete auto-/peer-graded programming assignments. The programming assignments will involve writing cloud services using popular software frameworks written in Java, such as Spring Framework. 

  • +

    Suggested Reading

    Although the lectures are designed to be largely self-contained, it's recommended (but not required) that students refer to the following books:

    • Martin Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 1999.
    • Goetz et al., Java Concurrency in Practice, Addison-Wesley, 2006.
    • Doug Lea, Concurrent Programming in Java, Prentice Hall, 1999.
    • Gamma et at., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Reading, MA, 1995..
    • Schmidt et al., Pattern-Oriented Software Architecture, Vol 2: Patterns for Concurrent and Networked Objects, Wiley and Sons, 2000.
    • Buschmann et al., Pattern-Oriented Software Architecture:, Vol 4: A Pattern Language for Distributed Computing, Wiley and Sons, 2007.
    • Buschmann et al., Pattern-Oriented Software Architecture, Vol 5 On Patterns and Pattern Langauges, Wiley and Sons, 2007.

    Much of this material is available online.


Course Fee:
Free

Attendees Rating:

Course Type:

Self-Study

Course Status:

Active

Workload:

1 - 4 hours / week

1 Review

  1. Practical experience in Java & Spring is beneficial
    Reviewed by

    This course covers mostly about the server side and is good for students who have practical experience in Java and Spring. Along with the course, there are some assignments which are good and help you understand the concepts.

Attended this course?

Back to Top

Awards & Accolades for MyTechLogy
Winner of
REDHERRING
Top 100 Asia
Finalist at SiTF Awards 2014 under the category Best Social & Community Product
Finalist at HR Vendor of the Year 2015 Awards under the category Best Learning Management System
Finalist at HR Vendor of the Year 2015 Awards under the category Best Talent Management Software
Hidden Image Url

Back to Top