The day starts with Nokia's key note. The theme for the day seems to be mobiles (and Nokia). Being a Finn, I was happy to see to see Nokia in an extremely visible role throughout the conference and up on the stage, but to tell you the truth, besides the published numbers, the key note wasn't that impressive. I've been saying the same thing before, but I'll say it again: Java is a good compromise and it scales well. Those are the biggest reasons why its so popular in devices and server platforms where vendors can deploy the JRE with the product without needing to worry about users needing to download it separately. The highlights of the keynote for developers are MSA (Mobile Service Architecture) and 3rd version of series 40 which includes 3D graphics, camera support and local files among other things.
I spent most of the day in various JSF related sessions. Sun's JSF session was pretty standard sales pitch with some impressive JSF implementations, but nothing really new. Craig McClanahan's Shale - the next Struts however was very very interesting, and while it's still in development, I can say that Craig has probably done it again. It's an overall nice framework leveraging a lot of stuff from others and most likely will become a de-facto standard framework to use with JSF. Craig also dropped some hints that the ideas in Shale will be merged into JSF 1.2. The next session about Spring was also interesting, though I'm quite familiar with it already.
In the evening, we had a get-together with MyFaces and Oracle ADF folks. I was happy to meet all the guys in MyFaces project and we had a lot of interesting talks about JSF and web frameworks in general. I forgot to highlight in Day Two's post Oracle's announcement on them joining MyFaces project and contributing all of their nice ADF Faces components to MyFaces project. Big and great news!
---
Day three
Pertti Korhonen: Make it Mobile: The Power of Mobile Java
1.7 billion mobile users in the world today
708 million mobile Java device units shipped by June 05
>300 million devices based on Series 40, 60, 80 platforms to ship from Nokia by December 05
635 mobile Java mobiles
Mobile Java base to reach 1 billion in 06
Industry Collaboration to de-fragment Java
Mobile Service Architecture (MSA)
- Simplify mobile Java standards
JSR-248 for simplifying existing APIs
JSR-249 for new and advanced APIs
3rd version of series 40:
3D graphics, local files, location information, SVG, camera
Use the prototype SDK
MIDP 2.0: enhanced UI, support for richer, more insteresting applications
SNAP mobile: community enabled, multiplayer gaming
SNAP server runs on Sun platform
CDC 1.1 with full JSR-248 compatibility and support on series 60
availability of full JSR-249 implementation
As much of J2EE platform on mobile as possible
JSR-232 OSGi Mobile Expert Group
E2E architecture for next-generation mobile Java
- middleware on the client to add value to mobile
Next-gen mobile Java in action
Eclipse IDE
Nokia developer's suite for next-gen mobile java
IBM power of mobile middleware
Forum Nokia gives developers mobile business opportunities
Preminent client
- reduces fragmentation by automatically detecting device and presenting only device-
// NOTE what's their strategy on VOIP?
JavaServer Faces
Lots of good starter applications in Java Studio Creator
Business Objects - Crystal Reports XI
ESRI ArcGIS - impressive mapping components
Otrix - AJAX enabled components
- dynamic lazy loading with big tree/table support
Software FX - CharFX Components
Sun Web UI components - more in Creator2 early access
Shale - the next Struts
// get the slides for this presentation
client/server side validation, but with s:scriptValidator
commonsValidator supports both, f.ex.
Spring and Tiles integration
Share and Spring, using spring's vriable resolver
Add shale-spring.jar to WEB-INF/lib
Use share-core.jar to use Shale without Spring integration
Spring integration lets use Spring beans as JSF managed bean - very cool!
dialog-config just like faces navigation config but for dialogs instead of individual pages
Retro views
use html for your views
Define components in XML
tie html elements to components with jsfid
better, easier for designers to work on your html code
Shale copies Tapestry in that, Clay is tapestry-like view model
Two modes
Preview - used by developers and graphic artists e.g. http:// .../logon.html
Runtime - used by developers and end users e.g. http://.../logon.faces
in clay-config.xml you can configure, override default validator etc. component values
Remoting
remotely invoke server-side methods that return XML
Shale is actually implmented as a filter
remote calls mapped to .remote
Web flow
modeled after Spring's web flow
- more intuitive for JSF developers
- not as powerful (intentionally)
dialogs
- subdialogs
states
- action states
- view states
transitions
in dialogs you can override the outcome
dialog-config.xml
invoking dialogs
- enter dialogs with the JSF expression language
A shale navigation handler process the expression
Shale stores a status object in the session map
transitions can be outside of any state
Shale has a primitive failure handler for back-button w/ submit
using a shaletoken
what about url and bookmarking?
What about multiple windows and dialogs?
Spring and JSF: Synergy or superfluous
// get the slide of this presentation
Spring is a layered frameowrk
loC Container - dependency injection
AOP framework
Non-invasive
application code has no or minimal dependency on Spring
Focus on POJOs
Facilitates testing
address end-to-end requirements
provide an alternative to traditional EJB
- or a better way to access EJB
facilitate OO best practice
simple bean lifecycle capabilities
postprocessing - extending the container
bonus beans - propertyconfiugrer for setup, messagesource
inversion of control with dependency injection
org.sprignframework.faces.JSFVariableREsolver
Decouple persistent API details from business logic in service objects
easy to mock dao interfaces
dao interfaces should contain:
- finder methods
- save methods
- aggregate function methods
Also known as the repository pattern
TopLinkDaoSupport - check out TopLink project
Shale integration / acegiSecurity integration
jSF technology is usable without htelp, but
spring gives you:
persistence and transaction model
IBM general session
continuuing to innovate for our customers success
-service data objets
-java realt-time programming
-aspectJ
AspectJ as a way to simplify programming and make code more maintainable
Robocode as an example!
MBean api for controlling robots - interesting
if you capsulate feature as asepcts you can add event based behavior into your classes without changing a single line of code in them
www.ibm.com/developerworks/java
www.ibm.com/developerworks/opensource
IBM decides to support Geronimo
a continuation of IBM's open source strategy
IBM Gluecode SE sits on top of Geronimo
www.gluecode.com
SOA is an approach to IT that builds business process from reusable component modules or "services" that are independent of applicaiton and the computing platforms on which they run.
broadest portfolio for end-to-end SOA
extensive real-wolrd customer expereince
comprehenisve guidance, education, community & enablement
robust partner community
www.ibm.com/soa