Duration
10 days
Overview
Intensive and hands-on, the course emphasizes becoming productive quickly as a Java application developer. This course quickly covers the Java language syntax and then moves into the object-oriented features of the language. As a participant you will be able to create basic applications using the Java 8 programming language.
The participants will also be able to describe object-oriented concepts, object-oriented programming (OOP) concepts, and Java platforms and technologies. This course will use Eclipse as an IDE.
A framework provides a standard way to build and deploy applications. Framework provides generic functionality, which can be selectively changed by additional user-written code, thus providing application-specific software. Frameworks aim to facilitate software development by allowing programmers to devote their time to meeting software requirements rather than dealing with more standard low-level details of providing a working system, thereby reducing overall development time. For instance, a team developing a banking website can focus on writing code particular to banking rather than the mechanics of request handling, user role management and state management.
Web applications can be developed using existing JEE technologies such as servlets, JDBC, JSP. When application grows without a framework the hard-wired page navigations, control logic, business logic will start causing headaches and the code gets messy. Spring is an open source powerful Java application framework, used in a wide range of Java applications. Spring provides enterprise services to Plain Old Java Objects (POJOs) and uses dependency injection to achieve simplification and increase testability. The extensions available in Spring framework assist in building web applications on top of Java EE platform. Spring framework targets to make J2EE development easier to use and promotes good programming practices by enabling a POJO-based programming model.
Spring framework is bloated with tons facilities and helpers. It is framework that glues things together such as Struts, JSF, ORM frameworks and other facilities like Quartz, Email and most likely Spring supports almost everything. The drawback is it takes quite a lengthy process to set it up and running. Spring boot is built on totally a different thought. It is basically a suite, pre-configured, pre-sugared set of frameworks / technologies to reduce boiler plate configuration providing the shortest way to have a Spring web application up and running with smallest line of code / configuration out-of-the-box. It takes less than 20 lines to have a simple RESTful application up and running with almost zero configurations. In short, Spring Boot is the framework and tools designed to simplify the bootstrapping and development of a new Spring application and empower Java teams to build robust, hassle free applications.
This course provides an introduction to Spring Boot. It discusses the features of Spring Boot and how to utilize Spring Boot to rapidly define, configure, and add features to applications using Spring Boot. Participants will learn how to leverage Spring Boot to ease development and leverage the Spring framework to take the drudgery out of Spring development.
This course shows how to use ReactJS framework to build fast, modern, scalable single page web applications (SPAs). The course covers the principles of SPA development, and then takes the students through the process of building a ReactJS user interface. The course introduces JSX, the pseudo-HTML used in building ReactJS components, and moves on creating composite components and controller views using props and state. The students will build and validate Web forms and use Facebook’s unidirectional design pattern Flux, combining stores and actions to communicate with Web services and manage state. Students will gain a deeper understanding of JSX, work with form components, implement React styles, and learn how to integrate unit tests for React components.
Objective
- Write, compile and execute Java programs
- Build robust applications using Java’s object-oriented features
- Create robust applications using Java class libraries
- Understand the basics of Web Application - POST, GET, HTTP, MVC Pattern
- Create Spring MVC Applications using various options
- Run the applications using the embedded servlet containers
- Styling the web project using Bootstrap framework
- Connect to databases using Spring Data
- Build REST Services in Spring Boot
- Secure your applications using Spring Security
- Create an executable JAR of your application
- Understand Spring Boot Actuator and Spring Boot Developer Tools
- Creating components using JSX
- Building composite components
- Props, state, and controller views
- Working with controlled forms
- Routing with react-router
- Unit Testing ReactJS components
- Implementing the Flux design pattern
- Leveraging stores and actions
Target Participants
This course is meant for programmers who wish to move to object-oriented programming using Java. This course is designed for participants who are looking for an entry into an application development or a software project management career using Java technologies.
Before attending this course, students should have general programming experience and knowledge of HTML, CSS .
Mode of Delivery
Every participant will be provided with course notes and are required to bring in their own laptops for hands-on exercise and practice sessions.
Course Outcome
By end of this program every participant will complete “creating a web based customer profile solution”. The solution will allow the administrator to login and create customers. Every customer record will have multiple tabs consisting of address details, order details, payment details and shipping details.
The customer will be able to login to the portal and view their details, modify their address details, order details and also update their payment details.
Day 1
- Programming Concepts
- What is Programming
- Components of a Programming Language
- Programming Paradigms
- What is Java
- The Object-Oriented Paradigm and Java
- Writing Java Programs
- What is a Java Program
- Writing the Source Code
- Compiling the Source Code
- Running the Compiled Code
- Installing and configuring Eclipse IDE
- Downloading and Installing Maven
- Testing Maven Installation
- Data Types
- What is a Data Types
- What is an Identifier
- Data Types in Java
- Primitive Data Types in Java
- Special Floating-Point Numbers
- Rounding Modes
- Number Objects
- String Objects
- Format data for output
- Operators
- What is an Operator
- Assignment Operator
- Arithmetic Operators
- String Concatenation Operator
- Relational Operators
- Boolean Logical Operators
- Statements
- A Block Statement
- The if-else Statement
- The switch Statement
- Strings in Switch
- The for Statement
- The for-each Statement
- The while Statement
- The do-while Statement
- The break Statement
- The continue Statement
- Classes and Objects
- What is a Class
- Declaring Fields in a Class
- Creating Instances of a Class
- Using Dot Notation to Access Fields of a Class
- Access Level Modifiers for a Class
- Import Declaration
- Declaring Methods of a Class
- Local Variables
- Instance Method and Class Method
- Invoking a Method
- Access Level for Class Members
Day 2
- The Object and Objects Classes
- The Object Class
- What is the Class of an Object
- Computing Hash Code of an Object
- Comparing Objects for Equality
- String Representation of an Object
- Cloning Object
- Finalizing an Object
- Immutable Objects
- The Objects Class
- Java Package
- Package declaration
- Sub-Packages in Java
- Naming Convention
- Importing Java Package
- Access Modifier
- Java Archive (JAR) Files
- Wrapper Classes
- Autoboxing and Unboxing
- Overloaded Methods
- Collections
- Exception Handling
- What is an Exception
- Using a try-catch Block
- Exception Class Hierarchy
- Arranging Multiple catch Blocks
- Throwing an Exception
- Creating an Exception Class
- The finally Block
- The try-with-resources Block
- Re-throwing Exceptions
- Try with Resources
- Assertions
- What is an Assertions
- Testing Assertions
- Enabling / Disabling Assertions
- Using Assertions
- Checking for Assertion Status
- Strings
- What is a String
- String Literals
- Creating String Objects
- String Operators
- Comparing Two Strings
- StringBuilder and StringBuffer
- Dates and Times
- The Date-Time API
- Calendar Systems
- Clocks and Period Packages
- Period between Two Dates and Times
- Partials
- Formatting Dates and Times
- Parsing Dates and Times
Day 3
- Formatting Data
- Wrapper Classes
- Autoboxing and Unboxing
- Beware of Null Values
- Overloaded Methods
- Comparison Operators
- Arrays
- What is an Array
- Arrays are Objects
- Accessing Array Elements
- Length of an Array
- Multi-Dimensional Arrays
- Enhanced for Loop for Arrays
- Runtime Array Bounds Check
- Inheritance
- What is Inheritance
- The instanceof Operator
- Binding
- Method Overriding and Method Overloading
- Method Hiding and Field Hiding
- Disabling Inheritance
- Interfaces
- What is an Interface
- Implementing an Interface
- Implementing Multiple Interfaces
- Interface Inheritance
- The instanceof Operator
- Marker Interfaces
- Functional Interfaces
- Polymorphism – One Object, May Views
- Dynamic Binding and Interfaces
- Core Collection Classes
- The Collections Framework
- The Set Interface
- Set Implementation Classes
- The List Interface
- List Implementation Classes
- The Map Interface
- Map Implementation Classes
- JDBC 4.0
- Setting up MySQL Database
- Auto loading of Driver by JVM
- Standard Connection Factory Management
- Enhanced Connection and Statement Interface
- New interface RowID to support the ROWID data type
- Inserting Data / Updating Data / Deleting Data
- Use of Annotated SQL queries
- Creating prepared statements
- Calling stored procedure
- Java Stream API for Bulk Data Operations on Collections
Introduction
- Stream Creation
- Referencing a Stream
- Stream Pipeline
- Lazy Invocation
- Order of Execution
- Stream Reduction
- Parallel Streams
- Java Date / Time API
- Issues with existing Date / Time APIs
- LocalDate, LocalTime and LocalDateTime
- Using ZonedDateTime API
- Using Period and Duration
- Compatibility with Date and Calendar
- Date and Time Formatting
Day 4
- Getting Started With Maven
- Terminology and Basic Concepts
- Artifacts
- Lifecycle
- Plugins
- Running Maven
- Running Maven from Eclipse
- Common Goals
- pom.xml
- Commonly Used Plugins
- Maven Plugins
- Declaring and Configuring Plugins
- Running the Plugin
- Binding a Plugin Goal to the Lifecycle
- Maven Surefire Test Plugin
- Failsafe Plugin
- Site Plugin
- JavaDoc Plugin
- PMD Plugin
- POM Projects
- Project Object Model (POM)
- The overall POM structure
- Storing POM
- What is Maven Plugin
- Example of Using a Plugin
- Create a Custom Plugin
- Create a Custom Plugin (cont.)
- Plugin Management
- Creating Archetypes
- Introduction to Maven Archetypes
- Introduction to Maven Archetypes (cont.)
- Using Interactive Mode to generate Goal
- Common Maven Archetypes
- Repository Management
- Maven's Approach to Artifacts
- Publishing Artifacts
- Summary of Maven's Artifact Handling
- Repository
- Repository Manager
- Proxy Remote Repositories
- Types of Artifacts
- Release Artifacts
- Snapshot Artifacts
- Reasons to Use a Repository Manager
- Repository Coordinates
Day 5
- Introduction to Spring Boot
- What is Spring Boot?
- Spring Boot Main Features
- Understanding Java Annotations
- Spring MVC Annotations
- Example of Spring MVC-based RESTful Web Service
- Spring Booting Your RESTful Web Service
- Spring Boot Skeletal Application Example
- Converting a Spring Boot Application to a WAR File
- Externalized Configuration
- Starters
- The 'pom.xml' File
- Spring Boot Maven Plugin
- Create a Spring Boot Application
- Overview of Spring Boot Database Integration
- DAO Support in Spring
- Spring Data Access Modules
- Spring JDBC Module
- Spring ORM Module
- Data Access Exception
- @Repository Annotation
- Using DataSources
- DAO Templates
- DAO Templates and Callbacks
- ORM Tool Support in Spring
- Using Spring with JPA or Hibernate
- Spring JPA
- Benefits of Using Spring with ORM
- Spring @Repository
- Using JPA with Spring
- Configure Spring Boot JPA Entity Manager Factory
- Application JPA Code
- "Classic" Spring ORM Usage
- Spring JpaTemplate
- Spring JpaCallback
- JpaTemplate Convenience Features
- Spring Boot Considerations
- Spring Data JPA Repositories
Day 6
- WebSockets
Introduction
- HTTP vs WebSocket
- When to use it
- WebSocket API
- WebSocket Handler
- WebSocket Handshake
- Deployment
- Server config
- Allowed origins
- SocketJS Fallback
- Enable SockJS
- Client disconnects
- SockJS and CORS
- SockJSClient
- Enable STOMP
- Flow of Messages
- Handler methods
- Send Messages
- Simple and External Broker
- Connect to Broker
- Authentication
- Performance
- Monitoring
- Testing
- Spring REST Services
- Many Flavors of Services
- Understanding REST
- RESTful Services
- REST Resource Examples
- REST vs SOAP
- REST Services With Spring MVC
- Spring MVC @RequestMapping with REST
- Working With the Request Body and Response Body
- @RestController Annotation
- Implementing JAX-RS Services and Spring
- JAX-RS Annotations
- Java Clients Using RestTemplate
- RestTemplate Methods
Day 7
- Spring Micro services
- Evaluation of Micro Services
- Principles Of Micro Services
- Characteristics of Micro Services
- Micro services Benefits
- Relationship with SOA
- Twelve Factor Apps
- Micro Services use cases
- Micro Services early adopters
- Building micro services with boot
- Micro Services Capability model
- Micro Services Use case
- Stateless Microservice with Basic Auth and CORS
- Stateful Microservice with Form Auth, CSRF and CORS
- Stateful Microservice with SPA Integrated
- Spring Security
- Securing Web Applications with Spring Security 3.0
- Spring Security 3.0
- Authentication and Authorization
- Programmatic v Declarative Security
- Getting Spring Security from Maven
- Spring Security Configuration
- Spring Security Configuration Example
- Authentication Manager
- Using Database User Authentication
- LDAP Authentication
- Security Basics
- Storing Passwords
- Hashing Passwords (MD5 and SHA256)
- Spring Security & JPA
- Auto-configuration/simple security
- JDBC security
- OAuth2 Login Java Config
- OAuth2 Client support
- OAuth2 Security in a microservice architecture
- Spring JMS
- JmsTemplate
- Connection and Destination
- JmsTemplate Configuration
- Transaction Management
- Example Transaction Configuration
- Producer Example
- Consumer Example
- Converting Messages
- Message Listener Containers
- Message-Driven POJO's Async Receiver Example
- Message-Driven POJO's Async Receiver Configuration
- Spring Boot Considerations
- Spring Boot Actuator
- What is Spring Boot Actuator?
- Spring Boot Actuator Endpoints
- Installing Spring Boot Actutator
- Default Endpoints
- Custom Endpoints
- Securing Endpoints
- Customizing Endpoint Paths
- DEPLOYMENT
- Continuous Development and Delivery
- JAR/WAR
Day 8
- Introduction to "Modern (ES5)" JavaScript
- JavaScript Refresher
- Introduction to ES2015 (ES6)
- Basic language features
- Creating variables
- Primitives and wrapper objects in JavaScript
- JavaScript types: Number, String, Boolean, Date
- Functions, functional programming and nesting functions
- Arrays – Ordered sequence of items
- Indexed property access
- Scope and Context
- JavaScript visibility rules
- Global variables
- Object functions and execution
- The this keyword in JavaScript
- JavaScript == and false conditions and Triple Equals ===
- Creating Objects with JavaScript literal syntax and constructor functions
- Typeof and objects
- Special comparisons for objects
- Key JavaScript built-in objects
- Introduction to REACT
- What react is and what it is not
- React concepts
- Component composition
- How react works
- How Virtual DOM works
- How react handles data binding
- Advantages & Limitations
- Setting up ReactJS Development Environment
- Using Webpack / Babel
- Using npm & package.json file
- Look at an ReactJS application
- Organizing source code
- React browser plugin
Day 9
- Creating a simple React Application
- A simple react component with JSX template
- Component structure
- React render
- Component properties and property passing
- Props validation with data types
- States, initialize states and update states
- Pure components
- Introduction to JSX
- Components
- HTML attributes example. Class and Id etc
- Child Components and Name spaced components
- JavaScript expressions in JSX like attribute, boolean or child expression
- Forms
- Form components example input, textarea
- Controlled form components
- Uncontrolled form components
- Checkboxes and Radios
- Select box with default selected values
- Form validation
- Component Life Cycle
- Mounting Components
- Updating Components
- Setting Properties
- Composing Components
- Sibling Components and Key
- Parent and Child Components
- Props and State E. Component Life-Cycle
- Conditional Statements in React
- If-else in JSX
- IIFE in JSX for complex logic
- Event handling
- React.js Event Handlers
- Synthetic Events
- Keyboard
- Composition
- Focus
- Form
- Mouse
- Clipboard
- Selection
- Touch
- Event Pooling
- Other useful events in React
- Sharing events across the components
Day 10
- React Styles
- CSS and inline styles
- Setting up the react for React bootstrap
- Implementing the react bootstrap components
- React Router & Navigation
- Loading the router library
- Router configuration
- Passing and receiving parameters
- React-cookie integration
- Introduction to FLUX
- Flux pattern
- Flux Application Architecture
- Rational and MVC comparison
- Data Flow – Action, Dispatcher, Store & View
- Redux
- Reducer / Action / Store
- Creating a dynamic UI in React
- React Stateful Components
- Keeping components stateless
- Autobinding
- Event Delegation
- Unit Testing
- Tools for Unit Testing
- Jest & Jasmine
- Enzyme
- React Unit Testing
- Testing DOM manipulations
- Testing properties and state
- Simulating Events
- Shallow Rendering
Programme scope, delivery arrangements and suitability are confirmed during enquiry.