AquinasTraining.co.uk - training courses. Home  -  FAQ  -  Corporate Plans

Java Programming: Best Practices

516      Course duration (days): 4
Talk to a Training Advisor
Tel. 0800 652 0202
Availability (sort by: location | date)
Request availability by clicking a date.
Central London
City
London (NW1) 28/10/08 £ 1,695
London (NW1) 27/01/09 £ 1,695
Prices exc. VAT.  Courses are vendor approved.
Need help? Contact us now.

About this class

Java provides many 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 will the lesson benefit?

This course is valuable for 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 ", is assumed.

What delegates will learn

  • Apply Java best practices to increase productivity and build fast, secure and reliable applications
  • Optimise the compilation, deployment and testing of software applications
  • Solve architectural problems with proven design patterns and advanced language features
  • Code securely in Java and authenticate with industry-standard security frameworks
  • Maximise software performance
  • Improve the reliability of threaded applications
  • Extend application functionality non-intrusively

Contents of this class

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
  • Writing custom Ant tasks

Applying test-driven development

  • Unit-testing complex components
  • Composing and maintaining JUnit tests
  • Validating application results with functionality tests
  • Testing container-managed components such as servlets

Logging application messages

  • Controlling and configuring logging
  • Employing different logging APIs: Log4J, java.util.logging and Jakarta commons

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
  • Streamlining 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

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

Incorporating Security Best Practices

Bulletproofing applications

  • Secure coding in Java
  • Programming defensively

Authentication and authorisation

  • Applying role-based security
  • Restricting access to protected resources
  • Establishing security policies

Extending Application Functionality

  • Injecting behaviour with dynamic proxies
  • Adding scripting abilities to an application
  • Managing Java applications with JMX