|
and the fun thing is that the most widely used php open source projects
just suck.
phpbb & phpnuke are probably the most buggyest and bad
written software ever.
phpnuke actually generated a whole hierarchy of
forks trying to get a better codebase. it generated postnuke, which gave
life to xoops which gave life to e-xoops and so forth.
(notice: not all the php widely used software suck, just some)
me
You couldn't be more correct! How many frameworks do we need? My paycheck
comes from Java. But the fun stuff I do is written in PHP. Most domain
providers offer php support at very cheap prices, which is how I got to
using php in the first place. That's not true for Java sites.
IMO the problem is not the many frameworks which are getting build in the
Java world. The problem is within the hosting environement.
See
http://centaurus.sourceforge.net/ (unfortunately in German only) which
provides a Tomcat for a Hosting environment. Hopefully the prices for JSP
Hosting will drop soon.
Karsten,
Thanks for the comment. First let me make it clear that I
definitely recognize the value of frameworks in Java. In fact, I am a very
big supporter of some of the frameworks, Spring framework being one of
them. But, the open source community is spending way too many cycles on
framework development. Everyone seems to want to create their own
framework.
I agree with you that Java hosting is a problem, but even if the hosting environment were readily available, the fact is that Java apps comparable to what you can find in open source PHP simply do not exist.
Tim
Based on the first response to my posting, and several other that I've
gotten directly via email, I'd like to add the following comments.
Instead of countering my point, and pointing out similar Java apps, many Java developers prefer to attack/criticize the PHP applications. The PHP developers are creating cool, and more importantly very useful applications for end users. Some may think they are buggy, but they are used by millions, and to some extent numbers speak for themselves. Nearly every discussion/forum application you go to is powered by PHP. So while the PHP applications may not be perfect in terms of quality, my point is that they are out there, and being used.
I agree with the tone of many comments I've gotten that the Java community is probably technically more capable than the PHP community, which is another reason for my post. I think that the Java development community could create some very cool web applications if they would stop spending some many cycles on reinventing the framework.
The responses that simply attack and flame the PHP applications and developers really do no justice at all to us as Java developers. If we take the time to look outside our own community, there is always more to learn.
Tim
Right on the money. This is perhaps the biggest reason why we need an open
source Java. PHP's success has everything to do with it being open source,
pre-installed and ready to go on Linux, the server OS of choice in the ISP
business.
Guy Mac
The problem isn't Java frameworks, it isn't hosting, and it isn't Java not
being open source. In fact, it's not so much a problem as a different
focus.
Why are people building Java frameworks? It's obviously not to build the next great opensource app for the community. We're building them for WORK. We have JOBS building SOFTWARE. Not that PHP hackers are all unemployed high schoolers, but a good number of them are.
What's more, Java is an OO language that takes understanding OO, setting up an environment for development, setting up a testing environment, and setting up a deployment environment. PHP is a web scripting language. You directly edit your pages in place and just refresh to see what happens. That's great for some apps (like the ones you see coming out of the opensource PHP world), but I don't think I'd like to see an online banking app built that way...
Jason Carreira [jcarreira@gmail,com]
I agree with most of your statements, unfortunately your response misses the point of my post. If you'll reread the title, I am specifically addressing "Open Source" applications in my comments. This is where I claim Java is lacking. If we throw commercial/enterprise applications into the discussion such as your online banking app, well then we have a completely different discussion. Your preaching to the choir when it comes to choice of technology and development methodology and an online banking app.
I don't agree that the Java open source community is all focused on building applications for "WORK" though. In fact, I'd venture to take an educated guess that less than 10% of open source projects are ever used commercially. Sure the successful and well designed frameworks (i.e Hibernate, Spring, Struts, etc) are used for our "WORK", but there are many many more that are not. Also, while you may disparage the PHP developers, there applications are not all just hacked together high school projects. Some of the better PHP applications are used on the intranets and extranets of thousands of companies. In fact, I dont think it would be incorrect to say that open source PHP has more commercial usage, than open source Java projects. But thats not a point I want to argue on, I could be wrong there. My point is that PHP applications despite Java developers wanting to constantly attack them, are used very successfully commercially.
Tim
I personally think Apache Lenya is
pretty cool. Your example of JetNuke is a curious choice when it is one of
the weakest Java CMS around..
Gregor J. Rothfuss [gregor@apache.org]
Tim,
I do not agree that the Java community should start building JavaBB
etc. That is rather useless. Why?
Let's assume, for the sake of the
argument, that for all the cool PHP apps a Java equivalent exists. Would
they be used? I think not.
Just because most hosting providers do
not provide Java support as is argued already in other comments. I do not
believe hosting providers will start providing adequate Java support
anytime soon, just because it will be too difficult to manage and because
for the type of applications they are hosting, PHP is much more
productive.
In itself think it is a very good thing that finally the art of framework building is maturing (I have been working for many years with the now forgotten, largest and greatest Java framework ever, IBM SanFrancisco). Better Java apps for the domains Java is good at are being built and are built faster today then was possible 5 years ago as a result.
I think that the PHP community will start spending lots of time on building frameworks too, with PHP5 and its OO features this is finally possible. This is the only way to get a more mature community and better software.
I am a Java deserter and PHP convert, which has lots to do with the fact that I am not doing this for a living anymore. Let's all go happy frameworking!
I always say the right tool for the job. I would choose PHP for small "hit
and run" type apps and .NET/Mono for enterprise-class apps and leave the
J2EE mess behind.
Robert Stone
Despite my love for Java, recent exposure to PHP has caused me to rethink
its value. The success of PHP is a testament to the importance of
pragmatism versus the purist approach of the Java community. Somewhere
along the line, Java was hijacked by software engineering fundamentalists
preaching mandatory use of certain frameworks and design patterns. The
"Java way" now precludes the creation of a simple app. The "Java way" says
that even simple apps must use a framework that is more complex than the
application itself.
The PHP community, on the other hand, is willing to break a few software engineering "rules" to produce code that gets the job done. Consequently, there are many open source PHP apps that do not have the most beautiful source code, but are very stable and still manage to outperform similar Java apps.
Then there's the issue of the bulky nature of Java. I used to wonder why more webhosting companies did not offer Java hosting, until I setup Tomcat on my dedicated server. I love the Java language, but it's runtime is a memory-eating monster which will prevent it from ever being used by a large percentage of webhosting companies.
Didn't mean to come accross anti-Java. It's actually my favorite language to use, but I felt it was necessary for people here to open there minds to the possibility that there are alternatives.
It seems like one of the fundamental problems is Tomcat. PHP is easier
because you can just put a foo.php page on your site and you're off and
running. With tomcat, you need to install it, create a war/ear/jar/blah
blah blah, manage a web.xml file, manage a directory structurre, and then
configure Apache to pass requests off to it. In short, it's a pain.
I can't see any reason why there's no jsp_mod like php_mod. If there was, then they would really be on a level playing ground - PHP is not an easier language to use than Java, it's just easier to deploy. Make it so that the .jsp pages are either interpreted with something like Beanshell, or compiled on the fly and recompiled if the page changes.
Every once in awhile it does good to poke ones head up and see what is
going on. This may be one of those moments. We (the java community) need to
see what is going on. We are responsible, to a large degree, for the wide
acceptance of open source. If the child starts doing something new we
should pay attention. If we are the professionals that we like to claim we
are then we should be able to look at what is being said and distil the
root of the request. What I hear is:
Java is to expensive for ISP’s to
provide
- Needs to much memory
- Needs to much expertise
Java
is to complex for simple web apps.
The Java community mind set has
become to engineering centric.
Instead of whining about PHP this, PHP that, and Java is this or that. We need to be asking the exact question that was asked. Do we need to address the simple web app in the open source community or do we leave it to PHP? Personally I am going to put my head back in the sand and let PHP have it. I am to busy getting paid to run an enterprise on java. Two years from now if it is PHP poking me in the rear I’ll implement it. Gone from C to C++ to VB to Java adding PHP will be no big deal.
Mark [mfinkenhagen@swmail.sw.org]
It is high time now for java community to open source. they just need to
learn from php. java should come with popular webservers like linux to
reduce hosting costs. they need also to create more ready to use packages
instead of frameworks
juma
PHP is purposefully easy so that is accessible to the masses of
non-programmers ramping up from html.
This is fine for some apps. However having written many apps in PHP myself I can tell you the kind of hell those apps become once you cross the invisible line into medium size/medium complexity apps.
Some problems with PHP are:
1. Lack of standards (every app lives in its own quirky world of conventions) which makes maintenance a really horrible ordeal involving second guessing, reverse engeneering and yanking angrily at your own hair (even when its your own app).
2. It's web-page based. You will find yourself jumping through some horrible hoops if you want to open a socket and leave it open, you can't have a DB connection pool, etc.
3. No frameworks. Most of the time you find yourself writing and re-writing those tham DB connection functions and looping through a result set to display it on a table. There is no way around this, you have to home bake everything. Arguably, the functions provided by php themselves are libraries, but that is not the same as a framework that provides pattern-based solutions to general engeneering problems, as opossed to point specific functionality.
4- Lack of proficiency and professionality in the community. Most php developer do not know what any of these terms mean: unit testing, acceptance testing, modularity, version control, configuration control, code reuse, patterns, antipatterns, software development lifecycle, etc.
5- Code is freely interspersed with html and viceversa. This is not a problem when you have a little code. But often times the code is not grouped but broken into arbitrary chunks that lay around separated by a couple of unclosed html tags.
There are more, but these should be sufficient to make my point.
This is my rule of thumb:
PHP: To write some quick app with a 10 or less pages and a couple types of SQL queries, pick PHP.
J2EE: If your app will do anything unorthodox or will eventually become medium or large, use J2EE.
As to the apps written in PHP,
they are proof that you can build a building out of mud bricks, but that
doesn't make it the best-practice solution.
Phantic Volger
This article and the interesting discussion is really worthwhile. Here's
what I'll add:
I don't think the Java community actually believes in code reuse. Working as a database designer on a Java project, I see a lot of barriers to code reuse.
A key benefit of PHP is that it carries a lot of really useful libraries, many of which were contributed.
It seems to me that PHP libraries start off doing what you want, whereas Java libraries don't, so whenever you start using them you actually have to implement a framework to get the runtime behaviors you want.
That said I think most of the grand frameworks are almost completely unjustified. And everyone in the Java community seems to have a megalomaniacal vision that his or her framework is going to be the grand and glorious end-all be-all package that saves the programming world. Then they engineer them so much that they are unusable.
Regarding ISPs hosting Java -- people's comments are indisputable. I've got a great ISP, but every time they look at Java, they see an order of magnitude more configuration work, and an order of magnitude more memory footprint. I've been asking for almost three years, and I can't blame them for saying "no."
AD Wolfe
Timothy,
As to your comment regarding the general availability of all sorts and manners of open source php apps. Here is the reason for that:
The J2EE mindset is an enterprise development mindset. Most applications are built inside corporations to solve a specific problem with specific requirements and the application is generally not owned by the developers. Frameworks are built in open source fashion because they are the scaffolding of these massive enterprise apps and enterprise developers find them incredibly useful.
The PHP mindset is that of the lone web developer. Most PHP apps start off with a guy that has a website trying to build something he needs but that probably every other guy with a website would like to have too (BB, guestbook, tickets, CMS, wiki, photo gallery).
Regarding duplication of work: If you check the PHP Resource Index (http://php.resourceindex.com/Complete_Scripts/) you will see that there are normally over 50 applications of each kind. Certainly you cannot compare that to the java framework 3 or 4 frameworks per type. I think you might just be a bit biases from your own Java-centric environment.
Phantic Volger
Is there not a place for both? I don't think that anyone in the Java
community should get worked up (not that you are) over PHP. Java and PHP
have built completely different repitiors (sp). Java is great for
enterprise applications and PHP is great for open source. The fact is that
PHP is easier to code in. Its a simple scripting language and anyone can
pick it up and start creating easily. Java is a little more difficult, I
think that this is why alot of providers have gone to the LAMP stack. Its
easy. This also creates a base of people who are coding as a hobby. I know
thats how I got started on PHP. But I think there is a place for both. I'm
hoping that at the university where I work we will support both. I'm
pushing for our JAVA based CMS to stage pages onto a PHP enabled production
server. We will have the enterprise strength java CMS and the ability to
easily write in-line scripts for truely dynamic content on the production
web server. I think its too late for Java to become PHP and vice versa.
They have their places and there is no reason they cannot co-exist.
Dave
Dave,
> They have their places and there is no reason they cannot co-exist.
My point exactly:
"Pair J2EE with PHP to implement a common
Web application infrastructure"
http://ibm.com/developerworks/websphere/
techjournal/0505_krook/0505_krook.html
Daniel Krook
Great discussion, with many great points. I currently make my living in
Java but here is what I see:
Java is good for enterprise class solutions but not for simple, quick applications or even rapid prototyping. I had hoped Groovy would be simplified scripting language that would empower Java with the best of Python, Ruby, Smalltalk but it seems to have stagnated.
Java is developed by software engineers for software engineers and corporate enterprise solutions. The reality is that not every problem requires rocket science for a solution, just like every meal does't have to be at a four+ star restaurant, somtimes fast food is all you need.
The tendency toward framework development, I think, is due to the generalization that developers find this type of work more interesting than developing applications. Linux has this tendency, where most developers focus on the internals rather than ease of use and desktop. Mac OS X is an example of the best of both, a great UI with a real OS under the covers. Why can't Linux do this? Until they do, I'll stick with my Mac for my client machine and FreeBSD for my servers (linux has a long way to go to get me off of serverside BSD)
What is needed for Java is the simple, fast, fun capabilities along with the enterprise strength capabilities. Oh, and more basically redundant open source infrastructure frameworks ;) to waste our time on as .Net rides to enterprise dominance. Opinion: If you think J2EE is too difficult with the current crop of tools, your probably in the wrong profession, please go into marketing :)
rantster
Hi,
I am a PHP programmer and have been trying all sorts of php
frameworks, i have not yet found an ideal framework to work with. I had
started learning java in my school days, but got carried away by php's
simplicity. I feel its the time i switched to java.
Is there any java framework that offers features like AJAX?
The 2 biggest reasons, as mentioned before, why PHP rules in popularity for
open source projects are pretty basic:
1) Hosting costs - Hosting is highly competitive and your typical user shoots for lowest prices (I can't blame them). For a decent PHP host this can be around $5, for Java host expect at least $25 (yes you can get cheaper but the hosting is typically no good). I run over 20 sites and the $20 a month extra each would need for Java adds up. Java is simply a memory and resource hog and harder to configure for multiple users so it's an easy choice for hosts to use PHP.
2) Pretty much anyone can hack out a PHP based site or pages (not saying that good sites are not made). No compilation, no deployment, no configuration, dynamically typed variables, typically no framework all make it a much simpler programming environment (although would not say better).
The barrier to entry is very low, and people will typically stick with what they learn with. Many of these projects have also started out as quick hacks and expanded from there.
As an alternative to both Java and PHP I would recommend people try out Ruby On Rails. I don't want to be part of the hype machine behind it, but it's actually a really effective framework that falls somewhere in between these two.
It maintains the cleanliness of a good framework that PHP doesn't have (I would say it's even cleaner than Java), but it also has the simplicity and ease of use that PHP offers. I know I already save a ton of time avoiding recompilation with small changes and also no config files. The ability to iteratively develop, in a 'clean' way is unbeaten from anything else I've used.
I use Java for contract software development, I am forced to use PHP to make modifications to open source projects running on my websites, but I am trying Rails on personal projects and it's slowly winning me over.
Riley
That's because Java is overly complicated, runs slow and is extremely
buggy. PHP is lightweight, runs extremely fast and the only bugs are the
ones you code yourself
MattBoston [matt@shieldsproductions.com]
One of the biggest mistakes people make when having this "my dad can beat
up your dad" debate between PHP and Java is that they mix hobby/project
websites with proper software engineered websites (web applications). To
use a previous poster's analogy, although fast food is great, you may have
to feed more than just yourself so you should make it worthwhile.
PHP is
missing the element of sound software engineering. I'm not talking about
grandiose engineering schemes, but sound project management methodologies.
In fact, it is missing all of them:
- ease of software
configuration
- deployment (ala Java's Ant)
- automated
documentation
- ACID-style unit testing
So what should a PHP developer do? Mix the two. Use the best of Java's world and the best of PHP's world. I use Ant to configure and deploy the PHP application to a remote server. This works with my website and all web apps I've created. As someone else put it, use the best tool for the job.
Scott
Scott
Those asking about Ajax and Java, yes, there is a set of ajax functions for
Java over at
Sajax:
http://www.modernmethod.com/sajax/forum/viewtopic.php?t=48
Justin Shreve [justin.shreve@gmail.com]
What's funny is watching everyone compare apples and oranges. It's not a
competition of which language is 'better', it's which suits it's intended
purpose. As far as web applications go, PHP is designed solely for the web
whereas Java is not. Java reminds me of how Perl is used for the web,
clunky and slow. Hell same goes for dotnet. Is Java a more 'powerful'
language then PHP, since it is true OO I would say so. But power isn't the
issue...
Taintless
There's another consideration that seems to be overlooked a little here,
and that is who is driving much of the development and use of these Java
and PHP tools. Part of the original emphasis in this conversation was "All
The Cool Open Source Apps are in PHP".
My company does most of our development for small and midsized businesses (up to $10M a year in revenue). Most of them are not tech companies, and they generally have pretty lean IT budgets. So, even though we are STRONG advocates of using best practices in developing and deploying web apps for our clients, quite often our clients have restricted budgets. This mandates that we develop applications with a 'proof-of-concept' mentality to which PHP lends itself MUCH MORE EASILY. It has a lower cost of entry, and quite honestly, there is lower risk if the client decides to toss out their original concept after they have invested in it from a proto-type basis. Having 'cool' widgets and functional tools (i.e. Mambo, etc.) gets the job done for many of these situations, so that the client can evaluate whether or not they will get the ROI and other benefits that they are anticipating.
Of course, once the client sees that the project is viable for long-term benefits, we definitely stress the upside and long-term benefits of effective best-practices development (including using an enterprise-class JAVA environment). Yes, in the long run, this two-tiered approach can seem to be a little more costly. However, for most of these companies, minimizing their potential risks more than offsets the incremental costs of this approach.
Has anyone else found this to be the case in with their client base?
PS - I think that we will begin to see more exciting open source Java apps as more companies begin to adopt SOA (service-oriented architecture) because effective SOA lends itself to developing useful functions that outstrip the complexity that PHP can easily support. Thoughts?
Mark Coren
The reasons why PHP appears so popular is simple - 1) supported everywhere
for cheap; 2) small learning curve like Python; 3) generates cash just the
same for small/medium e-commerce as ASP/JSP do for big, serious sites.
I want to reinterate the point a couple commentors have already made about the birth differences between Java and PHP -- the first aspired to beat MS in Everything and the latter borned with a modest but focused purpose of Just Building Dynamic Websites Quickly -- and how comparing them in a sort of competition is like comparing apples and oranges, and not citing the right tool for the chosen job.
Secondly I want to add that bashing another faith only expose your own prejudices and weaknesses. If we Java believers think that we are 'better' and 'always will be better', then we'll never learn anything and regress. The only topic worth spending time mulling on is not "Why cool apps are built in PHP", but "What can we learn (steal) from dudNET and PHP to make Java cheaper, easier, and fasster to implement (no need to say 'more-secure'), with all-round better User Interfaces. Microsoft gets better by LOOKING UP at Java as the thing to beat. PHP developers don't worry about Java and just keep the focus on practicality. Don't overlook the Adobe-Macromedia merger to jointly create a new Anywhere UI standard (Flash PDF?) and compete. Flash has already beaten the applet. Funny why this isn't the more worthy blog topic. Soon it might even make the common web browser (which JSP needs to run on) obsolete. And don't bet against some genius come in and make PHP truly OO and even faster to build and more secure. The field is wide open, and Java is being scaled on all sides (framework, usability, UI,...). I understand why Tim made the topic so controversial. This is no time for Java devotees to gloat or divide among ourselves. Let's play and make some FUN stuff in Java!
Dean
This in response to some of the comments about PHP lacking professionalism.
At work (fortune 500 company) we use PHP for building our enterprise
management applications in a decently sized (10-20) person development
sub-group on a large (100+ developers) project managed in multiple US
locations and India.
To follow up, a PHP can scale almost indefinitly since its scalability is
pushed down to the data layer - resulting in infinite horizontal scaling.