O termo Tecnologia Java abrange dois elementos: uma linguagem de programação e uma plataforma de software (API e máquina virtual). A seguir, detalharemos estes dois componentes.
A linguagem de programação Java é uma linguagem de alto nível que possui como principais características:
Simples
Orientada a objetos
Multithread
Interpretada
Independente de arquitetura
Portável
Distribuída
De alto desempenho
Robusta
Dinâmica
Segura
Permite o desenvolvimento de sistemas em diferentes sistemas operacionais e arquiteturas de hardware, sem que o programador tenha que se preocupar com detalhes de infraestrutura. Dessa forma, o programador consegue desempenhar seu trabalho de uma forma mais produtiva e eficiente. Conceitos como herança múltipla, sobrecarga de operadores e ponteiros, encontrados em linguagens como C e C++, não são implementados em Java.
Com sintaxe semelhante à das linguagens C e C++, é simples de aprender e permite que os programadores sejam produtivos desde o início.
Java segue o paradigma da orientação a objetos, o qual traz um enfoque totalmente diferente da programação estruturada (como na linguagem C) no sentido de buscar formas mais próximas do mecanismo humano para gerenciar a complexidade de um sistema. Nesse paradigma, o mundo real é visto como sendo constituído de objetos autônomos que interagem entre si. Cada objeto possui seu próprio estado (atributos) e comportamento (métodos), de forma semelhante ao seu correspondente no mundo real. Conceitos como herança, encapsulamento e polimorfismo podem ser empregados.
Permite a criação de programas que implementam o conceito de multithreading, uma técnica de programação que possibilita que múltiplas linhas de execução (threads) executem concorrentemente de forma eficiente, incluindo sofisticados mecanismos de comunicação entre processos.
A linguagem Java foi projetada para dar suporte a sistemas que serão implementados em ambientes de rede com plataformas (hardware e software) heterogêneas, como os ambientes Unix, Linux e Mainframe. Nesses ambientes, o sistema deve ser capaz de ser executado em diferentes hardwares, como servidor Unix da HP ou servidor Unix da IBM. Para acomodar esta situação de interoperabilidade, o compilador Java gera os programas em um formato conhecido como bytecode, permitindo que o mesmo possa ser executado em qualquer arquitetura.
A portabilidade dos programas Java é garantida pela Máquina Virtual Java (Java Virtual Machine – JVM). O compilador de cada plataforma baseia-se na especificação da JVM correspondente para gerar o código em bytecode.
Na linguagem de programação Java, todo o código fonte é escrito em arquivos no formato de texto puro (ASCII) e salvo em um arquivo com extensão .java.
Após a compilação desse arquivo pelo compilador javac.exe, um novo arquivo será automaticamente criado, com o mesmo nome do arquivo original, mas com extensão .class. O arquivo .class representa o arquivo em formato bytecode - a linguagem de máquina da Máquina Virtual Java (Java VM). Portanto, um arquivo .class pode ser executado em qualquer dispositivo que tenha uma JVM instalada. A execução do programa se dá através do java.exe, que executa um programa Java como uma instância da JVM.