Descrever a plataforma do Java e seus principais componentes. Construir aplicações Java utilizando encapsulamento e herança. Construir aplicações Java utilizando polimorfismo. Empregar o tratamento de erros e exceções em aplicações Java. Construir aplicações empregando generics, collections e expressões lambda. Competências complementares: Construir aplicações empregando assertions e testes unitários com JUnit. Construir aplicações empregando mockito em testes unitários. Construir aplicações empregando programação concorrente (multithreading).