My second day at the JavaOne Conference was a pretty good one. I took a later train (more sleep) and got up there with some of my colleagues just as the breakfast area was closing down. We got a quick bite to eat before heading off to our technical sessions.
Creating Amazing Web Interfaces with Ajax::
Two guys from Ajaxian.com gave a talk about creating cool web apps using Ajax. They went through lessons learned for several Ajax projects. They were:
1. Google Maps
2. Housing Maps
3. Google Suggest
4. Ta-da Lists
While talking about the examples and lessons learned they also mentioned several Ajax frameworks (openlaszlo, Ext Js, and Dojo just to name a few.
They also went through a few case studies, some with sample code. They were:
1. Moxie (offline support)
2. Y! Pipes
3. Enhancing Ajaxian.com
Moxie (not public yet) was pretty cool because it offers offline support which they say will become a big thing going into 2008. They also briefly mentioned Adobe Apollo. They mentioned the Y! Pipes is pure Dhtml and it uses the canvas feature. For Ajaxian.com they walked through examples to improve community participation by dynamically updating an article page when a person submits a comment, adding more fonts for better typography, and making the registration part much more user friendly. They also mentioned using Firebug for debugging and scriptaculous for lots of cool stuff. Lastly they mentioned future stuff:
1. Apollo
2. Offline support for Ajax apps.
3. Abundant custom rendering.
4. Microformats.
5. Fast javascript
6. "wow" factors
7. html5
jMaki: Web 2.0 App Building Made Easy::
jMaki is basically a javascript wrapper. Since it is a wrapper a good question is to ask why use it? The answer was:
1. Convention over configuration.
2. generic component libraries.
3. Tooling Support.
4. Standardized the data model.
5. Normalized javascript technology toolkit apis.
6. Server/Client Integration (standardize java code/php to javascript programming language on the client system.
It also has phobos(server side javascript) support. They have a jMaki plugin for NetBeans if you want to use it. They went through and demonstrated building a page with several widgets pretty quickly. Some of the data models they showed were tabbed views, trees, accordions, menus, and datagrids/tables. I think the best part about using jMaki within NetBeans to create Ajax applications was that you can easily use just about any Ajax toolkit out there all together in one place. So you can use a dojo widget along with widgets from any other toolkit on the same page quickly and easily.
Fast, Beautiful, Easy: Pick Three--Building Web User Interfaces in the Java Programming Language with Google Web Toolkit::
You can find the GWT here. The guys from Google talked the GWT and how it can be used to really speed up the development and test cycle when writing Ajax apps. I thought it was particularly well paced at the JavaOne conference because you write the code java and have the toolkit transform it into javascript. They also did the kitchen sink demo and spent some time talking about the principles behind Google web development (speed, ease of use, etc...). Overall it was an alright talk and it highlighted a different between Google and others in the Ajax community on how web apps should behave. Google and some others think that the user should remember that they are on the web (be able to use the back button, etc...) but that the application should be easy to use and fast. Others lean more toward trying to make the user forget they are on the web and make the Ajax apps look and feel like native desktop apps. I would tend to lean toward the latter, but who knows I may feel different by this time next year.
Stress Your Web App Before It Stresses You: Tools and Techniques for Extreme Web Testing::
This talk was given by a couple of test guys and they really went into great detail about what stress testing means and why you should do stress testing. It was a pretty good talk and they also did a demo (with lots of technical difficulties) using JMeter. JMeter is pretty cool and I'm definitely going to put in on a couple of boxes in the office and use it to pound on OYE to see if it does a better job than the other performance tool we've been using. Some important tips they gave for doing stress testing were:
1. Avoid testing the most used scenarios.
2. Pay special attention to user definition (who is using the system, how are they using it, what are they likely to do to the system, etc...).
3. Use real input data from real users wherever possible instead of using synthetic data.
Good advice and a good talk.
Effective Concurrency for the Java Platform::
This talk was about how to walk the fine line when writing java code and trying to avoid race conditions, deadlocks, and scalability bottlenecks. The speaker was Brian Goetz. He basically said that when you are trying to write thread safe code you want to get back to the basics (which some of us sometimes forget). He said it starts by documenting (using @ThreadSafe, @NotThreadSafe) whether or not something is thread safe at the class level. He said you should also document how you made it thread safe (because we sometimes forget these things later). Hey also went through drawing diagrams to figure out the synchronization policy. Then he went on to talk about encapsulation and how if you try to do it at too low a level in the code you get race conditions while if you try to do it too high the code becomes fragile. He also talked about why he prefers immutable objects because the state cannot change after construction, all fields are final, they are automatically thread safe, they are simpler, safer, and most scalable. Finally he mentioned Amdahl's law while talking about how to take advantage of multiple core machines while trying to speed up and scale out your java code. Overall not a bad talk.