Customer Service or Enrol: 0800 282 353 or +44 1372 364610
You Will Learn How To
Apply Java best practices to increase productivity and build fast, secure and reliable applications
Automate deploying, testing and detecting bugs in software applications
Solve architectural problems with proven design patterns and advanced language features
Maximise software performance
Improve the reliability of threaded applications
Code securely in Java and authenticate with industry-standard security frameworks
Course Benefits Java provides features to build robust, secure and responsive applications. Knowledge of the language and APIs alone is not enough to exploit the full power of Java. Developers must take advantage of proven best practices and industry-standard software development techniques. This course provides the skills needed to solve real-world software development problems and deliver fast, reliable applications.
Who Should Attend Developers, architects and anyone involved in Java projects who wants to expand their Java programming skills. Real-world knowledge of Java at the level of Course 471, "Java Programming Comprehensive Introduction", is assumed.
Hands-on Training You apply industry-standard best practices and gain experience using advanced APIs and language features. Exercises include:
Improving testability by creating a class in tandem with its unit test
Implementing key object-oriented design patterns for extensibility and maintainability
Optimising software performance by reordering loops and reducing database calls
Invoking dynamic business rules with scripting
Enforcing security constraints
Course Content
Effective Programming in Java
Clarifying the goals of best practices
Identifying the key characteristics of high-quality software
Optimising Software Development with Proven Techniques Simplifying project build and deployment
Automating the build process using ANT
Controlling and configuring logging
Applying test-driven development
Unit-testing complex components
Composing and maintaining JUnit tests
Automating project-wide testing
Validating application results with functionality tests
Testing container-managed components such as servlets
Improving Code Quality Through Better Design Expert recommendations
Balancing extensibility and maintainability
Minimising class loading problems
Exception best practices
Implicit contracts in the Java core API
Attaining type safety
Eliminating run-time errors with generics
Limiting parameter values with canonicalisation
Enforcing encapsulation
Providing coarse-grained methods with Memento
Simplifying adaptation to interfaces
Creating flexible frameworks
Broadening applicability with reflection
Simplifying reflection with JavaBeans and annotations
Refactoring and design patterns
Streamlining source code by refactoring
Designing to interfaces for improved software flexibility
Key object-oriented design patterns
Template Method
Strategy
Composite
Factory
Inversion of control
Automating code quality checks
Enforcing project-wide standards
Squashing common coding errors
Identifying design mistakes early
Tuning for Maximum Performance Measuring performance
Applying performance profiling tools
Assessing response time
Conducting load and stress tests
Identifying performance bottlenecks
Strategies for improving performance
Techniques for dealing with common Java performance issues
Exploiting generational garbage collectors
Choosing appropriate JVM and container settings
Assessing the need for NIO and JNI
Reordering loops to improve response time
Processing streaming data to reduce memory overhead
Effective use of the Collections API
Preventing memory leaks with weak references
Selecting the best collection classes
Taking Full Advantage of Threads Improving response time by parallelisation
Writing reliable, thread-safe code
Avoiding the pitfalls of threading: race hazards and deadlocks
Bulletproofing a threaded application
Synchronising threads
Techniques for sharing data between threads
Managing the performance implications of synchronisation