2002 OSCON Java Wrap-Up

The following is a wrap-up report of last week's tutorials, sessions, talks, opinions, and more from the unofficial 2002 O'Reilly Open Source Convention (OSCON) Java conference.

OSCON Java Day 1: Java Tutorials

On Monday, Servlets.com and JDOM.org founder/publisher and Apache vice president Jason Hunter gave a rapid, yet day-long, thorough introduction to Java programming from 0 to 60! This intensive course taught the strengths and weaknesses of Java, writing simple but useful applications, and showed you the basic Java idioms from syntax to I/O to threading.

The course began with the fundamentals of object oriented (OO) programming. Building on this foundation, Jason then covered the Java language and programming environment fundamentals, with topics on syntax, essential classes, OO features of Java, exception handling, and using the Java Development Kit (JDK), now renamed the Java 2 SDK. The course also covered the important subjects of abstract types, I/O using Java streams, threads, and collection classes. Topics included abstract classes and interfaces, character streams, byte streams, serialization of objects, employment of stacking streams, creating threads, thread synchronization, and the new collection classes.

The JBoss Group's Andreas Schaefer gave an afternoon tutorial on the new JBoss 3.0: The Next Generation in J2EE. After the big success of JBoss 2.2 and 2.4, which have already marked the leading edge of J2EE application server development, JBoss 3.0 (nickname: Rabbit Hole) took another leap to a new frontier where no man has gone before.

JBoss 3.0 delivers clustering as well as a fail-over, but also provides a framework to a real 24x7 usage. JBoss enables you to deploy new services or update the code base without bouncing the server. Finally, the JBoss kernel design allows the client to tailor JBoss to fit in any environment (like Embedded Devices).

Andreas' presentation started with an introduction to the features of JBoss 3.0. Then it introduced you to JMX, because it is the basic framework of JBoss, and discussed the add-ons in JBoss to have a 24x7 framework (recycling loaded classes, managing dependencies between loaded classes, and having a loosely-coupled system). Moreover, the tutorial went into the core of JBoss and its services, such as JMS, Security, CMP/CMR, etc. Finally, Andreas discussed how to configure and manage JBoss. This included an introduction to JSR-77, which enables a client to manage a J2EE application server in a vendor-neutral way.

OSCON Java Day 2: More Tutorials

Tim Boudreau and his project team began Tuesday's tutorials with an overview and breakdown of Sun's open source NetBeans project. NetBeans is a sophisticated language and design approach, with an interoperable Integrated Development Environment (IDE) and application development framework. You can think of it as a scaled-down version of Sun's commercial Forte for Java (now Sun ONE Studio). Anyway, Tim began with an introduction to its method, API and more. This was followed by a detailed architectural tour of NetBeans.

In the Q&A, I asked the project team about how the detailed, file-structure influenced metadata code of NetBeans differs from BEA's Cajun or WebLogic Workshop products. Specifically,
the NetBeans metadata calls out and encapsulates various Java API and components, such as
Servlets and EJB, using a common JavaBean component design pattern model. This is strikingly similar to the Java Web Services (JWS) file tags found in Cajun, and is also a Java Specification Request (JSR) to become a standard in the JCP.

According to Tim, it's possible BEA did this as a token gesture in order to establish that it's involved with Java Web services. BEA has insisted JWS will become a standard others can use, once established. According to BEA, JWS is meant to be a way for Web-services developers to apply the Java 2EE API without having to be experienced with the API. It remains to be seen how
this will play out, but it's interesting to note that NetBeans and Cajun seem to have
similar mechanisms, with different approaches.

After the break, the NetBeans tutorial continued with a focus on an application from the XEMO open source project. Project lead William Will discussed the motivation, reason, methodology, architecture and more behind XEMO, which is built on top of the NetBeans framework. XEMO is a musical note composer, editor,and player.

Using Music XML and other XML Web services, the user can take musical notes and compositionsand create and/or edit those notes by instrument, measure and more, from a visual standpoint. Then, the user can play back the created/edited musical code using metadata that calls out the Java Sound API available in NetBeans. The tutorial concluded with specific code examples on how this
all comes together and works. William said that the next goal for XEMO was to allow the musical composition to be created/edited using numercal metrics or value. Additionally,
beyond Java Sound, William hinted at the possible addition/use of a Quicktime option, and more.

After lunch, I sat in on the last half of Jason's tutorial on the new Java 2SE version 1.4. Jason covered the Java NIO (or New I/O), which is the name for Java's faster and more powerful input/output class hierarchy. Then he covered Java Preferences, which store, retrieve, and modify user preference and configuration data.

Next, Jason discussed Assertions, which are a mechanism to ensure program correctness using assertion statements within the code. Because this feature is built into the JVM, there is no extra runtime overhead! Here, he explained how assertions work and how to make the most of this new capability.

Finally, Jason concluded with a lenghty talk on Logging. Logging is, naturally, a mechanism to write program output to log files or other tracking systems during the course of program execution. In this last part of the tutorial, Jason illustrated the use the new Logging API and how it compares and contrasts with the Apache Jakarta project, log4j.

OSCON Java Day 3: Java Sessions I

The 2002 O'Reilly Open Source Convention (OSCON) and its unofficial open source Java conference went into full swing with Wednesday's sessions: "Open Source & Java: Lessons From the Apache Experience," "Pay As You Go -- MVC in JSPs and Servlets," "JDOM Makes XML Easy," "JUnit Tesing," "High Performance Servlets With Apache 2.0," and "Configuration Management with Ant, Bugzilla, and CVS."

Mac convert James Duncan Davidson gave the first of the day's sessions on open source and Java. "Open source software has been a media darling the last few years, especially with attention being focused on the Linux-based startups. However, there's been a large amount of activity around Open Source Java at the Apache Software Foundation," said Davidson. Over the past few years, there have been lessons learned about open source as well as collaborative Java development in this context. This talk explored these lessons, and the issues that created them. He used Jakarta Tomcat's evolution as a specific example, as it evolved from one adopted code base to another (i.e., Catalina), and alluded to Sun's involvement with Apache during this evolution.

Next, Larry Karnowski of OpenNMS.org talked about how Java Server Pages (JSPs), with their simple, script-like syntax, are easy to learn and understand and are well-suited for delivering features quickly. However, JSPs do not use the Model View Controller design pattern (MVC), which is important in user interface development for long-term maintainability and reusability, but requires much more developer expertise.

In order to benefit from the rapid development cycle and low expertise requirements of writing JSPs, but to allow code to scale and be maintainable through MVC design patterns, developers should use coding strategies that take advantage of JSPs' high-level aspects in early iterations, but easily migrate to more scalable joint JSP/servlet MVC models when that extra cost is warranted. According to Larry, the "paying as you go" features are quickly added, and only the JSPs that truly require an MVC architecture get that treatment and incur that cost.

After lunch, JDOM.org founder and Apache's representative to the Java Community Process (JCP), Jason Hunter discussed JDOM. JDOM (JSR-102) is an open source Java API for processing XML documents that's both simple and convenient. At a high level, it's similar to the DOM, but since JDOM was designed specifically for Java rather than for multiple languages, it feels much more natural and "right" to Java programmers.

For both beginners and experts, Jason showed how to use JDOM to easily and efficiently read and write XML documents from your Java programs while automatically maintaining well-formedness. Jason also covered and explaned the new features added in Beta 8. He ended with a discussion of his experience in putting JDOM through Sun's Java Community Process (JCP) as a Java Specification Request (JSR) –- the first open source project to become a JSR.

Next, O'Reilly's Ant: The Definitive Guide author, Jesse E. Tilly, talked about the open source Java testing frameworks, such as the JUnit project. Testing for bugs is an important development endeavor. For more, check out Jesse's other session at the end of the day, which included discussion of Bugzilla.

Based on his experience working for Apache and VNU Business Publications, Pier Fumagalli talked about his preference for a Tomcat Servlet container code base that's fully compatible with the Apache 2.0 Server, which would support high-performance Servlets. After joining VNU, he had to face one problem: how to deliver 10 million Servlet-generated pages a day without massively scaling hardware.

The solution was the adoption of Apache 2.0 and a new approach to Servlet Engines. Using parts of Tomcat 4.0 and embedding them directly into the multi-threaded architecture of Apache, his team was able to have performance increases on the order of 500%, compared to closed-source and highly priced alternatives. In this session, Pier introduced the problems related to having high loads on Servlet-based sites, the possible solutions when scaling on hardware is not an option, and how to implement them in their environment. He also commented on his hopes that Tomcat does not becomes a full-fledged, options-heavy Web containter with EJB, JMX, JNDI, and more.

Instead, he believes that the single file installation and optimized performance should not be sacrificed for these, and that EJB, JMX, JNDI and others can be called through optional sockets. Apparently, as Tomcat continues to evolve, this debate is getting louder, as Pier's viewpoint differs from the current Tomcat viewpoint.

Jesse E. Tilly rounded out the day's sessions with "Configuration Management With Ant, Bugzilla, and CVS." In it, he first discussed the five types of open source projects: malevolent dictator, benevolent dictator, republic, democracy, and anarchy. Then, he described the advantages and disadvantages of each, touting the best kinds of open source projects: benevolent dictator (i.e., Jakarta) and republic.

Tilly used this as a springboard to discuss the open source development, build, test, and de-bug processes. Essentially, this presentation gave an overview of a configuration process that works. "No theory is involved, just battle-tested facts. Those other systems work because they're built on time-tested methodologies that manage projects well. The same can be said with this methodology; it's just that this particular implementation costs a lot less."

OSCON Java Day 4: Lightning Talks

The unofficial O'Reilly Open Source Convention (OSCON) Java conference on Thursday was on the lite side, with only a session on Java Lightning Talks. Lightning Talks are a forum for Java developers, programmers, and advocates to talk on any desired topic in a span of five minutes for each participant.

Today's participants included Mac convert and author James Duncan Davidson, Apache vice president and JDOM.org founder Jason Hunter, Sun's Open Source Diva, Danese Cooper, and representatives from JBoss. James gave a rehash of the significance of Apache and how it functions as an open source community. Jason discussed his experience with JDOM. Danese spoke about the status of open sourcing Java at Sun. Unfornately, the status is status quo. JBoss responded to Danese in regards to JBoss as a solution. Then, JBoss went on to talk about how open source projects seem to waste time on re-creating and implementing code bases that already exist in another form (another way of saying "reinventing the wheel") instead of focusing on indended project goals.

Afterwards, the audience participated in a more informal open source Java community town hall meeting with Q&A between the audience and the aforementioned speakers. Topics included Python vs. Java, and language bias shouldn't exist, because there's a place for each language, depending on the domain of the problem. Others came up as well. The final topic seemed to be on open source Java: what aspects of Java should be open sourced, etc.? Certainly, the reference implementation should be open source. In order for this to possibly happen, Danese invited interested parties to email her at danese.cooper@sun.com. She invited emails on your views for open source Java from Sun, including why Java should be open source and the value it can bring to Sun. Over time, she plans to collect as many responses as she can get, and share these with Sun's hierarchy.

OSCON Java Day 5: Java Sessions II

The unofficial 2002 O'Reilly Open Source Convention (OSCON) Java conference wrapped up on Friday with four sessions on NetBeans, Tomcat Clustering, JBoss, and Java for Mobile Devices/Mod_Perl.

NetBeans project lead Tim Boudreau showed how to build applications based on the NetBeans Platform. If you program in Java, you are probably familiar with the NetBeans IDE. What you may be less familiar with is using the NetBeans core to build your own desktop applications.

This session was supposed to have covered the NetBeans APIs; instead, it focused on some examples of how you can build more robust applications faster, using the NetBeans Platform to provide the basic infrastructure any large desktop application needs. Also, Danese Cooper showed up to explain the status of open source Java at Sun -- pretty much a repeat from yesterday's Java Lightning Talks session. She did add that that Sun is open to having the TCK available for free to non-profits, organizations, and the like.

Next, Jason Brittain of CollabNet talked about the Apache Jakarta Tomcat 4.0 clustering models and implementations. Eventually, one machine just isn't enough for high-traffic sites that use Java servlets. Regardless of whether it's for better scalability or for fault tolerance, eventually, your servlets will need to run on more than one server machine. To help you set up and maintain a clustered Tomcat 4 system, you should understand some of the details of the models and existing implementations of Tomcat 4 clustering infrastructure software. In addition to this session, you can read the following article: Clustering with Tomcat.

After lunch, Dain Sundstrom of the JBoss Group showed how you can improve performance and cut costs. JBoss has always been focused on making J2EE development painless and efficient. The most recent JBoss release, JBoss 3.0, includes several features that highlight how the efficiencies of J2EE (including a decrease in coding time, testing time, and administration) can be fully realized. Certain core JBoss features were discussed in detail with regard to providing an example of how to develop with these efficiencies in mind, including CMP 2.0, clustering,
hot-deployable services, and JMX.

And to cap it all off, Gunther Birznieks of eXtropia talked about the status of Java for mobile devices using Java 2ME. However, Java 2ME, MIDlets, and the like are still immature and insecure. He suggested the use of Mod_Perl for accessing certain classes' functions that could reside on the middleware, as opposed to a VM on the device.

Conclusion

I hope you had the chance to attend and enjoy this year's unofficial Java conference. It's my wish to see an official Java conference starting next year, given this year's excitement, standing-room-only sessions and much, much more. If there's anything to take away from this year's unofficial Java conference, it's that open source Java is here to stay -- regardless of Sun's current positioning on it. Of course, we can change this, thanks in advance to Apache, JBoss, JDOM, and other open source Java community members, as well as those who want to see the vision of open source Java realized, including Sun's Open Source Diva, Danese Cooper.