Bem amigo,
Primeiramente vc precisa saber os fundamentos básicos da Linguagem Java, tais como
Fundamentos da Linguagem
Modificadores e Controle de Acesso
Operadores e atribuições
OO, sobreposição e substituição, construtores e tipos de retorno
Etc … etc … etc …
É claro que vc pode aprender tudo isso aplicando em um pequeno projeto, seja ele Web ou Desktop e acompanhado por bons livros, como Java, Como Programar do Deitel … Core Java do Cay Horstmann … bem … opções é oq não falta … como nosso amigo KolT falou … só dar uma busca no forum.
E para desenvolver vc pode usar desde o simples bloco de notas à diversas ferramentas disponiveis no mercado.
Essas são as Free
Eclipse
NetBeans
VIM
jEdit
BlueJ
Agora respondendo sua pergunta sobre Framework essa resposta pode ser definida de 2 formas.
1)
Uma estrutura de suporte definida em que um outro projeto do software pode ser organizado e desenvolvido. Tipicamente, um framework pode incluir programas de apoio, bibliotecas de código e outros softwares para ajudar a desenvolver e juntar diferentes componentes do seu projeto.
ou
2)
Em em orientação a objeto, framework é um conjunto de classes com objetivo de reutilização de um design, provendo um guia para uma solução de arquitetura em um domínio.
Espero ter ajudado …