July 02, 2005

JavaOne 2005: Day Four

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 and
- 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

Posted by thoughts at 09:01 AM | Comments (1) | TrackBack

July 01, 2005

JavaOne 2005: Day Three

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

Posted by thoughts at 05:29 PM | Comments (0) | TrackBack