Java é uma linguagem de programação orientada a objeto desenvolvida na década de 90 pelo programador James Gosling, na empresa Sun Microsystems. Diferentemente das linguagens convencionais, que são compiladas para código nativo, a linguagem Java é compilada para um “bytecode” que é executado por uma máquina virtual. A linguagem de programação Java é a linguagem convencional da Plataforma Java, mas não sua única linguagem.
PLATAFORMA JAVA
Plataforma Java é o nome dado ao ambiente computacional, ou plataforma, da empresa estadunidense Sun Microsystems. A plataforma permite desenvolver aplicativos utilizando qualquer uma das linguagens criadas para a plataforma Java, sendo a linguagem padrão a que leva seu próprio nome: Linguagem Java. Uma grande vantagem da plataforma é a de não estar presa a um único sistema operacional ou hardware, pois seus programas rodam através de uma máquina virtual que pode ser emulada em qualquer sistema que suporte a linguagem C++.
A PLATAFORMA
O universo Java é um vasto conjunto de tecnologias, composto por três plataformas principais que foram criadas para segmentos específicos de aplicações:
Java SE (Java Platform, Standard Edition). É a base da plataforma; inclui o ambiente de execução e as bibliotecas comuns.
Java EE (Java Platform, Enterprise Edition). A edição voltada para o desenvolvimento de aplicações corporativas e para internet.
Java ME (Java Platform, Micro Edition). A edição para o desenvolvimento de aplicações para dispositivos móveis e embarcados.
Além disso, pode-se destacar outras duas plataformas Java mais específicas:
Java Card. Voltada para dispositivos embarcados com limitações de processamento e armazenamento, como smart cards e o Java Ring.
JavaFX. Plataforma para desenvolvimento de aplicações multimídia em desktop/web (JavaFX Script) e dispositivos móveis (JavaFX Mobile).
TECNOLOGIA JAVA
A plataforma Java é constituída de um grande número de tecnologias, cada uma provê uma porção distinta de todo o ambiente de desenvolvimento e execução de software. Os usuários finais, tipicamente, interagem com a máquina virtual Java (Java Virtual Machine, ou JVM) e um conjunto padrão de bibliotecas de classe.
Existe um grande número de maneiras de se utilizar uma aplicação Java, incluíndo applets embutidas em páginas web, aplicativos de uso geral em desktops, aplicativos em aparelhos celulares e em servidores de aplicações para Internet.
Os desenvolvedores de aplicações em Java utilizam um conjunto de ferramentas de desenvolvimento, o JDK.
PRINCIPAIS CARACTERÍSTICAS
A linguagem Java foi projetada tendo em vista os seguintes objetivos:
Orientação a objeto - Baseado no modelo de Smalltalk e Simula67;
Portabilidade - Independência de plataforma - “write once run anywhere”;
Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP;
Segurança - Pode executar programas via rede com restrições de execução;
Além disso, podem-se destacar outras vantagens apresentadas pela linguagem:
Sintaxe similar a Linguagem C/C++.
Facilidades de Internacionalização - Suporta nativamente caracteres Unicode;
Simplicidade na especificação, tanto da linguagem como do “ambiente” de execução (JVM);
É distribuída com um vasto conjunto de bibliotecas (ou APIs);
Possui facilidades para criação de programas distribuídos e multitarefa (múltiplas linhas de execução num mesmo programa);
Desalocação de memória automática por processo de coletor de lixo (garbage collector);
Carga Dinâmica de Código - Programas em Java são formados por uma coleção de classes armazenadas independentemente e que podem ser carregadas no momento de utilização.
EXTENÇÕES DE JAVA
J2SE (Standard Edition)
J2EE (Enterprise Edition)
J2ME (Micro-Edition for PDAs and cellular phones)
JCE (Java Cryptography Extension)
JMF (Java Media Framework)
JNDI (Java Naming and Directory Interface)
JSML (Java Speech API Markup Language)
JDBC (Java Database Connectivity)
JDO (Java Data Objects)
JAIN (Java API for Integrated Networks)
JDMK (Java Dynamic Management Kit)
Jini (a network architecture for the construction of distributed systems)
Jiro
JXTA (open source-based peer-to-peer infrastructure)
Java Card
JavaSpaces
JMI (Java Metadata Interface)
JMX (Java Management Extensions)
JSP (JavaServer Pages)
JSF (JavaServer Faces)
JNI (Java Native Interface)
J3D (A high level API for 3D graphics programming)
JOGL (A low level API for 3D graphics programming, using OpenGL)
OSGi (Dynamic Service Management and Remote Maintenance)
SuperWaba (JavaVMs for handhelds)
MARF (Modular Audio Recognition Framework)
JavaFX
AMBIENTE DE DESENVOLVIMENTO
É possível desenvolver aplicações em Java através de vários ambientes de desenvolvimento integrado (IDE’s). Dentre as opções mais utilizadas pode-se destacar:
Eclipse — um projeto aberto iniciado pela IBM;
NetBeans — um ambiente criado pela empresa Sun Microsystems;
JBuilder — um ambiente desenvolvido pela empresa Borland;
JDeveloper — uma IDE desenvolvida pela empresa Oracle;
JCreator — um ambiente desenvolvido pela Xinox.
BlueJ — um ambiente desenvolvido por uma faculdade australiana(muito bom para iniciantes).
JGRASP — bom para intermediários, feito pela equipe do projeto GRASP.
IntelliJ IDEA — uma IDE desenvolvida pela JetBrains (considerada por muitos a melhor IDE do mercado).
AMBIENTE DE EXECUÇÃO JAVA
Um programa escrito para a plataforma Java necessita de dois componentes para ser executado: a máquina virtual Java, e um conjunto de bibliotecas de classe que disponibilizam um série de serviços para esse programa. O pacote de software que contém a máquina virtual e esta biblioteca de classes é conhecido como JRE (Java Runtime Environment).
MÉTODO MAIN
O método main é onde o programa inicia. Pode estar presente em qualquer classe. Os parâmetros de linha de comando são enviados para a array args[], do tipo String.

CRIAÇÃO DE CLASSES
Exemplo:

O exemplo acima cria a classe Animal e duas classes derivadas de Animal.
Java não suporta herança múltipla, e todas as classes em Java derivam de Object.
INTERFACE
Uma interface modela um comportamento esperado. Pode-se entendê-la como uma classe que contenha apenas métodos abstratos. Embora uma classe não possa conter mais de uma super classe, a classe pode implementar mais de uma interface. Exemplo:

ClASSES INTERNAS
Java pode ter classes internas. Exemplos:

OBJETOS E CLASSES ANÔNIMOS
Podemos ter também objectos e ou classes anônimas, exemplo:

PROGRAMA SIMPLES EM JAVA
Programa em Java para somar dois números inteiros:

Origem: Wikipedia