# Java/Introdução

Java é uma linguagem de programação de alto nível e orientada à objetos criada pela empresa Sun Microsystems no começo da década de 90. A sintaxe da linguagem é muito parecida com C e C++, mas ela possui um número maior de facilidades e funcionalidades.
Por exemplo, se o programa java for feito em uma plataforma Linux, ele pode ser usado na plataforma FreeBSD ou Windows - o programa rodará sem problema nenhum desde que a JRE (Java Runtime Environment), também conhecida como Máquina Virtual Java (Java Virtual Machine) esteja instalada na plataforma.
Linguagens como C e C++ rodam em diversas plataformas, mas os programas precisam ser recompilados, o que não acontece com o Java onde o mesmo binário pode ser portado. Além disso a linguagem pode ser usada para desenvolver programas para a maioria dos celulares, PDA's (Palm Tops) além de diversos dispositivos como cartões (Vale Refeição, Vale transporte, Cartões de acesso).

## Por que aprender Java?

Dentre as características mais relevantes:
* Java tem a filosofia 'WORA'
Uma das principais características de Java é o WORA (Write Once, Run Anywhere) ou simplesmente 'Escreva uma Vez e Execute em Qualquer Lugar'. Isso por si só traz vantagens, pois poupa tempo aprendendo bibliotecas específicas de Sistemas Operacionais. Poupa dinheiro, que seria gasto neste tempo. Poupa esforço, pois muitas vezes não há a necessidade de se conhecer alguns ou vários aspectos da plataforma subjacente.
* Java possui "Coleta de Lixo" automática.
Isso significa que ela desaloca automaticamente qualquer espaço de memória não utilizado sem que o programador se preocupe com isso.
* Java é uma linguagem de alto nível
Por ser uma linguagem de alto nível Java tem constructos e características que permitem escrever programas mais rapidamente do que em C/C++. Sendo assim há uma maior produtividade. Aliado ao fato de que Java sendo uma linguagem orientada a objetos, faz Java uma ótima escolha para desenvolvimento.
* Java está presente em uma variedade de lugares
Os aplicativos Java estão presentes em diversas áreas, desde celulares, até servidores, o que dá ao desenvolvedor uma ampla gama de possibilidades de sistemas a serem desenvolvidos.
* Java tem uma boa documentação, é gratuito e de código aberto
Como não há custo para se desenvolver em Java, pelo menos no início, há um incentivo aos novatos que não necessitam gastar com programas pagos, mas ao invés disso possuem escolhas de altíssima qualidade gratuitas e amplamente usadas.

## Desvantagens da Linguagem

Apesar disso, a linguagem também possui as seguintes desvantagens:
* Performance reduzida: por ser uma linguagem não projetada para gerar código nativo para cada arquitetura, os programas em Java costumam ter um desempenho menor que os escritos em linguagens como C++. Eles também costumam ocupar mais espaço em memória. Mas à medida que a linguagem vem sendo refinada, tal desvantagem vem diminuindo cada vez mais.
* Programas em Java geralmente demoram mais tempo para compilar.
* Programas que realizam cálculo com números em ponto flutuante tendem a possuir baixo desempenho.

## Onde Java está presente?

Java está presente em todos os lugares, desde telefones celulares até TVs e computadores. A linguagem Java é uma das mais difundidas e conta com inúmeros recursos pela Web. Ela pode ser usada para criar aplicativos desktop, como por exemplo o Azureus e o Eclipse, aplicações web como applets, que rodam no lado cliente ou páginas JSP, e outros termos relacionados à sua versão EE, no lado do servidor. Além disso há padrões de TV digital que disponibilizam algum suporte a Java. Inclusive até há robôs que suportam Java, sendo o que o destaque vai para o da missão Mars Rovers que percorreu o solo lunar. Sendo assim java está disponível para um amplo espectro de aplicações, cada qual com sua utilidade e características próprias.

## Por Onde Começar

Provavelmente você está ansioso para começar a aprender essa linguagem depois de tudo o que foi escrito até aqui, mas vamos com calma porque há ainda mais coisas a explicar e alguns conselhos a dar antes de realmente começarmos.
O primeiro é que a linguagem Java está disponível em várias versões, cada uma com seu propósito. Cada uma destas versões deve ser ressaltada uma vez que atuam em tecnologias diferentes e necessitam de diferentes pré-requisitos.
Java SE: É a tecnologia Java para desktops. É obrigatório o seu entendimento, ou pelo menos seus conceitos, pois serve de fundação para as outras versões. Atua em notebooks e PCs domésticos e está amplamente disponível, estando presente em quase 90% dos PCs do mundo.
Java ME: É a versão para dispositivos móveis, os quais geralmente têm menos memória sendo ela limitada bem como seu processamento também o sendo. Sendo assim nada mais é do que uma versão reduzida das APIs para desktop que incluem APIs específicas para construir aplicações que lidem com estas limitações.
JAVA EE: É na verdade um conjunto de especificações, as quais são implementadas em servidores de aplicação, tais como JBoss, Jetty, BEA Logic, etc. A base dela é o Java SE, porém o jeito de programar é diferente devido ao amplo conjunto de tecnologias e objetivos diferentes. Sendo assim o recomendado é aprender primeiro JavaSE, pois é a base para as outras edições. Para isso, como em qualquer linguagem, o ideal é primeiro treinar a lógica, pois o processo de desenvolvimento de programas requer o uso de lógica o tempo todo, e depois aprender Java em paralelo com o paradigma da orientação a objetos, o qual é o mais usado atualmente.
Para aprender Java, portanto, siga para os próximos passos para poder começar aprender os básicos dessa linguagem. Infelizmente não vamos poder ensinar a fundo a Orientação a objetos, já que este não é o foco principal do Wiki, e sim, ensinar Java.