Archive for the ‘Ajax’ Category

ITA: JUG Torino Meeting di Settembre

Wednesday, September 5th, 2007

Quando sono tornato a Torino, mi sono ripromesso di non perdere i contatti con il JUG di Milano (dove è nata la mia passione javista e per le cose fatte bene).

Purtroppo i tempi non sempre permettono di fare tutto ciò che si vuole: fu così che mi persi uno speech molto interessante su Google Web Toolkit (interessante perchè, avendone tenuto uno su Echo2 ed essendo l’approccio di quest’ultimo opposto a quello di GWT, non volevo perdere l’occasione per qualche domandina provocatoria!)

Ma se Maometto non va alla montagna, sarà ben la montagna a raggiungere Maometto!

E allora, il 21 Settembre, presso la sede della CSP in Corso Svizzera, ci sarà il meeting del JUG Torino con in scaletta, insieme ad Hudson (Bruno Bossola), GWT (tenuto dallo stesso Gian Carlo Pace che allora tenne quello a Milano).

Maggiori dettagli sul wiki del jug.

E’ un venerdì, quindi possiamo fare tardi :)

Agile Ajax on Cooee

Sunday, June 17th, 2007

Open source forks are not always a good thing. Sometimes an already small community gets split so far that the projects die of neglect. Of course Echo2 has been so moribund for the last few months that I think this particular fork is a good thing. The folks from NextApp seem to have gotten a kick in the pants as a result of this development. I’ve never seen them this engaged in the forum.

Let the competition begin.

[source]

Cooee: Echo2Impress migrated

Sunday, June 10th, 2007

Daniel from Karora has written an article showing what you should do to migrate Echo2Impress to Cooee, automating the whole thing with Maven.

It’s a nice article, expecially if you, as me, don’t know Maven. Too bad E2I is not showing its beautifulness as it seems the styles are missing. Here is how it should look. Eventually I will rewrite that article.

Anyway, a huge “thank you” to the Karora guys for using E2I :)

ITA: Echo2 talk @ JUG Torino. Nice one!

Thursday, May 24th, 2007

Un mini post per ringraziare tutte le persone presenti ieri al meeting di Maggio del JUG Torino.

Come al solito ho cominciato zoppicando (e questa volta più del solito! Stavo quasi per dire “ok, aspettate, ricomincio”. Ho evitato per un pelo…) ma il resto dello talk è andato credo abbastanza bene. Mi piace quando la persone che hai davanti intervengono, obiettano, commentano, perchè vuol dire che, gli piaccia o no quello che gli racconti, ti stanno seguendo.

Grazie ancora a tutti!

ITA: Echo2 talk @ JUG Torino

Wednesday, May 16th, 2007

La nuova vita a Torino comincia il 24 maggio, ore 18.30, quando terrò il secondo talk della mia vita.

Parlerò di Echo2, il mio amato toolkit ajax. Diversamente dal talk di dicembre a Milano, aggiungerò qualche riferimento a Echo-Core, la libreria di base che io e Concept abbiamo sviluppato e usiamo quotidianamente per lo sviluppo delle nostre applicazioni.

Se siete da queste parti, fate un salto, potreste divertirvi (almeno ci spero ;))

La locandina e di seguito l’agenda della serata


JugTO Meeting Maggio
24 - maggio 2007

presso CSP spa Corso Svizzera 185, Torino
Fabbricato 1, scala H, 2° piano

Agenda:
18:30: check-in

18:45: JugTO Quickie: Web & HTTP the Ajax way
come funzionano le applicazioni Ajax
Carlo Bottiglieri

19:00 JugTO Seminar: Echo2: Rich Internet Applications the Swing way
come sviluppare Rich Client Application senza una riga di html o javascript, con il framework Echo
Federico Fissore

Echo2: JavaJournal interview, translated

Monday, January 15th, 2007

As I’ve promised, here is the translation of my interview by JavaJournal, the italian java magazine.

Hope you’ll enjoy it.

  1. Hello Federico, would you like to introduce yourself to JJ readers?
    I’m a posse about information technology and I’ve managed to port the passion to a job. I’ve been working as a programmer since 6 years ago, 1 year and a half coding with Java.
    I’ve done things like airline ticket booking, questionnaire management and gps vehicle tracking.I’m currently working with Concept, a promising Italian company, and the next month I’ll go back to Turin, my birth city, where I’m planning to start a new chapter.
  2. What do you think about the emphasis given to Ajax?
    The buzzword “Ajax” is due to a set of terrific components and applications that suddenly have made the browsers doing things never seen before. Since GMail and Google Suggest, the buzzword is in the mouths of half of the IT world.Too bad many developers are missing the point about Ajax, that is, per se, just a way to communicate with a remote server or service: all the cool components and effects are a matter of DOM and CSS manipulation. Once you understand the reality of things, you also see a lot of troubles, particularly regarding the DOM and JavaScript.So it is necessary, since a certain difficulty level, to switch to a tool that will take care of such troubles, relieving the developer of them. A couple of nice tools are GWT, Openlaszlo, ZK and Echo.
  3. How do you compare it to other solutions such as java applets (that seems to discover a new birth) or flash with Openlaszlo or Flex?
    All these solutions produce the same final result: Rich Internet Applications, client-server applications with minimal requirements on the client computer and with characteristics of reactivity, behavior and interaction much more similar to desktop applications than to web ones.
    So you need to evaluate the importance of the following three aspects:

    • the configuration of the client computers that will host your application
    • the architecture each solution bounds you to
    • the current knowledge of your dev team
  4. What’s your favorite Ajax framework?
    Echo2, to me and to my team, has given the best answers to the questions that the three aspects above have arisen.
  5. What do you like the most about Echo2 compared to other solutions such as Google Web Toolkit?
    The only real difference between GWT and Echo2 is architectural: GWT is client-side, while Echo2 is server-side.With GWT, you implement your GUI using Java, then you translate it to JavaScript with the GWT compiler and finally it is released to each client that connects to your server.
    That means releasing the GUI code to the client and interact with the server through RPC.Echo2 runs on your server: the client receives the DOM updates therefore updating the GUI appearance.
    That means maintaining the application state on the server (session) and be bound to a servlet container (and therefore Java).

    A server-side solution obliges you to keep an eye open on memory consumption but it also gives you a security layer for free, due to the session. Echo2 adds to that a synchronization mechanism that, given a valid session, does not allow you to “press a button” currently invisible to that user. With client-side solutions you need to code such checks manually.

    Finally, Echo2 implements a Swing-like API that can flat down the learning curve.

  6. Is it really like coding with Swing? Can a complex Swing application be mapped to Echo2?
    It is very similar but the API is a subset of the original Swing one. It is like a port of the Swing API, adapted to the web context.
    We’ll find classes with (almost) the same names and (almost) the same interfaces but we’ll miss some fundamentals elements such as the LayoutManager, as Echo2 does not implement it (you’ll code like using the FlowLayout).Therefore it would be difficult to map a Swing application to Echo2: Swing is just too rich.
  7. Is it possible to do the contrary: starting from an Echo2 application, transform it to a standalone client, eventually launching it with WebStart?
    Theoretically, yes. Echo2 starts with this very idea: to keep the widgets jar uncoupled from the jar that contains the info to render them.
    It shouldn’t be hard to implement a mapping, although, as far as I know, there isn’t yet a project with such aim.
  8. Echo2 is open source but there’s a commercial editor for rapid application development. Have you tried it? What do you think?
    EchoStudio is an Eclipse plugin and it wants to help the developer composing the GUI. It is useful for fast GUI prototyping and when you to work together with a GUI designer. Personally, I prefer to write the code.
  9. How is the community? Is it big and active?
    Ouch, this question hurts! Unfortunately Nextapp (Echo creators and maintainers) has set up just a forum to let users and developers keep in touch. I would have left the forum to the newbies and have created a mailing list for developers and contributors along with a bugzilla, to let everyone follow the course of bugs and contributed patches.Between the community, the discontent is arising and probably, on the half of January, some users will set up a project that will have the aim of supporting advanced users and, following the original code base while applying contributed patches, release an experimental version of Echo2, in order to push Nextapp to add the requested features to their code base.
  10. I’ve showed the Echo2 demo to one of my customers, and he said: “Ezio: am I wrong, or the demo you showed me is a bit slow?” What will you answer?
    If that demo was the one of the Nextapp site, yes IT IS slow! It is due mainly to the number of images they have loaded (even if that results in a really eye-candy widgets tour) and to the load the server has to handle for each user.As said, Echo2 stores the application state at the session level. Every user will have its place in the server memory.
    That leads me to suggest to avoid using Echo2 on public applications, for a simple reason: it is difficult to know how many users will use it. If you’ll be linked by Slashdot or Punto-Informatico you’ll probably see your server going down.
    The ideal use of Echo2, for what I’ve said before, particularly regarding security, is for creating backoffices: even if you plan to have tens of thousands of users, you have numbers, so you can react accordingly, avoiding any danger.
  11. How invasive is Echo2? Can it be measured and someway managed?
    A “Hello World” with Echo2 takes about 8k for each user. This is the initial cost, the overhead.
    As long as you add components to your GUI, memory consumptions grows progressively but the growing is slower.Anyway you also have to add the cost of the data the components are containing: if it is true that, for example, the table component will be stored at the session level, the data it is displaying will go to the session too.To have a measure of it, you can serialize the session on a file and check its size.

    As far as I’ve seen till now, an average complex application takes about 30 Kb for each user.

  12. Talking about productivity, how is developing with Echo2?
    I’ve been working with Echo2 for 5 months and I’ve created a couple of support classes to speed the development up: therefore, creating a plain CRUD interface, takes me something like 10 minutes.In the daily activity, writing the code by hand, without an RAD like EchoStudio, obliges you to reload the webapp context at every modification. EchoStudio, that eliminates such issue, actually does the same, by programmatically reloading an embedded version of Jetty.So, at the productivity level, developing with Echo2 is much like developing JSPs, with the great advantage of being able to test our views (the “v” in MVC) and to inherit from our previously created ones.

    Together with the quality of the final result, Echo2 is a tasty solution, surely worth an evaluation.

Echo2: interviewed

Monday, January 15th, 2007

I’ve been interviewed about Echo2 by Michele Sciabarrà from JavaJournal.

If you understand italian, you can read it here; otherwise, please wait until tomorrow, when I will post the translation on my blog.

Quite excited, I must admit; even a bit embarrassed ;)

Echo2: how to log users out and close their session

Tuesday, December 26th, 2006

The nicest thing about Echo is that is abstracts you from the “page” thing and makes you quickly forgot that you are actually inside a web environment.

Anyway you can’t forget your environment as it influences your design and code decisions.

This is the case of session invalidation and logout actions. I’ve written a small page on the nextapp wiki and I want to propose it here for the search engines’ sake :)
So: how do you log your users out and invalidate their sessions? As always, it depends on what you need to achieve.

The easy and quick way
As you know, Echo2 applications state is synchronized with the model stored into each user’s session. So, if you just want to force the user to start from the beginning, changing the screen will be sufficient

ApplicationInstance.getActive().getDefaultWindow().setContent(new WelcomeMessageScreen());

In no way the user will be able to interact with previously rendered components, so security is safe.

Advantage:

  • quick: you could already have a “welcome” screen, so “closing” your application is just the line above

Disadvantage:

  • the session is still open

The servlet way
If the easy way is not enough because you want to invalidate user’s session as soon as the user logs out, you may implement a short servlet.

public class LogoutServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getSession().invalidate();
response.sendRedirect(request.getContextPath() + “/”);
}
}

Note: you can’t invalidate the session INSIDE the Echo application, because that will cause a “session expired” message; you need to invalidate the session outside the application. Although it may look weird, it’s actually better as your application SHOULD NOT know in any way that it is running inside an “servlet container” (because Echo abstracts you from that). Having a “Logout Servlet” does not solve the problem, but isolates the session invalidation logic into a known, separate place.

Advantage:

  • more control: session is invalidated programmatically.

Disadvantage:

  • the above code may look reusable, but what if you need to dispose other resources as well? Read on

The servlet + session listener way
Suppose you also need to log how long a session lasted and/or to dispose other resources and/or to do something else when a user logs in and out.
Then you need to implement the interface !HttpSessionListener and to register it into your servlet container.
An empty one looks like:

public class MySessionListener implements HttpSessionListener {
private static final Log log = LogFactory.getLog(SessionListener.class);

public void sessionCreated(HttpSessionEvent arg0) {
log.debug(”new session created”);
}

public void sessionDestroyed(HttpSessionEvent arg0) {
log.debug(”a session was destroyed”);
}

}

Code the two methods according to your needs. As you may have noticed, the “logout servlet” may be reused quite easily, while the above listener may be more specific to your application.

Advantage:

  • total control: forget for a while the beauty of Echo abstracting you from the web thing and brush up your servlet knowledge

Disadvantage:

  • more code to write and maintain

I usually go with the third method, leaving the listener empty until I need it. The cold face of the hammer of gold looks at me, but I don’t care about such a tiny piece of code

Echo2: impressive!

Sunday, December 17th, 2006

As you may know, I had a talk at JUGMilano about Echo2.

To show the juggers some of the Echo capabilities, I’ve built Echo2Impress, a simple echo application that shows slides, just as OpenOffice Impress does.

Ah! How cool it was to present Echo with Echo! :)

If you want to give Echo a try or if you are just curious about it, take a look at Echo2Impress and its blank presentation project.
Hope you like it ;)

Echo2: an enterprise app review

Wednesday, November 29th, 2006

Following two posts on the echo2 forums, Matt Brooks has written a nice review about his experience using a stack made of Echo2, JBoss, EJB3 and ServiceMix ESB.

Matt’s app seems really cool. Its loading page is the cooooooolest thing ever seen so far in the ajax multiverse!

Taken from the architectural point of view, it’s a nice reading especially because I’ve heard too many “w00t!”s while I’m not aware of any good enterprise application (but Google’s, of course).

I haven’t looked for them actually, but I think I should have heard of them, at least from the javaposse guys, who are well aware of RIAs (as one of them is from Google and as they’ve interviewed the GWT team).

Am I wrong? Or blind? Or this ajax plane is actually taking too much time to take off?

By the way, even my two apps are going to be released in the next few months. But they won’t be public. Argh! I wanna go public!