Java Best Practices and Design Patterns Training in St. Petersburg
| 
                	 We offer private customized training for groups of 3 or more attendees.
                 | ||
| Course Description | ||
| Java programmers with experience with databases and with object-oriented
programming techniques, will learn to create more complex and advanced
programs using Java SE 7. 
                        Course Length: 4 Days Course Tuition: $2250 (US) | ||
| Prerequisites | |
| Students should be skilled and experienced in using Java. They should have knowledge of database structures and terminology. Also, they should be familiar with object-oriented programming | |
| Course Outline | 
| 
	Upon successful completion of this course, students will be able to: 
	Create and manage custom classes. 
	Control program flow by writing code to respond to specific criteria. 
	Implement object-oriented programming techniques to create reusable and reliable programs. 
	Work with Java utility class libraries. 
	Use the capabilities of the Java I/O package to read and write data to external files or media. 
	Use collection APIs in Java to manage data. 
	Use generics to enforce compile-time type checking. 
	Use multi-threaded programs to help handle multiple tasks concurrently. 
	Manage Java applications for memory efficiency and create distributable versions of a Java application. 
		Effective Programming in Java 
		• Clarifying the goals of best practices 
		• Identifying the key characteristics of high-quality software 
		• Organizing classes, packages and subsystems into layers 
		• Designing to the principles of SOLID 
		Applying Test-Driven Development 
		Exploiting a testing framework 
		• Composing and maintaining JUnit tests 
		• Taking advantage of advanced JUnit features 
		• Testing in the presence of exceptions 
		Monitoring software health using logging libraries 
		• Configuring logging with log4j and SLF4J 
		• Minimizing the impact of logging on performance 
		Creating matchers and mock objects 
		• Writing custom Hamcrest matchers 
		• Testing with fake objects and mocks 
		Leveraging Design Patterns 
		Employing common design patterns 
		• Observer 
		• Iterator 
		• Template method 
		• Strategy 
		• State 
		• Singleton 
		• Data Accessor Object 
		• Data Transfer Object 
		• Composite 
		• ServiceLocator 
		• Proxy 
		• Factory 
		Refactoring legacy code 
		• Identifying reasons to change software 
		• Clarifying the mechanics of change 
		• Writing tests for legacy classes and methods 
		Extending Applications with Java Meta Programming 
		Improving type safety with generics and enum types 
		• Creating generic classes and methods 
		• Navigating generic class hierarchies 
		• Implementing enum types for fixed sets of constants 
		Adding metadata by writing annotations 
		• Leveraging the built-in and custom annotations 
		• Annotating with meta-annotations 
		Modifying runtime behavior with reflection 
		• Retrieving class and method data dynamically 
		• Flagging methods with naming conventions 
		• Adding information to code with annotations 
		• Assessing disadvantages of reflection 
		Tuning for Maximum Performance 
		Measuring and improving performance 
		• Assessing response time 
		• Conducting load and stress tests 
		• Specifying strategies for improving performance 
		Exploiting garbage collectors 
		• Exploring garbage collection metrics 
		• Choosing appropriate algorithms for garbage collection 
		• Avoiding the hazards of finalizers 
		• Preventing memory leaks with reference types 
		Taking full advantage of threads 
		• Writing reliable thread-safe code 
		• Avoiding race hazards and deadlocks 
		• Employing the Executors framework 
		Bulletproofing a threaded application 
		• Synchronizing and sharing data between threads 
		• Managing the performance implications of synchronization 
		Exploring alternatives to synchronization 
		• Taking advantage of the volatile modifier 
		• Eliminating data sharing with ThreadLocal variables 
		Architecting for Separation of Concerns 
		Allocating responsibilities to components 
		• Translating method calls with the adaptor pattern 
		• Adding behavior with a proxy 
		Centralizing the creation of objects 
		• Employing factories to achieve loose coupling 
		• Implementing Inversion of Control (IoC) | 
Course Directory [training on all levels]
- .NET Classes
- Agile/Scrum Classes
- AI Classes
- Ajax Classes
- Android and iPhone Programming Classes
- Azure Classes
- Blaze Advisor Classes
- C Programming Classes
- C# Programming Classes
- C++ Programming Classes
- Cisco Classes
- Cloud Classes
- CompTIA Classes
- Crystal Reports Classes
- Data Classes
- Design Patterns Classes
- DevOps Classes
- Foundations of Web Design & Web Authoring Classes
- Git, Jira, Wicket, Gradle, Tableau Classes
- IBM Classes
- Java Programming Classes
- JBoss Administration Classes
- JUnit, TDD, CPTC, Web Penetration Classes
- Linux Unix Classes
- Machine Learning Classes
- Microsoft Classes
- Microsoft Development Classes
- Microsoft SQL Server Classes
- Microsoft Team Foundation Server Classes
- Microsoft Windows Server Classes
- Oracle, MySQL, Cassandra, Hadoop Database Classes
- Perl Programming Classes
- Python Programming Classes
- Ruby Programming Classes
- SAS Classes
- Security Classes
- SharePoint Classes
- SOA Classes
- Tcl, Awk, Bash, Shell Classes
- UML Classes
- VMWare Classes
- Web Development Classes
- Web Services Classes
- Weblogic Administration Classes
- XML Classes
- Introduction to Spring 6, Spring Boot 3, and Spring REST 
 15 December, 2025 - 19 December, 2025
- ASP.NET Core MVC (VS2022) 
 24 November, 2025 - 25 November, 2025
- Object-Oriented Programming in C# Rev. 6.1 
 17 November, 2025 - 21 November, 2025
- RED HAT ENTERPRISE LINUX SYSTEMS ADMIN II 
 8 December, 2025 - 11 December, 2025
- RHCSA EXAM PREP 
 17 November, 2025 - 21 November, 2025
- See our complete public course listing 
Java Programming Uses & Stats
| Difficulty | Popularity | Year Created1995 | 
| Pros 
	Most Commonly Used:  
	Great Career Choice:  
	Android Apps Development: 
	It Can Run On Any Platform: 
	Great Supporting IDE's: | Cons 
	Uses a Lot of Memory: 
	Difficulty in Learning:  
	Slow Start Up Times: 
	Verbose and Complex Code: 
	Commercial License Cost: | 
| Java Programming Job Market | 
|   Average Salary |   Job Count |   Top Job Locations 
	New York City  | 
| Complimentary Skills to have along with Java Programming - If you are an experienced Java developer, learning a complimentary language to Java should come much more naturally. As an example JetBrains recently created the Kotlin programming language which is officially supported by Google for mobile development. Kotlin compiles to Java bytecode and runs on the JVM; it's purported to address many of Java's shortcomings... | 






