There are many ways to do what you want: "smart" plugins like AutoClose or DelimitMate or simpler custom mappings. Here is one way to do #1 but one could find many alternatives (I've had a few in ~/.vimrc):

inoremap {<CR> {<CR>}<C-o>==<C-o>O

And here is a variation for #2:

inoremap {{ <CR>{<CR>}<C-o>==<C-o>O

But I'd suggest, if you didn't do it already, to try SnipMate or UltiSnips. Both allow you to expand snippets and are very useful when writing lots of boilerplate. For example,

cla<Tab>

could become:

public class Foo
{
|
}

Think about all the keypresses you'd save!

Email codedump link for Vim - automatic open close braces and move cursor