1. INTRODUÇÃO

Java é a base de praticamente todos os tipos de aplicativo em rede e é o padrão global para desenvolvimento e fornecimento de aplicativos para celular, jogos, conteúdo on-line e software corporativo (ORACLE, 2012). Foi projetada com alguns objetivos como orientação a objetos, portabilidade (pode ser executado em qualquer ambiente), recursos de redes (grande quantidade de biblioteca cooperam com os protocolocos de rede), segurança e a sintaxe similar a C/C++. O código criado pelo programador não é interpretado pelo ambiente onde está sendo executado, é gerado um código intermediário, denominado bytecode, que será interpretado e executado pela máquina virtual (JVM), dessa forma o programa pode ser executado em uma grande quantidade de plataforma.

2. REVISÃO BIBLIOGRÁFICA

2.1 Tecnologia

A tecnologia Java é formada pela a linguagem de programação e a plataforma. Programação Java é uma linguagem de alto ível que tem as características abaixo:

  • Orientada a Objetos
  • Distribuída
  • Multitread
  • Portável
  • Alta Perfomance
  • Robusta
  • Segura

Em Java os códigos-fonte são escritos em arquivos com a extensão .java, que depois são compilados e transformados em arquivos .class pelo compilador javac. Esses arquivos contém os bytecodes que serão interpretados e executados pela Máquina virtual (JVM).

A plataforma Java é formada por dois componentes:

  • Java Virtual Machine (JVM): é a máquina virtual java, responsavel em interpretar e executar os programas escritos na linguagem java.
  • Java Application Programming Interface (API): é uma coleção de componentes de software, agrupada em bibliotecas de classes e interfaces que são conhecidas como packages. Elas disponibilizam funções prontas para serem usadas pelos programadores.

2.2 Linguagem

A linguagem Java é orientada a objetos e é parecida com a sintaxe do C/C++, simples e robusta, minimizando assim bugs e aumentando a produtividade, da suporte a threads nativo, acoplamento em tempo de execução, tem um garbage colletor (coletor de lixo) para remover valores da memória, não depende de plataforma. O código intermediário é interpretado por uma máquina virtual, disponibilizando assim uma compilação rápida, a sintaxe é uniforme e rigorosa a quanto a tipos (Rocha, 2012).

2.3 API

Java disponibiliza uma grande coleção de APIS organizadas em pacotes(java.*, javax.* e extensões) usadas pelos ambientes de execução(JRE) e de desenvolvimento (SDK). Principais Apis são distribuídas juntamente coms os produtos para desenvolvimento (J2SE, J2EE, J2ME) (Rocha, 2012).

2.4 Máquina Virtual

Quando um programa Java é compilado um código intermediário é gerado, chamado de bytecode. Este bytecode é interpretado pelas máquinas virtuais java (JVMs) para a maioria dos sistemas operacionais. A máquina virtual é a responsável por criar um ambiente multiplataforma (DEVJR, 2012). A execução de um programa depende da origem do código a ser executado e da forma como foi implementada A JVM (Rocha, 2012).

2.5 Ambiente

  • Java 2 System Development Kit: é uma coleção de ferramentas de linha de comando para compilar, executar e depurar aplicações Java.
  • Java Runtime Environment: conjunto de arquivo que é necessário para executar aplicações Java.
  • Java Micro Edition: utilizados para rodar aplicações java em dispositivos móveis.

Algumas ambiente de desenvolvimento integrado(IDE) para desenvolver Java:

  • JCeator: editor de sintaxe para a linguagem de programação Java leve e muito elegante.
  • NetBeans: é um ambiente de desenvolvimento integrado (IDE) gratuito e de código aberto para desenvolvedores de software nas linguagens Java, C, C++, PHP, Groovy, Ruby, entre outras
  • Eclipse: é uma IDE para o desenvolvimento aplicações nas linguagens Java, C, C++, PHP, Groovy, Ruby, entre outras.

3. DESENVOLVIMENTO

3.1 Package

Um Package (Pacote) é uma forma de organizar as classes dentro dos namespaces similar nos outros módulos. Um pacote fornece um namespace exclusivo para os tipos que ele contém.

Package

Figura 1: Package

3.2 Classe, Objeto e Instância

Classe e um conjunto de objetos que possuem estados semelhantes, comportamento comum e relacionamentos comuns com outros objetos (José Eduardo Deboni).

Objeto é um elemento do munto real (José Davi Furlan), contém comportamentos (forma com que reage a estímulos) e atributos (características).

Instância é criar fisicamente uma representação concreta da classe.

Listagem 1: Exemplo de classe

package PackageJava;
 
//Classe 
public class IntroducaoJava {
	//Atributo
    private String conteudo;
    
    //Construtor
    public IntroducaoJava(String value)
    {
    	this.conteudo = value;
    }
    
    //Método
    public String getConteudo()
    {
    	return this.conteudo;
    }
}

package PackageJava;

public class Model {
	public void CreateClass()
	{
		//Instâncias
		IntroducaoJava java1 = new IntroducaoJava("Introdução à Java 1");
		IntroducaoJava java2 = new IntroducaoJava("Introdução à Java 2");
		
		System.out.println(java1.getConteudo());
		System.out.println(java2.getConteudo());
	}
}
	
Anatomia (Rocha, 2012)

Figura 2: Anatomia (Rocha, 2012)

O método main() é o primeiro método que vai ser chamado pelo interpretador Java, o argumento é um vetor formado por textos passados na linha de comando (Rocha, 2012).

3.3 Palavras-chave

Palavras-chave são requisitos básicos para a prova de certificação, são conhecidas também como palavras reservadas. Essa palavras não podem ser usadas para representar váriaveis, classes ou nomes de métodos. Abaixo estão as palavras reservadas (Melo, 2009):

  • abstract: um método marcado como abstract informa que o mesmo não possui uma implementação ainda, mas que uma classe que o estiver herdando precisará implementá-lo.
  • assert: utilizado para fazer debug de lógica em tempo de execução.
  • boolean: para variáveis de valor lógico: true e false.
  • break: normalmente utilizado para interromper execuções de estruturas de repetição.
  • byte: para variáveis numéricas de precisão -128 até 127.
  • case: indica uma opção entre várias em blocos catch.
  • catch: é utilizado juntamente com try, seu bloco é executado somente em caso de o programa lançar uma exceção do tipo indicado no seu parâmetro.
  • char: para variáveis de caracteres, onde a sua representação interna equivale a um tipo numérico.
  • lass: para definir o início de um arquivo Java, todas as classes possuem pelo menos essa palavra-chave.
  • const: essa palavra não tem uso específico em Java mas mesmo assim é uma palavra-chave.
  • continue: para pular a iteração atual de uma estrutura de repetição.
  • default: normalmente utilizado para o final de uma ou mais opções case´s de um bloco catch.
  • do: estrutura de repetição que garante que o bloco será executado pelo menos uma vez durante a execução do programa.
  • double: para variáveis numéricas e de pontos flutuantes com precisão de 64 bits.
  • else: complemento de estrutura de condição.
  • enum: palavra-chave adicionada na versão 5 do Java, é um tipo especifico de dados, que assemelha-se com uma classe, que tem operações e dados internos.
  • extends: utilizado para aplicar o conceito de herança para uma classe, onde uma classe receberá os métodos e variáveis de instância da classe chamada de pai.
  • final: marca uma variável, classe ou método para que não seja possível modificar o seu valor ou comportamento no decorrer da execução do programa.
  • finally: compõe o início de um bloco que sempre é executado para um bloco de tratamento de erros, mais utilizado para limpar recursos que foram abertos no bloco de tratamento.
  • float: variáveis numéricas e de pontos flutuantes com precisão de 32 bits.
  • for: estrutura de repetição que declara, testa e incrementa variável para uso local.
  • goto: não tem uso específico na linguagem.
  • if: estrutura de condição mais comum da linguagem.
  • implements: informa que uma determinada classe irá implementar uma determinada interface.
  • import: para relacionar classes externas à atual, permitindo o uso de nomes mais curtos para recursos da classe externa.
  • instaceof: serve para fazer o teste "É-UM" com duas referências.
  • int: para variáveis numéricas de precisão -2.147.483.648 até 2.147.483.647.
  • interface: informa que o modelo não é uma classe, mas sim um protótipo de classe sem implementação para os métodos, obrigando as classes que a implementarão siga as regras de retorno, assinatura de métodos, etc...
  • long: para variáveis numéricas de precisão de 64 bits.
  • native: métodos marcados como native dizem que sua implementação é feita em uma outra linguagem (por exemplo C), para que se possa acessar recursos específicos do sistema operacional.
  • new: utilizada para se criar novas instâncias de objetos.
  • package: informa em que estrutura de diretórios a classe está localizada.
  • private: marca a visibilidade de um método ou variável de instância para que apenas a própria classe acesse.
  • protected: marca a visibilidade de um método ou variável de instância para que a própria classe ou suas filhas acessem.
  • public: marca a visibilidade de uma classe, método ou variável de instância para que todas as classes em todos os pacotes tenham acesso.
  • return: devolve para o método chamador um valor que é do mesmo tipo declarado na assinatura do método.
  • short: para variáveis numéricas de precisão de -32.768 até 32.767.
  • static: marca um método ou variável para que se tenha apenas uma cópia da memória desse membro.
  • strictfp: serve para aumentar a precisão em operações com pontos flutuantes.
  • super: chama membros da classe pai.
  • switch: representa blocos de decisões de fluxos semelhantes ao if, mas com mais organização em determinadas situações.
  • synchronized: um método com essa marcação será controlado para que não se possa ter duas threads acessando o mesmo objeto.
  • this: representa a instância que está atualmente sendo executada.
  • throw: é utilizado para lançar uma exceção.
  • throws: é utilizado para se declarar que um método pode lançar uma exceção.
  • transient: indica que uma determinada variável de instância não será serializada junto com o objeto da classe.
  • try: para executar métodos que têm chances de lançar exceções, mas que serão tratados em blocos catch´s que o seguirão.
  • void: representa um retorno vazio, ou seja, nenhum retorno para esse método.
  • volatile: indica que uma determinada variável de instância pode ser modificada em duas threads distintas ao mesmo tempo.
  • while: bloco de repetição que será executado enquanto seu parâmetro estiver retornando verdadeiro (true).

3.4 Exemplo

Listagem 2: Hello world

public class Program {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Hello World.");
		
		System.out.println("Primeiro Exemplo Java.");
		
		System.out.println("Introdução a Java.");
		
		for(int index = 0;index < 10;index++)
		{
			System.out.println("Número = " + index);
		}
	}
}

Listagem 3: Usando argumentos do método main

public class Program {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	
		System.out.println("Lendo os argumentos");
		
		System.out.println("Existe " + args.length + " argumento(s)");
		
		for(int index = 0;index < args.length;index++)
		{
			System.out.println("Valor do " + index + "º = " + args[index]);
		}
	}
}

Listagem 4: Exemplos de operações matemáticas

public class Program {

	/**
	 * @param args
	 *
	 *
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub..
		///
		int value1 = 11;
		int value2 = 6;
		
		System.out.println("Value 1 = 11 / Value 2 = 6");
		System.out.println("Soma = " + (value1 + value2));
		System.out.println("Subtração = " + (value1 - value2));
		System.out.println("Divisão = " + ((float)value1 / (float)value2));
		System.out.println("Multiplicação = " + (value1 * value2));
		System.out.println("Resto = " + (value1 % value2));
	}
}

Listagem 5: Leitura de valores no console

import java.io.*;

public class Program {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try
		{
			BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
		
			System.out.println("Digite alguma coisa.");
			String value = buffer.readLine();
		
			System.out.println("Você digitou:" + value);
		}
		catch(Exception oException)
		{
			System.out.println(oException.getMessage());
		}
	}

}

Listagem 6: Exemplo de tabuada

import java.io.*;

public class Program {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try
		{
			BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
		
			System.out.println("Digite um número.");
			String value = buffer.readLine();
			
			for(int index = 1;index <= 10;index++)
			{
				System.out.println(value + " X " + index + " = " + (index * Integer.parseInt(value)));
			}
		}
		catch(Exception oException)
		{
			System.out.println(oException.getMessage());
		}
	}

}

4. Conclusão

Esse é o primeiro artigo sobre Java, pretendo escrever mais sobre essa linguagem que é muito utilizado no mercado, nos artigos vou colocar explicações e exemplos que algum dia tive dificuldade. Até o próximo artigo.

5. REFERÊNCIAS

Links Úteis

  • O que é TDD?:
    Test Driven Development é uma técnica de desenvolvimento de software muito utilizada, por possuir algumas boas vantagens.
  • Curso Extreme Programming (XP):
    O Objetivo desse curso é permitir que o profissional de TI, envolvido com o desenvolvimento de software, possa aplicar a metodologia ágil de desenvolvimento estabelecida nos conceitos da eXtreme Programming (XP). Através do Curso o aluno se tornará familiarizado com os conceitos, áreas de conhecimento, princípios, práticas e processos por trás do desenvolvimento ágil, mas principalmente os que são aplicáveis ao método XP.
  • Levantamento de requisitos: Planejando uma aplicação de lembretes:
    Neste curso você verá como funciona uma reunião para levantamento de requisitos de um novo software.

Saiba mais sobre Java ;)

  • O Que é JPA?:
    Dominar a persistência de dados é uma necessidade indispensável aos programadores. Sem esse conhecimento nossas aplicações não terão a capacidade de armazenar e recuperar os dados por ela manipulados.
  • Preparando o ambiente para programar em Java:
    Neste curso você aprenderá a preparar seu ambiente para programar em Java. Veremos aqui o que é necessário instalar e como proceder para desenvolver aplicações com essa linguagem.
  • Criando meu primeiro projeto no Java:
    Neste curso você aprenderá a criar o seu primeiro programa com Java, e não, ele não será um simples “Hello, World!”. :) Para isso, vamos começar ensinando como instalar o Java e preparar o ambiente de desenvolvimento.