ONJava: 2003 in Review
by Chris Adamson12/30/2003
Evolutionary or revolutionary? The final specification
for J2EE 1.4 arrived in November, but it will be some time before its
new features are in widespread use. With J2SE almost two years old, developers have been able to spend this past year understanding and incorporating more of the features from the 1.4 release. 2004 should see the release of Tiger, J2SE 1.5, with features such as
generics and a new for loop. It's too early to tell which features, if any, will change your everyday life the way that inner classes, AWT event listeners,
or the Collections framework did.
But who's complaining? A process of refinement suggests that Java has settled into a sweet spot. Java is now well suited for a huge variety of applications, a fact that's reflected in topics covered by ONJava in 2003. In the same week, you could see articles on a build tool and an MP3 player (Dec. 17), bioinformatics and good coding style (Sep. 24), or EJB tools and Flash remoting (Feb. 26). We don't imagine every article will appeal to every reader, but if you take a look outside of your particular field of interest, you'll see there's all kinds of activity in the worldwide Java community, something we've tried to capture on ONJava.
What follows is a collection of all of the articles published on ONJava in 2003, except for concluding parts of series that started in 2002.
Language, APIs, and Tools
Like any of the O'Reilly Network sites, our "bread and butter" articles are those that show you how to work with the language, core or third-party APIs, and tools. In a sense, these are bite-size equivalents of the O'Reilly "animal books," guides written for developers by developers. With the growth of the core Java platform, plus third-party APIs and tools like those from the java.net communities and the Apache Jakarta Project, there's quite a bit to cover.
- Making Sense of Java's Dates
- Enums in Java (One More Time)
- Regular Expressions in J2SE
- Making Java Objects Comparable
- Best Practices for Exception Handling
- Inside Class Loaders
- Analyze Your Classes
- Readable Java 1.5
- Using the Singleton Pattern
- A Java Programmer Looks at C# Delegates
- Mac OS X JNI Revisited
- Create Desktop Applications with Java-Based Web Technologies
- Stored Procedures for Java Programmers
- Java for Bioinformatics
- Creating Email Templates with XML
- Putting XML in LDAP with LDAPHttp
- XML Parsing in a Producer-Consumer Model
- Using Hierarchical Data Sets with Aspire and Tomcat
- Introduction to Text Indexing with Apache Jakarta Lucene
- Advanced Text Indexing with Lucene
- SearchAssist: A Portable Search Engine in Java
- Aspect-Oriented Programming and JBoss
- Developing E-Business Interactions with JAXM
- Creating an Online Help System with JavaHelp and DocBook
- Top 15 Ant Best Practices
- Developing With Maven
- Understanding JAXB: Java Binding Customization
- Java vs. .NET Security, Part 1
- Java vs. .NET Security, Part 2
- Introduction to the Peer-to-Peer Sockets Project
- Head First EJB Author Interview
- How to Talk About Jini, J2EE, and Web Services at a Cocktail Party
- J2EE Clustering with JBoss
- Flash Remoting for J2EE Developers
Java Data Objects
Java Data Objects (JDO) was a hot topic on ONJava back in 2002, with a critique of JDO leading to a spirited response. As 2003 dawned, there was also intense debate over another product that used the JDO name. This year, the light-to-heat ratio has improved, and ONJava offered a series of book excerpts on JDO, plus an article looking comparing JDO to container-managed persistence (CMP) for Enterprise JavaBeans.
- JDO Architectures
- JDO Persistence, Part 1
- JDO Persistence, Part 2
- JDO Persistence, Part 3
- JDO or CMP?
Open Source Java
Open source projects continue to abound in the Java space, especially in the web applications realm. Apache's Jakarta project is a particularly rich collection of ongoing projects, from supporting WebDAV to working with Microsoft Office file formats in Java.
- EJB Free and Open Source Tools Summary
- Using the Jakarta Commons, Part 1
- Using the Jakarta Commons, Part 2
- Using the Jakarta Commons, Part 3
- Nukes: the Open Source Java CMS
- Object-Relational Mapping with Apache Jakarta OJB
- Opening Microsoft File Formats in Java
- Reading and Writing Excel Files with POI
- XML Publishing with Cocoon 2, Part 1
- XML Publishing with Cocoon 2, Part 2
- Using Hierarchical Data Sets with Aspire and Tomcat
- OpenEJB: EJB for Tomcat
- Sliding Into WebDAV
JSPs and Servlets
Java has excelled as a server-side technology, so it's no wonder that this has continued to be a focus for Java developers. ONJava has presented extensive overviews and tutorials of the various web application APIs — servlets, JSPs, Struts, and tag libraries — and of the application servers that run them.
- How Java Web Servers Work
- How Servlet Containers Work
- JSP 2.0: The New Deal, Part 1
- JSP 2.0: The New Deal, Part 2
- Two Servlet Filters Every Web Application Should Have
- Adding Transactions to Servlets with JOTM
- Handling Multiple Submits
- Dynamically Creating PDFs in a Web Application
- Getting the Most Out of the Struts Tag Libraries
- Introducing JavaServer Faces
- Using JSF
- Creating Richer Hyperlinks with JSP Custom Tags
- Top Ten Tomcat Configuration Tips
- JBoss Optimizations 101
- A Custom JSP Tag Library for Dynamic Menus
Design and Architecture
Development costs go up, way up, when you discover the right way to develop an application after it's been developed and deployed. Getting it right the first time is critically underappreciated, and moreover, entirely practical. That's why design and architecture have been topics we continue to feature on ONJava.
- Qualities of a Good Middle-Tier Architecture
- J2EE Application Deployment Considerations
- Design Markers
- Web and Enterprise Architecture Design Patterns for J2EE, Part 1
- Web and Enterprise Architecture Design Patterns for J2EE, Part 2
- Space-Based Programming
- Using the Decorator Pattern
- Code-Generation Techniques for Java
- Memoization in Java Using Dynamic Proxy Classes
Testing and Reliability
Even with a solid foundation, there's only one way to know your application behaves as intended: test it. The rise of Extreme Programming and other agile processes has reinforced testing as a cornerstone of good development process, and concurrent with that, we've seen all kinds of testing products emerge, from unit-testing APIs to tools for automated testing.
- Top 12 Reasons to Write Unit Tests
- Automating EJB Unit Testing
- Black Box Web Testing with HttpUnit
- Subverting Java Access Protection for Unit Testing
- Using JMeter
- Managing Complexity: Keeping a Large Java Project on Track
- Cooking With Java XP
- Cooking With Java XP, Part 2
- Cooking With Java XP, Part 3
- Building Dependency Webs in J2EE
- Static Analysis with PMD
- Detecting Duplicate Code with PMD's CPD
- Custom PMD Rules
- Surviving Abrupt Shutdown
Having Fun
Now hear this: Java is not just about corporate return-on-investment and e-commerce solutions. It's OK to have fun with Java. Throughout the year, we've featured a series on developing media applications with the QuickTime Java API -- a series that had to reset itself after Apple made radical changes to the API in order to accomodate under-the-hood changes in their Java 1.4 implementation. ONJava has also touched on entertainment in the J2ME world, from micro-Java gaming to running J2ME on the handheld game players.
- A Gentle Re-Introduction to QuickTime for Java, Part 1
- A Gentle Re-Introduction to QuickTime for Java, Part 2
- Making Media From Scratch, Part 1
- Making Media From Scratch, Part 2
- The Return of the Blue Q
- QT Bebop
- Your First Micro Java Game
- Behind JEMBlazer: Java on the GameBoy Advance
On ONJava
The ONJava site itself has made some changes this year. For the first half of 2003, chromatic edited the site, and did a great job keeping it fresh and interesting while also keeping his day job at O'Reilly's ONLamp. In September, Daniel Steinberg took over as Editor-in-Chief, joined by me as Associate Online Editor in November.
We also edit java.net, which launched in June as an online community for Java developers. We cross-post one article a week from java.net to the ONJava front page, and some ONJava articles show up on java.net's "Today's News" section. Still, they're different sites with different goals — you'll only see O'Reilly book excerpts here on ONJava, while articles about java.net-hosted projects like JOGL belong on java.net.
Sometimes, the two sites will overlap, but we don't do "more of the same." For example, ONJava and java.net ran exception handling articles within a month of each other, but the philosophies of Gunjan Doshi's Best Practices for Exception Handling and Jim Cushing's Three Rules for Effective Exception Handling couldn't be more different. Who's right? Read both of them and decide for yourself.
ON2004
For 2004, all eyes are, of course, on the expected release of
Java 1.5 and the much-anticipated Sun Java Studio Creator, better known by its codename "Project Rave."
There's also an interesting battle for the hearts and minds of
developers between the NetBeans-derived Sun ONE Studio IDE and the Eclipse
IDE — is this just a proxy battle between Swing and SWT? And what about developers who prefer IntelliJ IDEA, JBuilder, or just using
old-fashioned xterm and emacs?
We're very interested in your feedback. What did you like about the topics we covered this year? What didn't you like? What didn't we cover at all that we should be looking at? Are there topics other than coding that you'd like to see on ONJava, topics like process, deployment, tools, standards, or even business and politics? And are we doing enough to keep ONJava a unique and special destination? Are we earning our place in your bookmarks or favorites menu?
Please use the Talkback to the article to let us know what you'd like to see ONJava cover in 2004. Moreover, if there's a topic you'd like to write an article about, send us a proposal: or
Finally, we'd like to thank everyone who helps get ONJava published -- our producer Sarah Breen, copy editor James Barnett, graphic designer Miky Vacik, and all of the people at O'Reilly Network deserve our thanks for keeping everything moving smoothly. And we'd like to thank you, our readers, for keeping up with the site, letting us know what you think, and hopefully, taking away something new each time. We wish you all the best of luck in 2004.
Chris Adamson is the editor for java.net, and is an Atlanta-based consultant, specializing in Java, Mac OS X, and media development.
Return to ONJava.com.
You must be logged in to the O'Reilly Network to post a talkback.
Showing messages 1 through 4 of 4.
-
Bug with weblogic 8.1 ?
2004-01-06 04:55:12 anonymous2 [Reply | View]
Hello, I'd like to use the GZIPFilter on a webapp that will run on Weblogic 8.1 SP1.
My app works fine with the filter (latest sources from www.jspbook.com) but fails when deployed on weblogic: browser (IE or Mozilla) displays some binary content. Using mozilla to get HTTP headers, I can see that content-length for the login page is 2602 bytes long on Tomcat (all works fine) and only 869 bytes on weblogic.
Does anyone have any idea what is wrong ?
Nico (ndeloof@capgemini.fr)





I every day come to this site to get help during
project development. If i need to know some thing
on java , I search first on onjava.com.
Keep it up.
Thanks
Moiz Ghori
Canada/Pakistan