RESTful Java™ Training Course
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
- 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
[top] Instructors
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...
[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
- "CRUD" mapped to verbs / methods
- Introduction to HTTP Headers
- A glance at Webmachine's "Big HTTP Graph"
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
GEThave to be aPOST?
[top] Additional Notes
Instructors

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
Marakana 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.