The E and the T stand for types that are filled in later. For example in your class abc<T>, when you are going to use this class somewhere in your program, you must instantiate it by providing a real type, for example abc<String> obj = new abc<String>();
This generics paper from Sun (Gilad Bracha) is also a great introduction to the subject (although a bit academic in tone, so may be harder to read). It's linked at the bottom of the article that Jesper posted.
Author, Spring Security 3 (the Book), Packt Publishing, 2010
Another very good website with everything you'll ever need to know about generics is Angelika Langer's Java Generics FAQ. It does go very deep into the details, probably deeper than what you need to know for the SCJP, however.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com