Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

While reading about Java EE applications, somewhere I have seen people saying they're enterprise scalable, I am confused as to what that really mean?

Are Java web applications mainly written & suitable for building enterprise management tools, not for the high traffic websites of today's world, that need to scaled to a large internet population?

share|improve this question

6 Answers 6

up vote 3 down vote accepted

I think that the term "internet scalable" means one thing in particular: ready to grow to meet viral growth. The dream of every person who builds an internet application is that it will touch a nerve and grow through word of mouth, through passionate advocacy of its users. Twitter, Facebook, there are many examples, and virtually all of them struggle to grow their software and infrastructure to meet the demand. Down time is poisonous, and the lesson of internet scalability is be ready to grow fast or be ready to pack it in.

Enterprise scalability is a different beast. Businesses don't grow virally; each person hired generally does not then go and bring three or four more people into the organization, at least not over time periods of weeks or months. However, enterprises have other needs that are different than cool apps on the web, and building applications and supporting infrastructures to meet those needs is challenging, too.

All that being said, I do not believe that there is anything inherent to the nature of applications written in Java that either preclude them from achieving both kinds of scalability or predispose them towards either kind, either. Building truly scalable applications generally has more to do with good architectural principles and planning ahead of time, right from the beginning, to meet those scalability needs.

share|improve this answer

No! Java as .NET or even PHP (if well developped) can provide scalable applications in order to handle a lot of clients requests.

Enterprise scalable probably refer to the capacity of enterprise servers to answer those requests, I thinks this kind of scalability is not dependant of the language, but rather hardware, DB and other tools.

share|improve this answer

Enterprise scalability is (at least I perceived it this way) a very fuzzy term (as is internet scale). Both actually refer to the same, i.e., being able to react to changing requirements, load and possibly simple horizontal scalability.

Are Java web applications mainly written & suitable for building enterprise management tools, not for the high traffic websites of today's world, that need to scaled to a large internet population?

Java EE isn't commonly used for high volume websites. Instead, through their strong transactional model combined with extensive support for messaging and availability of commercial support, they are a better fit for insurance companies or banks.

This doesn't mean of course that you can't write scalable websites with Java. If you want to, you only need to make sure that you avoid certain parts of Java EE. For instance, you should try to avoid Enterprise JavaBeans and Java Persistence 2.0 if you want (simple and cheap) scalability.

To give you an example, eBay is (or at least has been in 2004) using Java with own implementations for ORM and an optimistic transactional model to meet their non-functional requirements.

share|improve this answer
    
I'm starting to use JSF without other Java EE stuff like EJBs or JPA for a web app that offers social networking & sharing facility to a niche user community. Am I going on the right path ? –  user01 Feb 22 '12 at 10:26
1  
You can certainly create such an application with JSF and without EJB & JPA. Though you should ask yourself whether there are alternatives with which you could be more productive. –  BenR Feb 22 '12 at 10:32
    
If you want this app to go public (and you want to maintain it and maybe get somebody else interested in the project), also think about the "buzzword" factor. Motivation tends to be larger when people can fiddle with new stuff. See technology section of this article: joelonsoftware.com/items/2012/01/06.html –  BenR Feb 22 '12 at 10:36
2  
One of the first articles I ever read about a site surviving the "slashdot effect" gave credit to their Java-based architecture (largely the compiled nature of their JSP UI). –  TMN Feb 22 '12 at 15:16

Well, everyone has their opinions, so why not me too.

Enterprise scale - as noted above, suitable for insurance companies, banks and the like - that means a lot of requests, reliability, transactions (ACID), correct sequence ordering, timeliness, consistent, relational databases, etc.

Internet scale - a huge number of requests, transactions not enforced (less ACID), no ordering, inconsistent (due to loosly synchronized redundancy), structured storage instead of relation databases, etc.

You could compare the differences between Internet scale technology like Google App Engine and Enterprise scale technology like EJB.

share|improve this answer

Enterprise apps should be scalable enough that small to midsize shops can run them on the same server as their other apps, while large corporations can run them on dozens or possibly hundreds of servers with wide geographical dispersion, with thousands of users. The challenges here are keeping data synchronized across data centers, automatic failover and recovery, and integration with other business systems. Data integrity is a huge issue, and transaction design consumes a lot of development effort.

Internet-scale applications should be capable of running on hundreds or thousands of servers spread across the globe, with hundreds of thousands (or even millions) of users. Challenges here are traffic routing and minimal state-keeping. Shared data fidelity is often not a high concern (if you miss a status update it's not a big deal), and response time is the primary performance metric.

share|improve this answer

I see answers suggesting transactional isolation, language preferences or other hardware solutions to determine the difference.

Enterprise Scale = systems designed for usage in total employee &| customer populations. Usually under a couple 100 thousand or so users.

Internet Scale = systems designed, or at least poised to handle everyone OTHER than your internal user population.

Online banking could be considered the edge of enterprise-internet scale, but do we think for a moment they don't value non-deferred transactions? There are a few techniques used in architecting solutions between these, but there is no hard and fast rule.

Servlets/JSP is part of Java EE, but I would not hesitate to use 'em for an internet-scale system. Conversely, I have seen near-internet-scale systems handled primary in the Unix shell (oh so taboo). Go figure.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.