Board index » jbuilder » For Dennis Landy
Paul Nichols [TeamB]
For Dennis Landy
2007-06-26 05:58:07 PM
Dennis Landy wrote,
J2EE performance, without the overhead of EJB 1.x 2.x is pretty darn
The eternal question.
close to native and in high volume cases may very well surpass it. The
reason is the JIT optimizations and caching, found in Jthe modern 2EE
application and app servers.
I do not have benchmarks per se, but suffice it to say, that I use J2EE
everyday to support 30,000-80,000 everyday users on several
applications, all running in load balanced app servers.
We do not have many performance bottlenecks. The JVM usage can rise up
to many gig on our systems, but that is because we have so many users.
Server side Java is Enterprise standard. In my company, we have some
apps supporting over 100,000 users. Our current apps may very well rise
to that usage as well.
To be quite honest we have a few DOT.NET apps as well. Honestly, we have
had problems with these apps, when the user count grows past 10,000 or
so. They invariably bomb and IIS totally locks up. In some cases Windows
will lock up as well. We have to reboot at least three times per 24 hour
period and are in the process of replacing these apps with Java, since
they do not seem to be able to handle the traffic.
According to load system tests we have run, NET performance is about the
same as Java until the user count starts to grow to say 500 or so. Then
the NET performance starts to take a nose dive. When over 5,000 there is
an extreme difference, and when the count grows over 5,000 is will
usually start to crawl or worst bomb!
This may be due to the NET CLR, CLI, or it may have more to do with
Windows itself, not sure. These are not small Windows servers either.
They are Windows 2003 servers with 4 gig of Ram each. I can say that I
have had other Windows non NET apps lock up when the thread count starts
increasing when using Delphi or C++ as well.
All of our Java apps, with the exception of a few, are running on Linux,
Solaris, and/or AS400s and are usually hitting an Oracle or DB/2
databases. On one app, we are storing between 2-3 terabytes of data over
a year, so you can imagine the transaction rate per hour and per day.
I have been using Java for about 8 years now and with the 1.x stack,
there were some problems. Early implementations of EJB 1.x and 2.x,
especially entity beans, were the main culprit of bottlenecks and
resource problems in earlier implementations with J2EE. Now that EJB 3,x
is using a more POJO model, these problems are not occurring as before,
but to be honest we do not use EJB very often in our apps, although we
are connecting to some. The majority of our applications are making huge
use of Web Services and JMS.
Of course all of this is relative to what your application requirements
are. If you do expect high volumes and 1000 of transaction type growth,
I think Java is your best bet. If your needs are less robust, then NET
or PHP may serve you as well. Ruby is great for quick prototypes where
you do not have to do a lot of customizations. I cannot speak to
scalability of Ruby at all.
If you really need rock steady Enterprise class performance, I
personally feel J2EE is your best bet. That is what all of our
Enterprise wide apps were written with, in the last two companies I
worked for. The smaller of these two had 50,000 employees and J2EE gave
us few problems, as long as we were not making extensive use of Entity EJBs.