667514 members! Sign up to stay informed.

Sponsored Links


Resources

Enterprise Java
Research Library

Get Java white papers, product information, case studies and webcasts

News News News Messages: 40 Messages: 40 Messages: 40 Printer friendly Printer friendly Printer friendly Post reply Post reply Post reply XML XML XML

New Article: Scaling Your Java EE Applications

Posted by: Nuno Teixeira on July 03, 2008 DIGG
Java applications can be scaled vertically (on a single system), or horizontally (across multiple systems). But to do either, you have to understand all parts of the system and software. Not doing so could defeat the purpose of adding system resources or more systems. Wang Yu presents some surprising results of Java application scalability based on his experiences in a performance laboratory. The first installment of this article discusses scaling vertically.

Read the Article

Threaded replies

·  New Article: Scaling Your Java EE Applications by Nuno Teixeira on Thu Jul 03 11:38:09 EDT 2008
  ·  broken link by Jan-Kees van Andel on Sat Jul 05 15:32:57 EDT 2008
    ·  Re: broken link by Hung Tang on Sat Jul 05 18:39:44 EDT 2008
    ·  CAS operations by Ivan Dubrov on Sun Jul 06 01:04:04 EDT 2008
      ·  Yes, you are right by Stoyan Tsonev on Sun Jul 06 07:04:24 EDT 2008
        ·  Thank you for pointing out the error by yu wang on Mon Jul 07 23:03:05 EDT 2008
    ·  Very nice article by xinyu liu on Mon Jul 07 15:36:12 EDT 2008
  ·  when is the second part coming? by jason hu on Sun Jul 06 01:27:59 EDT 2008
  ·  Java is REALLY ready for mission-critical applications? by Takashi YAMAGUCHI on Sun Jul 06 15:04:02 EDT 2008
  ·  I don't see anything new by peter lin on Sun Jul 06 17:08:47 EDT 2008
    ·  Re: I don't see anything new by Deepal Jayasinghe on Mon Jul 07 02:02:22 EDT 2008
    ·  its more like plagiarism by Alex Murashko on Mon Jul 07 06:22:00 EDT 2008
      ·  Re: its more like plagiarism by Peter Varhol on Mon Jul 07 13:00:46 EDT 2008
        ·  Even if it's not plagerism by peter lin on Mon Jul 07 17:16:41 EDT 2008
          ·  Old content may also be useful by yu wang on Mon Jul 07 23:12:30 EDT 2008
          ·  Re: Even if it's not plagerism by Chief Thrall on Tue Jul 08 07:51:57 EDT 2008
            ·  Re: Even if it's not plagerism by Chief Thrall on Tue Jul 08 07:53:08 EDT 2008
              ·  That's funny by peter lin on Tue Jul 08 08:13:50 EDT 2008
                ·  Re: That's funny by Chief Thrall on Tue Jul 08 09:12:30 EDT 2008
      ·  The reference link should be quoted by yu wang on Mon Jul 07 23:25:55 EDT 2008
  ·  Vertical Scaling by Larry Singer on Mon Jul 07 02:59:41 EDT 2008
  ·  We are waiting for second part by Nandkishore Dhilde on Mon Jul 07 07:30:58 EDT 2008
    ·  2nd part - I doubt it by Ulf Gohde on Mon Jul 07 10:53:29 EDT 2008
      ·  Typo by Ulf Gohde on Mon Jul 07 11:36:42 EDT 2008
        ·  Re: Typo by Michael Klaene on Mon Jul 07 12:22:50 EDT 2008
          ·  Brian Goetz by Ulf Gohde on Tue Jul 08 09:21:15 EDT 2008
            ·  Re: Brian Goetz by Chief Thrall on Tue Jul 08 09:27:59 EDT 2008
          ·  Brian who??? by Brian Edwards on Tue Jul 08 16:11:43 EDT 2008
  ·  The reference resources by yu wang on Mon Jul 07 23:19:18 EDT 2008
  ·  Some questions on the article... by vincent marquez on Tue Jul 08 16:49:04 EDT 2008
    ·  Re: Some questions on the article... by yu wang on Tue Jul 08 21:57:24 EDT 2008
  ·  Error about synchrnoized on static methods by Fredi Mercury on Wed Jul 09 08:02:28 EDT 2008
    ·  Re: Error about synchrnoized on static methods by yu wang on Wed Jul 09 08:33:59 EDT 2008
  ·  Filtering the garbage by
  Message #261376 Post reply Post reply Post reply Go to top Go to top Go to top

broken link

Posted by: Jan-Kees van Andel on July 05, 2008 in response to Message #260356
The link to the article points to the TSS homepage.

  Message #261378 Post reply Post reply Post reply Go to top Go to top Go to top

Re: broken link

Posted by: Hung Tang on July 05, 2008 in response to Message #261376
Try here

http://www.theserverside.com/tt/articles/article.tss?l=ScalingYourJavaEEApplications

  Message #261431 Post reply Post reply Post reply Go to top Go to top Go to top

CAS operations

Posted by: Ivan Dubrov on July 06, 2008 in response to Message #261376
Shouldn't you re-evaluate newValue in code list 5 after CAS operation failed?

  Message #261432 Post reply Post reply Post reply Go to top Go to top Go to top

when is the second part coming?

Posted by: jason hu on July 06, 2008 in response to Message #260356
pretty good article, look forward to seeing the second part

  Message #261436 Post reply Post reply Post reply Go to top Go to top Go to top

Yes, you are right

Posted by: Stoyan Tsonev on July 06, 2008 in response to Message #261431
The sample code is incorrect.
In order to get described behavior - "save increment", it should be changed to:

while (value.compareAndSwap(oldValue, newValue) != oldValue) {
oldValue = value.getValue();
newValue = oldValue + 1;
}

In fact, existing code from the article, will succeed to set the value, that is calculated on the first iterration and if other thread succeed to change it a meanwhile, the change will be lost.

  Message #261723 Post reply Post reply Post reply Go to top Go to top Go to top

Java is REALLY ready for mission-critical applications?

Posted by: Takashi YAMAGUCHI on July 06, 2008 in response to Message #260356
The expectations for 'realtime java' aside, I have been surprised that NIO has not unmap().
How can I go?
Java is REALLY ready for mission-critical applications?
Very doubtful, isn't it?

  Message #261734 Post reply Post reply Post reply Go to top Go to top Go to top

I don't see anything new

Posted by: peter lin on July 06, 2008 in response to Message #260356
The stuff in the article seems to be a rehash of existing knowledge. Is there anything new, or is it just rehash?

peter

  Message #261856 Post reply Post reply Post reply Go to top Go to top Go to top

Re: I don't see anything new

Posted by: Deepal Jayasinghe on July 07, 2008 in response to Message #261734
This really a very useful article , so I wrote a blog.

http://blogs.deepal.org/2008/07/scaling-java-ee-applications.html

  Message #261894 Post reply Post reply Post reply Go to top Go to top Go to top

Vertical Scaling

Posted by: Larry Singer on July 07, 2008 in response to Message #260356
Vertical scaling used to be separating the functionality into slices vertically when looking at the tiers. That is, separating the database/persistence into one vertical layer, separating the web server into another vertical layer and putting the application server into a third vertical layer. Each of these vertical layers can then be scaled horizontally (by adding more machines).

It seems the definition changed sometime when I wasn't looking.

  Message #261937 Post reply Post reply Post reply Go to top Go to top Go to top

its more like plagiarism

Posted by: Alex Murashko on July 07, 2008 in response to Message #261734
It looks like reprint from http://www.ibm.com/developerworks/java/library/j-jtp11234/
I think at least original author must be quoted

  Message #261942 Post reply Post reply Post reply Go to top Go to top Go to top

We are waiting for second part

Posted by: Nandkishore Dhilde on July 07, 2008 in response to Message #260356
pretty good article, looking forward to seeing the second part

  Message #261982 Post reply Post reply Post reply Go to top Go to top Go to top

2nd part - I doubt it

Posted by: Ulf Gohde on July 07, 2008 in response to Message #261942
Given that the first article was basically just a copy from an article from Brian Goertz written in 2004 I have my doubts that we will see a 2nd part.

  Message #261983 Post reply Post reply Post reply Go to top Go to top Go to top

Typo

Posted by: Ulf Gohde on July 07, 2008 in response to Message #261982
Typo... The name is Brian Goetz and I just noticed that someone already pointed it out incl. a link to the original article.

  Message #261985 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Typo

Posted by: Michael Klaene on July 07, 2008 in response to Message #261983
Typo... The name is Brian Goetz and I just noticed that someone already pointed it out incl. a link to the original article.

As publisher of this article (and most certainly unaware of the original piece), I think it would be in TSS's best interest to take this article off the site, just to be safe. The first half of this article is too similar to the original whose link was provided... Whoever Brian is, I'm sure he will not be pleased.

  Message #261987 Post reply Post reply Post reply Go to top Go to top Go to top

Re: its more like plagiarism

Posted by: Peter Varhol on July 07, 2008 in response to Message #261937
Thanks for pointing that out, Alex. I've just read the DeveloperWorks article, and while the content is similar to the middle part of this one, I didn't see direct plagiarism. I've queried the author to see if he was aware of this article, and I think a reference to this article in the text is appropriate.

  Message #261989 Post reply Post reply Post reply Go to top Go to top Go to top

Very nice article

Posted by: xinyu liu on July 07, 2008 in response to Message #261376
The concept of lock-free data structure in java.util.concurrent package seems identical to the optimistic locking in ORM.

  Message #262040 Post reply Post reply Post reply Go to top Go to top Go to top

Even if it's not plagerism

Posted by: peter lin on July 07, 2008 in response to Message #261987
The content is basically rehash of existing stuff found on the internet. Maybe it's new to the author, who apparently doesn't realize it's old stuff.

peter

  Message #262052 Post reply Post reply Post reply Go to top Go to top Go to top

Thank you for pointing out the error

Posted by: yu wang on July 07, 2008 in response to Message #261436
Hi, Ivan and Stoyan
Thank you so much to point out the error. I will modify it and ask the editor to post the correct code.

Wang Yu

  Message #262053 Post reply Post reply Post reply Go to top Go to top Go to top

Old content may also be useful

Posted by: yu wang on July 07, 2008 in response to Message #262040
Hi, Peter
Thank you for point out that the content in this article is not related to new technologies. But it is not rehashed from internet. I just summarized the experience from the projects tested in our performance lab, and all the case studies are real world projects. I just hope to do a little help on the coming Java projects related to scalability, to avoid some bad practices from the failed projects.

Thank you and Best Regards
Wang Yu

  Message #262054 Post reply Post reply Post reply Go to top Go to top Go to top

The reference resources

Posted by: yu wang on July 07, 2008 in response to Message #260356
1 Scalability definition in wikipedia : http://en.wikipedia.org/wiki/Scalability
2 Java theory and practice: Going atomic: http://www.ibm.com/developerworks/java/library/j-jtp11234/
3 Javadoc of atomic APIs: http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/atomic/package-summary.html
4 Alan Kaminsky. Parallel Java: A unified API for shared memory and cluster parallel programming in 100% Java: http://www.cs.rit.edu/~ark/20070326/pj.pdf
5 JOMP—an OpenMP-like interface for Java: http://portal.acm.org/citation.cfm?id=337466
6 Google MapReduce white paper: http://labs.google.com/papers/mapreduce-osdi04.pdf
7 Google Bigtable white paper: http://labs.google.com/papers/bigtable-osdi06.pdf
8 Hadoop MapReduce tutorial: http://hadoop.apache.org/core/docs/r0.17.0/mapred_tutorial.html
9 Memcached FAQ: http://www.socialtext.net/memcached/index.cgi?faq
10 Terracotta: http://www.terracotta.org/

  Message #262055 Post reply Post reply Post reply Go to top Go to top Go to top

The reference link should be quoted

Posted by: yu wang on July 07, 2008 in response to Message #261937
Hi, Alex
Thank you to point it out. Now I attached all the reference resources (including the second part of the article).

Thanks and Best Regards
Wang Yu

  Message #262222 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Even if it's not plagerism

Posted by: Chief Thrall on July 08, 2008 in response to Message #262040
The content is basically rehash of existing stuff found on the internet. Maybe it's new to the author, who apparently doesn't realize it's old stuff.

peter


So? There are new and young generations of people joining IT industry who would like to read something like this.

The point of your post is?

Original poster was trying to help community, not like he was trying to put shameless plug and sell something at the same time.

  Message #262223 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Even if it's not plagerism

Posted by: Chief Thrall on July 08, 2008 in response to Message #262222
The content is basically rehash of existing stuff found on the internet. Maybe it's new to the author, who apparently doesn't realize it's old stuff.

peter


So? There are new and young generations of people joining IT industry who would like to read something like this.

The point of your post is?

Original poster was trying to help community, not like he was trying to put shameless plug and sell something at the same time.


You posted same thing twice, seems you really want to be flamed around nja.

  Message #262224 Post reply Post reply Post reply Go to top Go to top Go to top

That's funny

Posted by: peter lin on July 08, 2008 in response to Message #262223
I expect to be flamed for pointing out the obvious. For example, other like Cliff click have covered lock free in much greater detail and depth. Cameron has covered scaling with data grids, along with a few others. There's dozens of articles on proper usage of synchronize. Ari has covered terracotta in great detail and some of the talks are on google video.

My bias take is the article shows a lack of awareness of prior literature and doesn't attempt to take it further. If a college student were to write a paper and not cite prior literature, would it be considered a good paper? Maybe it's just me, but I much rather read in depth articles that have more meat and content.

I wear abestos underwear, so feel free to flame on.

peter

  Message #262227 Post reply Post reply Post reply Go to top Go to top Go to top

Re: That's funny

Posted by: Chief Thrall on July 08, 2008 in response to Message #262224
I expect to be flamed for pointing out the obvious. For example, other like Cliff click have covered lock free in much greater detail and depth. Cameron has covered scaling with data grids, along with a few others. There's dozens of articles on proper usage of synchronize. Ari has covered terracotta in great detail and some of the talks are on google video.

My bias take is the article shows a lack of awareness of prior literature and doesn't attempt to take it further. If a college student were to write a paper and not cite prior literature, would it be considered a good paper? Maybe it's just me, but I much rather read in depth articles that have more meat and content.

I wear abestos underwear, so feel free to flame on.

peter


In the context that there are new and young people coming to IT, such as recent graduates and similar, who might have not read articles you have mentioned, you opt for lame flame 'pointing the obvious' instead of 'nice guy' saying:

"Here you go guys, additional links you could find useful in this matter, directly from my bookmarks, link1, link2".

Not all articles should be hard core, PhD like, some are introductory, some are not.

If you dont like article, go read http://citeseerx.ist.psu.edu/ or something.

  Message #262228 Post reply Post reply Post reply Go to top Go to top Go to top

Brian Goetz

Posted by: Ulf Gohde on July 08, 2008 in response to Message #261985
The first half of this article is too similar to the original whose link was provided... Whoever Brian is, I'm sure he will not be pleased.

Brian Goetz is the author of "Java Concurrency in Practice" published by Addison Wesley in 2006 (besides being the author of a lot of other articles)

  Message #262229 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Brian Goetz

Posted by: Chief Thrall on July 08, 2008 in response to Message #262228
The first half of this article is too similar to the original whose link was provided... Whoever Brian is, I'm sure he will not be pleased.

Brian Goetz is the author of "Java Concurrency in Practice" published by Addison Wesley in 2006 (besides being the author of a lot of other articles)

http://java.sun.com/developer/technicalArticles/Interviews/goetz_qa.html

  Message #262255 Post reply Post reply Post reply Go to top Go to top Go to top

Brian who???

Posted by: Brian Edwards on July 08, 2008 in response to Message #261985
Brian should be known to all java developers. If you don't then you need to be reading more.
Please tell me you know who martin fowler is...

  Message #262286 Post reply Post reply Post reply Go to top Go to top Go to top

Some questions on the article...

Posted by: vincent marquez on July 08, 2008 in response to Message #260356
Thank you Wang for the article. I think it is valuable to continually educate new J2EE programmers on the subject of scaling.

My particular question is in reference to verticle scaling. Can you give more details on why you would specifically recommend a max of a 3g heap, and which GC/JVM were you using for testing?

I've found 4-5 gigs performed adaquetly without too long of pauses, but then again I realize pauses are laregely application dependant.

30 minute pauses seem unnececssarily long. Was the 12 gig Telco App you referenced using the Concurrent MarkSweep option? I would love to see more information on this subject, and if you have more detailed results from your testing. Thanks again!

  Message #262297 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Some questions on the article...

Posted by: yu wang on July 08, 2008 in response to Message #262286
Thank you Wang for the article. I think it is valuable to continually educate new J2EE programmers on the subject of scaling.

My particular question is in reference to verticle scaling. Can you give more details on why you would specifically recommend a max of a 3g heap, and which GC/JVM were you using for testing?

I've found 4-5 gigs performed adaquetly without too long of pauses, but then again I realize pauses are laregely application dependant.

30 minute pauses seem unnececssarily long. Was the 12 gig Telco App you referenced using the Concurrent MarkSweep option? I would love to see more information on this subject, and if you have more detailed results from your testing. Thanks again!


Hi, Vincent
Just as you have mentioned that GC pauses are laregely application dependant. If your heap has too many long lived objects (just like big cache), Even "ConcurrentMarkSweep" option will show low throughput when GC happens.
But if most of your objects have short live time, increase heap size may help on the performance.

Best Regards
Wang Yu

  Message #262462 Post reply Post reply Post reply Go to top Go to top Go to top

Error about synchrnoized on static methods

Posted by: Fredi Mercury on July 09, 2008 in response to Message #260356
The worst solution is to put the "synchronized" keywords on the static methods, which means it will lock on all instances of this class


Well, this is simply not true. When you put "synchronized" on a static method (let say the class is called HelloWorld) it means that it will lock on the HelloWorld.class object (and not on all instances of HelloWorld).
Or am I missing something?

  Message #262463 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Error about synchrnoized on static methods

Posted by: yu wang on July 09, 2008 in response to Message #262462
The worst solution is to put the "synchronized" keywords on the static methods, which means it will lock on all instances of this class


Well, this is simply not true. When you put "synchronized" on a static method (let say the class is called HelloWorld) it means that it will lock on the HelloWorld.class object (and not on all instances of HelloWorld).
Or am I missing something?


Hi, Fredi
Thank you for pointing it out. You are right:
If Class A has a "synchronized" static method "M1", and a "synchronized" non-static method "M2", A.M1() and a.M2() will not compete for the same lock resource.

But if Class B has a non-static method M3 which calls A.M1(), then all instances of B will compete for the same lock resource when M3() is called.

Thanks again!

Wang Yu

  Message #262486 Post reply Post reply Post reply Go to top Go to top Go to top

Filtering the garbage

Posted by: on July 09, 2008 in response to Message #260356
There's a lot of information out there about performance of which the majority is irrelevant for most applications. For instance, did the integration of stringbuffer really make a relevant difference?

I found it particularly useful to have the insight of someone running scenarios and quantifying performance measures on a professional and daily basis in order for the rest of us to identify approaches which may actually make a real difference.

  Message #262546 Post reply Post reply Post reply Go to top Go to top Go to top

Non blocking IO

Posted by: on July 09, 2008 in response to Message #260356
The Tomcat vs. Glassfish example used to examine the benefits of non-blocking IO is terrible. They gave Tomcat 1000 threads! They even admit this is a poor choice. You can handle a similar number of concurrent requests as with Grizzly (what Glassfish uses) by tuning the thread pool of Tomcat. Grizzly alleviates the need to tune, but there is a performance penalty.

  Message #262575 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Non blocking IO

Posted by: yu wang on July 09, 2008 in response to Message #262546
The Tomcat vs. Glassfish example used to examine the benefits of non-blocking IO is terrible. They gave Tomcat 1000 threads! They even admit this is a poor choice. You can handle a similar number of concurrent requests as with Grizzly (what Glassfish uses) by tuning the thread pool of Tomcat. Grizzly alleviates the need to tune, but there is a performance penalty.



We have tried to give a small number of threads to Tomcat (100~200), but got a lot of "connection refused" or "time out" messages sometimes, which may mean no available threads for the new requests. While the CPU resources were not fully utilized (no more than 50%).

Wang Yu

  Message #262683 Post reply Post reply Post reply Go to top Go to top Go to top

Some comments

Posted by: Robert Höglund on July 10, 2008 in response to Message #260356
First of all, thank you for a great article.

Under the sentence "Single thread task problem" you have in the beginning of the text written that you ran your test on a SMP system with 8-CPUs Sparc. Later under the same sentence in the third paragraph you have written that you run your test on a 4-CPU Sparc. Write mistake?

One other discussion about memory scaling. You discourage utilizing JVM with large heaps (in your example you used a 12G Java heap) due to garbage collection issues, which may in turn be a result of a non-optimized application.

So, say that we have a application suffering from a non-optimized memory utilization and if we ignore the possibility to scale our system horizontally, e.g. use multiple system nodes, and we just have the option to scale the system vertically. Say, that our maximum workload will result in a usage of about 16G of Java heap + additional approx. 25% of non-heap and native memory, so we we end up with a process using 20G of memory (physical). Now we have two strategies for our production environment.

1. Either, we can setup one huge Java process using the -Xmx20g.
2. Or, we can setup 4 separate JVMs using 4G heap each.

What is the best strategy?

The main disadvantage with strategy 1 is the potential long delay Full GC´s. This problem is not easy to solve but it can probably be solved. For example we may test various garbage collection tuning options, for example let the "Full GC" run more frequently. This will make the total GC overhead to remain at the same level but the individual pauses will be shorter. A more certain way (and expensive way) to shorten the pauses is to utilize more CPUs/cores in our system. Now we can utilize the great advantage of the throughput collector and schedule the GC´s on multiple cores where the memory is splitted up in segments and each segment is GC´d by a separate GC thread which is scheduled on one of the CPU´s/cores. So, if we utilize 4 CPU´s and 32 cores, we will be able to utilize up to 32 GC threads in our application. If we buy fast CPU´s the GC pauses will be shorter.

The disadvandage with strategy 2 is that we have more processes to maintain. One other disadvantage is if we not use shared memory between these JVM´s the overall memory usage will be higher because of non shared class data. The big advandage with this strategy is that the Full GC pause will be shorter and the probability that the Full GC conflicts with each other (i.e. run simultaneously) depends on how often and how long the Full GC runs. This is also an GC tuning issue.

I would personally recommend the second strategy. This because several experience based reasons.
1. Redundancy.
2. Maintainability. The processes are managed separately, so you can restart one at a time if necessary.
3. Full GC pause time and probability factor (described above).
4. Troubleshooting. Have you ever tried to take a heapdump on a 4G JVM? Then you can imagine how it is to take a heapdump on a 20G JVM. It is more easier to troubleshoot a small process than a large process, in every case.
5. Hot lock´s will reduce the footprint.

Any comments?

  Message #262684 Post reply Post reply Post reply Go to top Go to top Go to top

Correction

Posted by: Robert Höglund on July 10, 2008 in response to Message #262683
It should be:
Either, we can setup one huge Java process using the -Xmx16g

  Message #262695 Post reply Post reply Post reply Go to top Go to top Go to top

Thanks, nice article

Posted by: Rick Wagner on July 10, 2008 in response to Message #260356
Thanks much for the nice articles. Please keep up the good work, and ignore the trolls that disparage your efforts. Nobody knows everything (in spite of what they claim), and information sharing is always good.

Best Regards,

Rick

  Message #262727 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Some comments

Posted by: yu wang on July 10, 2008 in response to Message #262683
Hi,Robert
Thanks for your comments.

I also prefer the second strategy.

For the strategy 1, to let the "Full GC" run more frequently maybe a good solution. But this solution may not make an effective usage of the given memory. For example, to let the "Full GC" run when the old generation is half full, which means we will waste half space of the old generation.

Thanks
Best Regards
Wang Yu

  Message #274118 Post reply Post reply Post reply Go to top Go to top Go to top

Horizontal scaling recipe here...

Posted by: Guy Pardon on November 12, 2008 in response to Message #260356
While waiting for the second part:

http://guysblogspot.blogspot.com/2008/08/unlimited-scaling-easy.html

Cheers

New content on TheServerSide.comNew content on TheServerSide.comNew content on TheServerSide.com

Dependency Injection in Java EE 6 - Part 1

Reza Rahman explores the features of the proposed JSR 299, Contexts and Dependency Injection for Java EE (CDI). When approved, it promises to be a key feature of Java EE 6. (November 2, Article)

SAML: It's Not just for Web services

SAML is an XML-based standard for exchanging authentication and authorization data between security domains. The single most important problem that SAML was created to solve is the Web browser Single Sign-On problem. Many organizations are debating whether to stay with version 1.1 or move to 2.0. This article makes observations about both options. (September 28, Article)

Programming is Also Teaching Your Team

Joe Ottinger takes a look at how people learn, and applies it to the practice of programming. He notes that understanding how people learn is an essential part of working in a programming team. (September 22, Article)

Can Java EE Deliver The Asynchronous Web?

Stephen Maryka gave us an article about the Asynchronous Web and posed a number of questions that get examined like an approach to delivering Asynchronous Web capabilities through extensions to existing Java EE technologies. (July 14, Article)

JSF Flex

JavaServer Faces Flex goal is to provide users capability in creating standard Flex components, part of flexSDK which is open sourced through MPL license, as normal JSF components. This article by Ji Hoon Kim will provide an overview of creating a simple multilingual JSF page consisting of JSF Flex tags. (June 29, Article)

The Rules of SOA - A Road to a Successful SOA Implementation

In this session Jeff explores the key characteristics of successful SOA projects. He covers some of the patterns, and anti-patterns, tool sets, and strategies that he himself learned the hard way. Last, he provides a strategy and blueprint for achieving a high likelihood of success in your SOA project. (June 23, Tech Talk)

Ari Zilka Talks About Terracotta 3.1

Ari Zilka, CTO of Terracotta, Inc., talks about the new features in Terracotta 3.1, announced during JavaOne and available now. (June 15, Tech Talk)

Enterprise Application Integration, and Spring

In this Tech Talk, Josh Long explores an integration challenge using Spring Integration and walks through the implementation, employing and expanding on the basic patterns of Enterprise Application Integration to tie together components into a function integration solution, and then demonstrates how Spring Integration helps address the integration requirements. (June 15, Tech Talk)

Google Web Toolkit: An Introduction

In this Tech Talk, David Geary teaches you: The basics of Google Web Toolkit; How to implement Ajax-enabled applications in Java; Internationalization; Hooking into the browser history mechanism; Remote procedure calls. (June 4, Tech Talk)

Just Enough Early Architecture to Guide Development

Jon Kern discusses the best architecture/technical solutions and ensure that they are repeated by all developers. By tackling the architecture up-front in a serial manner, subsequent parallel development will be much more manageable and predictable. (May 28, Tech Talk)

Productive Programmer: On the Lam from the Furniture Police

This keynote describes the frustrations of modern knowledge workers in their quest to actually get some work done, and solutions for how to guard yourself against all those distractions. Neal Ford talks about environments, coding, acceleration, automation, and avoiding repetition as ways to defeat the misguided attempts to sap your ability to produce good work. (May 26, Tech Talk)

Auto-Scaling Your Existing Web Application

Gil demonstrates how new, aggressive uses of already abundant compute capacity by common applications offer competitive value for application designers. (May 21, Tech Talk)

Automating Hibernate Mapping and Queries For Java Web Development

Chris Keene introduces WaveMaker as a new way to automate the ability to generate Hibernate classes in order to more quickly bring OR mapping into an application. (May 19, Article)

Auto-Scaling Your Existing Web Application

In this session Nati Shalom demonstrates how to take a standard Java EE web application and scale it out or down dynamically without changes to the application code. Seeing as most web applications are over-provisioned to meet infrequent peak loads, this is a dramatic change because it enables growing your application as needed, when needed, without paying for unutilized resources. (May 19, Tech Talk)

Free Book: Jakarta-Struts Live

Download the entire book of Jakarta-Struts Live and learn about Struts MVC, Tiles, the Validator, DynaActionForms, plug-ins, internationalization, and more.
(Book PDF Download)

Application Server Matrix

The Application Server Matrix is a detailed listing of J2EE vendors and their application server products, with information on latest version numbers, J2EE spec support and licensing, pricing, platform support, and links to product downloads and reviews.
(Application Server Comparison Matrix)

All Content Copyright ©2007 TheServerSide Privacy Policy
Site Map