Part One Developing with Java 7
Chapter 1 First introduction to Java 7
1.1 Language and Platform
1.2 Coin project: everything is concentrated
1.3 Modifications in the Coin project
1.4 Summary
Chapter 2 New I/O
2.1 A brief history of Java I/O
2.2 The cornerstone of file I/O: Path
2.3 Processing directories and directory trees
2.4 NIO.2 file system I/O
2.5 Asynchronous I/O operations
2.6 Integration of Socket and Channel
2.7 Summary
Part 2 Key Technologies
Chapter 3 Dependency Injection
3.1 Knowledge injection: understanding IoC and DI
3.2 Standardized DI in Java
3.3 DI reference implementation in Java: Guice 3
3.4 Summary
Chapter 4 Modern Concurrency
4.1 Introduction to Concurrency Theory
4.2 Block Structure Concurrency (Before Java 5)
4.3 Building blocks of modern concurrent applications
4.4 Control Execution
4.5 Branch/Merge Framework
4.6 Java Memory Model
4.7 Summary
Chapter 5 Class Files and Bytecode
5.1 Class loading and class objects
5.2 Using method handles
5.3 Check class files
5.4 Bytecode
5.5 invokedynamic
5.6 Summary
Chapter 6 Understanding Performance Tuning
6.1 Performance terminology
6.2 Pragmatic performance analysis method
6.3 What went wrong? Why we worry
6.4 A timing problem from hardware
6.5 Garbage Collection
6.6 JIT compilation of HotSpot
6.7 Summary
Part 3 Multi-language programming on JVM
Chapter 7 Alternative JVM Languages
7.1 Is Java too stupid? Pure slander
7.2 Language Ecology
7.3 Multi-language programming on JVM
7.4 How to choose a good non-Java language
7.5 JVM support for alternative languages
7.6 Summary
Chapter 8 Groovy: Java’s Dynamic Companion
8.1 Getting started with Groovy
8.2 Groovy 101: Syntax and Semantics
8.3 Differences from Java--Newbie Trap
8.4 Groovy features that Java does not have
8.5 Cooperation between Groovy and Java
8.6 Summary
Chapter 9 Scala: Simple but not simple
9.1 A quick tour of Scala
9.2 Can Scala be used in my project
9.3 Let the code bloom again with Scala
9.4 Scala Object Model: Similar but Different
9.5 Data structures and collections
9.6 Introduction to actors
9.7 Summary
Chapter 10 Clojure: Programming Safer
10.1 Introduction to Clojure
10.2 Finding Clojure: Syntax and Semantics
10.3 Using functions and loops
10.4 Clojure Sequences
10.5 Interoperability between Clojure and Java
10.6 Clojure Concurrency
10.7 Summary
Part 4 Multilingual Project Development
Chapter 11 Test Driven Development
11.1 Overview of TDD
11.2 Test avatars
11.3 ScalaTest
11.4 Summary
Chapter 12 Build and Continuous Integration
12.1 Meet Maven 3
12.2 Maven 3 Getting Started Project
12.3 Build Java7developer project with Maven 3
12.4 Jenkins: Meeting CI needs
12.5 Maven and Jenkins code metrics
12.6 Leiningen
12.7 Summary
Chapter 13 Rapid Web Development
13.1 Problems with Java Web Framework
13.2 Criteria for selecting a web framework
13.3 Getting started with Grails
13.4 Grails Quick Start Project
13.5 Dive into Grails
13.6 Getting Started with Compojure
13.7 Am I an otter
13.8 Summary
Chapter 14 Stay Excellent
14.1 Expectations for Java 8
14.2 Multi-language programming
14.3 Future concurrency trends
14.4 New directions for JVM
14.5 Summary
Appendix A java7developer: Source code installation
Appendix B glob pattern syntax and examples
Appendix C Installing alternative JVM languages
Appendix D Download and Installation of Jenkins
Appendix E java7developer: Maven POM