--
On Thursday, May 3, 2012 at 6:13 PM, missgeburt wrote:
What I am interested in is whether Oracle is already looking in the crystal ball, foreseeing what future changes might drive JSF and ADF out of the game.
--
You received this message because you are subscribed to the ADF Enterprise Methodology Group (http://groups.google.com/group/adf-methodology). To unsubscribe send email to adf-methodolo...@googlegroups.com
All content to the ADF EMG lies under the Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/). Any content sourced must be attributed back to the ADF EMG with a link to the Google Group (http://groups.google.com/group/adf-methodology).
On Fri, May 4, 2012 at 5:05 AM, Chris Muir <chris...@gmail.com> wrote:
Not all ADF EMG members will be familiar with what the main goals of JSF 2.2 are. �Could you summarize and give an idea of what areas you have a particular interest in please Andy?
Sure. Although JSF 2.0 did a great job of tackling many of the highest visibility spec limitations/issues, it was simply not possible to address all requirements in one release. JSF 2.1 ended up being a fairly minor spec rev, in part because this work was done via the JCP's maintenance release process rather than as a formal JSR. JSF 2.2 (jsr-344) is our first post-2.0 to opportunity to really advance the specification again. Rather than summarize the 2.2 work, I'll instead recommend reading this wonderful (and regularly updated) summary written by Arjan Tijms: http://jdevelopment.nl/jsf-22/#730
Beat me to it! ;-) As for my particular areas of interest, well� to be honest my biggest interest, which goes beyond anyone particular feature, is performance. As you've probably seen, we build some fairly complex JSF-based apps/UIs here at Oracle. We also focus a significant amount of energy on devising optimizations to allow our complex apps to perform/scale. One of my most important goals for any rev of the JSF spec is to (try to) ensure that we do not unintentionally introduce any new sources of overhead that might regress performance/scalability. As for specific features, aside from Faces Flows, two other features that I find particularly interesting (and, sadly, have not yet had time to review thoroughly), are window id support (which Trinidad/ADFv already provides) and view actions.In turn what is an interesting question is the fact for many years ADF was ahead of the game for JSF, but recently in parts JSF has caught up and implemented some common features. �For example the AJAX support added in JSF 2.0. �This does seem to create an issue for Oracle because where it was ahead of the game, it's now kind of off on it's own game in some parts of the Oracle JSF solution, or indeed there's two solutions - the Oracle one and the JSF one. Given that you're part of the expert group designing the upcoming JSF specs, how do you balance the need for stability for Oracle vs the need for improvements for the wider JSF community?
Steven Davelaar| Consulting
Solutions Architect Oracle Webcenter | FMW Architecture Team (A-Team) Tel +31 30 669 8113 | Mobile +31 6 55 33 24 28 Twitter: @stevendavelaar |
A-Team ADF/Webcenter Blog | JHeadstart |
NEED A-TEAM SUPPORT? File your request here! |
Hi Andy,
Good to hear your biggest interest is performance. For me that's the biggest concern....
There are quite a few customers who build really large pages, often encouraged by (custom) implementations of our UI Shell Dynamic Tab template.
With this design, you easily have a number of independent tabs open, each tab holding an af:region with taskflow with page fragments.
Many ADF developers don't seem to realize that all those tabs are still one page with one UITree.
And even the simplest partial submit, which refreshes only one or two items within a tab, still causes the whole UITree to be processed although the browser only repaints the two items.
I have seen a significant impact on performance in apps with many tabs open and large page fragments with lots of sub-tabs and accordions. Currently, the only (supported) way to improve performance in such a scenario is to use the activie property on the taskflow binding and set the activation property to conditional (active=false when tab is not selected tab). When active property evaluates to false the af:region tag handler skips processing of the entire region. But this is troublesome, and means all server-side state of these taskflow is lost when switching tabs. (The unsupported way is to change the regiontag handler and skip processing when region.isRendered evalutes to false)
Which brings me to my question: In this JSF 2.0 and ADF Roadmap white paper we can read the following about partial state saving:
Partial state saving
To reduce the overhead of state saving and management, JSF 2.0 introduces partial state saving
as new functionality. In an effort to provide continued backwards compatibility, ADF Faces will
utilize its existing state saving implementation while the new JSF 2.0 implementation matures.
This statement concerns me a bit. Can you explain what this means?
I read in your blog about JSF 2.0 that Adam Winer created a solution for partial state saving on trinidad years ago which was used as the basis for PSS in JSF 2.0. This might imply that ADF Faces already uses some sort of PSS but that isn't true is it?
Steven.
On 06/05/2012 16:34, Andy Schwartz wrote:
On Fri, May 4, 2012 at 5:05 AM, Chris Muir <chris...@gmail.com> wrote:
Not all ADF EMG members will be familiar with what the main goals of JSF 2.2 are. Could you summarize and give an idea of what areas you have a particular interest in please Andy?
Sure. Although JSF 2.0 did a great job of tackling many of the highest visibility spec limitations/issues, it was simply not possible to address all requirements in one release. JSF 2.1 ended up being a fairly minor spec rev, in part because this work was done via the JCP's maintenance release process rather than as a formal JSR. JSF 2.2 (jsr-344) is our first post-2.0 to opportunity to really advance the specification again. Rather than summarize the 2.2 work, I'll instead recommend reading this wonderful (and regularly updated) summary written by Arjan Tijms: http://jdevelopment.nl/jsf-22/#730
Beat me to it! ;-) As for my particular areas of interest, well… to be honest my biggest interest, which goes beyond anyone particular feature, is performance. As you've probably seen, we build some fairly complex JSF-based apps/UIs here at Oracle. We also focus a significant amount of energy on devising optimizations to allow our complex apps to perform/scale. One of my most important goals for any rev of the JSF spec is to (try to) ensure that we do not unintentionally introduce any new sources of overhead that might regress performance/scalability. As for specific features, aside from Faces Flows, two other features that I find particularly interesting (and, sadly, have not yet had time to review thoroughly), are window id support (which Trinidad/ADFv already provides) and view actions.In turn what is an interesting question is the fact for many years ADF was ahead of the game for JSF, but recently in parts JSF has caught up and implemented some common features. For example the AJAX support added in JSF 2.0. This does seem to create an issue for Oracle because where it was ahead of the game, it's now kind of off on it's own game in some parts of the Oracle JSF solution, or indeed there's two solutions - the Oracle one and the JSF one. Given that you're part of the expert group designing the upcoming JSF specs, how do you balance the need for stability for Oracle vs the need for improvements for the wider JSF community?
--
You received this message because you are subscribed to the ADF Enterprise Methodology Group (http://groups.google.com/group/adf-methodology). To unsubscribe send email to adf-methodolo...@googlegroups.com
All content to the ADF EMG lies under the Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/). Any content sourced must be attributed back to the ADF EMG with a link to the Google Group (http://groups.google.com/group/adf-methodology).
Andy
--
You received this message because you are subscribed to the ADF Enterprise Methodology Group (http://groups.google.com/group/adf-methodology). To unsubscribe send email to adf-methodolo...@googlegroups.com
All content to the ADF EMG lies under the Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/). Any content sourced must be attributed back to the ADF EMG with a link to the Google Group (http://groups.google.com/group/adf-methodology).
--
You received this message because you are subscribed to the ADF Enterprise Methodology Group (http://groups.google.com/group/adf-methodology). To unsubscribe send email to adf-methodolo...@googlegroups.com
All content to the ADF EMG lies under the Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/). Any content sourced must be attributed back to the ADF EMG with a link to the Google Group (http://groups.google.com/group/adf-methodology).
On Thursday, May 10, 2012 at 9:15 AM, Andy Schwartz wrote:
BTW, this reminds me of a related question that I've been meaning toask the EMG:Have folks here made the transition from JSP to Facelets? Forprojects that haven't made this transition, is this something that youare planning/hoping to do? Any folks here who particularly prefer tostay on JSP?
Andy
--
You received this message because you are subscribed to the ADF Enterprise Methodology Group (http://groups.google.com/group/adf-methodology). To unsubscribe send email to adf-methodolo...@googlegroups.com
All content to the ADF EMG lies under the Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/). Any content sourced must be attributed back to the ADF EMG with a link to the Google Group (http://groups.google.com/group/adf-methodology).
Most importantly for the purposes of this group, I am one of the
architects of the ADF Faces rich client project. I have also served
as Oracle's representative to the JavaServer Faces expert group for
the last several years.
By "long-time", I mean: long enough to date back to a time when
character mode (vt100 ftw!) and X-Windows/Motif were more popular
client-side platforms for Oracle's tools than Windows 3.1. :-)
Since joining Oracle (almost 19 years ago), I have helped to build a
series of user interface frameworks that have been the basis for a
wide range of both Oracle and customer-built products.
Old-school Oracle Forms/Reports users might remember the good old
"Oracle Toolkit" - a cross-platform UI toolkit built in C. (Think
Java's AWT, but before James Gosling shared Java with the world.)
Once Java came along I helped to found the Oracle's EWT component set
- one of the first high-level component offerings for AWT. (Think
Swing, before there was Swing.) EWT led to JEWT, a port of our
components to Swing.
Eventually we realized that there was more to the web than just
applets, which led to the founding of our first Servlet-based web
framework, UIX. (Think JSF, before JSF.) This included an XML-based
templating language that served as an efficient alternative to JSP.
(Think Facelets.) Another memorable UIX feature was an iframe-based
mechanism for communicating with the server without replacing the
entire page, which we named "partial page rendering". (Think Ajax,
before XmlHttpRequest.)
We used our experiences with UIX to help drive the development of the
JSF 1.0 specification. Once the spec and implementation were ready,
we quickly jumped on board and produced what was likely the first ever
JSF-based component library: ADF Faces. This original version of ADF
Faces was donated to Apache back in 2006 and is now Apache MyFaces
Trinidad. Since then I have been busy working on the second
generation of our JSF component set: ADF Faces rich client.
Yikes. That's a lot of components!
These days my focus is split between ADF Faces performance/
scalability, maintenance/enhancements relating to our core framework,
JSF specification development/integration, and of course, whatever hot
client/customer issue happens to arise today.
Let's see, what else is important…
I think simplicity is key when it comes both to API and UI design.
(Candy machine interfaces ftw!)
I strongly believe that community is a critical part of software
development. I am pretty psyched/honored to now be included in the
ADF EMG community!
My pet peeve is unnecessarily vague error messages.
My favorite Java Posse member is Dick Wall.
The compiler is my friend.
I am not a "brogrammer".
Er… okay, might be getting off track here.
Looking forward to answering whatever questions I can, but I am
especially excited to hear about your experiences using ADF Faces and/
or JSF.
Andy
--
You received this message because you are subscribed to the ADF Enterprise Methodology Group (http://groups.google.com/group/adf-methodology). To unsubscribe send email to adf-methodolo...@googlegroups.com
All content to the ADF EMG lies under the Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/). Any content sourced must be attributed back to the ADF EMG with a link to the Google Group (http://groups.google.com/group/adf-methodology).
Hi Steven - Sorry for taking so long to jump in on this... On Wed, May 9, 2012 at 5:44 AM, Steven <steven....@oracle.com> wrote:
Simon, Yes, through breakpoints. Dynamic region does not work, each tab represents a user task with its own transaction, we do not want to loose the TF state of non-selected tabs. But the point is not to find some advanced �custom way to optimize state saving. I would like to see ADF Faces do a better job OOTB in this scenario.
Which brings me to my question: In this JSF 2.0 and ADF Roadmap white paper we can read the following about partial state saving: Partial state saving To reduce the overhead of state saving and management, JSF 2.0 introduces partial state saving as new functionality.� In an effort to provide continued backwards compatibility, ADF Faces will utilize its existing state saving implementation while the new JSF 2.0 implementation matures. This statement concerns me a bit. Can you explain what this means?
Sure. JSF2 partial state saving works great for simple applications/components but can be problematic for more complex cases - eg. for components that dynamically create/add/move/remove other components during the JSF lifecycle (outside of tag execution). As authors of a variety of such complex components, we have found that we have more work to do to ensure that these components work well with partial state saving. (For example, it's important to properly mark "temporary" component subtrees as transient in order to ensure that the JSF implementations won't track these dynamic changes for state saving purposes.) We have also found issues with the Mojarra (the JSF reference implementation) when dealing with such complex cases. We are working closely with the Mojarra team to resolve these issues. Our goal is to provide robust support for JSF2 partial state saving across all of our components. We aren't quite there yet but are working ever closer towards this goal.
I read in your blog about JSF 2.0� that Adam Winer created a solution for partial state saving on trinidad years ago which was used as the basis for PSS in JSF 2.0. This might imply that ADF Faces already uses some sort of PSS but that isn't true is it?Unfortunately, no� Trinidad does provide a "delta" state saving solution that was the inspiration for JSF2 partial state saving, but this suffers from similar problems. Andy
Andy,
Yes, I am aware of the child creation property, I use that at all the time.
But in the dynamic tabs scenario, all tabs have been visited by the user (a new tab is opened by the user to start a new task), so that doesn't make a difference.
At one internal customer, we modified the RichRegion tag class which by default only checked for model.getViewId==null (which only returns null if the TF binding active property evaluates to false) to check for the rendered property, this caused a significant improvement in performance because all regions in non-selected dynamic tabs were no longer processed.
You are right, it is not so much the state saving part but overall UI component processing in the lifecycle phases that slows down performance. By changing the RegionTag class we were able to cut down significantly on this processing. In addition to childCreation property we would need something like a childDeletion property as well....
I understand from the doc that use of facelets in JDev 11.1.2 generally should increase performance, but how can that be if childCreation property does not work with facelets (yet)?
Steven.
On 10/05/2012 04:25, Andy Schwartz wrote:
Hi Steven - Sorry for taking so long to jump in on this... On Wed, May 9, 2012 at 5:44 AM, Steven <steven....@oracle.com> wrote:
Simon, Yes, through breakpoints. Dynamic region does not work, each tab represents a user task with its own transaction, we do not want to loose the TF state of non-selected tabs. But the point is not to find some advanced custom way to optimize state saving. I would like to see ADF Faces do a better job OOTB in this scenario.
Which brings me to my question: In this JSF 2.0 and ADF Roadmap white paper we can read the following about partial state saving: Partial state saving To reduce the overhead of state saving and management, JSF 2.0 introduces partial state saving as new functionality. In an effort to provide continued backwards compatibility, ADF Faces will utilize its existing state saving implementation while the new JSF 2.0 implementation matures. This statement concerns me a bit. Can you explain what this means?
Sure. JSF2 partial state saving works great for simple applications/components but can be problematic for more complex cases - eg. for components that dynamically create/add/move/remove other components during the JSF lifecycle (outside of tag execution). As authors of a variety of such complex components, we have found that we have more work to do to ensure that these components work well with partial state saving. (For example, it's important to properly mark "temporary" component subtrees as transient in order to ensure that the JSF implementations won't track these dynamic changes for state saving purposes.) We have also found issues with the Mojarra (the JSF reference implementation) when dealing with such complex cases. We are working closely with the Mojarra team to resolve these issues. Our goal is to provide robust support for JSF2 partial state saving across all of our components. We aren't quite there yet but are working ever closer towards this goal.
I read in your blog about JSF 2.0 that Adam Winer created a solution for partial state saving on trinidad years ago which was used as the basis for PSS in JSF 2.0. This might imply that ADF Faces already uses some sort of PSS but that isn't true is it?Unfortunately, no… Trinidad does provide a "delta" state saving solution that was the inspiration for JSF2 partial state saving, but this suffers from similar problems. Andy
--
Steven Davelaar| Consulting Solutions Architect
Oracle Webcenter | FMW Architecture Team (A-Team)
Tel +31 30 669 8113 | Mobile +31 6 55 33 24 28
Twitter: @stevendavelaar
A-Team ADF/Webcenter Blog | JHeadstart NEED A-TEAM SUPPORT? File your request here!
--
You received this message because you are subscribed to the ADF Enterprise Methodology Group (http://groups.google.com/group/adf-methodology). To unsubscribe send email to adf-methodolo...@googlegroups.com
All content to the ADF EMG lies under the Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/). Any content sourced must be attributed back to the ADF EMG with a link to the Google Group (http://groups.google.com/group/adf-methodology).
Andy
--
You received this message because you are subscribed to the ADF Enterprise Methodology Group (http://groups.google.com/group/adf-methodology). To unsubscribe send email to adf-methodolo...@googlegroups.com
All content to the ADF EMG lies under the Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/). Any content sourced must be attributed back to the ADF EMG with a link to the Google Group (http://groups.google.com/group/adf-methodology).