On 19/08/11 2:18 AM, Joe Baldwin wrote:
This question has come up again, and I thought that I would try to research it but this 
appears to be another "holy war".  I am looking for links to formal (or just 
professional) studies done on PHP vs Java - based websites.  I am specifically trying to 
find out what the real differences are when using an an advanced ORM (like Cayenne) with 
memory management and performance optimization, vs well whatever the heck they use for 
PHP.

My personal bias, I have done some programming in PHP and it it appears to be 
pretty primitive to me. My perception is that it is something for high school 
student because it is easy to run for very simple tasks.  However, complex 
advanced CMS would appear to be difficult and a performance challenge for PHP, 
but then there is drupal.


I've actually done quite a bit of work in Drupal, so I know it fairly well. 
They achieve a lot of speed by doing things like caching the entire rendered 
page in the database, this reduces the number of SQL calls to deliver a 
previously cached page to essentially one. However my personal opinion is that 
the speed of the language/environment is irrelevant. So what if one is 50% 
faster than the other? Unless you are a Google engineer trying to get that tiny 
bit of performance per watt per rack unit, for most of what we ordinary 
programmers are trying to do, it is not terribly important. Stick another 24Gb 
of RAM into that server and upgrade the CPU with another 4 cores.

Which leaves us with the important (IMO) metrics:

1. ease of finding programmers
2. ease of adding features and code maintenance
3. ease of finding/fixing bugs

For many open source projects, PHP wins because of (1). But it doesn't scale 
terribly well to larger projects. (2) Becomes increasingly hard in PHP as the 
project gets large. PHP makes it hard to write clean MVC style projects, use 
modern techniques like injection or write unit tests. You can do these things, 
but you'll be fighting the framework. If you want a nice interpreted language 
and framework which makes those things much easier, take a look at Ruby/Rails. 
It has MVC and unit tests right at its core essence of being. And the ORM is 
not bad. Not as nice as Cayenne :-) but still not bad. When it doesn't have 
bugs. Rails does suffer from being a bit unstable and moving rather too fast 
with new features before they are ready. The ORM syntax is quite neat. For 
example:

  Task.joins(:owners).where(:users => {:id => current_user}).order("tasks.weight 
DESC").limit(1).first

Andrus has discussed a similar query syntax for Cayenne in the past.


If your project can be built on top of Drupal (or another PHP Based CMS), then 
you have a lot to gain by just extending the existing code with your own 
modules. I've done that quite a few times and it works well for simpler 
projects (that is, where you are adding maybe 5-6 tables to the existing Drupal 
schema).

PHP and Rails projects often make use of memcache when they start to hit 
performance walls, so you always have solutions to hardware scalability. But 
again, I believe you are focussing on the wrong problem. Skilled staff and 
development effort, not hardware, is the real limitation.


Cheers

Ari



--
-------------------------->
Aristedes Maniatis
GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A

Reply via email to