没有了摩肩接踵的拥挤人群，没有了媒体的爆炒，没有了树上掉金币的神话，Java One在略显冷清的同时也回归了技术会议的本质。本次Java One大会最重要的主题就是“Java未来的发展方向”，Sun对Java语言本身、对J2EE平台、对开发工具都有很大的动作。国外的Java社群把.NET的进攻比喻成“帝国反击战”，而Java One当然就是“杰迪骑士归来”了——这个比喻是否意味着Microsoft和Sun本来就是一家人呢？
By Dion Almaer, Nitin Bharti, Stuart Charlton, Doug Bateman, Frank Cohen
Protesting for Accelerated Development
There was quite a spectacle Tuesday morning as you approached the Moscone Center for the morning keynote. What seemed like a protest against third-world hunger was in fact quite the opposite. A boisterous group of hippies, clad in tie-dyed t-shirts and sporting headbands were beating their drums and blowing their horns to quite a different tune: easing and accelerating development through OptimalJ, Compuware's model-based development environment. The hippies religiously handed out psychedelic-coloured buttons while chanting 'OptimalJ!!' and waved placards declaring '40% faster' and 'Visit us in booth #813'.
The expected hoopla by the big vendors was a little toned down, almost non-existent on opening day. This time last year taxis emblazoned with BEA logos and flatbed trucks wheeling around large Sun and BEA signs could be seen circling the Moscone Center. As far as spectacles go, Compuware definitely took the show on day 1. But who knows what surprises lurk in the coming days?
What You Won't See at This Year's JavaOne
- No more Elbow to Elbow crowds from two years ago. Faced with slashed budgets and disappointing reviews from past conferences, many developers opted not to attend this year's conferences. Yet those who took the plunge and attended this year's JavaOne conference will find this extremely refreshing as you can move about from technical talk to technical talk without fending off the herds.
- No more media extravaganza. You won't find Sun pushing their latest approach towards making money. Instead the focus has moved to core Java and the JCP. Developers seeking to distill fluff from stuff will certainly find this a welcome relief.
- No more Money dripping off trees. This year's JavaOne Backpacks are certainly disappointing. But we're glad Sun has finally decided to invest the money in the areas which really matter.
What you will see. exciting content...
Morning General Session: Java's Future Bright, New Sun Portals
JavaOne 2003 kicked off Tuesday morning with a general session hosted by Jonathan Schwartz and John Fowler of Sun. The overall tone of the presentations showed how far Java has matured over the years. The demonstrations looked sharp, clean, and seamless. The demonstration showed a very good performance improvement overall.
Schwartz noted that Java developers are building end-to-end applications so they expect the platforms (J2ME, J2SE, J2EE) to be more uniform than they are today. As an example, J2ME was designed in isolation from the others. Sun wants the development community to expect more uniformity across the components of the Java platform.
From solely a J2EE perspective, the morning general session covered IDE vendor support for JavaServer Faces (JSR 127) and not a whole lot more. Oracle and Borland showed very cool demonstrations of how their respective IDE's support JaveServer Faces.
Sun is releasing JavaCC (a parser compiler,) Sage, JAX-B, and JAX-P under an open-source license.
On the Web Services front Sun announced a bunch of things:
- that J2EE 1.4 would come with WS-I Basic Profile. WS-I implements a subset of the Web Service protocols (SOAP, WSDL, etc.). While J2EE will adopt WS-I Basic Profile, they will continue supporting JAX-RPC and JAXM. This tells me that developers will have a choice of Web Service APIs. One possible downside of the choice is interoperability problems.
- they indicated that JaveServer Faces and JAXB are destined to be part of the J2EE 1.5 specification.
- Sun said to expect better support for document-literal encoding in Web Services to better support interoperability with .NET Web Services.
- work being done on a new technology to improve Web Service performance. Fast Web Services (FWS) does not use XML on the wire. Instead the end-points would negotiate which encoding to use: standards based SOAP or FWS binary encoding. So if two Java applications are enabled with FWS the end-points would learn that they can handle FWS binary encoded data. That saves time on encoding and decoding XML. Sun will present this to a standards body sometime in the future.
On the marketing front, Sun is reworking its Web properties. http://www.java.com will be the new consumer portal to get the latest Java runtime. http://www.java.net will be the new developer portal to share Java code. Java.net looks pretty cool. It includes blogs, wikis, forums and a nice upload/download library.
Technical Keynote: Future Directions for the Java Platform
Tuesday's technical keynote layed out the future directions for Java SE, EE, and ME. And the message is clear. The days of Java innovation and cutting edge advancement are back. If .NET threat were likened to "The Empire Strikes Back", then Java 1.5 would be the "Return of the Jedi".
Now that the focus seems to have shifted away from Sun's desperate search for a viable business model and onto the JCP and meeting what developers want, we're seeing a whole new level of excitement. Today's technical keynote illustrated Java's new priorities of increasing Developer Productivity (the EoD or Ease of Development Initiative) and building frameworks that simplify the tasks that developers are facing everyday, in addition to the traditional priorities of improving performance, adding features, and improving JRE quality.
Developers in the audience repeatedly interrupted the speaker with spontaneous cheers and rounds of applause as new Java 1.5 (codenamed "Tiger") language enhancements where introduced, including: Meta-Data, Generics, For-Each style Iterators, Enumerated Types, Autoboxing, and out.printf(); The technical keynote also layed out Java's exciting new agenda for J2ME and J2EE, focusing on ease of use and meeting the needs of developers. The future of Java looks very promising.
TS-1102: J2EE or .NET - An Objective Technology Comparison
If you saw this session title, you might've thought "Wow, can it really be objective?". That hope would be disspelled right away, as the humourous Brit presentor started out saying "Sun actually bought the fact that I would make an objective comparison. More fool them!". The talk was very slick and funny, quite different from the "developer who just wants to code but has to present as he/she works for Sun". The presenter worked for Oracle, but he didn't plug 9iAS TOO much.
The talk was basically a "Your managers will ask you about .NET. Don't let it get into your dev culture!".
He believes that the manifesto that we J2EE developers have is:
- We believe in choice
- We believe in heterogenous systems
- We believe in competition
- We believe in open standards
- We believe in platform neutrality
- We believe in community process
He knows that Microsoft are out there GIVING AWAY technology. He showed this by throwing out candy/sweets to the audience (buying them). First you like the chocolate, then eventually you get addicted, and need it. This is how he thinks Microsoft is moving.
A large part of the talk was "showing you how to beat Microsoft". He pointed out that .NET is not J2EE. If you have to compare, compare the entire stack: Hardware -> OS -> App Server -> Component Stack. This shows that if you buy in to Microsoft you have no options. If you buy into J2EE, you can work on different hardware (not just Intel), different OS' (not just Windows [don't claim Mono], different app servers [not just Windows Server 2003], different higher level products [Portal servers etc]).
He attacked the statements:
".NET is more productive": This conception revolves around VisualStudio.NET, but that isn't productivity as a whole.... but rather one piece (good at GUI).
".NET is cheaper": Even through the .NET framework may be "free", consider the other costs: OS, Server, Tools, QoS [e.g. clustering]
He doesn't think that an app server should be bound in an OS. How can you test your app on various .NET versions?
How come Sun doesn't have an evangelist as good as this?
Java Server Faces and "The Java Way"
Craig McLanahan's Java Server Faces session was extremely well attended, completely packed with standers on all sides of the room.
From one perspective, Java Server Faces' existence really could be seen as a response to ASP.NET Web controls. This probably ignores the general developments in the community in the general direction of what JSF provides, but ASP.NET certainly served as a catalyst of promoting these efforts into a formal JSR.
This conferences seems to be pushing a subtext in J2SE 1.5 and J2EE 1.4: "we're going to take what .NET has done, and go beyond that in The Typical Java Way -- by adding opportunities for pluggability, portability, extensibility". It's "embrace and extend", Sun-style.
It's obvious, for example, that the new Java 1.5 language features are designed to bring Java to be on-par with C#'s popular features. Furthermore, JSF provides a good example of this "embrace and extend" approach: it takes a very similar page rendering model to ASP.NET, by constructing a tree of UI components, and then walking the tree to render the resulting user interface. It manages the page's state through either storing the tree in the JSP session scope, or by storing the state in a hidden form field, an approach nearly identical to the "ViewState" approach found in ASP.NET.
In terms of pluggability, JSF has the notion of Renderers and RenderKits to provide a pluggable UI description language, whether HTML, WML, or practically anything you want. This is similar to Swing's approach of splitting their GUI components into JComponent and UIComponent, where the actual painting responsibility lies in the UIComponent.
The one tradeoff to this typical Java approach of making everything as generic and pluggable as possible is that they're trying to make their APIs to be all things to all people. It strikes me that the ASP.NET approach was to develop a product and then emerge a standard out of that. The Java community Process approach is to design an (unusually good quality) specification and hope that the vendor marketplace will step up, deliver an innovative implementation of the spec, and find out where the spec could be improved the next time around.
In practice, though, I'm not so sure if the vendors actually do always step up to the plate. Sometimes they do, but sometimes Sun actually has to push customer requests down the vendor's throats by actually baking the requests into the next version of the spec. It certainly makes for interesting drama, but slows innovation in the platform.
It's striking, the similarity between JSF and the Apple WebObjects framework... yet another example of how it's taken years for industry standards to get to where Apple/NeXT was in 1996.
There has already been talk of JDO at the conference. As we all know, Sun doesn't seem to quite know where JDO fits into it's picture, but maybe it has more of a place now that their vision is to "simplify" the Java platform.
An inside source told us that the "guy who has the say" wanted to kill JDO this time last year. At a meeting with the J2EE licensee's yesterday, HE brought it up. "What should we do with JDO?". An Oracle employee said "shoot it through the head", and someone else came back with "our users are ASKING for it". Just the fact that the head honcho is talking about JDO is a good thing for it.
JDO 2.0 is about to get ramped up, and this is the time to come out with something everyone will be proud of.
BoF Session: Ask the J2EE Experts
All of the usual suspects from the various specs that make up J2EE were on tap for questions. Bill Shannon, Mark Hapner, and Linda DeMichiel answered the majority of the questions that were offered up.
What was interesting about the Session were two facts:
- People keep asking the same questions - "Can I REALLY not do File I/O in EJB?" "What is better... using an HTTPSession, or Stateful Session Beans?" ... insert other questions that have been asked since J2EE 1.1 ...
Does this mean people are dumb? no. It means that the information isn't being disseminated as well as it could be.
- Why don't we get the kind of info throughout the year, instead of just at a BoF? Throughout the talk, we basically heard (if you read a little between the lines) that:
- JAXM is basically dead, and JAX-RPC is the now, the future, and noone cares about JAXM
- JDO *may* be included in J2EE 1.5, but not in EJB 3.0. [see more about JDO below]
- JavaServer Faces will probably be in J2EE 1.5
- The JCache API is "basically dead" [is this true? Cameron?]
- If you want to do something "different", use the J2EE Connector Architecture to do whatever you want! :)
Will the new "more open" JCP will enable more info to flow to the outside world? If the Truth(tm) is put out there, then we won't have to keep hearing the same questions again and again... or maybe we will for some of them :)
There was a lot of talk about "ease of development", the recurring theme of the first day @ JavaOne. Meta data will be used quite a bit in the various areas of J2EE (e.g. EJB). People asked about the logistics of this... for example:
"It sounded like tools would take in metadata and deployment descriptors would be generated, which could be tweaked. Isn't this a problem when it comes to round-tripping? If we tweak the descriptor, what happens when we regen things?"
It came out that there is a LOT to talk about wrt how metadata will really work with J2EE. Will it just live in the class files, acting as defaults and such? or will DD's be generated? The answer: TBD.
Linda made an interesting dig at XDoclet when she said that she "had seen some XDoclet examples, where it just looked like the entire deployment desciptor had been shoved into the bean class". People cheered at that one. They are going to be VERY careful at how they work metadata into J2EE.
JDO: A couple of people asked "will JDO be part of J2EE?" and questions like that. Again, it was good to hear Bill Shannon state that he felt there could be room for it. He polled the audience, asking "Who would like to see it in J2EE?" [15 votes], and "Who would NOT like to see it in J2EE?" [2 votes].
Bill Shannon made a dig at JBoss, when a question asked to the panel turned out to be a bug (not fixed) from JBoss 3. Bill said "try using a J2EE server".
EJB: Linda was great at answering questions, and I look forward to her EJB BoF. She did give a few pieces of info that were interesting already:
- EJB QL is going to be looked at a LOT. Expect dynamic EJB-QL, bulk updates/deletes, and subselects for EJB 3.0
- Read Only entity beans? Here we come [lots of transaction isolation level work has to be ironed out for this one]
- She seems very open to making EJB a *lot* easier. EJB 3.0 will be great!
Web Services: JAX-RPC is the future. 2.0 will have support for many messaging models, more importantly async modes!
The Borland Party
After a long day of attending keynotes, sessions and walking the Pavilion, you may have found yourself in need of a little down time, a place to unwind, have a couple of drinks, and digest the day's events. The Borland Party, at Club NV in downtown San Francisco, was the perfect place to do this. Other than the high ratio of men to women (many of whom were still sporting their JavaOne passes), and the large Borland logo flickering on the wall, this was just like any other party. A live band kept the crowd going with funky renditions of popular 80's songs. As the drinks were on Borland, the bar was pretty packed and through the immense crowd, you could catch a glimpse of some well-known Java figureheads laughing it up.