Writing High-Performance Applications
Performance: Process and Issues | List four possible metrics for measuring software performance | Explain the effect of OO design on software performance | Explain where performance tuning resides in the overall OOSD cycle | Profiling and Benchmarking | List and describe the two types of benchmarks | Describe the criteria that should be considered when constructing a benchmark plan | Name the three most useful targets for profiling | List four common tools/techniques for profiling | Describe two strategies for improving performance as a result of profiling data | List and explain the five most common problem areas for good performance with Java | Profiling Tools | Use the JDK to collect runtime profiling data | Successfully read the profiling data generated by the JDK to detect performance bottlenecks | Instrument your own code to collect method execution time data | Code Optimization Techniques | List three potential problems with strings | List two ways to optimize loops | Describe the advantages of private and final methods | List two advantages of Java 1.2 collections over vectors and hashtables | List 4 other code and system optimizations | Design Optimization Techniques | List five ways to optimize Java program design
JAAS
JAAS Overview | Recap Java Security | Explain the concept of a Protection Domain | Recap enforcing code-based (including signature) authorization | Understand the role of the AccessController and the AccessControlContext |
Understand the role of the Protection | Understand the sequence of events for permission | Understand permission checking and the (call) stack | Understand the concept of PrivilegedAction and its effect on the permission checking sequence | Introduce the JAAS concept | Introduce the JAAS Authentication architecture | Understand the role of login modules | Understand the Subject and the relation with Principals | Introduce the JAAS Authorization architecture | Understand how Java security is enhanced to support principal-based authorization | Lesson: Applying JAAS Authentication and Authorization | Understand how to configure a JAAS configuration file | List the standard LoginModule implementations | Understand the different between the different requirement flags set on a login module declaration | Understand how to initiate the login process | Understand the Callback and CallbackHandlers | Be able to implement a CallbackHandler | How to configure principal-based Authorization | Understand different ways of associating a Subject with an AccessControllContext | Understand the difference between doAs and doAsPrivileged | Developing a custom Login Module | Understand the steps to develop a custom login module | Understand in more detail the login sequence of JAAS | Understand the semantics and proper implementation of the LoginModule methods
Java Object and Class management
Class loaders | Understand the responsibilities of a Java class loader | Understand class loader hierarchy | Understand the class loading sequence | Understand the related security | Understand how to use class loaders in your design/architecture | Understand how to re-load classes into the JVM | Write your own class loader | Understand how to write a class loader in a security enabled environment (SecurityManager) | End of Object lifetime | Understand the garbage collector's responsibilities | List the kinds of object references available in Java | Understand the Weak, Soft and other references | Implement a caching collection using weak references
Session: The Regular Expression API
The Regular Expression API | Introduce the Java Regular expression API |
Explain the use of Pattern objects | Explain the use of Matcher objects | Give an overview of Regular expressions
Session: Overview of Reflection
Use reflection to determine the fields and methods of arbitrary objects | Create programs which utilize dynamic method call creation
Session: JNI
Java Native Invocation (JNI) | Understand the JNI architecture | Understand the capabilities of JNI | Interface to a C function from Java | Exchange data from a JVM to a C function
Advanced Threading
Java SE Concurrency API | Understand the Lock API | Use Condition objects | Understand and use Semaphores | Understand and use the CountDownLatch | Understand and use the CyclicBarrier | Appreciate the Exchanger | Appreciate the Executor framework | Start and manage tasks | Understand how to schedule task execution | Work with the Callable interface | Appreciate Future | Use and configure thread pools
NIO
NIO packages | Introduce the Java NIO API | Explain the use of Buffers | Explain the use of Channels | Write a file using the FileChannel | Provide an overview of SocketChannels
Appendix: Developing JMX MBeans
Brief overview of JMX | Explain the JMX three level architecture | Understand the role and relationships for each level | Get an understanding of MBeans and the different ways of implementing them | Understand the relation between an MBean Server and its MBeans | Discuss different MBean deployment scenarios | Understand the concept of an MLET | Introduce JBoss sar files | Understand the JBoss -service.xml file | Developing standard MBeans | Understand the three different ways of developing standard MBeans | Understand what aspects of a standard MBean are considered static, and which are dynamic | Understand the registration process of an MBean on a local MBean Server | Discuss the limitations of local MBean Server registration | See a real-life application of JMX to monitor a web application | Develop a real-life application of JMX to manage document caching in a J2EE environment | Developing Dynamic MBeans | Understand the rationale behind Dynamic MBeans | Understand the need to a metamodel | Explain how a Dynamic MBean exposes its behavior | Correctly handle attribute support implementation | Correctly handle constructor and operation support implementation | Describe how MBeans can acts as event sources | Understand how to support notifications | Introduce proper exception handling for Dynamic MBeans | JMX Remoting (client side) Discuss the two different mechanisms for clients to work with a server | Contrast Adapters and Connectors | Understand what JSR160 (JMX Remoting) adds to the JMX arena | Understand the different mechanism of connecting with a JMX MBeanServer using JMX Remoting | Understand client configuration to connect with a remote server | Understand the two ways of connecting a client with the server using connectors | Understand the way URLs are described | Understand the relation between JMX and technologies such as LDAP, Jini and SLP | Describe the role of JMXMP |
Understand what a JMX client can do, when connected | Briefly describe the query mechanism | Understand how a client can operate with the MBeans on the server | Discuss class loading and registration of MBeans | Understand how to listen to notification
Appendix: Java Encryption (JCA and JCE)
Overview of Java Encryption | Set the context for encryption and related security technologies | Understand the different technologies | Introduce the different algorithms used in encryption technologies | Understand symmetric encryption and what to use it for | Understand asymmetric encryption and what it used for | Understand the role and concept of Message Digests | Understand the role and concept of Digital signatures | Understand the role and concept of Message Authentication Code (MAC) | Understand the role and concept of Certificates | Understand the role and concept of key agreement technologies | Introduce PKI architectures | Introduction to Java's Cryptography APIs (JCA/JCE) | Introduce basics of implementing cryptographic functionality in Java (focus on keys and ciphers) | Understand on a high-level the security architecture in J2SE | See a few examples of how to achieve concepts explained in the previous lesson | Generate a symmetric key | Generate asymmetric (private/public) key pairs | Configure key generation | Understand encryption modes (such as CBC, ECB, CFB, OFB and PCBC) | Understand padding modes (such as ISO10126Padding, OAEP, PKCS 1 and 5 Padding) | Configure ciphers | Perform encryption/decryption using different strategies | Understand how to encrypt/decrypt files | Understand how to digest a message | Understand how to produce a MAC | Understand how to sign and verify digital signatures
|