Java, C++ ou Visual Basic?
A Linguagem do Java
O Java é baseado em C++. Os programas Java vêm na forma de applets que são carregados em um browser Web capacitado para Java. O termo applet vem da marca <applet> que aparece em um documento HTML, que diz ao browser para descarregar o código Java apropriado. Os arquivos-fonte do Java são compilados em arquivos .CLASS que possuem código portável. Máquinas-cliente, como browsers Web, rodam o código Java usando um interpretador ou emulador de máquina virtual. A máquina virtual é uma simples máquina empilhável e os programas estão estruturados para permitir aos clientes a verificação de que o código descarregado não contém erros de gramática ou referências ilegais. O lado do cliente vai ficar ainda mais interessante com a prometida chegada de um compilador just-in-time, que irá converter o código Java verificado em código nativo enquanto a máquina carrega. Isso irá aumentar bastante o desempenho do applet. A meta para o Java é a criação de uma linguagem que é completamente portável, rodando corretamente em cada computador que a descarregar. Mas a maioria das linguagens possui algumas ambigüidades em suas especificações. Por exemplo, um compilador C++ pode implementar um tipo de dado int como sendo um número binário de 16, 32 ou 64 bits, dependendo da máquina anfitriã. Esta ambigüidade causa problemas de portabilidade entre os software, uma vez que o Java define um int como sendo de 32 bits em todas as plataformas. Assim que a especificação da linguagem estiver completa, outras fontes de ambigüidades encontradas em tipos de dados, avaliação da expressão e sintaxe terão sido resolvidas.
Java não é C++ Lite
Existem diferenças importantes e intencionais entre Java e C++. Para anexar bibliotecas, classes básicas e código referenciado o Java usa import ackagename>. Esta declaração simples realiza tanto uma inclusão (para definir as classes no tempo de compilação) e uma carga/ligação ("load/link") em run time. As classes importadas podem importar classes adicionais e assim por diante. O Java carrega todo o código dinamicamente em run time e carrega o código classe por classe. Quando o compilador Java compila um arquivo fonte, cada classe aparece em um arquivo .CLASS separado. Todas as funções devem ser métodos de alguma classe. Por exemplo, funções matemáticas, tais como seno, estão implementadas como métodos da classe Math. Ao lidar com objetivos o Java atua como se fosse um interpretador BASIC ou Lisp. Para conseguir um novo objetivo, basta digitar a declaração <variable>=new<object>. Com isso surge um novo objeto da pilha do Java. Não existe uma operação para deletar: um coletor de lixo vem limpando tudo o que ficou para trás. Nem existem acessos às regiões de memório - você não pode alocar memória in-line e não pode usar indicadores C-style. A herança no Java é implementada com a palavra-chave extends, mas não existe suporte para herança múltipla. Para disponibilidar algoritimos que operam com tipos múltiplos o Java usa interfaces, ou conjuntos numerados de métodos. Interfaces são um elo mais frouxo do que C - herança ou gabaritos, e oferecem maior probabilidade de sucesso na implementação de classes polimórficas. A biblioteca padrão de classes do Java começou pequena mas está crescendo a cada dia que passa. Ela implementa as funções matemáticas de I/O da biblioteca padrão C, um conjunto de tipos de dados tais como o Integer, String e Tabela Hash com seus métodos servidores, linha ("threads"), sockets e um sistema GUI chamado AWT.
JDK
Disponível para download a especificação preliminar de linguagem e o Java Development Kit do servidor da Sun Microsystems em http://java.sun.com. O JDK está disponível de graça na Sun bem como as versões Win32 e Solaris. Também para download o browser Netscape Navigator 2.0 é o primeiro grande browser da Web a possuir um interpretador para applets Java. O JDK vem com um compilador Java (chamado javac), uma versão alfa do depurador Java, um interpretador para aplicativos Java e um applet visualizador que roda applets sem precisar de um browser Java. O JDK é um ambiente primitivo, com interface de caractere. Felizmente, a Borland, a Symantec e várias outras empresas anunciaram seus planos de produzir ambientes de desenvolvimento gráfico mais sofisticados e espera-se depuradores mais aperfeiçoados. O1. depurador experimental é um programa de linha de comando com um console de saída único. O usuário tem que manter um registro dos objetos com um ID de 32 bits. O depurador inclui pontos de parada ("breakpoint"), mas não inclui operações uma a uma ("single-stepping"). Quando testamos a versão Windows, linha ("threads") e janelas ficaram dependuradas. Achamos esse depurador inútil e voltamos depressa para o antigo método de depuração onde incluímos declarações impressas em pontos estratégicos de nosso código. Mesmo ao rodar aplicativos gráficos, o Java fornece um console de modo de linha adequado para depuração. O compilador javac saiu-se bem na transformação de arquivos .JAVA em arquivos .CLASS adequados para o interpretador Java, para o applet visualizador ou para o beta browser para Java Netscape Navigator 2.0. Ele gerou mensagens de erro a respeito dos inúmeros erros que cometemos em nosso código-fonte que foram bastante úteis e descobriu alguns problemas com variáveis não iniciadas. O applet visualizador roda applets como se estivessem sendo chamados por um browser Web. Ele necessita de um arquivo HTML que inclua os parâmetros e a marca <applet>. O applet visualizador é uma implementação mais completa do Java do que a versão beta do Netscape 2.0 e está integrado ao depurador. A documentação disponível na Sun inclui a especificação de linguagem Java e uma listagem completa das classes da biblioteca Java e dos métodos na forma PostScript. Não inclui um tutorial explicando o que estes métodos fazem ou como podem ser encadeados e por isso passamos um tempão olhando os aplicativos de demonstração fornecidos pela Sun e programadores ao redor da Internet.
Os pontos francos do Java
· Os browses dão aos applets Java acesso limitado ao disco local. Esqueça se tiver uma configuração local ou um banco de dados persistente.
· Os browsers não permitem que os applets imprimam.
· O modelo de segurança do Java permite que os applets abram conexões sockets somente em seus domínios de fonte. Um software de rede de alcance livre deve rodar como um aplicativo local.
· Looks don’t port. A classe de gráfico AWT deve ser sob medida para uma máquina específica e sistema operacional; interfaces com usuários variam largamente.
JAVA X C++ E VISUAL BASIC Será que o Java vai transformar-se num ambiente para desenvolvimento de aplicativos completo? Seus defensores o posicionam como sendo melhor do que o C++ para o desenvolvimento orientado para objeto e como um concorrente do Visual Basic no desenvolvimento gráfico. Mas o Java precisa de um compilador de código nativo e um ambiente de desenvolvimento gráfico para poder realmente ameaçar C++ e Visual Basic.