|
Sponsored Links
Resources
Enterprise Java Research Library
Get Java white papers, product information, case studies and webcasts
|
News
News
News
|
Messages: 10
Messages: 10
Messages: 10
Printer friendly
Printer friendly
Printer friendly
Post reply
Post reply
Post reply
XML
XML
XML
|
 |
Advanced State Management with JBoss Seam
Ray Hindman, writing from TSSJS Barcelona, has written up Gavin King's presentation on Advanced State Management with JBoss Seam, and represents Gavin as saying "Dependency Injection is like COBOL with Polymorphism." I'm not sure I like the comparison of DI to Object COBOL. :) Here's his writeup:Advanced State Management with JBoss Seam
"Dependency Injection is like COBOL with Polymorphism"
The main conference room is filled with over a hundred software professionals filling in for Gavin King's presentation "Introduction to Seam." Most of these delegates have a vested interest in the direction of the Java platform and are thrilled to get a glimpse of Gavin's latest contribution to the community.
After working with Hibernate, and understanding the elegance of the EJB 3.0 specification, King is poised to amplify productivity by addressing many of the fundamental issues Java developers face worldwide.
Seam is an application framework that naturally bridges the gap between EJB 3.0 and JSF and introduces several needed enhancements like managed conversations, advanced state management and business process management. Previously, developers had to rely on extremely fragile conventions to manage state across unpredictable browser navigation events.
Actually, very few interesting websites accurately manage state and distinguish actual navigation events like the browser back, next and refresh buttons. To illustrate, imagine walking into a bookstore and hearing the cashier say, please don’t do anything unexpected during the next 45 seconds, or you might be charged twice? Why should the online and personal transactions differ so dramatically?
Seam extends the interaction model to include business process management as a natural and straightforward aspect of the framework. The idea of bi-injection, or bi-directional injection of dependencies, is also very interesting and allows developers to cross validate behavior at runtime. Gavin described bi-injection as "COBOL with Polymorphism" to a round of cautaus laughter.
Gavin’s personality and passion for simplifying the developer’s experience and streamlining specifications to the core is a rare talent in the software industry today. One can only hope his enthusiasm for advancing the Java community becomes contagious.
|
|
Message #211976
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Gavin's loosing focus
Hello there! I've been in the last 2 Rio Java Summit where I had the great chance to be at a Gavin's presentation and speak with him. Last year he was talking about EJB 3.0 persistence model, and also about how developers where not happy about the way the things were going on development. I really was very pleased with his presentation. This year, well... I really think that Seam is a good framework, it does solve many problems, but attacking DI? Well, isn't the way EntityManager is injected a DI approach? I guess this is all because his little battle against Spring folks. Gavin's deserve all respect and atention, but I think his loosing focus here, attacking other great developers and their ideas.
That's just my opinion from what I've seen in his last presentation as well as recent posts and news around the net.
just my 2 cents
|
|
Message #211982
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Re: Advanced State Management with JBoss Seam
Is it me or the quoted article really sounds like "wow gavin is sooo smart and beautiful and talented and what a wonderful personality I think I want to f*ck him" ?!
OMG ponies!!!
|
|
Message #212001
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Well, it just works
IMO, Gavin King is not attacking dependency injection. In fact, he is almost suggesting it is a "silver bullet"". And I agree that Object COBOL is not necessarily a positive example of software evolution.
Anyway, I am currently using Seam for a real project (yes, one with schedules), so I can dare to offer a 3c advice instead of the usual 2c. The framework does work, in spite of some bugs still hanging about here and there, and it is definitely useful to create complex web applications with reduced time and effort.
Just a warning for those who want to try it: there are some issues that are given as hints in the release notes, but are in fact mandatory in my experience. First of all, you must have JBoss EJB 3.0 RC8 installed as a separate plugin. With a plain 4.0.4 GA, I was unable to have the framework behave correctly. Second, you must use the component.xml file to configure components, not property setting.
Once you get around these small nuisances, the beneficial effects are rather similar to those advertised. Which is far less common than it should be in the IT industry....
|
|
Message #212010
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Re: Well, it just works
I think the reference to DI is yet-another-jibe-from-jboss-against-spring. Gavin has made some great contributions to the community, but his attitude towards the spring commutters really stinks. Sure, in Spring1.x there wasn't a huge amount of innovation, companies like ATG had been pushing IoC for a long time before it arrived, but Spring 2.0 *is* really that good.
Its a real shame that the two biggest contributors to the community (Jboss and Spring IMO) can't get on, worse still is that the animosity seems to be unidirectional, Rod and co. don't seem to go out of their way to attack jboss at every opportunity.
Anyway, at least they are both making our lives as developers easier and we can only thank them for that ;)
|
|
Message #212033
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Seam is a good idea - attacking DI is not
This is really getting old. Why can't these guys just focus on discussing the merits of their technologies without putting others down? I mean, constructive comparisons are good for the community, but saying stuff like "Dependency Injection is like COBOL with Polymorphism" is just inflamitory. Gavin's smart, so we pay him attention, but does he have to be such a total a**?
|
|
Message #212039
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Re: focus
This year, well... I really think that Seam is a good framework, it does solve many problems, but attacking DI?
In the context of my talk, you'll understand that what I'm questioning is so-called "stateless" architectures (so-called, because they are rarely truly stateless in practice, they merely do ad hoc, fragile state management).
If you have an architecture composed completely of stateless components, you probably don't have real objects anywhere (state+behavior, remember). You are probably pulling and pushing the state that really belongs in your objects from the HttpSession and into your objects on every request. So what DI gives you is essentially equivalent to the ability to plug function pointers together (hence "COBOL with polymorphism).
I'm not trying to attack any particular group or project, instead, I'm making a substantive point about almost all current Java architectures (which are usually based on either SLSBs, or Spring), in what I hope is an entertaining way. Apparently I'm successfully keeping you guys entertained ;-)
And, of course, I'm proposing a constructive alternative: stateful, contextual components with -bijection-. You can think of bijection as "dependency injection 2.0" if you like.
Don't try to understand what I mean by reading out-of-context quotes on TSS. Instead, go and look at the Seam examples, and read the documentation :-)
And guess what guys: if it's OK for all the EJB haters to throw FUD and hate at EJB3 at every opportunity, its OK for us EJB3 lovers to turn round and point out where the proposed alternative architectures have their own flaws and limitations. That's fair, surely?
|
|
Message #212042
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Re: focus
Don't try to understand what I mean by reading out-of-context quotes on TSS. Instead, go and look at the Seam examples, and read the documentation :-) Point taken. I have looked at the Seam docs, and I've downloaded it and played with the examples. I think there are a lot of really great ideas in it, and I'm prototyping some really interesting stuff with it.
And guess what guys: if it's OK for all the EJB haters to throw FUD and hate at EJB3 at every opportunity, its OK for us EJB3 lovers to turn round and point out where the proposed alternative architectures have their own flaws and limitations. That's fair, surely? That's not okay either. I'm also tired of hearing how terrible EJB 2.1 is and how the only good thing about EJB3 is JPA. Whatever. I've used EJB 2.1 successfully (well, okay, not entity beans), and I really like EJB3, including the session beans.
I think that pointing out differences between technologies is good, I just *wish* it could be done with a little more respect. I mean, come on, we've seen really great ideas coming from JBoss, Google, Spring... Let's discuss and compare these without trashing one another.
Apparently I'm successfully keeping you guys entertained ;-) Yes, Gavin, you're always entertaining :-)
|
|
Message #212140
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Gavin: Question about transaction management Seam
Question for Gavin:
I have been looking at the transaction management in Seam and I have a question.
Seam uses two transactions: 1) the business logic 2) retrieving data for the view
If you use two transaction and don't add any 'offline' concurrency control, the system could be subject to all kinds of isolation issues.
If you add optimistic locking (very easy with hibernate) the system is not subject to lost updates, but it still is subject to isolation issues like phantom reads (it could happen that a different transaction has add a new item while you are between transaction 1 and 2.
What are your thoughts behind these issues? Do you think it is an issue at all?
|
|
Message #212141
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Extra: is same session used?
Is the same session used in transaction 1 and transaction 2? If a different session is used, you are also subject to non repeatable reads.
|
|
Message #212392
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Re: Gavin: Question about transaction management Seam
Question for Gavin:
I have been looking at the transaction management in Seam and I have a question.
Seam uses two transactions: 1) the business logic 2) retrieving data for the view
If you use two transaction and don't add any 'offline' concurrency control, the system could be subject to all kinds of isolation issues.
If you add optimistic locking (very easy with hibernate) the system is not subject to lost updates, but it still is subject to isolation issues like phantom reads (it could happen that a different transaction has add a new item while you are between transaction 1 and 2.
What are your thoughts behind these issues? Do you think it is an issue at all?
As long as you are using the second transaction only for _display_ of data, there are no transaction isolation issues. The actual "transaction" is over - now you are just displaying the current state of the universe (including the results of the transaction) to the user.
:-)
|
|
 |
New content on TheServerSide.comNew content on TheServerSide.comNew content on TheServerSide.com |
 |
 |
Reza Rahman continues to explore 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.
(January 21, Article)
Ted Neward is an independent consultant specializing in high-scale enterprise systems, and an authority in Java and .NET technologies. He is the author and co-author of several books, including Effective Enterprise Java. At TheServerSide Java Symposium in March, he will be presenting sessions on pragmatic architecture, ECMAScript and Scala.
(January 15, Article)
Now that Oracle is absorbing Sun Microsystems, there mixed views on what should come of the Java Community Process (JCP). While some say Oracle should become the new steward of Java and keep the JCP much as it was, others argue that it may be time to open-source this widespread language.
(November 24, Article)
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 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)
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)
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)
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)
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, CTO of Terracotta, Inc., talks about the new features in Terracotta 3.1, announced during JavaOne and available now.
(June 15, Tech Talk)
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)
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)
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)
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)
Gil demonstrates how new, aggressive uses of already abundant compute capacity by common applications offer competitive value for application designers.
(May 21, Tech Talk)
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)
Mastering EJB was one of the original and most influential EJB books in the industry. Mastering EJB III now returns with two new expert co-authors, updated for EJB 2.1 and 30% new chapters including security, integration, best practices, open source, and more.
(Book PDF Download)
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)
|
|