Implementing Gmail-alike Web Mail Client by Java2Script

WeMail, this to-be-implemented Gmail-alike web mail client, is based on technologies of Java, SWT, JavaMail and Java2Script.

Before going into designing and implementing details, here are some background information.

Java2Script (J2S) Pacemaker provides an Eclipse Java to JavaScript compiler plugin and an implementation of JavaScript version of Eclipse Standard Widget Toolkit (SWT) with other common utilities, such as java.lang.* and java.util.*. You can convert your SWT-base Rich Client Platform (RCP) into Rich Internet Application (RIA) by Java2Script Pacemaker.

JavaMail is a Java API used to receive and send email via SMTP,POP3 and IMAP. JavaMail is built into the Java EE platform, but also provides an optional package for use in Java SE.

SWT is an open source widget toolkit for Java designed to provide efficient, portable access to the user-interface facilities of the operating systems on which it is implemented.

Google Web Toolkit (GWT) is an open source set of tools that allows web developers to create and maintain complex JavaScript front-end applications in Java. Other than a few native libraries, everything is Java source that can be built on any supported platform with the included GWT Ant build files.

Why implementing another Gmail-alike web mail client?

When GWT is released, lots of developers ask whether GWT will be used in Google’s major products, like Gmail, Google Reader or other products. Yeas went by, but there is still no Gmail powered by GWT. So using Java-to-JavaScript technology to build another Gmail web client should be fun for technical geeks. I choose Java2Script to build this web mail client, hoping it would help improving Java2Script toolkit.

I like Gmail UI, but I can not use its UI for other mail providers, like Hotmail or Yahoo! Mail. So I believe WeMail will help users doing their email jobs like receiving, composing and replying emails, in Gmail-alike UI for all mail providers. And it will sure increase their daily email processing efficiency.

And there are lots of companies that might block web access to Gmail, Yahoo! Mail or other mail providers. In these cases, a web mail client for general POP/IMAP & SMTP will help those users accessing emails even behind firewalls.

So I finally made up my mind to build it. And it was my two weeks’ fun.

Dang, dang, dang! Here it comes WeMail – Web Mail Client for Gmail/Hotmail/Live Mail/Yahoo! Mail/AOL Mail.

Configureing mail servers and login:
wemail-web-login

WeMail main window, listing emails:
wemail-list

Viewing an email:
Click for large view of wemail-message-viewer

Composing an email:
wemail-composing

How is this Gmail alike web mail client being implemented?

I use WindowsBuilder Pro (formerly known as SWTDesigner) to design all the UI elements. Here are screenshots of its UI components being designed:

Overview of WeMail in designer:
wemail-design-overview

Designing top menu bar:
Click for large view of wemail-menubar

Designing logo and search bar:
wemail-toolbar

Designing left side widget:
wemail-widget

Designing email selector bar:
wemail-selector

Designing email message header:
wemail-mail-header

Designing email message viewer:
wemail-viewer

Designing email composer:
wemail-composer

Designing footer panel:
wemail-footer

Designing login window:
wemail-login-window

Designing mail server configuring window:
wemail-configure-window

Designing and adjust user interfaces causes lots of time.

And what about the receiving and sending emails? I use JavaMail to do email jobs. Between SWT UI and JavaMail, Java2Script’s Simple RPC technology is used. Those mail jobs are separated into following RPCs:
1. CheckMails
2. DiscardEmails
3. FetchMailContent
4. ListFolderMails
5. MarkMailAsRead
6. SaveDraft
7. SendMail

UI events will trigger those RPCs being called in separate threads and UI will be updates after their jobs are done.After RPCs get woven into UI elements. It is ready to be run as a native Java desktop application. So it is:

wemail-desktop

Running, debugging, testing, bug-fixing, all take times. But up until now, all I do is native Java developments. No HTML, no JavaScript technologies is needed.

After the Java desktop version of WeMail is OK, it will be ready for being converted in an AJAX based web browser application. That is the Java2Script job (I am not going into Java2Script details, more information can be found on Java2Script at Sourceforge.net.): Install Java2Script Eclipse plugin and convert existed project into a Java2Script project. All those *.java files will be compiled int JavaScript automatically. Then pack all necessary files into a Servlet *.war file and deploy it into Java Servlet container server like Tomcat. And work is done. WeMail is available at http://webuzz.im/mail/ .

So it is my WeMail’s development log. Having fun.

This entry was posted in AJAX, Java, Java2Script and tagged , , , , , . Bookmark the permalink.

5 Responses to Implementing Gmail-alike Web Mail Client by Java2Script

  1. Pingback: Java2Script Pacemaker » Blog Archive » Gmail-alike Web Mail Client “WeMail”

  2. Aziz Bodal says:

    Hi,

    I looked at your mail client. It’s very cool! I am looking to build an email interface for my application that is built on GXT (EXT GWT). I am a newbie at GWT/GXT development. I noticed in one of your screen shots your have a visual interface in Eclipse to edit the UI (http://dev.zhourenjian.com/files/wemail-design-overview.png). What plugin are you using?

    Do you have any pointers as I embark on this project?

    Thanks.
    Aziz

  3. Suman Bhattacharya says:

    can i install in my web server?

  4. neer says:

    Hi Zhou Renjian,

    Hope you are doing great. Hats off to your work for javascript gtalk, fb, msn messengers.
    I know you have really put huge load of time and hard work to get this up. But, Is their any way so that I can use the your javascript messengers in my webpage ?

    Thank You