Processo de Desenvolvimento de Software e Java. Em Java,todo código é primeiramente escrito em arquivos texto com a extensão “JAVA”.Estes arquivos textos são então compilados pelo compilador “JAVAC”,gerando arquivos com a extensão “.class”. Um arquivo .class não contem código de maquina nativo para o processador,na verdade ele contem “byte codes”(Linguagem de maquinas da maquina virtual,JAVA,JVM).O inicializador,Java então roda a sua aplicação com uma instancia da maquina virtual Java. Pelo fato da maquina virtual Java(JVM)estar disponível em diferentes sistemas operacionais,o mesmo arquivo .class gerado no sistema operacional “x” é capaz de ser executado em qualquer outro S.O com:Windows.Linux,Solaris ou MAC ,O.S O Compilador JAVAC O compilador Javac tem por objetivo ler definições de classes e interfaces escritas na linguagem Java ,e compilar os mesmos em arquivos byte code(.class). Nomes dos arquivos fonte devem obrigatoriamente ter a extensão .class e ambos devem obrigatoriamente ter um nome raiz que identifica classe. Tipos de Destribuição A tecnologia Java possui diversos pacotes com finalidade singulares.O primeiro passo é compreender a utilidade de uma das 3 diferentes edições da plataforma java2,que são,J2SE,J2EE e J2ME. J2SE: Java 2 Plataform Standard Edition. J2EE: Java 2 Plataform Enterprise Edition. J2ME: Java 2 Plataform Micro Edition. A J2SE é adequada para desenvolver uma grande goma de aplicativos e applets para empresas.Inclui o acesso ao Banco de Dados .I/O,Network. A J2SE possui dois principais produtos. Java 2SE Runtime Environment (JRE). Java Development Kit(JDK). A JRE contem bibliotecas,a maquina virtual Java(JVM)e outros componentes para as aplicações escritas em Java . A JRE não contem ferramentas e utilitários como compiladores e depuradores para o desenvolvimento. A JDK contem tudo o que esta presente na JRE,mais ferramentas tais como compilador e depurador necessários para o desenvolvimento de aplicações. A J2EE suporta WEB services necessários para negócios. A J2ME cobre o vasto espaço de equipamentos de consumo. Caracteristicas da JVM. Gerenciar alocação e desalocação de memória. Class loader,carregar arquivos class para a memória. Verificar se o byte codes aderem as especificações do JVM e se não violam a integridade de segurança do sistema. Interpretar a byte code para a plataforma em questão. Garbage Collector. A maioria da linguagens modernas permite a alocação de memória em tempo de execução.Em Java isto ocorre sempre que criamos um objeto com operador “new”ou indiretamente quando chamamos um método que tem variáveis locais. Variaveis locais e argumentos de métodos alocam espaço na pilha de memória somente enquanto o método existir no entanto,atributos tem um ciclo de vida maior. A liberação de memória em Java nunca é feita de maneira explicita,a JVM prove um mecanismo de liberação de espaço de memória alocada chamado Garbage Collector. O Garbage Collector não pode ser controlada via código,somente a JVM juntamente com o sistema operacional são capazes de controla-lo.