Sun's morning key note is amazing! You can see that they've put a lot of effort into it. The coolest things are multi-JVM implementations where John Cage moves a running stack of an application from one JVM to a different one wireless. They are throwing out a lot of new stuff happening in Java and hyping up some thing, but hey, it's Java One and Java's 10th birthday so it's sort of appropriate. I stay in the main hall for panel about future of Java and programming languages. It's entertaining to see them talk but it doesn't offer too many new things.
After the panel, I run around in the expo to meet with Eclipse developers and some SA/unit testing vendors showing off their newest tools in effort to gather a snapshot of state-of-the-art development in those areas. Also, I ended up in an extremely interesting presentation about using Eclipse core as a base for a rich-client application. If it's even somewhat standard application, it makes a lot of sense, because there's so much you can leverage in Eclipse's core platform: the pluggable architecture, the window management, automated updates, xml configuration etc.
Adam Winer's presentation in the afternoon on extreme re-use with JSF is very interesting and immediately useful giving me a lot of ideas on how to improve my JSF-based applications. Good thing though Adam's wasn't in the morning...
---
Day four
John Cage showed a demo of multi-JVM implementation and moved a running stack of the application onto a different processor (and from Windows to Mac) - wou!
Java running on bare metal ARM chip, did the same demo by "pouring" the app on to a different chip connected with bluetooth(?)
NetBeans UI designer demo very nice, lots of things finally done right in a Swing UI designer
sourcecode available on java.net / joggle
integration between netbeans and java.net, very good idea
not available yet in EA
MIDP-2.0 graphical support in Netbeans (some plugin?)
Networked Bay Environmental Assessement Monitoring Stations
- joint development project between three communities
JXTA-based with cellphones used to send the data
ScanEagle Autonoumous Navigation of Unmanned Air Vehicle
Using RTSJ (Real-Time Java)
Java-code is the pilot doing autonoumous auto-routing
RTSJ determinism critical for navigational control
RTSJ JVM enabled significant productivity gains versus C++
Java aided program goals by minimizing manpower
Continue to perform research on newer RTSJ implementations
Panel James Gosling, Bill Joy, Paul Saffo, Guy Steele, Danny Hillis
Fortress next-gen language developed as Sun's research project
"Trying to do the same thing to Java that Java did to C++"
Security, multi-chip, multiplatform, multi-JVM, heavy use of parallelism
Pursue of clock-rate has started to flat-out, more focus on multi-cores and parallelism, so how do you deal with it (in a programming language)
Google is essentially the web hosting service for the planet
Introduction to Eclipse's Rich Client Platform
Jeff Gunther
Intalgent
Why Use the Rich Client Platform
- elegant and extensible plug-in architectre
- highly customizable workspace and user interface components
- good interoperability with other technologies
- sclable from desktops to embedded devices
- wide cross-platform support
- transparent to the end user
an RCP cell application
Core RCP components
- SWT
- JFace Toolkit
- Eclipse Runtime - provides the foundation for plug-ins, extension points and extensions
- Generic Workbench - multi-windows
optional components
- help
- update manager
- text/forms - frameworks for constructing text editors and forms
- welcome page - initial greeting upon application startup
- cheat sheet - guides used to walk users through a long running, multi-step task
- resources
- Graphical Editing Framework (GEF)
- Eclipse Modeling Framework (EMF)
high level steps to create an application... check the slides
Eclipse IDE contains a specialized perspective to create and package an Eclipse rcp application
A plug-in can define its own set of extensions and extension points
You can brand the workspace
A view/editor canot be shared between different perspectives
Eclipse 3.1 introduced the ability to deploy RCP application via Java WebStart (JWS)
Deploying an RCP application via JWS is a three-step process:
package each plug-in in a seprate JAR file
Since the application requires full permissions, each JAR file must be singed
Package all the JAR file into single WAR file
What's the size of Eclipse runtime?
- go to eclipse.org to find out
Can you internationalize plugin.xml?
- yes
Any test automation tools for RCP?
- not aware of any specific tools. There's a Eclipse RCP visual editor
There's an embedded browser in Eclipse
Extreme Reuse in JavaServer Faces Technology
Adam Winer, Christian Straub / Oracle
// Get the slides of this presentation
learn how to pick technolgoies that enable reuse in JSF technology
Tiles and SiteMesh
JSF-based solutions
what makes a solution good?
supports JSF technology
- including postback and EL
not "invasive"
parametrisable
tool support
simple
JSF 1.2 fixes problems with jsp:include
- don't need
- both are absolute history
jsp:include no parameterization
c:set is half the solution
be aware of limitations of jsp:include
c:import has the same problems
.tag files seem ideal
JSP fragments work wonderfully
very easy way to build up complex layouts
Usage
value attributes can't talk to JSF EL
Attributes of a .tag aren't visible to JSF
because JSF doesn't have concept of page scope
tags might look like components
but you can't set a binding attribute
to your backing bean, they don't exist
Use templates!
but have to use JSP expression language
EL troubles
Classic EL
${..} evaluated once, then forgotten
JSF EL
#{..} evaluated over and over again because it needs to process postback
here comes octothorpe pound-bracket syntax inside joke...
EL unification - coming soon...
EL resolver API
- managed beans everywhere
VariableMapper API
c:set works with JSF EL
c:forEach works
.tag attirbutes work
custom tags can work
tiles - works with JSF
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