Help me choose a framework for my mobile app
January 14, 2013 9:55 AM   Subscribe

I want to build a mobile application (iOS + Android) that communicates with a server. It'll be a fairly simple application - fill out a form or two on the mobile device and post it, along with a photo and geolocation info, to a server. My background is in Java/J2EE and I'm looking to branch out into more modern technology. What frameworks / languages / technologies would you recommend I investigate?

I'm building this application on a shoestring budget, so it has to be cheap and simple to build, host, and maintain. Eventually there will be a desktop-web-browser interface and possibly a user forum (such as phpBB) but that's not a day 1 requirement.

As I said above, I'm a Java/J2EE programmer by trade, I have decent experience with JavaScript and HTML coding.

I'm building this project both for its own sake and as an opportunity to learn more modern technologies. I'm not afraid to try something new. Some technologies I am looking at now:

NoSQL DB (i.e. MongoDB)
Amazon hosting
FaceBook API integration

I expect that I would expose the interface to the back end as a set of web services, and invoke those services from PhoneGap.

Not sure what, if anything, I need between PhoneGap and the NoSQL DB on the back end?
posted by dudeman to Computers & Internet (7 answers total) 4 users marked this as a favorite
By the way, I'm not wedded to any of the technologies above, I'm glad to hear about other, possibly better optoins.
posted by dudeman at 10:48 AM on January 14, 2013

So I can't speak to the "which technologies are coolest" part of this, but my personal social media manager uses the W3C geolocation API in a web page served from Perl to drop this sort of information into a PostgreSQL database, using the MediaWiki::API Perl module to put a picture uploaded (via an HTML multipart form) into a local MediaWiki instance, and dropping the full-res unaltered version of the picture on to a local file store with an suid app.

I then run a cron job every 5 minutes to search that database and update Facebook using fbcmd, Twitter with Net::Twitter, with Net::Identica and then various other systems using everything from XML::RSS to LWP::UserAgent.

The down-side of this approach is that it's just a web page, not an app, so it only works if I have net connectivity. And the image upload requires a browser capable of uploading from a filesystem, so works with Android but not iOS.

But you already know Java/J2EE, why not that to create your web-to-database API? And I assume somewhere between Java and J2EE there are some OAuth bindings, which means you can use it for FaceTwit updates, and an HTTP client for or whatever else you want to make work.

(OAuth isn't that hard to make work from scratch, I've done it in C#, but it's nice if someone's figured out the heavy lifting for you.)

If you need to learn a new web language (I have some snarky feelings about the intersection between people who choose to write code in Java and people who understand how to develop software that I'll keep to myself based on the software written in Java that I've used), pick some software or a web page you like, use whatever it's written in and learn that! And that could be anything from Perl to Python to PHP to Ruby to probably Haskell (haven't done that, yet) or whatever...

Except for the image upload from iOS, this is pretty simple stock web programming...
posted by straw at 10:53 AM on January 14, 2013

Straw- thanks for the answer.

I was avoiding Java on the back end because few hosting providers offer it... but your suggestion reminded me of one good option: Google App Engine. SQL and NoSQL options, Java or Python... I think I'll try that for the back end.
posted by dudeman at 11:11 AM on January 14, 2013

Have you thought of using Apache Cordova on the phone side?
posted by jsturgill at 12:24 PM on January 14, 2013

Also: Mozilla Foundation has an authentication platform called Persona.
posted by jsturgill at 12:26 PM on January 14, 2013

If you are familiar with web development you may find it works very well to build it as a web application with JQuery Mobile. The whole web vs app thing is a rather personal choice, but generally speaking if you can get away with building it as a web application you can deploy to a lot more devices. Some functionality, such as a push notices, can only be done with an app at this time.
posted by dgran at 12:50 PM on January 14, 2013

Have you looked at Appcelerator Titanium? And backend-as-a-service such as Parse or StackMob?
posted by Dansaman at 10:44 PM on April 10, 2013

« Older Can a 65-year-old guy with a tin ear learn...   |   Use TripAdvisor Facebook app or other FB travel... Newer »
This thread is closed to new comments.