// JSON-LD for Wordpress Home, Articles and Author Pages. Written by Pete Wailes and Richard Baxter. // See: http://builtvisible.com/implementing-json-ld-wordpress/

JavaOne and Oracle’s OpenWorld 2010 Conference, Initial Thoughts

I’ve been at Oracle’s combined JavaOne and OpenWorld events for two days.  I am here as both an attendee, learning from a variety of experts, and as a speaker.  Of course this is the first JavaOne since Oracle acquired Sun.  I have been to several JavaOne conferences over the years so I was curious how the event might be different.

One of the first changes that I’ve noticed is that due to the co-location of these two large conferences the venue is very different than when Sun ran JavaOne as a standalone event.  The time between sessions is a full half hour, probably due to the fact that you may find yourself going between venues that are several blocks apart.  I used to think that having getting from Moscone North the Moscone South took a while.   Now I’m walking from the Moscone center to a variety of hotels and back again.  Perhaps this is actually a health regime for programmers!

The new session pre-registration system is interesting. I don’t know if this system has been routine with Oracle’s other conferences but it is new to JavaOne.  Attendees go on-line and pre-register for the sessions they want to attend.  When you show up at the session your badge is scanned.  If you had registered you are allowed in.  If you didn’t preregister and the session is full you have to wait outside the room to see if anyone who registered fails to show up.

I think I like the system, with the assumption that they would stop people from entering when the room was full.  At previous conferences it seemed like popular sessions would just be standing room only, but that was probably a violation of fire codes.  The big advantage of this approach is that it reduces the likelihood of your investing the time to walk to the venue only to find out you can’t get in.  As long as you arranged your schedule on-line and you show up on-time, you’re guaranteed a seat.

Enough about new processes.  After all, I came here to co-present a session and to learn from a variety of others.

Paul Evans and I spoke on the topic of web services and their use with a rules engine. Specifically we were using JAX-WS and Drools.  We also threw in jUDDI to show the value of service location decoupling.  The session was well attended (essentially the room was full) and seemed to keep the attendees’ attention.  We had some good follow-up conversations regarding aspects of the presentation that caught people’s interest, which is always rewarding. The source code for the demonstration program is located at http://bit.ly/blueslate-javaone2010.

Since I am a speaker I have access to both JavaOne and OpenWorld sessions.  I took advantage of that by attending several OpenWorld sessions in addition to a bunch of JavaOne talks.

My main Oracle-centric interest has been to hear about the Oracle DB’s native triple store and semantic technology support. I went to two talks that discussed its use and performance.

If you’ve read my blog before you’ve probably noticed that I have a strong interest in the semantic web.  Hearing about a fundamental aspect, native data storage, being supported by Oracle was heartening.  In one of the sessions a variety of companies described how they were using the semantic support in Oracle to solve interesting problems within their domains.

There is a lot of power to semantic technology and the organizations that spoke are at the forefront of exploiting it.  I believe there is a lot of opportunity ahead for advancing and leveraging this paradigm.

Several other sessions stand out in my mind for different reasons.  A session looking at HTML 5 and Java focused on the road ahead for browsers as they mature to create a robust and high-performing HTML 5 environment. Many parallels were drawn between what these products (Internet Explorer, Firefox, Chrome, Safari,) need to do and what has been done by Java’s engineers over the last 15 years.

The bottom line, Java should form the basis for HTML 5 support by tweaking its development options (like having native JavaScript support).  I get the argument but it really depends on the vendors recognizing an advantage working with Oracle as a way to reduce the vendors’ own R&D if they created proprietary solutions.  As a developer I’m not sure that I’m going to lose sleep over this.

I attended a session on supporting asynchronicity in Java-based web services. The presenters covered some details about JAX-WS support for asynchronous services and then went into a case study based on work they had done.  My main take-away was how they solved the complexity of dealing with two endpoints that could come and go while requiring the maintenance of state for two messages (e.g. the asynchronous request and response).

Their solution was to use message queues; essentially using the message environment for is key use case – asynchronous message delivery.  I don’t think the solution surprised me.  I’m not sure that I would come up with anything different.  Any other approach would probably involve creating a lot of infrastructure that would look a lot like what a messaging system does out of the box.

A session on Hibernate’s Validator Framework, the RI for JSR 303, bothered me. The use of annotations to simplify the coding of constraints for values is great.  However, a lot of the validation rules were just that…rules, as in business rules. Every example shown during the session, and really in most any article I’ve read on the topic, depicted the rules as hardcoded in the source code.

As far as I’m concerned, in the absence of a rules engine there is very little improvement moving from:

private String ccNumber;
public void setCcNumber(String ccNumber) {
     if (amount < 75) {
          throw new ValidationException("You must spend $75 to use a credit card");
     } else {
          this.ccNumber = ccNumber;
     }
}

to the validator approach:

@CreditCardMin(75)
private String ccNumber;
public setCcNumber(String ccNumber) {
 this.ccNumber = ccNumber;
}

In both cases, the magic cutoff value, $75 in this example, is buried in the code. Many validation rules like this are really business rules that should not require a rebuild or redeployment of the application in order to be changed.  In reality the amount and the business logic may need to change, such as allowing gold-level customers to always use a credit card.  Such control is best handled in a rules engine.

I would like to see a good discussion of bean validation where the business rules are actually handled outside of code.  That would be a much better example of the power of this particular framework.  Such a demonstration would also help set a good example for developers, showing that the program’s functionality should be separate from the decisions being made.

In other words, the bean knows that it may need a credit card number.  The bean should not know anything about the rules regarding when a credit card may be used.  That decision is subject to change and may involve arbitrarily complex decision criteria best left to a rules environment.

All in all it has been an informative couple of days.  I’m looking forward to two more days of in-depth Java and Oracle exploration!

Tags: , , , , , , , , ,

Leave a Reply

You must be logged in to post a comment.