Orientada a Objetos – Paradigma atual mais utilizado na construção de softwares. Dentre suas vantagens, podemos citar reaproveitamento de código e aumento da manutenibilidade dos sistemas assim desenvolvidos.
Simples e Robusta – Java representa em muitos aspectos um aperfeiçoamento da linguagem C++. Ela possui certas características que permitem a criação de programas de forma mais rápida, pois tiram do programador a possibilidade de cometer erros que são comuns de ocorrer em C++.
Gerenciamento Automático de Memória – Em Java não existe ponteiros, isto é, não é permitido ao programador acessar explicitamente uma posição de memória. Java automaticamente gerencia o processo de alocação e liberação de memória, ficando o programador livre desta atividade.
Independência de Plataforma – Um dos elementos chave da linguagem Java é a independência de plataforma, ou seja, um programa Java escrito em uma plataforma pode ser utilizado em uma outra distinta da original. Isto é conseguido através da utilização da JVM – Java Virtual Machine.
Multi-threading – Um programa Java pode conter múltiplas threads para realizar várias tarefas em paralelo.
Compiladores Just-in-Time (JIT)
- Melhoram a performance
- São úteis se os mesmos bytecodes forem executados repetidas vezes
- Traduz bytecodes para instruções nativas
- Otimizam código repetitivo, tais como ciclos.
Programação Orientada a Objetos é um método de programação baseado no relacionamento entre vários unidades de software chamadas de objetos. Nela, implementa-se um conjunto de classes que determinam as habilidades (métodos) dos objetos presente no software.
Classe representa um conjunto de objetos com características afins. Uma classe define o comportamento dos objetos, através de métodos, e quais estados ele é capaz de manter, através de atributos.
Objeto é uma instância de uma classe. Ele é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.
Métodos definem as habilidades dos objetos, mas as habilidades só entram em ação quando o método é invocado através do objeto.
Atributos (variáveis) são campos destinados ao armazenamento de alguma informação que esteja associada a uma classe ou a um método.
Herança é o mecanismo pelo qual uma classe (subclasse) pode extender a outra classe (superclasse), aproveitando seus comportamentos (métodos) e estados possíveis (atributos). Um exemplo de herança: Mamífero é superclasse de Humano. Ou seja, um Humano é um Mamífero.
Encapsulamento consiste na separação de aspectos internos e externos de um objeto. Este mecanismo é utilizado amplamente para impedir o acesso direto ao estado de um objeto (seus atributos). Exemplo de qualificadores: public, private, protected. Mensagem é uma chamada de um objeto para invocar um de seus métodos, ativando uma habilidade descrita na sua classe.
Polimorfismo em POO quer dizer que existem várias formas de realizar uma mesma operação. Em Java é possível escrever um método dentro de uma classe de tal maneira que ele execute funções diferentes, dependendo do tipo de parâmetro que for informado.