Help choosing a proper technology

Hi everyone,
I wanted to ask you all a suggestion. I’m a student working on my M.Sc. in computer engineering. My thesis should comprehend two components:

  • a web application, that will need a DB for saving users and app related stuff
  • a mobile app (android probably), that will use the application services, ideally through public API calls

Now i was checking what technology to use for the project. I considered GWT+GAE cos i already used it for a project and got to know them pretty good.

But i wouldn’t like to stick too much to Google’s tools, so i came across Vaadin. I’m pretty a noob on this, so now my questions are:

  • how hard is exposing some APIs that make use of some app methods, server side? I did it with GWT+GAE and it came pretty simple
  • how can i test a vaadin app online, without having a server that runs apache tomcat? I tried deploying to appengine, but i cannot deploy the vaading app, cos it says the file gwt-dev.jar is too large (in fact it’s 28mb!!)

Thanks for helping!
Cheers
Iacopo

Hi,

IMHO choosing Vaadin for a thesis is a good idea, since you can concentrate on your problem at hand without having to meddle with a whole bunch of intermediate technologies and concepts (AJAX, JavaScript, RPC to name a few).

Now to your questions.

Well, since Vaadin uses GWT as a render technology internally, you’ll be bound to Google even with Vaadin.

This is actually quite easy. You can register a
HttpServletRequestListener
with your application and get notified of every web request. With this, it’s just a matter of differentiating between normal browser requests and requests by a mobile app (e.g. through a special URL parameter). I did the same when I worked on the website www.spar-radar.com. You can access the public API of Spar-Radar with native iPhone and Android apps through such a REST-like API. Instead of sending back a usual Vaadin-Webpage, the Vaadin application responds with a JSON message if it detects the mobile app marker parameter in the URL.

You’re not supposed to deploy gwt-dev.jar along with your application as this jar contains the GWT tools (compiler, webapp creator, etc.). Without this jar, deploying a Vaadin app to GAE should only take one mouse click from Eclipse.

But as an alternative to GAE, you could also boot a Linux server instance on
Amazon Web Services
for free. All you need for that is a credit card to register (which will not be billed if you don’t overuse the free quotas provided by Amazon) and some basic Linux knowledge. This approach gives you the option to actually use a MySQL database on that server (as opposed to Google’s BigTable Database). And it frees you of having to maintain some real, power-consuming server hardware somewhere :wink:

Hey Roland, thanks a lot for the reply! :slight_smile:

I actually already started working with vaadin, using appfoundation to handle some more stuff on my behalf: for the moment i’m really doing great!

And moreover also opened an AWS account, and managed to set it up using tomcat and mysql. So i won’t face the GAE issue anymore and will be able not to use Google’s big table database! :slight_smile:

Thanks once more for the answers!
Cheers,
Iacopo

Cool, good to hear. I wish you all the best for your thesis!

Just a quick note in case it’s not obvious: you can download Tomcat to run locally, so all of your work can be done without incurring any costs. Then you can host the application on AWS later if you want to share it with others. For the database, you can get MySQL or PostgresQL for free to run locally. I assume Amazon has a MySQL version, but I know they have a Postgres option for when you want to use their db services.

I used to work on the reference implementation of Java EE, so I’d lean towards a full Java EE server since this coding is simpler than with Tomcat (that wasn’t always the case) (*). If you have some business logic layer separate from the Vaadin code, then Vaadin can talk to it for your web app and an Android application can talk to it as well, e.g. through a restful web service (the simplest way to make data available over an http connection).

It all sounds like a lot, but there’s really very little code to write. Vaadin would be the most complicated part, and Vaadin isn’t very complicated (especially not compared to a lot of web framework alternatives)!

Cheers,
Bobby

(*) I’ve already mentioned some Vaadin/Java EE blogs I’ve written too often here, so I don’t want to seem like I’m selling something. But I can share them if you’d like. I’m no longer with the company that hosts them, so it’s not like I’m getting paid by blog view. :smiley: