안드로이드 개발 책을 보고있는데 이해가 어려운 부분이 있습니다.

ListView earthquakeListView;
ArrayAdapter<Quake> aa;
ArrayList<Quake> earthquakes = new ArrayList<Quake>();

이런 소스에서 

ArrayAdapter<Quake> 이것과 ArrayList<Quake>

이게 무엇을 의미하는건가요?
어댑터가 하는일이 무엇인지 궁금합니다.

그리고 <> 꺽쇠 괄호 이게 자바 문법이 맞나요?
자바도 같이 공부하고 있는데 저 괄호는 첨보네요.

가르침 바랍니다.^^