Projeto: Chat via TCP

Linguagens Utilizadas: Delphi e Java

Objetivo Principal: Comparações de desenvolvimento abordando características de Linguagem de Programação tendo como ponto chave a explicação do Critério Portabilidade.

Componentes da Equipe:
Carla Patrícia
Diogo Rafael
Juarez Ramos
Pedro Augusto
Rômulo Sandro
Valter Júnior
   
 

Introdução	3
Java, a promessa.	4
Padronização	5
Principais Características da Linguagem Java	5
Máquina Virtual Java	6
Ambientes de desenvolvimento	7
Delphi, o alicerce Comercial.	8
Aplicabilidade do Delphi	10
Principais Características e Vantagens do Delphi	10
Critérios de Avaliação	12
Justificativas	14
Conclusão	15
 
Introdução
  Nenhuma linguagem de programação é simplesmente melhor ou pior. As linguagens podem ser melhores ou piores para uma determinada tarefa, mas não existe nenhuma linguagem perfeita. Acha realmente que sua linguagem é a melhor do mundo? Então quer dizer que você conhece todas as linguagens e consegue explicar porque a sua é melhor que todas elas?
Em Assembly você consegue fazer qualquer coisa, mas pode demorar muito tempo. Produtividade também é um recurso importante de uma linguagem, principalmente nos dias de hoje. A Microsoft fala insistentemente que uma das grandes vantagens do .NET é o aumento na produtividade do programador. Quanto menos tempo o programador precisar se envolver com detalhes de baixo nível, mais tempo ele terá para focar-se no problema que está resolvendo. Ao invés dele se preocupar se a função coloca o retorno no registrador EAX ou no EBX, ele usará esse tempo para criar mais uma tabela no SQL Server ou fazer mais uma reunião.
De alguns anos para cá, a área de desenvolvimento de software tem passado por uma grande evolução. Desde os anos do GW-BASIC  até o C# e as managed runtimes, muita coisa mudou. Eu sei que ainda existem pessoas que continuam usando ferramentas de 10 anos atrás, como Clipper, mas isso já é outra história. A realidade é que hoje existem milhares de opções para desenvolver um software. Java, PowerBuilder, C++, PHP, Visual Basic, Delphi, Perl, Ruby, .NET, isso sem falar nas bibliotecas de cada linguagem. A quantidade é imensa.
A idéia que nos vem a cabeça vendo essa evolução é de que, a medida que o tempo passa, escrever software comum vem ficando cada vez mais fácil, cada vez mais rápido. Já pensou desenvolver aquele sisteminha de cadastro de clientes que você fez em Visual Basic usando Assembly? Isso levaria o dez vezes mais tempo e tornaria a manutenção do programa bem mais difícil.
Agora vamos mudar o foco: digamos que você é um programador da HP, e seu gerente acha que a BIOS (que está longe de ser um programinha) do seu fornecedor não resolve todos os seus problemas. Assim, você foi o felizardo escolhido para desenvolver a nova BIOS dos micros HP, onde a inicialização do micro será bem mais rápida e será exibido um logotipo da HP de altíssima resolução toda vez que o computador for inicializado.
 Aí você pensa: “Isso vai ser fácil. Eu gravo o logotipo da HP em um GIF e uso GDI+ para mostrar isso”. Como assim GDI+? Durante a inicialização do computador, não existe Windows, não existe sistema operacional. Nada de GDI, nada de runtime, nada de API. Nessa fase, é só você e o processador, mais ninguém. E quando você chega nesse ponto, só existe um meio: Assembly. Onde está seu .NET agora?
Nosso trabalho enfoca duas linguagens de Programação Delphi da Borland e Java da Sun Microsystems. Abordaremos históricos e algumas curiosidades.
 
 Java, a promessa.

Em 1991, na Sun Microsystems, foi iniciado o Green Project, o berço do Java, uma linguagem de programação orientada a objetos. Os mentores do projeto eram Patrick Naughton, Mike Sheridan, e James Gosling. O objetivo do projeto não era a criação de uma nova linguagem de programação, mas antecipar e planejar a “próxima onda” do mundo digital. Eles acreditavam que em algum tempo haveria uma convergência dos computadores com os equipamentos e eletrodomésticos comumente usados pelas pessoas no seu dia-a-dia. 
Para provar a viabilidade desta idéia, 13 pessoas trabalharam arduamente durante 18 meses. No verão de 1992 eles emergiram de um escritório de Sand Hill Road no Menlo Park com uma demonstração funcional da idéia inicial. O protótipo se chamava (leia-se “StarSeven”), um controle remoto com uma interface gráfica touchscreen. Para o Java foi criado um mascote, hoje amplamente conhecido no mundo Java, o Duke. O trabalho do Duke no Java era ser um guia virtual ajudando e ensinando o usuário a utilizar o equipamento. O Java tinha a habilidade de controlar diversos dispositivos e aplicações. James Gosling especificou uma nova linguagem de programação para o Java. Gosling decidiu batizá-la de “Oak”, que quer dizer carvalho, uma árvore que ele podia observar quando olhava pela sua janela.
O próximo passo era encontrar um mercado para o Java. A equipe achava que uma boa idéia seria controlar televisões e vídeo por demanda com o equipamento. Eles construíram um demo chamado MovieWood, mas infelizmente era muito cedo para que o vídeo por demanda bem como as empresas de TV a cabo pudessem viabilizar o negócio. A idéia que o Java tentava vender, hoje já é realidade em programas interativos e também na televisão digital. Permitir ao telespectador interagir com a emissora e com a programação em uma grande rede cabos, era algo muito visionário e estava muito longe do que as empresas de TV a cabo tinham capacidade de entender e comprar. A idéia certa, na época errada.
A sorte é que o estouro da Internet aconteceu, e rapidamente uma grande rede interativa estava se estabelecendo. Era este tipo de rede interativa que a equipe do Java estava tentando vender para as empresas de TV a cabo. E, da noite para o dia, não era mais necessário construir a infra-estrutura para a rede, em um golpe de sorte, ela simplesmente estava lá. Gosling foi incumbido de adaptar o Oak para a Internet e em janeiro 1995 foi lançada uma nova versão do Oak que foi rebatizada para Java.
 A tecnologia Java tinha sido projetada para se mover por meio das redes de dispositivos heterogêneos, redes como a Internet. Agora aplicações poderiam ser executadas dentro dos browsers nos Applets Java e tudo seria disponibilizado pela Internet instantaneamente. Foi o estático HTML dos browsers que promoveu a rápida disseminação da dinâmica tecnologia Java. A velocidade dos acontecimentos seguintes foi assustadora, o número de usuários cresceu rapidamente, grandes fornecedores de tecnologia, como a IBM anunciaram suporte para a tecnologia Java.
Desde seu lançamento, em maio de 1995, a plataforma Java foi adotada mais rapidamente do que qualquer outra linguagem de programação na história da computação. Em 2003 Java atingiu a marca de 4 milhões de desenvolvedores em todo mundo. Java continuou crescendo e hoje é uma referência no mercado de desenvolvimento de software. Java tornou-se popular pelo seu uso na Internet e hoje possui seu ambiente de execução presente em web browsers, mainframes, SOs, celulares, palmtops e cartões inteligentes, entre outros.
Padronização
Em 1997 a Sun Microsystems tentou submeter a linguagem a padronização pelos orgãos ISO/IEC e ECMA, mas acabou desistindo. A linguagem Java ainda é proprietária e é controlada pela Java Community Process .
Principais Características da Linguagem Java
              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. 
Máquina Virtual Java
Programas Java não são traduzidos para a linguagem de máquina como outras linguagens estaticamente compiladas e sim para uma representação intermediária, chamada de bytecodes.
Os bytecodes são interpretados pela máquina virtual Java (JVM - Java Virtual Machine). Muitas pessoas acreditam que por causa desse processo, o código interpretado Java tem baixo desempenho. Durante muito tempo esta foi uma afirmação verdadeira. Porém novos avanços tem tornado o compilador dinâmico (a JVM), em muitos casos, mais eficiente que o compilador estático.
Java hoje já possui um desempenho próximo do C++. Isto é possível graças a otimizações como a compilação especulativa, que aproveita o tempo ocioso do processador para pré-compilar bytecode para código nativo. Outros mecanismos ainda mais elaborados como o HotSpot da Sun, que guarda informações disponíveis somente em tempo de execução (ex.: número de usuários, processamento usado, memória disponível), para otimizar o funcionamento da JVM, possibilitando que a JVM vá "aprendendo" e melhorando seu desempenho. Isto é uma realidade tão presente que hoje é fácil encontrar programas corporativos e de missão crítica usando tecnologia Java. No Brasil, por exemplo, a maioria dos Bancos utiliza a tecnologia Java para construir seus home banks, que são acessados por milhares de usuários diariamente. Grandes sítios como o eBay utilizam Java para garantir alto desempenho. E a cada ano Java tem se tornado mais rápido, na medida que se evolui o compilador dinâmico. 
Essa implementação no entanto tem algumas intrínsecas. A pré-compilação exige tempo, o que faz com que programas Java demorem um tempo significamente maior para começarem a funcionar. Soma-se a isso o tempo de carregamento da máquina virtual. Isso não é um grande problema para programas que rodam em servidores e que deveriam ser inicializados apenas uma vez. No entanto isso pode ser bastante indesejável para computadores pessoais onde o usuário deseja que o programa rode logo depois de abri-lo.
O Java ainda possui uma outra desvantagem considerável em programas que usam bastante processamento numérico. O padrão Java tem uma especificação rígida de como devem funcionar os tipos numéricos. Essa especificação não condiz com a implementação de pontos flutuantes na maioria dos processadores o que faz com que o Java seja significativamente mais lento para estas aplicações quando comparado a outras linguagens.
Os bytecodes produzidos pelos compiladores Java podem ser usados num processo de engenharia reversa para a recuperação do programa-fonte original. Esta é uma característica que atinge em menor grau todas as linguagens compiladas. No entanto já existem hoje tecnologias que "embaralham" e até mesmo criptografam os bytecodes praticamente impedindo a engenharia reversa.
Ambientes de desenvolvimento
É possível desenvolver aplicações em Java através de vários ambientes de desenvolvimento integrado (IDEs). 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 americana(muito bom para iniciantes). 

Delphi, o alicerce Comercial.
O Delphi foi lançado como "Salvador" em uma fase turbulenta, cheia de fracassos e fadada ao descrédito pelo mundo corporativo. Foi em 1994, quando o então Windows 3.11 tentava crescer neste mercado. Existiam, naquela época, muitas ferramentas ineficazes, várias das quais nem existem mais. Passando por toda a historia do nosso querido Delphi, conseguimos percorrer ou relembrar marcos da informática atual e o posicionamento do Delphi nesses "momentos históricos":
1994 - Nasce o Delphi 1, versão 16 bits, ferramenta revolucionária e que em menos de três meses ganhou uma considerável fatia de mercado. Foi a primeira ferramenta RAD 100% orientada a objetos. 
1995 - Para a primeira versão 32 bits do Windows (Windows 95), veio o Delphi 2, mantendo total compatibilidade com a versão 16 bits. A versão 2 vinha com melhorias significativas na construção de aplicações Cliente / Servidor. 
1997 - Nasce a internet - Comercialmente e massivamente falando. E o Delphi 3 traz suporte à construção de aplicações para internet com CGI e ISAPI/NSAPI. Era a primeira ferramenta com suporte para construção de aplicações multi-camadas (usando DCOM), com ambiente RAD (MIDAS). 
1998 - A Borland disponibiliza a versão 4 do Delphi com suporte aos mais recentes padrões de mercado, tais como o CORBA e Oracle 8, trazendo aumento de produtividade do ambiente de desenvolvimento com a possibilidade de depuração remota de aplicações e wizards para a construção de controles ActiveX / ActiveForms. 
1999 - A onda do momento era o XML e, como não poderia deixar de ser, o Delphi 5 massacra qualquer concorrente com suas facilidades na manipulação de arquivos XML. Mantendo sua característica de suportar diversas tecnologias, e honrando o título de "Suiça das empresas de tecnologia", a Borland disponibiliza um conjunto de componentes para utilização da tecnologia ADO (Microsoft) de acesso a dados. As ferramentas TeamSource e TranslationSuite também são novidades nessa versão. 
2001 - A estrela do momento é o Linux e a Borland é a primeira a disponibilizar uma ferramenta RAD nativa "Cross-plataform". Os Web Services eram também destaque, e o Delphi 6 é a primeira ferramenta comercial a ter suporte para essa tecnologia. Nasce o Kylix, o Delphi para Linux; BizSnap, DataSnap e WebSnap são mais novidades. 
2002 - Agora é a vez do .NET. O que faço agora? Jogo meu Delphi fora? a Borland, que é uma mãe para vocês, de forma alguma deixaria isto acontecer. O Delphi 7, além de manter total compatibilidade com as versões anteriores, agora permite que o desenvolvedor disponibilize seus aplicativos para serem executados sobre a arquitetura .NET. 

O Delphi é um compilador e também uma IDE para o desenvolvimento de softwares. Ele é produzido e comercializado pela Borland Software Corporation (por algum tempo chamada Inprise). A linguagem utilizada pelo Delphi, o Object Pascal (Pascal com extensões orientadas a objetos) a partir da versão 7.0 passou a se chamar Delphi Language. O Delphi originalmente é direcionado para a plataforma Microsoft Windows, mas também pode ser utilizado para desenvolvedores que programam aplicações nativas para Linux com o Borland Kylix, e para o Microsoft .NET framework com suas versões mais recentes. O nome Delphi é inspirado na cidade de Delfos, o único local na Grécia antiga em que era possível consultar o Oráculo de Delfos. Os desenvolvedores do compilador buscavam uma ferramenta capaz de acessar um banco de dados Oracle. Daí veio o trocadilho "a única maneira de acessar o oráculo é usando Delphi".

IDE - Integrated Development Environment (Ambiente de Desenvolvimento Integrado)
É um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. Geralmente as IDEs unem a técnica de RAD (Rapid Application Development), que consiste em permitir que os desenvolvedores obtenham um aproveitamento maior, desenvolvendo códigos com maior rapidez.
 As características e ferramentas mais comuns encontradas nas IDEs são:
•	  Editor - edita o código-fonte do programa na(s) linguagem(ns) suportada(s) pela IDE; 
•	  Compilador (compiler) - compila o código-fonte do programa, editado em uma linguagem específica e a transforma em linguagem de máquina;
•	  Montador (linker) - monta (linka) os vários "pedaços" de código-fonte, compilados em linguagem de máquina, em um programa executável que pode ser rodado ou executado em um computador ou outro dispositivo computacional.
•	  Debugador (debugger) - auxilia no processo de encontrar e corrigir erros (bugs) no código-fonte do programa, na tentativa de aprimorar a qualidade de software;
•	 Modelagem (modeling) - criação do modelo de classes, objetos, interfaces, associações e interações dos artefatos envolvidos no software com o objetivo de solucionar a ou as necessidades-alvo do software final.
•	  Geração de código - característica mais explorada em ferramentas CASE, a geração de código também é encontrada em IDEs, contudo com um escopo mais direcionado a templates de código comumente utilizados para solucionar problemas rotineiros. Todavia, em conjunto com ferramentas de modelagem, a geração pode gerar todo ou praticamente todo o código-fonte do programa com base no modelo proposto, tornando muito mais rápido o processo de desenvolvimento e distribuição do software
•	  Distribuição (deploy) - auxilia no processo de criação do instalador do software, ou outra forma de distribuição do mesmo, seja discos ou via Internet.
•	  Testes Automatizados (automated tests) - realiza testes no software de forma automatizada, com base em scripts ou programas de testes previamente especificados, gerando um relatório dos mesmos, assim auxiliando na análise do impacto das alterações no código-fonte. Ferramentas deste tipo mais comuns no mercado são chamadas robôs de testes.
•	  Refatoração (refactoring) - consiste na melhoria constante do código-fonte do software, seja na construção de código mais otimizado, mais limpo e/ou com melhor entendimento pelos envolvidos no desenvolvimento do software. A refatoração, em conjunto com os testes automatizados, é uma poderosa ferramenta no processo de erradicação de bugs, tendo em vista que os testes "garantem" o mesmo comportamento externo do software ou da característica sendo reconstruída.
Aplicabilidade do Delphi 
     Sendo o mais conhecido dos programas do tipo RAD (Rapid Application development) o Delphi não pode ser usado para desenvolvimento de sofware de base ou aplicativos de sistema. Entre os engenheiros de software o Delphi é muitas vezes caracterizado com um "aplicativo programável". O Delphi é largamente utilizado no desenvolvimento de aplicações desktop e aplicações multicamadas (cliente/servidor), compatíveis com os banco de dados mais conhecidos no mercado. Como uma ferramenta de desenvolvimento genérica, o Delphi pode ser utilizado para diversos tipos de desenvolvimento de projetos, abrangendo desde Serviços a Aplicações Web, Aplicações CTI (tecnologia que permite a integração de computadores com telefones) e aplicações para dispositivos móveis, tais como palmtops, pocketPc e outros.

Principais Características e Vantagens do Delphi
O Delphi  é um software de desenvolvimento que por utilizar o princípio de orientação a objetos diferencia-se de uma linguagem de programação procedimental. Na programação procedimental (como no Borland C), a execução do aplicativo inicia na primeira linha do código e segue um fluxo determinado pelo próprio programa e devido a essa característica o usuário se vê amarrado à aplicação. Na programação orientada a eventos, ao contrário, as ações do usuário (denominadas eventos) é que determinam o fluxo de execução do programa, ou seja, qual procedimento/rotina será chamada. Isso significa que num programa desenvolvido com base nessa técnica, as chamadas das rotinas/procedimentos dependem dos eventos que ocorrem, em outras palavras, dependem do que o usuário fará ou não.
Uma grande facilidade do Delphi é o fato de definirmos um evento como sendo uma ação reconhecida por um objeto presente num formulário. Tais objetos do Delphi (botões de comando, caixas de combinação, os próprios formulários, etc.) reconhecem e respondem a um conjunto predefinido de eventos. A resposta a um evento é a execução de um evento especial. Por exemplo, num programa podemos ter um botão (objeto) que quando pressionado (evento) ocasiona o aparecimento de uma mensagem de aviso (evento especial). Tal evento especial chamado também de gerenciador de evento é escrito em Object Pascal, a linguagem utilizada pelo Delphi bastante similar à empregada na linguagem Pascal tradicional.
Além dessa visível facilidade (a linguagem Object Pascal) o Delphi, diferencia-se de outros softwares de desenvolvimento por não utilizar um interpretador e mas um compilador através da qual é gerado um arquivo executável que não pode ser "lido" facilmente pelo usuário garantindo a segurança do programa gerado. A capacidade de compilação ainda torna a execução do programa muito mais rápida gerando um arquivo executável de menor tamanho, e utilizando consequentemente menor memória durante o desenvolvimento do programa. Outra diferença fundamental baseia-se no conceito de programação orientada a objetos utilizada amplamente pelo Delphi .
Muitas vezes nos perguntamos, e somos questionados, no porque de adotar o Delphi como a linguagem para o desenvolvimento de sistemas ? Inicialmente, é necessário conhecer que o Delphi oferece um rápido caminho para o desenvolvimento de aplicações nos ambientes:
•	Windows©, Windows 95© e Windows NT©;
•	Bancos de dados do tipo Cliente/Servidor: Oracle©, Informix©, InterBase, SyBase© e Microsoft SQL Server©;
•	Alta performance, em sistemas críticos;
•	Base de Dados locais e aplicações do tipo network;
•	Ambiente gráfico, visual e multimídia.
É possível criar, dentre outros, os seguintes tipos de aplicações em Delphi :
•	Usá-lo como a linguagem de desenvolvimento para bancos do tipo Cliente/Servidor;
•	Ambiente heterogêneo para captura e envio de informações em diversos tipos de arquivos de dados;
•	Um pacote corporativo de aplicações inteligentes e interpretadores de dados.  Incorporando DLL’s e EXE’s externos;
•	Pacotes multimídia com desenho e animação;
•	Genéricos utilitários do Windows©;
•	Criação de bibliotecas (DLL) para leitura por outras aplicações.
Mas porque arriscar em um ambiente novo quando existe no mercado linguagens mais difundidas ? No mundo inteiro Delphi foi testado, e em 15 meses de vida produziu os seguintes resultados:
•	Delphi está sendo utilizado no momento por mais de 1.500 lugares incluindo as maiores corporações, consultores e organizações de treinamento;
•	Eleito pela Byte Magazines como Best of Comdex Award;
•	Vários livros escritos;
•	Grupos de discussão e periódicos com dicas de desenvolvimento na WorldWibe (Consulte às listas da InterNet através da palavra DELPHI);
•	Dezenas de bibliotecas e ferramentas para o suporte em Delphi;
•	Dezenas de artigos em publicações do mundo inteiro, tais como PC Week, InfoWorld, Computer Reseller News, PC Magazine, Windows Sources e muitas outras.
Critérios de Avaliação

São tantos os critérios que podemos analisar em uma linguagem de programação que na maioria dos casos as tendências de desenvolvimento visam a economia financeira, mas vamos la.
Entendamos como Critério de Avaliação de uma linguagem de programação aquela característica que a diferencia de outra linguagem e que pode adequar-se melhor à um cenário de Aplicação. Por Exemplo:
1)	Queremos criar 1 background job para monitorar funções de Software no ambiente linux, claramente não podemos fazer uso da linguagem Visual Basic pois esta é designada somente para a plataforma windows.
2)	Queremos criar 1 site Web com características de atualização dinâmica diariamente, para isso não podemos fazer uso de Clipper, pois este não tem características Web.

Assim sendo, sempre devemos escolher a linguagem de programação utilizada em um projeto baseado nas características oferecidas Pela própria linguagem.
Passada a primeira fase da escolha da linguagem, por algumas vezes nos depararemos com algumas opções diferentes, então, e agora? qual usar?
Existem outros parâmetros a serem analisados, estes quais são importantes para a escolha da linguagem como Portabilidade, Manutenabilidade, Capacidade de Escrita,  Legibilidade, os chamados Critérios de Avaliação.
A seguir, uma tabela de Análise Crítica comparando nossas 2 Linguagens abordadas, Delphi e Java.

Justificativas
Podemos notar na tabela especificada que nenhuma das linguagens obteve pontuação máxima em algum item, isso significa que não podemos considerar perfeita nenhuma delas nos quesitos apontados, mesmo sendo muito boa.
Podemos observar também que nenhuma das linguagens obteve nota Zero em nenhum item, pois subentendemos que o fato de fazerem parte da seleção para o projeto já conta pontuação.
Portabilidade:
Java sem sombra de dúvidas é a campeã neste quesito. É tão bem estruturada que a única diferença existente é justamente na Virtual Machine. Claro que em fins práticos para viabilizar este portabilidade devemos nos atentar para alguns detalhes na programação.
Delphi ganha 2 pontos neste item por não suportar até versões anteriores a 6.0 (onde a borland lançou o Kylix) uma plataforma diferente do Windows para suas aplicações. Até nos dias atuais, deixa de lado plataformas como MacOS, Solaris ou Unix.

Legibilidade de Código
Os 4 pontos alcançados pelo Delphi traduzem uma realidade vinda de seus ancestrais. O Pascal sempre foi conhecido pela familiaridade com o Inglês, o que tornava seu código fácil de ser entendido mesmo por aqueles que não tinham conhecimento de programação.
Já os 3 pontos de Java, também pela herança e familiaridade com C/C++ exigiam um pouco mais de conhecimento por parte de quem desenvolvia.

Manutenabilidade de Código
4 pontos para ambos os ambientes de desenvolvimento. A facilidade das IDEs torna os códigos mais fáceis na hora de manutenções. Claro, o código quando bem escrito (Legibilidade) incrementa esta facilidade. Podemos somar também a este item a experiência e conhecimento do profissional que realizará a manutenção.

Formação de Profissionais
Um empate técnico aqui é aceitável. Mesmo Java não tendo interesses lucrativos (no uso da ferramenta) centros de treinamentos e Universidades reciclam programadores ao redor de todo o mundo, juntamente com a constante liberação de novas versões por parte dos criadores. A Borland sendo uma empresa particular e tendo a fatia de mercado que tem, jamais deixaria sua ferramenta ser engolida pelo tempo. Cursos, Certificações e treinamentos são realizados sempre afim de formar o maior número de profissionais.

Custo de Licença
Justamente por ser de Origem privada, Delphi perdeu pontos neste quesito. Para desenvolvermos nossos aplicativos nesta plataforma, necessitamos de uma licença do Fabricante. Algumas vezes estes custos são inviáveis, estando limitado o uso da ferramenta a grandes projetos. 
Já o Java, por ser Free. (sem custo) mereceu 4 pontos neste quesito. Viabilizando pequenos projetos ou mesmo grandes projetos com o poder da linguagem de Programação.

Ambiente de Desenvolvimento
O Delphi em si é a própria IDE de desenvolvimento. Essa característica lhe atribuiu 4 pontos na nossa avaliação. É rápida, intuitiva (para programadores acostumados com ambientes de desenvolvimento) e oferecem através de opções de menu, todas as opções de configuração da linguagem.
A Java, é a apenas linguagem de programação, nos casos em que o programador queira desenvolver em ambientes, o mesmo deve recorrer a programas de terceiros como Eclipse, Netbeans, Jbuilder e outros. Claro que por ser apenas o compilador, podemos desenvolver aplicativos em editores de texto (como o “notepad” do windows ou o “vi” do linux).

Custo de Processamento
A compilação Java, gera os chamados bytecodes que serão interpretados pelas Virtuais Machines de cada plataforma, essa característica interpretativa torna lento sua execução e em alguns casos inviabilizando o uso da tecnologia quando o aplicativo requerer velocidade de processamento. Então o ponto chave que atribuiu uma boa nota no quesito Portabilidade, tirou alguns pontos do quesito Custo de Processamento.
O Delphi, adaptável ao Windows, consegue montar executáveis rápidos. Neste quesito ganhou a pontuação 4.

Conclusão
Cada projeto tem suas necessidades distintas. Necessidades estas que devem ser supridas com aquela linguagem que apresentar as características necessárias. Pois conforme podemos observar ao longo de um período inteiro de estudos de Paradigmas, estas diferenças existem e são cruciais para o sucesso de um produto final, um software.