Table of Contents
Introduction to Ext-Scripting
Welcome and hello to MyFaces Extension-Scripting, short Ext-Scripting. Ext-Scripting is an extensions project for MyFaces. It tries to add scripting and rapid prototyping capabilities to JSF by adding scripting languages and JSP like recompilation mechanisms.
Following link to the a video on YouTube shows you what Ext-Scripting can do for you:
As the video shows you can make changes to JSF artifacts on the fly and at the next reload the changes are present. The result is a reduction in server restarts and better turn around times. The same rapid prototyping approach which is normally present in scripting languages and scripting language based frameworks.
Additionally to that Ext-Scripting integrates various scripting languages to be used in conjunction with JSF so that a mixed language approach becomes feasable within the bounds of the framework.
Various Aspects of Ext-Scripting
Support for scripting languages
Ext-Scripting currently only supports Groovy as only scripting language. Additional scripting languages will be provided in subsequent releases.
Support for Java Dynamic Recompilation
Ext-Scripting additional makes Java + JSF more "scripty" by introducing JSP like dynamic recompilation of JSF artifacts including session and application scoped beans, which now can be "scripted" in Java without any server restarts.
Support for JSF2 and JSF2 Artifacts and Annotations
One of the main goals of Ext-Scripting was to provide JSF2 support out of the box. Most new JSF2 artifacts are supported. Ext-Scripting even adds scriptability to the new annotation syntax of JSF2 by allowing annotations to be used in a dynamic manner!
Support for MyFaces
Older versions are not supported due to missing plugin mechanisms which allow Ext-Scripting to work.
The JSF RI and Mojarra as time of writing are not supported due to missing framework hooks needed, but Mojarra supports Groovy out of the box within the core engine. So for the time being only MyFaces can be used. Also Portlets for 1.0 are not supported, this limitation will be eliminated in future versions.