I attended Sun Developer Day in Sydney today. Compared to the
three-day extravaganza of last year, this was a much simpler affair, with just eight short sessions over a single day.
The
sessions were as follows:
1. Keynote (Reginald Hutcherson)
2. JavaFX (Angela Caicedo)
3. Java, Dynamic Languages and Domain-Specific Languages (Lee Chuk Munn)
4. MySQL (Peter Karlsson)
5. OpenESB (Lee Chuk Munn)
6. Virtualization (Peter Karlsson)
7. Developing and Deploying apps with Java SE 6 Update 10 (Angela Caicedo)
8. DTrace (Peter Karlsson)
I'll organise my feedback grouping the topics by speaker, since they specialise in related fields.
Reginald Hutcherson is "Director, Technology Outreach" at Sun and seems to have been with the company forever. I remember hearing him speak at a Sun event more than 10 years ago. He provided an overview of the topics that would be covered over the rest of the day. The key takeaway from his speech was the central role of the Java Virtual Machine. On one side, there are multiple languages (including the increasingly popular scripting languages) that are capable of running on the JVM. On the other side, the JVM has been ported to "all the screens of our life" - computers, TVs, mobile phones, GPS devices, etc. Java the platform, as has always been emphasised by Sun, is more important than Java the language.
Angela Caicedo
spoke about JavaFX and later about
new options to develop and deploy applications after the innovations in Java 6 update 10. I didn't get the impression that anything very major had occurred in the JavaFX world since last year. My reaction to all these RIA tools (Flash/Flex, Silverlight and JavaFX) is, why bother? JavaScript-based tools are becoming so much more powerful these days that we can build astoundingly rich applications using nothing more heavyweight than JavaScript and HTML. So I don't know where JavaFX will go. I commented last year after Jim Weaver's demo that the declarative JavaFX code quickly ends up looking like the dog's breakfast. I haven't seen anything this year to change my opinion of JavaFX.
[Out of curiosity, I tried downloading NetBeans 6.5 later in the evening and was more than a little disappointed to see that it had no JavaFX support on Linux, only on Windows. Why not? As an Ubuntu user, I'm offended that this excellent platform isn't deemed a first-class development environment.]
Angela's
second talk (on the latest options for developing and deploying applications since Java 6 update 10) was, in my opinion, the best session of the day.
Minor revisions (called updates) don't break APIs, but update 10 is still
quite revolutionary.
Where do I begin? First, my personal background - unlike most Java developers in the industry today (who build
web applications), I have actually built Swing, Applet and Java WebStart-based applications for a number of organisations. And I've been personally disappointed in the fact that these technologies did not become more popular.
With Java 6u10, perhaps some of the reasons for their relative unpopularity have gone away (but it may be too late to get the developers back).
In a nutshell, Sun has now unified the development and deployment of applets and Java WebStart applications, cleaned up the browser-JVM architecture and improved the bidirectional interoperability between Java and JavaScript. I can only ask Sun, where have you been these ten long years?
JVMs no longer have to share process space with the browser, and different applets can run in different JVMs if required. This reduces the impact of an applet crash on other applets and on the browser. Note this: the crash of an applet no longer results in the browser crashing, but more importantly,
one can close the browser and have an applet continue to run. This is big stuff. When one then tries to close the applet, one is prompted with the choice to save the applet as a desktop icon. In other words, it's no different from Java WebStart. This is really powerful and cool.
There are a number of other improvements and optimisations. The JRE is now broken into a number of smaller components, and a more lazy download strategy is employed under the covers to reduce the startup time of applications. There is a more modern look and feel to replace the dated Metal appearance. Components are now rendered using scalable vector graphics rather than bitmaps.
I'm most excited about the three major improvements I listed earlier. I can see a very elegant way to implement
SOFEA using these innovations. The MVC controller on the client should be an applet, running in a persistent JVM outside the browser process. The Application Download will start the applet and configure it with the wiring logic for the application's Presentation Flow. The controller will handle not only Presentation Flow but also Data Interchange with services hosted by remote servers. Perhaps a variant of Spring Web Flow suitably modified for the client side will be a good model for Presentation Flow. Server-side UI resources in the form of Freemarker or other templates could be pulled by the controller and populated using appropriate models. With the seamless interaction between Java and JavaScript, many things are now possible.
Lee Chuk Munn spoke about Java, Dynamic Languages and Domain-Specific Languages and in a later session, about OpenESB.
There wasn't anything very new in the session on scripting languages, but it may be worth repeating the benefits of scripting.
Scripting helps build an ecosystem for an application. Applications become platforms. Witness plugins for Firefox. Firefox is no longer just an application. It is a platform by itself, because of the JavaScript-based plugins that it supports. Scripting also enables domain-specific applications, such as Mathematica.
[I hadn't heard of Lua before. This is a scripting language for gaming.]
In his second session, Lee worked through an example to demonstrate the features of OpenESB. I must confess I'm a bit of an ESB skeptic. To be fair, the ESB feature that was demonstrated was plain BPEL functionality, so it wasn't so much an ESB as a BPEL engine. I have no objections to BPEL engines as long as they don't pretend to be "SOA fabric in a box", which is my grouse against ESB products.
The main feature of OpenESB as a BPEL engine seems to be its support for JBI (Java Business Integration). Put bluntly, JBI seems to mean a WSDL-defined interface on both the service consumption side and the service provision side. Lee demonstrated how a process could be graphically mapped using NetBeans. The WSDL on the service provision side made the entire process look like a standard SOAP service. On the other side, the actual implementation of business logic was encapsulated in a Stateless Session EJB (ugh!) The interface to the EJB was once again a WSDL. The demo worked quite well, showing not only how logic could be placed in components but also in the process definition itself. However, I fear that powerful tools that simplify service and process development, when placed in the hands of developers without a sufficiently "SOAphisticated" understanding of concepts, will lead to horribly designed applications. (And why are we still wasting our time with EJBs?)
Peter Karlsson gave three talks,
one on MySQL,
one on virtualisation and
one on DTrace. Unfortunately, his areas of specialisation (other than databases) are not of great interest to me personally, so I'll just give a brief run-down of what he covered.
My biggest takeaway from the MySQL talk was that MySQL supports multiple "storage engines", each optimised for a different task. In the same database, one can allocate different storage engines to different tables depending on usage. Examples:
MyISAM is useful for tables that don't require transactional integrity. This is the default, and is most useful for web and data warehouse applications.
InnoDB should be used for tables that do require transactional integrity, but because of the extra performance overhead, should not be used for other tables. Slashdot, Google, Yahoo! and Facebook are InnoDB users.
Archive should be used for log and audit trail type tables, because of its native compression and high insert performance.
In-memory should be used for scratch tables (working storage).
I was a bit confused during the virtualisation talk because there were some generic virtualisation techniques being described, but also some Sun products, and I wasn't always able to tell them apart.
There are four broad categories of virtualisation:
1. Hard partitions (e.g., Dynamic System Domains).
2. Virtual Machines (e.g., Logical Domains, Solaris xVM x86 hypervisors, VirtualBox).
3. OS Virtualisation (Solaris Containers, Solaris Trusted Extensions, Brand Z Solaris Containers, Trusted VirtualBox).
4. Resource Management (Solaris Resource Manager).
My takeaway from this was that VirtualBox was something worth looking into as a developer. This is a Sun product that is Open Source.
Peter Karlsson's last talk was on DTrace, in which I have not the slightest interest. This is a Solaris-based system tool, I understand, and provides relatively low-overhead diagnostic capability. It is reportedly safe for use in production environments because it is supposedly zero-overhead (though Peter did warn about some specific settings that had high performance impact), because it cannot change data, because it cannot cause crashes and because it eliminates the need for post-processing of data.
There are Probes and Providers and a scripting language called D. Traces can be set on activities using a predicate-based expression language. The approach reminded me of AOP (Aspect-Oriented Programming).
Overall, I was satisfied with the coverage of the day's topics, but I have a lingering feeling that the action in the Java world has moved away from Sun.
NetBeans => Eclipse
GlassFish => Tomcat
EJB => Spring POJOs
ESB, SOAP => REST
JavaFX => JavaScript/Ajax libraries (AJAX is now so common it's now spelt Ajax)
It'd be good if Sun could drag itself closer to where the action is, instead of seeming to play in its own little sandpit.
I'll be at JavaOne in two weeks, and I'll report on my impressions there.