ICEfaces

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare
ICEfaces
Dezvoltator ICEsoft Technologies Inc.
Ultima versiune 1.8.2 (30 septembrie 2009)
Sistem de operare cross-platform
Platformă Java EE
Tip Ajax, Java, JSF, Framework
Licență sursă deschisă, MPL
Site web 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 mai 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 | modificare sursă]

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 | modificare sursă]

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 | modificare sursă]