Discussions

News: Open-source Ajax Framework Echo3 Goes Beta

  1. Open-source Ajax Framework Echo3 Goes Beta (16 messages)

    The first beta release of the Echo3 web application framework is available for download. Echo3 enables the development of AJAX-based web applications in either server-side Java or (new in Echo3) client-side JavaScript. Applications are developed using a component-oriented and event-driven API, similar to that of a desktop application user interface toolkit. The server-side Java API of Echo3 that is used by application developers is based on that of Echo2. Application code can thus be easily ported from Echo2 to Echo3, often with not much more than a package-name change. Client-Side JavaScript Application Development The most notable new feature in this iteration of the Echo platform is the capability to develop applications entirely in client-side JavaScript. Client-side Echo applications do not require an application server, and can also be run entirely offline. With Echo3, the formerly server-side-only component framework has been recreated in client-side JavaScript. This was not a direct “port”, but rather a re-imagining of the framework with the ideals of JavaScript development in mind. For example, the client-side version of the framework takes advantage of JavaScript's object and array literal syntaxes to create a capability called "hierarchal component construction", where an entire hierarchy of components can be created in a single call. Such code winds up being extremely readable, as, when naturally indented, it resembles the component tree. Core.js Framework A low-level framework, called “Core.js” was created to ease development of object-oriented and event-driven code in JavaScript. Core.js provides an inheritance model for building JavaScript objects using class-based (rather than prototype-based) inheritance. It additionally offers the capability to specify abstract classes and methods, and features “pseudo-private variables” where a class can reserve internal method/field names that cannot be overridden by subclasses. The framework includes utilities for managing events and listeners, and can register event handlers on object instances. New Back-End / Rendering APIs The “back-end,” which is responsible for rendering components within the web browser, has been re-engineered for Echo3. Instead of each component having its own client-server serialization code, Echo3's web application container simply serializes the state of updated components directly to the client, where JavaScript versions of the server-side components are then created and updated. This feature makes the component development process substantially easier and faster than it was in Echo2. The new approach also yields performance dividends when creating server-side Java applications--Echo3 consumes less CPU and a mere fraction of the bandwidth of Echo2. New and Improved Components Many new components have been added to the framework and existing components have been enhanced in Echo3. WindowPanes, for example, will always stay on screen, even if the browser window or containing component is resized. Menus can be configured with opacity and fade-in effects. New components have been added to the Extras library including a RichTextArea and Tree/TableTree. New APIs for keyboard accessibility and focus management allow for mouse-less operation (note: still under development in some components). Cross-Platform Support Like Echo2 before it, Echo3 supports all modern browser platforms. Mozilla/Firefox, Internet Explorer (6.0 and later), Opera, Safari, and Konqueror are all supported, as are any other browsers that support DOM2/CSS2.1 and JavaScript 1.5/ECMAScript v3. Licensing Echo3 and Echo3 Extras are licensed under the Mozilla Public License version 1.1, allowing royalty free development of both proprietary and open source applications. All source code is available from the download site. Echo3 Demo A demonstration application for Echo3 is available at http://demo.nextapp.com/echo3csjs/. This application was built with the client-side JavaScript version of Echo3 and Echo3 Extras. As it is entirely built in JavaScript, it can be run without an application server or even offline. The full source is available for download. More Information / Download More information about Echo3, including documentation and downloads is available at http://echo.nextapp.com/site/echo3/. To learn more about Echo3 Extras, visit http://echo.nextapp.com/site/echo3/addons/extras/.

    Threaded Messages (16)

  2. Congratulations![ Go to top ]


    Congratulations Tod on the release of Echo3 beta! It is an amazing framework and it has only got better with the inclusion of client-side Java apps and the optimisations to the server-side Java apps. For me the server-side apps represent a really unique (and brilliant way) to develop three-tier apps with a rich Web interface (with AJAX) in Java only (although, of course, the Web-tier does has a lot of Javascript). The Echo2 server-side app demo and now the Echo3 client-side Java app demo are really impressive and powerfully demonstrate what can be done with rich apps on the Web these day (and easily with Echo3). Thanks for all the hard work. Cheers, Ashley.
  3. Re: Congratulations![ Go to top ]

    Thanks all for the compliments, really great to hear all that.
    Any plans on Echo for mobile browsers?
    It currently runs on Mobile Safari (iPhone), though I'd recommend not using any pane components in that environment, as the iPhone does not support scrolling DIVs as far as I can tell. Apps can run entirely offline on a iPhone, as bookmarklets using RFC 2397 ("data") URLs: http://echo.nextapp.com/site/node/4945 I'll be taking a look soon at some Windows Mobile stuff, hope to get some support in for Opera/IE Mobile as well (have not tested with these yet though).
    I was pretty impressed first time I saw Echo2.
    Nice API and easy to understand framework's architecture.

    We started using it on one project and have hit a performance wall. There were so many events being sent over to server that the overall application was terribly slow. We've tried different optimizations, but didn't gave expected results.

    Any changes in Echo3 regarding performance?
    Echo3 is definitely faster than Echo2, but if you're experiencing grave performance issues, it's not likely to fix the problem. Echo2 should generally only be talking back to the server when it needs to execute server-side Java code, which generally only occurs as the result of a user "action event", e.g., entering text in a field or selecting a radiobutton (in most cases) won't contact the server, but selecting an item from a menu or clicking a button with a registered ActionListener will contact the server. The most common causes of Echo2 performance issues are inefficient components and misuse of server push. There are regretably some components out there (not in Echo2 core or Extras) that are not particularly efficient. On one consulting gig to fix a performance issue I found a certain third-party drop-down component was sending down 500 kilobytes to render month/day/year input fields. A few of those on the screen completely destroyed the performance of their application. The fix was to create a new drop-down component (that is now in Echo2 Extras). The other issue that comes up is overuse of server push...for example, if you're pushing data to the client once per second (e.g., displaying live stock quotes), it's far better to write a custom AJAX component to do the job. Running with the debug pane open and watching the transfer sizes/frequency of updates can help pinpoint such problems. If you want to write applications in JavaScript, Echo3's client-side JavaScript environment does away with the client-server serialization altogether. The demo app has a performance example (click Launch->Performance Test) that shows off the rendering performnace.
  4. Echo3 is very impressive work, because of its wonderful and clean framework design. The best I've ever seen... I'm a long term Echo-user (running Echo-applications since version 1) and I was a little bit sceptical about the huge effort of redesigning Echo2 to Echo3 at first. But I must really admit that it definitively was worth this big effort. I'm going to migrate all my applications to Echo3 in the next days, because it is so much easier to develop / debug client-side code with Echo3 than with Echo2. Thanks for this wonderful piece of technology. Maik
  5. Tod, Echo is an awesome product and thanks for all your efforts. I have used it since it's first version and found it to be a top quality product. I have introduced it at my previous workplace and found it to be a good fit for enterprise apps. Any plans on Echo for mobile browsers? Thanks Sunil
  6. tables?[ Go to top ]

    I'm not familiar with echo2/3 at all, but the demo is really impressive. Is there a control like a datatable, sortable and pageable? I didn't see it in the demo app or did I just miss it? Ed
  7. Re: tables?[ Go to top ]

    Echo provides a basic Table-Component (server-side-java-only at the moment), which works like a Swing-Table. So it's quite easy to feed your Pageable/Sortable-TableModel into the Table-component. A basic knowledge with developing Swing-applications helps a lot to get into Echo.
  8. Re: tables?[ Go to top ]

    Echo provides a basic Table-Component (server-side-java-only at the moment), which works like a Swing-Table. So it's quite easy to feed your Pageable/Sortable-TableModel into the Table-component. A basic knowledge with developing Swing-applications helps a lot to get into Echo.
    I believe there was a component that provided this functionality. Either it was in the [externally maintained] extras project or in the Sierra product. But like Majik said, it is pretty easy.
  9. Re: tables?[ Go to top ]

    Echo provides a basic Table-Component (server-side-java-only at the moment), which works like a Swing-Table.
    ok, good to hear that. Just wondered, because web framework demos usually contain all their components as an example. Ed
  10. Re: tables?[ Go to top ]

    Echo provides a basic Table-Component (server-side-java-only at the moment), which works like a Swing-Table.

    ok, good to hear that.
    Just wondered, because web framework demos usually contain all their components as an example.

    Ed
    Tod probably just wanted to get it out there. A quote from the demo - "This application was developed using the open-source Echo3 framework, and a few open-source Echo3 components." (bold is mine)
  11. What about performance?[ Go to top ]

    I was pretty impressed first time I saw Echo2. Nice API and easy to understand framework's architecture. We started using it on one project and have hit a performance wall. There were so many events being sent over to server that the overall application was terribly slow. We've tried different optimizations, but didn't gave expected results. Any changes in Echo3 regarding performance?
  12. Looking at the Echo server-side code (Java only, no HTML or javascript), it looks very much like swing. Is it possible to create BOTH a desktop application (without an application server) as well as a web-application from the same source base? Thanks Roshan
  13. Echo is modeled after Swing, but diverges where it makes sense, because of the restricted "web-application-runtime-environment" (a browser talking to a server via http). So you cannot code an single application which works as desktop- and server-application out of the box with Echo.
  14. For dual Swing/web client you can use AjaxSwing
  15. Nice![ Go to top ]

    That looks very nice; cool demo and some really nice ideas as part of the new API. Congrats and good luck with the framework!
  16. Hi Tod, The demo web app looks VERY NICE! Are there any examples of client-side only Echo3 web app communicating with web server using AJAX? What is the preferred approach for interacting with an RDBMS from client-side only Echo3 app?
  17. What is the preferred approach for interacting with an RDBMS from client-side only Echo3 app?
    That approach sounds like a lot of work and a potential security threat - direct access to your RDBMS from within JS code running on a browser? The benefits of the new Echo3 is that you can take advantage of many of it's client side performance benefits while still benefitting from it's 100% java server side control API. It means that you can still use a transparent persistence solution with your Echo app. We use JPOX/JDO for very large enterprise level Echo2 based apps we have developed and it's a perfect fit. Being Echo2 it's all server side Java so we have no problem using the latest gear from JPOX (JDO) and Hibernate would work just as well. We're about to move to Echo3 which maintains backwards compatibility at the API level with Echo2 (except for some simple package name changes). We envisage faster performance - especially as the RichTextArea component runs completely in the browser until the form is closed unless you want to set up special events (which we don't). So in that sense we're taking advantage of the client side performance boost while maintaining all interaction via a 100% Java server side API - so we can still develop with a zero effort persistence archicture. With desktop like web app development plus 100% transparent persistence and we're in Java developer's nirvana here. Our total framework set is: Echo2 - soon to be Echo3 JPOX - a JDO 2.1 compliant, transparent persistence, object relational mapper (ORM) solution MySQL - JPOX handles all our RDBMS interactions for us exPOJO - open source, extremely lightweight dependency injection, no XML config, exposed POJO domain model framework + provides a level of ORM independence (port between JDO<->Hibernate easily) Javelin used for UML modeling of the domain model and automatic generation of the ORM meta data.