The blog's been a little quiet this week as I've had my head in the sand working on an internal prototyping exercise with developers from a number of internal teams. It's a kind of an internal RAD Race of sorts, but the race is against time rather than other vendors' tools or other teams. It's an exercise that offers great insight (and little time for sleep). We're a group of eight internal developers with various skills and backgrounds collaborating to assemble an application with:
- Oracle JDeveloper 10g 10.1.3
- Oracle ADF Business Components for the Business Services
- Oracle ADF Model for data binding
- JSF and Oracle ADF Faces components for the view
- A central CVS server
- Oracle BPEL server, and BPEL Process Designer JDeveloper extension
- Oracle Application Server
There are a zillion interesting things you learn by doing an exercise like this, sitting side by side with the folks who use your product day to day, working against their real-world schemas, understanding the various issues and requirements they face in their daily jobs, appreciating the bits of the product that strike them as cool (or confusing!). Hearing the comments of the other folks in the room while they work often helps me understand what kinds of new features might help every single developer who uses the product, and which features might make sophisticated scenarios easier for a small, select group of advanced developers.
Some of the initial insights that are emerging from this team exercise for me are:
- JDeveloper 10g 10.1.3's new code navigation features are gifts that keep on giving. The new class browser alone is enough to make you never want to look back to earlier JDeveloper releases, but being able to easily surf to previous files, recent files, classes and javadoc by name, supertype and subtype hiearchies, etc. are a real boon all day long while working with the tool.
- The refactoring features are solid, but coming from JDeveloper 10.1.2 it takes some getting used to the fact that this new power is available. :-) You find yourself following your old process of search and replace or manual retyping and then it dawns on you that you can just right-click "Rename..." and have JDeveloper fix everything up for you.
- The multi-level undo support is a an unsung hero that makes you confident to try anything knowing you can easily rollback any number of steps to what you had previously. This includes undo involving UI controls in pages and their respective XML metadata for the binding objects, too.
- The CVS team development improvements are robust and useful. The "Pending Changes" window works exactly like you need it to. The visual conflict resolution makes quick work of merging changes made to the same files modified in parallel by different team members.
- The new support for working without ADF BC package XML files and for keeping the XML entries in the JDeveloper project file for ADF BC components in a predictable order further improve the team development experience with Business Components.
- New view object named bind variables and the corresponding data binding layer support for them and the ability to see and set them in the ADF BC Tester tool is super-useful.
One particular "note to self" I've made while working on this prototype against real-world Oracle Applications schemas (where tables and related entity objects ofter have hundreds of attributes) is that we need to offer users new, consistent ways to quickly search for an navigate around the attributes and relationships between their UI controls, the bindings that tie them to underlying view object attributes, and the underlying entity object attributes. We need to improve the ability to surf up and down these "filaments" that connect UI to data and make it easy to jump-to a particular attribute name that pops into your head just as the new class browser has done for navigating to Java classes.