Tips and Tricks from OOP Foundations to Advanced Architecture Design Concepts - Guide for Developers, Architects, QAs
What you'll learn Java Best Practices
Solid Foundation in OOP Principles
Application of SOLID Principles
Effective OOP Interview Preparation
Hands-On Exam on Object-Oriented Programming
Understanding Java Platform Module System (JPMS)
Comprehensive Testing Techniques for Java Platform
Adoption of TDD, BDD & ATDD Methodologies
Object-Oriented Architecture Design
The Best Clean Code Practices
Application of GoF Design Patterns
Preparation for Design Patterns Interviews
Stay Updated with Java New Versions
Effective Logging Practices in Java
Java Secure Coding Practices
Designing RESTful Architectures
Understanding Software Development Metrics and KPIs
Web Application Design Patterns
Requirements Basic Java Knowledge: A fundamental understanding of Java programming is essential. Students should be familiar with Java syntax, data types, control structures, and basic concepts.
Programming Experience: Participants should have prior experience in writing Java code. Familiarity with coding practices and basic software development concepts is advantageous.
Development Environment Setup: Students should have a working Java development environment set up on their machines. This includes the Java Development Kit (JDK), Integrated Development Environment (IDE) like IntelliJ or Eclipse, and a version control system (e.g., Git).
Familiarity with Version Control: Some familiarity with version control systems, particularly Git, is recommended. This knowledge will aid in collaborative coding practices and project management.
Motivation for Best Practices: An eagerness to learn and apply best practices in Java development is crucial. The course emphasizes industry-standard approaches to writing efficient, maintainable, and secure code.
Description Unlock the full potential of Java development with my comprehensive course on best practices. Whether you're a Java developer looking to elevate your coding skills, a Development Lead, an Architect, or a QA professional aiming to enhance testing efficiency. This course is your gateway to a higher level of Java expertise. It provides a deep dive into industry-proven techniques.Key Learning Points:Solid Foundation in OOP Principles:Master the fundamental concepts of OOP and discover their direct applications in Java development.Application of SOLID Principles:Learn how to apply SOLID principles systematically, ensuring the creation of Java code that is robust, scalable, and easily maintainable.Object-Oriented Architecture Design:Develop the skills needed to create scalable and maintainable Object-Oriented Architecture for Java applications, ensuring your projects stand the test of time.Application of GoF Design Patterns:Understand and implement the renowned Gang of Four (GoF) design patterns, addressing common challenges encountered in software design.Preparation for Design Patterns Interviews:Learn how to navigate design pattern-related problems commonly encountered in interviews, enhancing your problem-solving skills and interview performance.Effective OOP Interview Preparation:Equip yourself with the knowledge and skills needed to confidently navigate OOP-related interview questions, enhancing your prospects in job interviews.Hands-On Exam on Object-Oriented Programming:Demonstrate your practical proficiency in applying OOP principles through a comprehensive examination, solidifying your understanding of key concepts.Understanding Java Platform Module System (JPMS):Explore the benefits of modularity in Java applications using the Java Platform Module System, gaining insights into creating modular and efficient codebases.Comprehensive Testing Techniques:Master Unit Testing with JUnit, delve into Integration Testing, and learn to harness the power of Mockito and PowerMockito for effective and reliable testing.Adoption of TDD, BDD & ATDD Methodologies:Gain practical experience in Test-Driven Development (TDD), Behavior-Driven Development (BDD), and Acceptance Test-Driven Development (ATDD), transforming your approach to software development.Web Application Architecture: We are going to learn the best practices of web application developmentBest Practices of REST Architecture Design in Java Applications:Architecture - that is something what is critically important from the very beginning.Stay Updated with Java New Versions:Keep pace with the latest features and improvements in recent Java versions, ensuring you leverage the full potential of the language.Effective Logging Practices in Java:Understand the critical role of logging in Java applications and learn best practices using frameworks like SLF4J and Logback.Secure Coding Practices:Explore secure coding practices, addressing OWASP Top 10 security issues in Java applications, fortifying your code against potential vulnerabilities.Designing RESTful Architectures:Master the principles of RESTful architecture and learn best practices for designing RESTful APIs in Java, ensuring efficient communication in modern software systems.Understanding Software Development Metrics and KPIs:Gain insights into the importance of metrics and key performance indicators (KPIs) in software development. This knowledge enables informed decision-making and continuous improvement in your development processes.Embark on this educational journey to become a proficient and well-rounded Java developer, QA professional, architect, or tech lead, armed with the latest industry best practices and techniques. Join us on a journey to master Java best practices and elevate your software development skills to new heights.
Overview Section 1: Introduction
Lecture 1 Communication plan
Lecture 2 Unlimited access to Learn-IT application for students
Lecture 3 Tips to Improve Your Course Taking Experience
Section 2: OOP Basics
Lecture 4 Object-oriented programming: Basics
Lecture 5 Classes & Objects
Lecture 6 Different types of Classes, Abstract keyword and Abstract classes
Lecture 7 Interfaces
Section 3: OOP Core Principles - Inheritance, Polymorphism, Encapsulation and Abstraction
Lecture 8 Inheritance
Lecture 9 Polymorphism and 'final' keyword
Lecture 10 'static' keyword
Lecture 11 Encapsulation
Lecture 12 Object, JNI and Object class overview
Section 4: SOLID Principles
Lecture 13 SOLID principles overview & Single Responsibility Principle
Lecture 14 Open / Closed Principle
Lecture 15 Liskov Substitution Principle
Lecture 16 Interface Segregation Principle
Lecture 17 Dependency Inversion Principle
Section 5: ===== OOP: Interview Preparation =====
Lecture 18 How to be prepared for the interview?
Lecture 19 Part 1: OOP Interview - Questions and Answers
Lecture 20 Part 2: OOP Interview - Questions and Answers
Section 6: Practice: EXAM OOP & Object-Oriented e-Commerce console applications
Lecture 21 Exam and homework for OOP topic
Section 7: Object-oriented Architecture, Clean Code Design (Advanced)
Lecture 22 Clean Code Architecture, Coupling & Cohesion
Lecture 23 Tell, Don't Ask Pricniple & Data Structures
Lecture 24 Law of Demeter
Lecture 25 Packaging Pricniples p.1: Cohesion Principles
Lecture 26 Packaging Pricniples p.2: Coupling Principles and Others
Section 8: GoF Design Patterns of Software Architecture in OOP
Lecture 27 GoF Patterns: Overview
Lecture 28 Creational Patterns
Lecture 29 Structural Patterns, p.1
Lecture 30 Structural Patterns, p.2
Lecture 31 Behevioral Patterns, p.1
Lecture 32 Behevioral Patterns, p.2
Lecture 33 Behevioral Patterns, p.3
Section 9: ===== Design Patterns: Interview Questions =====
Lecture 34 Part 1: OOP & Design Patterns Interview - Questions and Answers
Section 10: Java Platform Module System: Modules in Java & Migration of Java Apps
Lecture 35 Modules in Java: Modular Application Example
Lecture 36 Migration of Java Apps: Example of migration to a modular application
Section 11: Testing for Software Engineers
Lecture 37 Testing for software engineers: Overview
Section 12: Unit Testing & JUnit 5
Lecture 38 Unit Testing & JUnit Overview
Lecture 39 JUnit 5 examples VS JUnit 4 + Equivalence class partitioning
Lecture 40 JUnit 5 API (Advanced) & Test Code Coverage
Lecture 41 JUnit 5 API (Advanced p. 2) & Hamcrest Library
Section 13: Integration testing & Mockito
Lecture 42 Integration Testing in Java
Lecture 43 Mockito: Part 1
Lecture 44 Mockito: Part 2
Section 14: PowerMockito
Lecture 45 PowerMock
Section 15: TDD, BDD & ATTD
Lecture 46 Test-driven development: Theory
Lecture 47 BDD & ATTD
Lecture 48 TDD, BDD & ATTD - Practice
Section 16: Java: New Versions
Lecture 49 Java 8 Features (Lambda, Stream API, Optional, Effectively Final, etc.)
Lecture 50 java.util.Optional - Optional in Java
Lecture 51 Java 9: Stream API Updates, Multi-Resolution Image, Stack-Walking API, etc.
Lecture 52 Java 9: Process API & CompletableFuture API updates, Interface Private Methods
Lecture 53 Java 9: jlink & jshell
Lecture 54 Java 9: Multi-Release JAR Files & Compact Strings
Lecture 55 Java 9: Deprecated & Removed Features
Lecture 56 Reactive Programming in Java: Flow API, Reactive Streams
Lecture 57 Java 10: 'var' variables (Type inference), Docker support, Flex Heap Size, etc.
Lecture 58 Java 10: Other improvements, Removals, Deprecations, Release Versioning
Lecture 59 Java 11: LTS Concept, New HTTP Client, String & Files API Updates
Lecture 60 Java 11: Collection & Predicate API Updates, Nest-Based Access Control & more
Lecture 61 Java 12: CompactNumberFormat, Teeing Collector, String.indent(), transform()
Lecture 62 Java 13: Socket API, newFileSystem() method, ZGC Uncommit Unused Memory & others
Lecture 63 Java 14: Switch expressions, Currency Format, Helpful NullPointerExceptions
Lecture 64 Java 15: Text Blocks, Hidden Classes, new String methods
Lecture 65 Java 16: JEP 395 - Records
Lecture 66 Java 16: instanceof, Day Period Support, Stream.toList() & others
Lecture 67 Java 17: Sealed Classes & other improvements
Section 17: Web Application Design Patterns - Best Practices
Lecture 68 DAO (Data Access Object) Design Pattern
Lecture 69 MVC Design Pattern
Lecture 70 Layered Architecture
Section 18: ===== Exam: MVC & Layered Architecture =====
Lecture 71 Task Overview
Lecture 72 Solution Overview: Part 1
Lecture 73 Solution Overview: Part 2
Lecture 74 Solution Overview: Part 3
Section 19: Best Practices on Using Resources - Connection Pooling
Lecture 75 Connection Pooling: DBCP, C3P0, HikariCP & Tomcat Connection Pool with JNDI
Section 20: Best Practices of Secure Coding in Java
Lecture 76 OWASP Top 10: Overview
Lecture 77 Broken Access Control
Lecture 78 Cryptography Failures (Theory, Sensitive Data, Data Breach, Types of Failures)
Lecture 79 Cryptography Failures (Practical Examples, SQL Injections, TLS/SSL, HTTPS)
Lecture 80 Cryptography Failures (Examples, Password Encryption, Hashing, Salting)
Lecture 81 Injection (Overview, Fuzzing, CWEs, Impact, Injection Types, Command Injection)
Lecture 82 Injection (Cross Site Scripting, Types of XSS, SQL, JPA, NoSQL Injections)
Lecture 83 Injection (XPath Injection, Log Injection, Input Validation)
Lecture 84 Insecure Design (Overivew, CWEs, Shift Left Security, Threat Modeling Manifesto)
Lecture 85 Insecure Design (Secure Design Process, Security Controls, Metrics, Examples)
Lecture 86 Security Misconfiguration (Overview, CWEs, Types, Real-life attacks)
Lecture 87 Security Misconfiguration (Hardening, Zero Trust, Defense in Depth, Practice)
Lecture 88 Vulnerable & Outdated Components
Lecture 89 Identification & Authentication Failures
Lecture 90 Software & Data Integrity Failures
Lecture 91 Security Logging & Monitoring Failures
Lecture 92 Server-Side Request Forgery (SSRF)
Section 21: Logging in Java
Lecture 93 Logging in Java: Part 1 (Logging theory, Logging Levels, Java Logging Framework)
Lecture 94 Logging in Java: Part 2 (Log4J, Logback, SLF4J)
Section 22: ===== EXAM TASK: OWASP Top 10, Secure Coding & Logging =====
Lecture 95 Exam Task:
Description and Solution (with reference to the source code)
Section 23: Best Practices of Creation of REST Architecture in Java Applications
Lecture 96 REST Architecture: Overview and Key Principles
Lecture 97 Naming Convention for RESTful Services
Lecture 98 RESTful Service Implementation with Spring MVC
Lecture 99 Review of tools for API testing & Postman Installation
Lecture 100 API Testing with Postman
Section 24: Best Practices of Tracking Software Development Perforamnce, Clean Code & others
Lecture 101 Why this section is in this course and why it is important?
Lecture 102 Metric, KPI & OKR
Lecture 103 RAG Status to Present KPI
Lecture 104 Introduction to Engineering Excellence Metrics & KPIs
Lecture 105 Development Metrics & KPIs: Tech Debt Ratio & Index, Cyclomatic Complexity
Lecture 106 Development Metrics & KPIs: Unit Test Related Metrics - Part 1
Lecture 107 Development Metrics & KPIs: Unit Test Related Metrics - Part 2
Lecture 108 Development Metrics & KPIs: Duplicate Code & Commented Code Index
Lecture 109 Development Metrics & KPIs: Code Review Feedback Loop Time & Code Reviews
Section 25: Bonus section
Lecture 110 Bonus lesson
Java Developers: Intermediate and experienced Java developers looking to enhance their skills and adopt industry best practices in Java programming.,Java Enthusiasts and Students: Students and enthusiasts who want to build a strong foundation in Java programming and gain insights into industry-standard practices.,Technical Leads and Architects: Technical leads and architects aiming to reinforce their understanding of Java best practices for designing scalable and maintainable software architectures.,QA Engineers: QA professionals aiming to understand Java best practices to enhance the quality and efficiency of their testing efforts.,QA Automation Engineers: Individuals involved in QA automation who want to improve their Java programming skills and incorporate best practices into their automated testing frameworks.,QA Leads and Managers: QA leads and managers seeking insights into Java best practices to guide their teams in implementing effective and maintainable testing strategies.