Guidelines for LBS Mobile application development - mobile

i need some help!, i am planning to develop such LBS Mobile Application which find nearest things based on gps data from mobile.
1.what are the best free and (preferably) open source technologies for development?.
2.What programming language to use for development of such application?.
3.what are the points to be considered?
I need the general overview of the requirements for planning, I was interested in having a general understanding of the data, tools, and frameworks required to accomplish the job.

The future proof way to write your application is using Web technologies.
Iphone and Android devices already support the W3C Geolocation API, with more on the way.
I recommend you take a look at a sample http://geo.webvm.net/ to get you started.

On Symbian phones, you can access location information via C++, java (when JSR-256 is implemented) and probably python.
You might also want to look into the Qt runtime as that is the new technology to use for Symbian development.
To start with Symbian application development, start with the Fundation's developer wiki
Both StackOverflow and Forum Nokia contain information about how to use JSR-256.
Relevant plug: There is whole chapter on LBS in Quick Recipes on Symbian OS.

Related

Toolkit options to write a crossplatform mobile app in 2012?

I'm currently investigating the alternatives for crossplatform development for Android and iPhone (Windows 8 could be a nice addition). The app is basically a "map with an asociated app", and certainly not a game.
Searching here I see many outdated advice and tools from 2010/2011, but since then Apple has changed their policies and surely new things have appeared.
My current list and light research (might have facts wrong) is:
Monotouch/Monodroid: .NET (Mono) framework. Create "native" apps on both platforms. Requires rebuilding UI code (or similar things).
Appcelerator: Javascript framework to compile native apps.
Corona: Similar to Appcelerator.
Phonegap: Similar idea, but looks like it uses a wrapper to appify HTML5 content
SenchaTouch: Another HTML5 based platform.
Wink: Yet another HTML5 toolkit.
XVLM: Android to ObjC compiler, probably creating ugly iOS apps.
Unity3D: For games only.
Moai: For games only.
So, there are three main ideas, with some frameworks implementing each, it seems to me:
Have an abstraction layer over native iOS/Android code and build for each platform using the provided layer. (Monotouch, Unity3D)
Use HTML5 (coding in Javascript) and some kind of wrapper to "appify" the web content. (PhoneGap,Sencha,Wink)
Code using a framework that will output as a compilation pass (or similar) a native app for each supported platform (Moai, XVLM,Appcelerator,Corona)
The questions:
Is there a fourth idea I haven't yet found?
Is there any blatant mistake in my research for any of the specified frameworks?
Is there any known problem for map integration with any of these ideas or specific frameworks?
Only a partial answer:
Ad 2. Appcelerator / Titanium is more than just HTML5. I read this pretty extensive comparison between PhoneGap and Titanium the other day on Hackers News. I found it very informative. The link points to the HN comments, the link to the actual article is at the top.
My main experience is with Mono for Android and MonoTouch, so I can't personally speak much to the other options. I personally find it to be the best option there is, as it allows you to share a large amount of your code across the platforms (even extending to non-mobile platforms if you stick with .NET), while still allowing for a 100% native UI, which is extremely important. If you're looking for resources on getting started, I have this video which discusses approaches and libraries for sharing a lot of code across platforms, and also this book which covers the same thing, but also expands to talk about how to do things like store data, use maps, access the network, etc.
I also want to mention MonoGame, which is absent from your list. MonoGame is an open source XNA implementation that sits on top of Mono to allow you to target iOS/Android/Max OS X.
From what I have experienced, if you want to have a native app go Mono, if you don't need native go PhoneGap. Native is best of the UI is very important, ie games or fairly graphical apps. But from business type app, CRUD, Phone gap works well.

JavaFX2 and Oracle's plans about mobile operating systems

I'm writting diploma work about JavaFX 2.0, and I need some information about further growth of this technology. I thought it will be super-multi-platform, but after googling I little disappointed: there are a lot of problems with iOS and android, also in the roadmap of JavaFX there are information only about desktop OSs... So, can developers expect some progress of technology in mobile direction? Will JavaFX be desktop-oriented or wide-universal technology? Or, maybe, it will be some special branch "Mobile JavaFX2"? If JavaFX don't support mobile phones development, Oracle will haven't modern and competitive technology for this huge area of developing?... I really need some answers! Thanks!)
If you asked the same question three years ago i would say that javafx has a bright future. Same thing for Silverlight and Adobe Air or flex.
Today i would say just a single word... HTML5
Java will always try to find a seat on the client side... Adobe sucks because they abandoned their flex developers few months ago and who says that it will not happen again with Air?... Microsoft still tries to convince us that silverlight is a good tech while on the other side they promote ASP.NET with ajax capabilities as their main weapon.
See how fast the browsers are struggling to comply with HTML5 (future!!!) standards and you will agree with me that the above technologies were born obsolete.
there are a lot of problems with iOS and android
There are no problems but one - iOS and Android are not supported in the current (JavaFX 2.1) version.
can developers expect some progress of technology in mobile direction?
Not until it is in the public roadmap (which it is not today).
Answering your other questions would just be speculation on the part of anybody who does not know Oracle's private plans. If you are interested in speculation, you can find some here.
This is probably not a direct answer to your question, but i hope it might point you in an alternative direction
Adobe air is architectually very simalar to java. It also runs on a vm on multiple platforms such as windows, osx, and ... Android and IOS. And it's gui's are sexy ... Real eye candy. For mobile there are some considerations, but currently it is the best cross platform language for gui building in my opinion. Not for server side though. But it integrates like a dream with a java server by means of blazeDS or LCDS.
I know that apple has restrictions as set out by their terms and conditions that you are not allowed to run your app in a virtual machine. So adobe had to compile the entire air app as a native application that basically includes the entire air framework. My guess is that oracle is facing similar issues, and that is probably why it is taking some time to roll out
Having fxml with the power of the java language, definately something worth while waiting for and looking forward to it.
HTML 5 has no future.. this tool has lot of problems of it's own..HTML 5 can't be used to develop enterprise applications, it is very difficult to code,debug and maintain which is very important for any long term projects on other hand JAVAFX 2 is on the rite track of creating GUI with use of object oriented concepts which makes java developers to easily code,debug and maintain without any hustle..

Java ME tips for Java EE developer

I am used to programming in Java EE but right now I am being assigned to Java ME project. From what I am reading all those ME restrictions are quite painful. Do you have any tips on how to deal with such a crude language? Are there are any good libraries which might give a higher level of abstraction?
I am also looking for tips about developing tools or strategies e.g. tools like maven (I mean tools without which you can't imagine working). Are there are tools/approaches which you must know about in Java ME?
There are so many things to discuss here, you could write a book or two about the topic!
First of all, realize that "Java ME" is an umbrella term that encompasses a variety of Java environments, some very limited compared to Java SE, some nearly as capable. However, when most people use the term they're really referring to the limited side of things -- the CLDC (Connected Limited Device Configuration) and the MIDP (Mobile Information Device Profile). So let's assume that's where you're going.
The biggest problem you're going to face as a J2EE developer is the sheer LACK of APIs in a MIDP environment. Also missing language features -- no enums, no generics. Basically you're dealing with a subset of Java 1.3, which is a huge step back for you. The collections classes aren't there, for example, so you end up using the old-style Vector and Hashtable classes a lot. Or you end up using device-specific API extensions at the cost of portability.
The good news is that the NetBeans tools is pretty good for MIDP development, they've put in a lot of good features. You can also use Eclipse, there are some good plugins for that. The tool support is there, including ant tasks and so on.
There's lot of material on the web to get started with Java ME. Read some of my Java ME overview material (which still refers to Java ME as J2ME). Then figure out what platforms you're targeting. If you're doing BlackBerry stuff, for example, you'll want to learn and use the BlackBerry APIs and not MIDP.
There's definitely a learning curve, but you'll adapt quickly enough.

Which platform is used in companies now-a-days to implement mobile applications?

Basically i would like to know which platform is currently used to develop mobile applications i.e. J2ME etc etc...
Also any new ideas on mobile applications would be quite helpful.
Generally, the approach is to go for a website, if possible, and adapt it to each phone using a 'device detection layer'. We use DeviceAtlas.
If you want to write native applications for each phone, then you need to do it in each of the native languages (and there are a lot).
Symbian/Java: Greatest 'penetration'
iPhone/iPod Touch: Latest trend, objective-c for this.
Android: I think this is a variant of Java, and will be a very marginal component of the market for a long time, though maybe high among a certain type of techies.
Basically, you are going to need to profile your market, and determine the best approach. But as I said, in general, you'd prefer a website, and mostly, a website is all you need.
There is a framework called Rhodes by Rhomobile that allows development of native applications for all major smartphones. See my answer to a similar question earlier this year.
We are primarily targeting the iPhone, but don't always make an iPhone-specific application. The web browser on the iPhone is good enough that a lot of our web apps just run there ok. So many of the apps we're writing continue to be done using the same platforms we've always used. We're a big institution so this runs the gamut from J2EE and .NET to Php and Ruby.
Mobile-only apps are developed in XCode (or web versions in DashCode).
If you need to cover multiple mobile (esp. smartphone) platforms, Javascript (with HTML and CSS) may be the only way to go, despite all its limitations. You get under the radar of Apple's iPhone app vetting, it's the only way to target Pre, you can also cover Blackberry, Android, Windows Mobile, AND Nokia on a single codebase... unless the limitations are just TOO stifling for your specific purposes, it sure seems like the way to go!

How to get started with mobile development

Now that Nokia will soon ship my pre-ordered n900, I thought I would familiarize myself with mobile development - maemo seems friendly enough for a guy who's done development only on Linux since days of Amiga and C=64 and is in love with Python.
However, I have no clue whatsoever on stuff like UI:s and especially mobile UI:s - also, I would not like to learn to code just for n900 but in a more broad sense. Looks like most guides etc are very platform or device specific, so any suggestions on like "UI best practices" tutorials, books or websites that are general to all mobile platforms - not just for say Maemo or iPhone.
Actually, that is not really true. If you learn how to use the two main windowing toolkits (GTK+ and Qt) in Maemo, you will be able to write GUIs for all sorts of devices. Nokia has purchased Trolltech, the makers of Qt, and they have released all the GTK+ changes back to GNOME. This means that both Qt and GTK+ are open source so you can port them to any platform.
In fact, Nokia has already done some of the porting for you - they are porting Qt to Symbian which runs on millions of mobile phones. Both Qt and GTK+ run on many platforms, not just linux, so you can write programs for Windows with these two toolkits as well. Note that you are not going to be able to create applications that take advantage of the native operating system's Windowing software, like Aqua, but you'll be able to get a native look and feel.
Learning either one of these Windowing systems will stand you in good stead for developing GUIs and nearly any platform you can think of.
Everything you're finding is platform specific because device development simply is very platform specific. The API sets are widely different. The UI paradigms, including how controls are created and layed out, are different. The processes themselves are handled are vastly different.
There simply are no "one size fits all" rules or recommendations other than maybe broad hand-waving like "remember you have limited resources, so keep your memory footprint low" or "the processor is not a desktop, so things take longer. Code complex algorithms accordingly". As you can see, not terribly concrete or useful.
The unfortunate thing is that you really have to just pick a platform and start to learn it. If you want to try your hand at multiple platforms, you basically have to learn multiple separate skill sets (and often multiple development tools as well).
Forum Nokia has good documentation about user interfaces for mobile devices, of course these are simple general rules as already said here, but take a look to this page: http://www.forum.nokia.com/Technology_Topics/Design_and_User_Experience/ (see also the essential links at the bottom)
The mobile UI isn't GTK+/QT folks. And there is a "one size fits all".
It's called the Web. Learn HTML5 and start writing mobile applications.

Resources