Description
Learn back-end development using the Java programming language, which is one of the most popular programming languages in the world and is used by the majority of large enterprises for infrastructure.
Syllabus:
Course 1: Spring Boots Basics
Web Development in Java
- Describe how the Java Application Server facilitates web development
- Identify the role of a Servlet within a Java Application Server
- Identify the role of Spring as a Servlet application tool
- Add and update project dependencies within a Maven POMfile
- Choose appropriate starter packs for Spring depending on the application’s requirements
Spring Boot Basics for Web Development
- Set up and configure a working Spring Boot Environment for web development
- Configure a Spring Boot application within Java using annotations and factory methods
- Identify Spring registered components in Java applications based on Spring annotations
- Annotate code to register custom components with a Spring App
- Identify and customize essential properties for the Spring Server
Spring MVC and Thymeleaf
- Design HTML templates with Thymeleaf and populate HTML templates with Spring’s MVC data model
- Explain how a controller populates the data model for a given view
- Identify the relationship between controller endpoint return values and the templates that are displayed
- Identify the role of the model object passed to controller endpoint methods
- Write variable resolution expressions within a ThymeLeaf template to access model data
Data Persistence and Security
- Identify mappings between Java objects and SQL tables and leverage those mappings to connect an application with a data store
- Explain how ORM leverages similarities between Java data types and SQL data types to reduce development time and programmer error
- Write MYBatis SQL template queries using an application’s data model
- Explain how the @Mapper annotation functions in the Spring App context as a component annotation
- Securely store user credentials in a database
- Query user information and identify accessible pages based on that information
- Use Spring security to automatically filter web traffic based on that information
Testing
- Use Selenium/Webdriver to automatically perform user actions in order to test the functionality of web pages
- Define JUnit test classes with the @Test annotation
- Use the JUnit assertion class to test specific success or failure points
- DRun a suite of JUnit tests from their IDE and interpret the results
- Navigate to specific URLs with the Selenium web driver
- Interact with queried elements from Selenium in the manner of a user to test that functionality exists as intended
- Write JUnit tests using these techniques to test individual features of a web app
- Organize tests into Page objects so that the application structure is mirrored by the test structure
Project : Build a Web-based Personal Storage Application
- Students will use the skills learned in the first course to create SuperDuperDrive, a web-based personal storage application.
- Students will use industry-standard, full-stack development tools to implement user-facing features such as file, note, and secure credential storage. Students will create a Java-backed web app using Spring MVC and Thymeleaf, with Spring Boot as a foundation. Students will store user data with MyBatis, a dead simple ORM library, and secure that data from unauthorised access with Spring Security while using H2 as an inmemory database. Finally, to complete the development cycle and ensure that the app is feature-complete, students will use JUnit and Selenium to run a series of automated user tests.
Course 2: Web Services and APIs
Web Services & APIs Overview
- Describe web services and their advantages
- Describe how web services communicate
- Explore the differences between web services, APIs and microservices
Develop REST APIs with Spring Boot
- Describe the REST architectural style and the importance of data formats)
- Develop a REST API using Spring Boot and incorporate exception handling.
- Use proper HTTP response codes
Develop GraphQL APIs with Spring Boot
- Describe GraphQL and its advantages over REST
- Create a GraphQL schema
- Develop a GraphQL server and API using Spring Boot
- Use GraphQL to execute queries and operations on data
Develop Microservices with Spring Boot
- Describe the Microservices Architecture (MSA)
- Expose a microservice using Spring Boot
- Register a microservice
Secure API Endpoints with Spring Security
- Describe Spring Security
- Explain the differences between authentication vs authorization
- Incorporate Basic Authentication practices to secure an API
Consume Web Services and APIs
- Consume a REST API
- Consume a SOAP-based web servicer
- Fetch and process XML and JSON
Document REST APIs
- Describe Swagger, a n open-source software framework to design, build, document, and consume RESTful web services
- Add Swagger annotations to model • Generate API documentation
Test REST APIs
- Describe and explain unit and integration testing
- Incorporate unit and integration testing into a REST API
Project: Build the Backend System for a Car Website
- In this course, the student will create a backend system for a car website. This backend will include the following services: vehicle list services, pricing services, and location services: Vehicles API — a REST API for maintaining vehicle data (CRUD), Pricing Service — a REST API for retrieving a vehicle's price, and Location API — an HTTP client for retrieving the vehicle's location. Students will use Java APIs and frameworks to integrate various services using various communication styles in the project. Students will write CRUD operations to store and retrieve vehicle data, as well as an HTTP client to retrieve the vehicle's address given the latitude and longitude. In addition, students will integrate the clients (Vehicle API) with pricing services to retrieve the price. Lastly, students will learn to use Swagger to efficiently create API documentation The student will be guided through the development of these steps. Unit tests, error handling, logging, and other best practices should all be written.
Course 3: Data Stores & Persistence
Data in Multitier Architecture
- Design Entities that map Java data types to database structures
- Represent complex associations between Entities in persistence
- Identify and select inheritance strategies
- Isolate Entity scope through the use of annotations and DTOs
Java Persistence API
- Understand and utilize key concepts in Object Relational Mapping (ORM) such as Persistence Context and Entity Manager, and learn about the Repository design pattern
- Propagate retrievals and persists with the help of Lazy Loading and Cascading
- Write and execute object queries in Java using JPQL
- Build implementations for your Repository methods automatically with Spring Data JPA
- Control the execution of queries through Transactions
Connecting to Data Sources
- Connect Spring Boot to both internal and external data sources
- Customize Spring DataSource construction and injection
- Use Spring and Hibernate to automatically initialize your data sources
- Configure unit tests to use different data sources
Persistence Without JPA
- Learn about the differences in Data Object design when retrieving data with SQL
- Initialize Data Sources with SQL scripts
- Use the Data Access Object design pattern
- Execute SQL queries with JdbcTemplate and automatically map the results to your Data Objects
- Decide when to use SQL and when to use Hibernate, and learn how to combine them both in the same project
Project: Design the Data Model for a SaaS Application
- Students will create and implement the data model for Critter Chronologer, a Software as a Service application that provides a scheduling interface for small animal-care businesses. Users will be able to create schedules using this enterprise project. Calendar events should be associated with pets, owners, and employees. Students will configure their application to connect to an external database and persist changes to it using JDBC and Hibernate. Students will be able to test their application using Postman after basic CRUD operations are exposed via a REST controller layer.
Course 4: Security and DevOps
Git
- Learn the basics of git such as branching, pull requests and merging
- Describe what version control is and means
Authorization and Authentication
- Identify the need for security in modern day web applications
- Describe best practices for authorization and authentication
- Implement modern authorization and authentication technologies such as password hashing and JWT
Testing
- Learn and use testing frameworks such as junit
- Describe the concept of code coverage and its importance
- Implement negative testing as well as happy path testing
Logging and Analytics
- Identify important application metrics and log them
- Send logs to Splunk
- Create visualizations and dashboards in Splunk to display those metrics
Jenkins and CI/CD
- Describe and explain CI/CD
- Create a build pipeline using Jenkins
- Build a Docker Image
- Create a CI pipeline for a Docker Image
- Deploy Docker container in production
Project: Implement Authorization for an eCommerce Application
- In this project, students will add authorization to an eCommerce web application built in Spring Boot using Spring Security, OAuth, and username/password combinations. To store this data, proper security and hashing will also be required. Students will identify the appropriate metrics for an effective analytics environment and analyse the metrics using Splunk or ELK. The configuration and deployment of these systems and the application will also be automated by the students. Jenkins will be used by students to integrate with their version control system and deploy their application to AWS.