RESTful Java™ Training Course

Training » All Courses » Java » RESTful Java™

Course Summary

The three day Java Web Services course provides a thorough guide to the design and implementation of RESTful web services using Java. We take students from the fundamental concepts of the REST architectural style and its embodiment in existing web standards, all the way through the creation and testing of a REST service. The course also illustrates how the decades-old HTTP protocol can in fact elegantly address a variety of "enterprise scale" issues, including high concurrency and atomic transactions.

[top] Duration

3 days.

[top] Objectives

On completion of this course, students will have implemented and tested a "web scale" RESTful web service using the open-source Jersey and Jackson libraries. Students will be able to:
  • Explain the fundamental concepts of the REST architectural style, and how they contrast against other web service architectures such as SOAP
  • Use HTTP's rich vocabulary of verbs and headers, URIs and media types as the basic building blocks of a scalable, future-proof service
  • Recognize and implement common patterns for constructing links, paginating and summarizing collections and providing atomic transactions
  • Transfer and apply the RESTful principles, demonstrated in this course with Jersey and Jackson, to other libraries, frameworks and programming languages

[top] Audience

The Java Web Services course is geared toward software developers with experience in the Java programming language. Familiarity with annotations is helpful. No other background with Java EE frameworks (such as servlets, servlet containers, JPA, etc.) or related technologies (e.g. Spring, OSGi) is required.

[top] Instructors

Photo
Dan Rosen believes in beautiful code. Beautiful code is understandable and maintainable, it is self-documenting and self-testing, it is robust and scalable, it can be composed and reused. Beautiful code doesn't come around every day, and even the most elegant code can still have its warts, but when you see beautiful code, you know it.

For twelve years, Dan has been doing his best to write and help others write some damn fine code. Dan is author of Marakana's Scala Fundamentals course, the latest addition the the Marakana course catalog. Before joining Marakana, he worked as a Developer Advocate at Atlassian, teaching developers how to write plugins for Atlassian's collaboration and development tools. Prior to Atlassian, Dan worked in both engineering and sales for Coverity, helping developers maintain code quality using Coverity's sophisticated static and dynamic analysis tools.

Between Coverity, Atlassian and Marakana, his tutorials have covered C/C++ best practices, Java web development (including Maven, Spring, OSGi, Guava, and RESTful web services using Jersey and Jackson), front-end development using jQuery, and functional programming with Scala.

Dan's latest hobby is lurking on StackOverflow as user "mergeconflict," waiting for tricky Haskell and Scala language questions to jump on. More about Dan Rosen...
Photo
Gordon Force has 25 years of product development experience as a developer, architect and director. Recently, he led development and application support for the ConnectPay and Encompass products at First Data. Agile development, with a heavy emphasis on testing, contributed to an effective strategy for consistently delivering new features on time, with high quality and industry compliance. Gordon now owns Force Associates providing Agile Development consulting and training services. More about Gordon Force...

[top] Outline

1. Concepts: REST vs. the Rest

  • The Richardson Maturity Model
  • Resources: identification, representations and manipulation
  • Hypermedia as engine of application state

2. HTTP Basics

3. Intro to JAX-RS and Jersey

  • Creating resource classes
  • Jersey annotations: HTTP methods and headers
  • Constructing responses: headers and bodies
  • Standalone deployment with SimpleServerFactory
  • Testing fundamentals: JUnit and Jersey-Client

4. Resource Representations

  • Standard internet media types
  • JAXB: standard annotations and "content negotiation" for XML and JSON
  • Jackson: a non-standard, JSON-optimized alternative
  • More testing: Jackson object mapping and Hamcrest pattern matching

5. Representation Recipes

  • Building links to related resources, and URI templates for families of resources
  • Aggregate representations
  • Combating representation bloat: summaries, expansions and pagination

6. "Enterprise" HTTP

  • Authentication
  • Optimizations: conditional requests (using modification dates and entity tags) and caching
  • Transactions: ephemeral resources
  • When does a GET have to be a POST?

[top] Additional Notes

Instructors

Dan-Rosen

Dan Rosen believes in beautiful code. Beautiful code is understandable and maintainable, it is self-documenting and self-testing, it is robust and scalable, it can be composed and reused. Beautiful code doesn't come around every day, and even the most elegant code can still have its warts, but when you see beautiful code, you know it.

For twelve years, Dan has been doing his best to write and help others write some damn fine code. Dan is author of Marakana's Scala Fundamentals course, the latest addition the the Marakana course catalog. Before joining Marakana, he worked as a Developer Advocate at Atlassian, teaching developers how to write plugins for Atlassian's collaboration and development tools. Prior to Atlassian, Dan worked in both engineering and sales for Coverity, helping developers maintain code quality using Coverity's sophisticated static and dynamic analysis tools.

Between Coverity, Atlassian and Marakana, his tutorials have covered C/C++ best practices, Java web development (including Maven, Spring, OSGi, Guava, and RESTful web services using Jersey and Jackson), front-end development using jQuery, and functional programming with Scala.

Dan's latest hobby is lurking on StackOverflow as user "mergeconflict," waiting for tricky Haskell and Scala language questions to jump on.

Java Meetup Organized by Marakana

SF Java Users GroupMarakana team organizes and runs the San Francisco Java Meetup - an interactive group of Java developers. In our monthly meetings, we discuss Java landscape from both technology and business angles. We often have great presentations by industry experts, group discussions, as well as hands-on sessions. If you are in San Francisco Bay Area, we encourage you to join the group and meet other Java developers.