ICEfaces
DezvoltatorICEsoft Technologies Inc.
Ultima versiune1.8.2 (30 septembrie 2009)
Repo[1] http://anonsvn.icesoft.org/repo/[1] Modificați la Wikidata
Sistem de operarecross-platform
PlatformăJava EE
TipAjax, Java, JSF, Framework
Licențăsursă deschisă, MPL
Prezență online
www.icefaces.org

ICEfaces este o extensie a platformei Java Server Faces care permite dezvoltatorilor de aplicații Java Enterprise să creeze aplicații interactive utilizând tehnologiile Ajax, limbajul Java și platforma Java EE. Unul dintre punctele forte ale ICEfaces este integrarea transparentă cu tehnologiile Ajax dar în mod special cu Ajax Push, fiind printre primele platforme cu suport pentru aceste tehnologii.

Scopul principal al ICEfaces este acela de a oferi dezvoltatorilor de aplicații Web o modalitate de a crea interfețe asemănătoare celor clasice Desktop prin intermediul tehnologiilor Ajax fără a fi nevoie ca aceștia să fie expuși complicațiilor dezvoltării de interfețe Ajax în JavaScript.

ICEfaces folosește infrastructura Java EE existentă, dezvoltarea de aplicații nefiind cu nimic diferită față de cea clasică JSF. Însă, ICEfaces extinde funcționalitatea JSF, oferind capabilități Ajax și Ajax Push în mod transparent pentru dezvoltator.

Arhitectură modificare

Platforma ICEfaces are la bază trei componente:

  • Framework-ul ICEfaces - este o extensie a celui din JSF standard, singura diferență notabilă fiind în faza de afișare a interfeței. În JSF standard, pentru a reflecta schimbările în starea interfeței, aplicația reîncarcă toată pagina curentă pe când în ICEfaces, acest lucru nu mai este necesar, pentru a reflecta schimbările, sunt încărcate doar acele secțiuni care s-au schimbat, fără ca pagina să se reîncarce în totalitate.


  • Puntea Ajax (Ajax Bridge) - este compusă din două componente, una pe partea de client și cealaltă pe partea de server. În principiu, ea asigură comunicarea asincronă între cele două părți, detectând schimbările survenite la nivelul interfeței (evenimente utilizator) sau cele la nivel de server care pot necesita un Ajax Push (evenimente server).


  • Suita de componente grafice - oferă o extensie a suitei de componente standard JSF, cu componente asemănătoare celor din aplicațiile desktop, care profită din plin de Ajax. De asemenea, sunt integrate în mod transparent diverse efecte grafice oferite de biblioteca JavaScript script.aculo.us.


Exemplu de aplicație care utilizează Ajax Push modificare

Această aplicație simulează o cameră de licitații în timp real, cu o interfață foarte dinamică și chiar un chat integrat. Modulele semnificative sunt scrise în felul următor:

/**
 * Class used to control the background clock of the entire auction monitor By
 * queuing a render call every pollInterval (default 1000) milliseconds, this
 * class allows the auction monitor UI to have ticking clocks In addition this
 * class will help AuctionBean maintain a list of the number of users online
 * through incrementUsers and decrementUsers
 */
public class ClockBean implements Renderable, DisposableBean 
{
    private static Log log = LogFactory.getLog(ClockBean.class);
    private IntervalRenderer clock;
    private int pollInterval = 1000;
    private String autoLoad = " ";
    private PersistentFacesState state = null;
    ...

    public void setRenderManager(RenderManager manager) {
        if (manager != null) {
            clock = manager.getIntervalRenderer(INTERVAL_RENDERER_GROUP);
            if (clock.getInterval() != pollInterval) {
                clock.setInterval(pollInterval);
            }
            clock.add(this);
            clock.requestRender();
        }
    }

}
/**
 * Bean class used to store user information, as well as local information for
 * messages and viewing information
 */
public class UserBean implements DisposableBean 
{
    ...

    public UserBean() {
        SessionRenderer.addCurrentSession("auction");
    }

    ...

    public void setMessage(String pageMessage) {
        if (!leaving) {
            addMessage(pageMessage);
        }
    }
    
    ...

    /**
     * Method to tell the chat state to update everyone in the chat This method
     * is normally called when a message is added to the log
     */
    private void updateMessageLog() {
        //move all users to chat list bottom
        chatState.updateAll();
        SessionRenderer.render("auction");
    }

    ...

}

Legături externe modificare


  1. ^ a b https://www.icesoft.org/java/community/source-code.jsf  Lipsește sau este vid: |title= (ajutor)