Why not to be all things to all people
We're visiting my parents this week, and today's topic reminds me of something my dad once said about a U.S. President -- I'm not saying which one, because this isn't about politics -- that "you can't be all things to all people, because you'll usually end up being nothing to anybody."
One of our Also in Java Today items made me think of this. In I figured out what framework authors are doing wrong, Joseph Ottinger decries the over-complexity of some programming frameworks. He looks at JSF as having some profound, difficult-to-understand concepts, which requires the JSF developer to have a "sink or swim" moment:
When people "sink or swim," they end up having to endure this moment of transformation, where all of a sudden, everything comes into clear focus and understanding is granted from on high. It works, I guess, but it's also frustrating for people who can't commit the time and energy to working with a given framework.
It's an interesting challenge to manage complexity in frameworks. The usual maxim is to make basic things easy and advanced things possible. It's easy to find examples that don't live up to one or both of these. But how much of the complexity comes from the framework, and how much comes from the problem domain? Some topics are intrinsically complex, even before you layer a framework atop them. A friend of mine recently pointed me to javadocs for representing advanced scientific concepts, for example, having a class that represents a dose of radiation that may or may not be fatal to a recipient. If you don't already work in the relevant scientific field, these classes will be meaningless to you. Taking off my editor hat and putting on my author hat for just a moment, the reason I so prefer QuickTime for Java over Java Media Framework is that QTJ embraces the intrinsic complexity of managing media, while JMF frequenly blows it off. QTJ's concept of time scales isn't the most intuitive thing in the world, but JMF blows off the concept entirely. The casual developer just trying to play a piece of media doesn't need to care, but the developer writing a frame-accurate editor cares very much.
But maybe complexity-from-problem-domain is the special case. Are topics like web applications intrinsically complex, or do we make them complex by putting too many Big Ideas in our frameworks? It's hard to say, isn't it? For every developer decrying EJB 2.1's rococo design, I can show you someone fed up with the primitive simplicity of Struts. As noted in a previous AIJT item, the slam against most enterprise frameworks' complexities is that 98% of developers don't need it. Is it wrong to support the other 2%? Or is it wrong to make the 98% have this "sink or swim" moment?
The other item in Also in Java Today it the interview Seeing Shouldn't Be Believing: Solving Java Puzzlers With Google's Joshua Bloch, which quizzes the author of Java Puzzlersabout the writing of the popular book and what he hopes readers will get out of it. "Most of the puzzles confront the reader with a simple program, and the reader has to figure out what it does. It's usually pretty obvious what the program does but for one minor detail: None of the programs actually do what you expect them to. If you can't figure out what might be wrong with a program, you run it and find out what it actually does."
In Projects and Communities, A forum message announces a major update in Project Looking Glass' documentation. The PDF document Project Looking Glass - A Comprehensive Overview of the Technology (1.4 MB) covers LG3D's design, client-side API, effects, incubator applications, and future directions.
Larry Freeman's blog Java BluePrints for the Java EE 5 SDK discusses updates to theJava BluePrints, a collection of best practices, guidelines, and applications for the enterprise developer. "The new BP Catalog runs on both GlassFish and the newly released Java EE 5 SDK Beta Preview."
In today's Forums, Renoir Sewjee has a screen sapture solution for Java3D in Re: Is there a fast and reliable Canvas3D capturing method? "An alternative method of snapping the canvas is to do a screen capture using the java.awt.Robot class. We use this method when offscreen rendering fails to work due to driver problems (ATI + Linux)."
Romain Guy introduces JXGraph: "I just committed a new component called JXGraph. It has a full fledged BeanInfo with a lot of javadoc so you should have no problem to try it. It's also ready for GUI builders as I also committed the corresponding BeanInfo and an icon. Last but not least it's a subclass of JXPanel so you get translucency for free. It also provides a special paintExtra() method to let you add extra features in the graph easily."
David Van Couvering lookas at combining Derby and Amazon S3 in today's Weblogs, in which he offers "Some jotted notes on how I might use Derby and the new Amazon S3 service together. The problem I'm having is that the S3 schema is so basic -- just keys and values. It makes me wonder if I should add a new storage plugin to Derby that runs on top of S3, so that it could be queryable."
Navaneeth Krishnan collects portlet resources in The JSR 168 - WSRP blogosphere: "Someone recently asked me pointers to blogs that usually talk about JSR 168 Portlets and WSRP. Here is the list I sent him (in no particular order)."
Kirill Grouchnikov continues a graphic makeover in Spicing up your JTabbedPane - part III: "The third part of the series that describes the additional capabilities that you can get on your tabbed panes. This entry describes single-click close of multiple tabs and text alignment on left and right placement."
In today's java.net News Headlines :
- eXo JSR 1.0 RC4
- JXInsight 4.1 - Performance Testing
- JSwat 3.8
- TrueZIP 6.0 RC1
- Jackpot - NetBeans Module
- JHighlight 1.0
- OpenReports 1.0-M2
Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.
Current and upcoming Java Events :
- March 15, 2006 - JavaUK06
- March 17, 2006 - 3rd IEEE International Workshop on Mobile Peer-to-Peer Computing (MP2P'06)
- March 17-19, 2006 - Twin Cities Software Symposium
- March 21-22, 2006 - Java Expo '06 at Sun Tech Days Madrid
- March 23-25, 2006 - TheServerSide Java Symposium
- April 7-9, 2006 - Greater Carolina Software Symposium 2006
- April 11-12, 2006 - Sun Tech Days - Sao Paulo
- April 20-21, 2006 - Sun Tech Days - Moscow
- April 21-23, 2006 - Western Pennsylvania Software Symposium 2006
- April 24-27, 2006 - MySQL Users Conference 2006
- April 25-28, 2006 - Enterprise Java Architecture Workshop Toronto
- April 28-30, 2006 - Northern Virginia Software Symposium
Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.
Why not to be all things to all people