Dev

Why we need to put the “run” back into Java

Let’s say you’re an NFL running back.

When the quarterback hands you the ball, what do you do? You run. You run hard, and you run fast. If you hesitate for just a second, you immediately get demolished by a bunch of defenders.

In football or business, the last thing you want to do is freeze up in a critical situation. Yet every holiday season, the e-commerce systems of retailers across America are failing companies and end-users alike, leading to mass frustration and millions of dollars of lost revenue.

What’s the problem?

Well, as user loads increase, their Java-based applications start to slow down — or even shut down altogether. That can cost a company thousands of shoppers in the event of even one single instance of failure to complete transactions. And maybe those frustrated shoppers won’t come back to try and shop again in the future.

Amazon sold the equivalent of 158 items per second during Cyber Monday 2011, but if their online services had gone down for only one minute, it would have cost them 9,480 shoppers.

Obviously, the stakes for e-tailers to deliver a positive customer experience are extremely high.

“In a competitive market segment, such as e-commerce, providing online shoppers with a rich user experience and response time consistency is an important factor for growing revenue and sustaining customers,” wrote Gene Alvarez, research vice president at Gartner Research.

Unfortunately for most retailers, Java systems (far and away the most prevalent systems used in enterprises today) are not capable of providing runtime consistency during peak loads. As user load increases, e-commerce apps demand more processing and memory, but their Java runtime infrastructures are very rigid and can’t react in real-time to rapid changes in user demand.

This leads to degraded performance for all e-commerce users, causing systems hang-ups, application crashes, and lost customers. That’s bad news, considering that the holidays make up 40 percent of a retailer’s online sales.

Last year, 80 percent of Black Friday shoppers bought online. Online retailers made $18.7 billion last year, $1 billion of that on Cyber Monday alone.

If an e-tailer can’t handle that kind of surge in holiday sales volume, it will go out of business quickly.

To make matters worse, what used to be a problem limited to several weeks of holiday buying has become a year-round problem. Retailers will regularly blast out promotions to their customers (e.g., 24-hour flash sales, specials for certain items, private sales for select clientele, etc.) but often aren’t able to predict the success of those promotions, leading again to needing to plan for unpredictable spikes in demand for services.

When Target.com launched the Missoni Collection in September 2011, the resultant influx of visitors crashed Target’s entire website for hours.

An improvement in the Java virtual machine (JVM) can make a world of difference.

E-commerce application failures can often be sourced back to limitations of conventional JVMs, which constrain application resources and make it challenging to scale apps beyond a few gigabytes of memory, which can effect performance under load.

Conventional JVMs also suffer from stop-the-world pauses because the JVM needs to clean up its internal memory, the impact of which causes applications to freeze and become unresponsive.

Programmers must tune Java to work around the JVM’s limited scalability and very carefully manage the amount of memory a given application uses. For e-tailers, this is bad news, because e-commerce applications must handle users loads that are never static and require more memory for each user and transaction to ensure consistent user response times and high sustained throughput.

What if e-tailers had a JVM that could elastically manage application memory allocation before it ever became a limitation?

The Java runtime (i.e. the JVM) would sense the demands of the application in real-time and grow its memory beyond the static limitation of conventional JVMs and never encounter those nasty stop-the-world pauses. Rather than freezing during demand surges and peak requirements, e-commerce applications would stay highly available and responsive. Such a JVM would enable the Java runtime to be consistent regardless of sales volume.

Now that’s a win for retailers and their customers alike.

Scott Sellers is the CEO and co-founder of Azul Systems, a company focusing on Java and JVM performance and issues. His company delivers highly elastic Java runtime platforms with scalability, manageability, and production-time visibility. Designed and optimized for commodity servers running in virtualized and cloud deployments, Azul’s Zing platform is a Java runtime that allows throughput-intensive and QoS-sensitive Java applications to run and perform better virtualized than non-virtualized.


Mobile developer or publisher? VentureBeat is studying mobile app analytics. Fill out our 5-minute survey, and we'll share the data with you.