Tamanho da fonte:-A+A

Escolhendo a Linguagem: Java vs PHP

Paulo Krieser // quinta, 14/05/2009 14:35

Dando prosseguimento a esta série de artigos, nesta coluna vamos realizar uma comparação objetiva entre as linguagens Java e PHP, utilizando os fatores destacados na última coluna.

PHP é um acrônimo recursivo para PHP: Hipertext Preprocessor. Sendo uma linguagem free e open source, ganhou grande aceitação no mercado em função da facilidade de uso e da velocidade na construção de sistemas web.

A grande desvantagem do PHP era a falta de uma orientação a objetos mais estruturada na versão 4, item que foi parcialmente resolvido na versão 5. Porém, mesmo assim, não apresenta uma forte orientação a objetos como o Java, que podemos exemplificar nos itens a seguir:

- Não tem sobrecarga de métodos, ou seja, não pode ter um método com mesmo nome e com parâmetros diferentes.
- Pode-se chamar o construtor do objeto pai em qualquer parte do código.
- Não é obrigado a utilizar a orientação a objetos no código, podendo se trabalhar de forma procedural.
- Não tem tratamento de exceções nos métodos nativos.
- Não é fortemente tipado.

Além disto, por ser uma linguagem puramente interpretada, os erros no PHP aparecem apenas em tempo de execução. No Java, por ser uma plataforma híbrida, onde primeiramente o código é compilado em bytecodes, muitos erros podem já ser detectados em tempo de compilação.

Estes itens contribuem para que o Java tenha maior aceitação do que o PHP quando se trata do fator manutenabilidade.

Por outro lado, o PHP apresenta a vantagem de se ter uma maior flexibilidade em termos de codificação, o que muitas vezes acelera o processo de desenvolvimento para pequenas e médias aplicações. Além disso, por ser mais flexível, mais rapidamente um desenvolvedor pode aprender a linguagem e já sair desenvolvendo, embora não utilizará padrões específicos se não se aprofundar no aprendizado.

Para desenvolver em Java, a curva de aprendizado é um pouco maior, tendo que seguir determinados padrões (como a orientação a objetos).

O Java constitui umas das linguagens mais utilizadas no mercado, sendo que grande parte do motivo deste sucesso corresponde ao princípio "write once, run everywhere", focando a portabilidade da linguagem. Sendo compilada em bytecodes e interpretada na JVM, a linguagem permite a construção de programas que rodem nas mais diversas plataformas, como celulares, internet, diversos sistemas operacionais e outros, sem a necessidade (teoricamente) de se precisar fazer ajustes no código.

Além disto, enxergo como grande vantagem da linguagem Java a orientação a objetos bem estruturada, com todos os conceitos da OO incorporados, como herança, interface e sobrecarga de métodos. Esta estrutura acaba obrigando os desenvolvedores a seguirem um certo padrão, tornando o código mais legível. Os frameworks disponíveis, como Struts e Spring auxiliam ainda mais nesta tarefa, tornando a manutenabilidade mais fácil, previsível e segura.

Assim, Java é mais adequado para sistemas maiores, que vão possuir um ciclo de manutenção mais longo. Com a boa estruturação da linguagem, torna-se mais fácil realizar manutenções posteriores.

Já o PHP permite um desenvolvimento inicial mais rápido, sendo mais adequado para pequenos e médios sistemas, com complexidade mais baixa, em que a futura manutenção não é tão crítica.

Muitos serviços de hospedagem apresentam em seus planos mais baratos um servidor PHP (como o Apache com o plug-in para PHP, por exemplo). Para se ter Java no servidor, normalmente deve se pagar um pouco a mais. Isso facilita aos usuários aderirem a linguagem PHP para pequenos sistemas. Além disto, o PHP é totalmente free e open source. O Java, apesar de ser free, começou a ser open source em 2007, e apenas parte da linguagem foi liberada pela Sun.

Quanto ao fator escalabilidade, enxergo o Java com uma vantagem sobre o PHP, por ser uma linguagem mais robusta. A possibilidade da utilização do J2EE, a boa estrutura dos web services e os servidores web disponíveis compõe importantes fatores para melhorar a escalabilidade da linguagem.

Assim, a escolha entre uma linguagem e outra depende dos pesos que se dá aos fatores levados em consideração, sempre se tendo o objetivo final em mente. Java é uma linguagem mais robusta e escalável, enquanto PHP é mais ágil. Assim, recomendo Java para grandes e médias aplicações, como em ambientes corporativos, e PHP para pequenas aplicações e sites que devem ser desenvolvidos rapidamente, onde ficarão hospedados em servidores não dedicados de terceiros e onde não haverá grandes integrações.

O gráfico abaixo apresenta um resumo sobre a nota de cada um dos fatores para cada linguagem, para fins comparativos. Esta nota é uma aproximação, dada de forma empírica.

Java vs PHP 

Não percam a próxima coluna, que irá realizar a comparação entre Java e Dot Net. 

* Agradeço aos funcionários da Krieser Thiago Frederes e Alberto de Paola pelas informações colocadas no texto e ao Cássio Blaz pela revisão do texto.

Paulo Krieser
Paulo Krieser é CEO e Fundador da Econodata, Diretor Executivo da Krieser IT Solutions, Mestrando em Administração de Empresas pela USP e Graduado em Ciência da Computação pela UFRGS. Possui 9 anos de experiência como empreendedor e mais de 12 anos de experiência no mercado de TI.
COMENTÁRIOS
Dalton Camargo

postado em: 14/05/2009 - 16:09

O artigo do Paulo apenas ilustra a grande verdade em comparação entre as duas tecnologias. Para se haver uma comparação entre java e php, nós precisaríamos apenas pegar uma pequena camada da plataforma JEE, a camada web, pois se nós abrirmos esta comparação entre JEE e PHP, não precisaríamos sequer do EJB3 para dizer que o JEE é incomparável.
Uma comparação que eu sugiro ao amigo a ser feita, é a utilização do Ruby On Rails com PHP, essa sim ia dar uma boa discussão.

Grande abraço e parabéns pela coluna.

PS: Essa textarea para inserir comentários é péssima, sugira para o pessoal do baguete deixar isso em uma div no próprio site, sem essa popup maldita, hehe

Maurício

postado em: 14/05/2009 - 16:18

Oi Dalton,

Na verdade, o Baguete vai estrear em breve um novo mecanismo para os comentários.

Independente do mecanismo, o que conta é que o site tem comentaristas qualificados, com qualquer ferramenta.

abraço!

Inskandar Hamadrias

postado em: 15/05/2009 - 12:28

"write once, test everywhere"

Ramon

postado em: 15/05/2009 - 12:48

Concordo com o Dalton, não é preciso ir muito longe para comparar as duas. Acho que o Ruby on Rails por ser feito uma década após o PHP não pode ser comparado também, existem muitas facilidades que foram feitas no RoR que não vão existir no PHP só na parte de ORM.

Mas o futuro do PHP e de outras linguagens scripts vão ser na camada de implementação, deixando a implementação em alto nível em uma linguagem script tem suas vantagens, ótimo exemplo é o JRuby e o Grails e o Mentawai (nacional).

Carlos Daniel de Mattos Mercer

postado em: 15/05/2009 - 14:31

Olá Paulo,

Na prática o que noto é o seguinte:

- PHP/MySQL é mais barato e fácil de hospedar é praticamente um "padrão" de muitos hosts.
- O Wordpress, o Joomla são em PHP e muito fáceis e populares para gerenciar conteúdo (blog, portal).
- Java tem um apelo mais "profissional", "comercial" o pessoal engravatado acaba prefirindo coisas assim.
- Tecnicamente acho o Java mais bem acabado, API, documentação, padrões de desenvolvimento.

Convém olhar Scala também, parece ser uma tendência, já que Ruby não foi tudo aquilo que imaginávamos que iria ser.

João Marcus

postado em: 15/05/2009 - 15:13

Não concordo com alguns pontos, especialmente quando você apresenta problemas do PHP como sendo falta de orientação a objetos.
- A obrigação do Java de inserir tudo em objetos não o torna "mais OO" ou "menos OO". É uma característica do Java, e nada mais.
- A linguagem Java deixou de melhorar por muitos anos, deixando de incorporar funcionalidades já presentes em linguagens que não estavam sob a ditadura da Sun, como o C#. Exemplos? generics que prestem, closures, métodos de extensão, classes parciais, properties (caramba, o Java AINDA não tem properties!!!!). Podem falar o que quiserem do .NET, mas ao menos a Microsoft incorporou melhorias muito interessantes. Muitos dos "design patters" em Java foram criados justamente para poder trabalhar em cima das limitações do Java.
- Incluir "TCO" como uma vantagem não faz sentido nesse caso. O que isso engloba? Quais são os parâmetros? Sei que o gráfico não deve ser entendido como algo perfeito, mas o TCO é realmente uma coisa totalmente inventada nesse caso.

Obs: Não trabalho com PHP há vários anos, então não estou defendendo o PHP, estou simplesmente fazendo algumas críticas a argumentos que considero incorretos.

Otávio Calaça Xavier

postado em: 15/05/2009 - 15:18

Olá, boa tarde!

Bom... discordo de algumas coisas:

- "(...) Esta estrutura acaba obrigando os desenvolvedores a seguirem um certo padrão (...)" => A linguagem então deve OBRIGAR os desenvolvedores a fazerem o certo, ou eles devem ter noção disso?

- Concordo que o PHP não tem tratamento de exceções nas funções antigas e que estão em desuso. Mas, se for para usar apenas código nativo, o Java deixará de ter até alguns tipos básicos, concorda? Assim como o Java tem frameworks e APIs o PHP também tem, basta saber usar...

- PHP é uma linguagem feita para Web. Java é de propósito geral. Alguns aspectos não podem ser comparados.

- Atualmente é possível rodar PHP em cima da plataforma J2EE, com interpretadores como o Quercus, que vêm com o Glassfish 2. Logo, a escalabilidade pode ser a mesma, concorda?

- Se PHP não fosse bom para sistemas robustos porque Yahoo, Wikipédia, Last.fm e tantos outros o usariam?

- Discutir linguagens em tempos atuais não é o importante, porque elas não são importantes. Vejo a linguagem de programação para o desenvolvedor, como a interface gráfica é para o usuário: O artifício que promove sua interação com o sistema. Logo, assim como a interface do usuário, a linguagem de programação deve ser o mais simples possível e o mais usual. O que realmente importa, atualmente, para o sistema ser robusto é a PLATAFORMA.

Um abraço e até mais...

Ismael

postado em: 15/05/2009 - 15:29

Irônico dizer que a Sun tem uma ditadura sobre java usando como contraponto o .net e principalmente a MS. A Sun controla mesmo o processo, mas os tais JCPs são muito mais democráticos que o desenvolvimento do .Net . Que além disso prega ser multiplataforma, só rodando em Windows, no máximo Windows Mobile. Mono e família são fracos e engodos, que a MS usa como propaganda gratuita para afirmar ser multiplataforma.

O comentário do Ramon a respeito de PHP X Rails vale para Java e .Net: fácil pegar uma tecnologia pronta e construir corrigindo seus defeitos.

Não sou muito simpático de Java, gosto da plataforma, mas não da linguagem. Mas .net é uma roubada. Só tem a penetração que tem porque a MS empurra junto quando há uma compra, como faz com diversos outros produtos, aliás.

Thiego Xavier

postado em: 16/05/2009 - 13:40

Não concordo com essa comparação, PHP é uma linguagem com uma finalidade (Web) e Java é um pacote de soluções, no quesito WEB o PHP da um baile no Java.

O ideal é para essa pesquisa seria PHP x JSP ou PHP x RoR e Java x Dot.Net.

Não podemos apenas citar vantagens da linguagem contra a outra, e sim realizar teste de códigos específicos em várias plataformas.

Da pra fazer 1000 maravilhas com as 2 linguagens, isso depende apenas do projeto, como esta ele sendo projetado e principalmente do programador.

Felipe

postado em: 16/05/2009 - 18:27

Ao meu ver, não há comparação. Deveria ser comentado apenas Java para web vs PHP.
PHP pode sim ser implementado para grandes projetos, ta ai o Yahoo!, em PHP pra provar isto.
E as citações sobre as "vantagens" de Java OO em relação a PHP OO ao meu ver, são justamente as DESvantagens. PHP é fracamente tipado, e nao PRECISA de sobrecarga de metodos, que convenhamos, é uma grande gambiarra para aceitar assinaturas diferentes para o método. Tu podes ter um metodo recebendo diferentes parametros, é so saber fazer. Se quer padronizações em projetos, entao converse com os desenvolvedores e defina o padrão a ser seguido pelos profissionais, não escolha uma linguagem que bloqueie os caras a seguir um padrao "DURO" como o de java, em que ate uma simples exception tem que ser orientada a objetos. Java para desktop...otimo, multiplataforma, work everywhere... para web? Nao vejo razão.
Acredito que o problema nao esteja na linguagem, mas nos programadores... Minha opinião, claro.

Marco Tulio

postado em: 06/06/2011 - 15:25

Polimorfismo é gambiarra? kkkkkk

Jair Humberto

postado em: 27/07/2013 - 19:22

Cara, nem pra desktop uso o java, acho o C# melhor. Pra web acho o PHP melhor. Java pra mim é so quando vou desenvolver pra android.

Reinaldo Deprera

postado em: 09/03/2011 - 07:53

Trabalho com JSF mas por alguns motivos:
- Trabalho com Java e não com PHP
- Não posso perder o tempo de aprendizado de outra linguagem

O mundo ideal para o desenvolvimento de sites é Ruby e PHP e ponto.
Achar que Java é mais maduro do que PHP é no mínimo demonstrar uma total falta de conhecimento sobre PHP ou defender JAVA simplesmente porque o usa. PHP é anos luz mais maduro do que o Java para web. Devemos ser claros em separa Java e Java para web.

Da documentação ao desempenho, passando pelos frameworks e extensões, PHP é infinitamente uma linguagem mais apropriada para Web do que Java, e sempre será pois é uma linguagem dedicada a isso. Assim como PHP-GTK2 nunca será melhor que Java.

Ruby está para PHP assim como C++ está para Java. Ruby é melhor em quase tudo, mas o mais indicado para é o PHP salvo raras excessões.

Jhonatas Souza

postado em: 13/09/2012 - 00:20

Concordo plenamente no seu comentário, Java é muito bom, mas o PHP para web é muito melhor, quem não conhece a linguagem só fala bobagem.

Jefferson

postado em: 26/11/2011 - 12:35

Desenvolvedor a 10 anos hoje tenho a seguinte opnião Linguagem quem faz é o programador. Por experiência nossa empresa usa PHP - no sistema online e JAVA no sistema desktop.

@sistematuse - Sistema para eventos

Gilson Adriano

postado em: 11/07/2012 - 14:41

o que? comparar Java com PHP???? hahahahahahahahahahahahaha ... vocês estão loucos, comparar uma linguagem completamente desclassificada com o sério/sem bugs/ainda que trabalhoso PHP não tem sentido, Java é uma coisa tosca, um c++ feito por uma empresa tosca que complicou tudo criando uma linguagem extremamente complexa pra fazer qualquer coisa e ainda fica tudo lentíssimo quando executa (falando do desktop),mas vamos lá Java nem é orientado a objetos, orientação não é só instanciar umas coisinhas, objetos úteis estão na forma de componentes visuais, é isso mesmo, sem IDE não tem orientação, um componente visual tem milhares de linhas de código, mas quem acha que tá fazendo alguma coisa orientada a objetos, então que escreva na mão tudo que os componentes já tem pronto e se iluda com isso, é isso aí, sem querer ofender ninguém, é a minha opinião

Vagner

postado em: 05/09/2012 - 11:01

Então quer dizer que orientação a objetos só é útil quando esses objetos são componentes visuais? Parece que de você não entende o conceito de orientação a objetos, é a única conclusão a que chego. Sobre Java ser baseado em C++, vc está certo, mas na verdade Java retirou algumas características do C++ para tornar a linguagem mais simples, como o uso explícito de ponteiros, sobrecarga de operadores e herança múltipla. O seu comentário foi muito infeliz, demonstrou total ignorância no assunto.

Luiz Júnior

postado em: 04/12/2012 - 21:23

Caro Gilson Adriano,
Realmente é possível perceber que você não tem ideia do que seja orientação a objetos. Java e c++ são as linguagens que melhor se adequam ao paradigma orientado a objetos. O que você quer dizer com componentes visuais? Com java é possível instanciar classes (e não coisinhas) que implementam componentes visuais. Ou você está falando em utilizar o mouse para programar? Que história é essa que sem IDE não tem orientação a objetos? Programo orientado a objetos com Java até utilizando o nano (editor de texto do shell->linux). Quantos anos você tem? Melhor falar alguma coisa quando se tem alguma experiência.

Rodrigo Castilho

postado em: 13/12/2012 - 12:08

Pessoal, este artigo contém sérios erros de informação. Sou programador JAVA há 15 anos e programo também em outras linguagens como C# VB NET e PHP. Concordo com nosso amigo acima que diz que, "quem faz a linguagem é o programador". Utilizo um FRAMEWORK chamado YII que dá uma dinâmica MVC ao PHP, totalmente orientado a objetos e com possibilidades muito parecidas com o JAVA, gostei muito desta ultima versão do PHP e com este FRAMEWORK então, essa linguagem não perde NADA para outras tantas como C#, JSP e VB via Internet, na verdade você consegue uma arquitetura robusta e muito performática não encontrando essa solução em lugar nenhum. Então eu digo, que não conhece o PHP a fundo, estude, procure suas possibilidades, vocês conhecem Hip Hop for PHP? Php pode ser compilado também, pois já ouvi comentários do tipo, "PHP não pode ser orientado à objetos porque é interpretado..." e não consegui entender esse tipo de argumento.

Além disso, o Facebook, realmente o Facebook, um sistema robusto e com maior fluxo de dados do mundo, passando o Google de longe é feito em PHP, compilado e com banco de Dados MySQL. Developers.facebook.com para caso alguém dúvide.

Então, eu digo para essa nova Geração de "ASPEIROS", Open Source é sim muito melhor e aprendam e respeitem o PHP pois ele existe na época que vocês nem sabiam o que era internet...

Anônimo

postado em: 03/06/2014 - 00:00

Dificil é apontar o melhor. PHP tem seus méritos, e JAVA os seus... Trabalho há anos com PHP, antes mesmo de ser orientado e posso afirmar, é uma ótima linguagem, mas como todas elas, não é perfeito. Vejo como deficiência, sua tipagem fraca, voltado quase que exclusivamente a web, e o fato de ser interpretada e não compilada. Porém, ganha em performance, simplicidade, e produtividade da equipe, além de precisar de uma estrutura mais enxuta para suportá-lo. Já o JAVA é parrudo, tipagem forte, multiplataforma, etc... Porém mais pesado, complexo, e exige mais estrutura para manter. O melhor??? Depende do que vai fazer, defendo que a melhor tecnologia, é a que atender a necessidade. Já resolvi problemas com um simples shell script, ou uma procedure, também já desenvolvi em ASP e .NET. Atendeu, é a melhor naquela situação.

Comentar

O conteúdo deste campo é privado não será exibido ao público.
Teletex

A Teletex 360º IT solutions participará do III Workshop de Tecnologia de Redes do Ponto de Presença da RNP em Santa Catarina e da Rede Metropolitana de Educação e Pesquisa da Região de Florianópolis (III WTR PoP-SC/REMEP-FLN). Esse workshop tem o objetivo de promover o encontro dos gestores e técnicos da área de tecnologia da informação das instituições participantes.

Num ambiente corporativo é preciso baixo custo e facilidade de implementação de soluções que consolidem as aplicações e atendam aos requisitos dos dados de uma empresa. A Teletex 360º IT solutions, a Cisco, a NetApp e a VMware se uniram para entregar o FlexPod® Express ─ uma única plataforma, prática, simples e convergente para gerenciar toda infraestrutura.

Teletex
Teletex - Site Teletex - Facebook Teletex - Blog Box2U