1
Plan
1. Example: from Java 1.4 to Java 1.6
2. Problems
3. Additional features




                                        2
Code before Java 5/6




                       3
Simple for loop




                  4
Enhanced for loop




                    5
After the first enhancement

                              Untouched
                                 part




                              Enhanced
                                part




                                    6
Creating instances of Integer




                                7
Autoboxing

Works for:
 Boolean
 Byte
 Short
 Character
 Integer
 Long
 Float
 Double

              8
Autoboxing usage




                   9
What about…




              10
…type-safety




               11
ClassCastException




                     12
Generics




           13
Ensuring type-safety




                       14
Compilation exception




                        15
Enhanced for + generics




                          16
Code getting better…




                       17
Can it be shortened?




                       18
Simple usage




               19
Static import




                20
Static import of the System class




                                    21
Creating a list



 Code duplication




                    22
Desired outcome




                  23
First thought




                24
Varargs




          25
Creating a list with varargs




                               26
Generics + varargs




                     27
Time for a comparison
…




                        28
Before




After


         29
Problems
1.   Inheritance and generics
2.   Class to be used with the enhanced for loop
3.   Watch out! Autoboxing in a loop
4.   When use the static import?
5.   Rules for Varargs




                                                   30
Inheritance and generics




                           31
Iterating over domain class




                              32
Iterable<T> interface




                        33
Watch out! Autoboxing in a loop




                                  34
How it really works…




                       35
36
When use the static import?
 …firstly, try not to overuse it
 it works well if it makes your code more readable and
  DRY, i.e.:
    JUnit 4 (org.junit.Assert.*);
    Mockito (org.mockito.Mockito.*);




                                                          37
Static import (JUnit 4)




                          38
Static import (Mockito)




                          39
Rules for varargs




                    40
Additional features
 Enums
 Annotations




                      41
Simple enum




              42
Enum is a class




                  43
Annotations
…first lets get back to EJB 2…




…what is needed for a session bean in EJB 2?
                                               44
Component interface




                      45
Home interface




                 46
Component class




                  47
ejb-jar.xml – dependencies




                             48
ejb-jar.xml – transactions




                             49
The same thing, but with EJB 3




                                 50
The End




          51

What is so great about Java 6