Today I attended Java Edge, and want to share my impression while it's fresh in my memory.
Java for the cloud by Baruch Sadogursky
In 19 century every manufacturer was running their private electricity generator. Eventually people started to consume electricity provided by a few big companies. In the same way now the tendency will be to stop running our own servers and to use the computing power and the storage provided as a service. Today leading services are Google AppEngine, Amazon S3 and EC2, goGrid, AppNexus, FlexiScale. Soon there will be Microsoft Azure, and there are rumors about Yahoo Cloud.
Very important for today's crisis state of mind: fail cheap. That means that we don't spend a lot up front to buy servers, to pay for installations, etc.
Overall this area is very important.
OSGi and SpringSource application platform by Alef Arendsen from SpringSource
Most of the session Alef demonstrated trivial OSGi stuff. But there is one amazing feature which is unique in Spring - ability to easily share service instances. That means 2 or more OSGi consumers get the same service instance from the container. So they can share cache or state there. It is achieved very easily in Spring. Declare the service bean with osgi:service and wire it to consumer with osgi:reference. The service bean does not even have to be serializable, as no remoting happens behind the scene. Voila, beans are wired, with all dynamic features, like automatically rewiring consumers to another provider when current goes down.
Smoothing your Java with DSLs by Dmitry Jemerov
I'm very glad I chose this session. Dmitry demonstrated how heavy, sure-to-be-copy-pasted code can be transformed into something which a non-programmer can read and may be even write. What I liked the most, is how he prepared this session going every time one step further from the original code - first old-fashion java code, then applied fluent API patterns, then used Groovy to make it even more readable, then using JetBrains MPS to make text format to be translated into java. And the computer generated Java code looked exactly like the original code, thanks to powerful MPS declarations. Very impressive, Dmitry.
Taking control of your Maven build by Yossi Shaul
Yossi shared his experience with troubleshooting Maven builds and gave some really useful tips. In short summary it's impossible to list all the general recommendations so I'll just list some important maven commands here:
mvn help:effective-pom mvn help:effective-settings mvn dependency:list mvn dependency:tree mvn dependency:analyze -DignoreNonCompile mvn dependency:analyze-dep-mgt mvn project-info-reports:dependency-convergence mvn enforcer:enfore
The last one has to be accompanied by some restrictions in parent pom, like don't allow to rely on some dangerous defaults, etc. See Yossi's presentation for the details.
Testing Web UI by Alex Waisburd
Good overview of web UI testing tools. Focus on Selenium with a demonstration of a simple way to perform integration test from the nightly build server. I saw similar capabilities in Microsoft Team System and was really missing them in Java land. With Selenium it's possible to record necessary user actions with Firefox, to generate Java code from this recording, and to replay them when needed. Selenium Java API enables to access URLs, to make any user actions (clicks, type text) on the returned page, to wait until the page is changed by AJAX, and to check if the resulting page contains the expected elements. Wow!
General impression: interesting and well-organized event, became better from the last year. Hope to be there again in 2009 :-)
Slides are available here: http://www.javaedge.net/sessions.html