As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What is a good mobile programming platform to go with for a c++ developer?
Is learning android a good option?
If you already know C++ then Symbian has the largest install base, and isn't sandboxed like java/android vm/iphone.
Whilst the iPhone and Andriod may seem interesting, if you actually look at the figures Symbian really is the only option when looking at market share. Despite apple's advertising behemoth and cult following, it is far from being anywhere near the 200+ million Symbian smart phones out there. (there are approx 5 million iphone users).
Added to the fact that "java" on mobiles doesn't always mean the same thing. Different phones include different versions so unlike the PC environment, java on mobiles is not as "write once, run anywhere" as it makes out.
I have started playing with Android with the latest SDK. It is super easy to develop because of the coolness of Java, richness of android platform and eclipse IDE is very easy to use. I think Android is going to make a big difference in the moile application side.
UPDATE : Now you have the option of Windows Phone 7 too, which is my favorite at this point because I am a .NET developer for many years. Just get the WP7SDK and start coding in your visual studio itself.
Java ME will give you the widest choice of deployment options and market share, because most mobile phones support it. Going from C++ to Java is quite easy, since Java has fewer gotchas than C++. As a positive side effect you will also get to learn Java on a platform whose footprint is a lot smaller and manageable than Java SE.
I would advice the .NET Compact Framework for easy and fast development. The included emulator in Visual Studio makes it that much easier to develop.
But I also think that it depends on your intended application, I would for instance not advice the compact framework for writing a game with demanding graphics.
The downside of using the .NET Compact Framework is that you'll get limited on your target hardware, because it will only run on Microsoft Windows CE versions (and I thought on SymbianOS).
Personally, I started out with the Windows Mobile platform and Microsoft Embedded C++.
It was a natural shift because I'd come from the MSVC compiler/Visual Studio 6 environment, so I was already quite familiar with aspects of the compiler and the IDE.
In fact, because I was so familiar with those other tools, picking up the emulator and (notably) the oddities of working with ActiveSync became much easier. I also found the OS to be easy to use (including the familiar File Explorer and system design).
So, to more accurately answer your question, I think it depends on which platform you are familiar with previously and how confident you feel with the tools available. Especially for debugging and emulating!
in Symbian you can reach all the phone functionality == do really cool things, but Symbian is a bitch when you are trying to learn it from scratch - it's complicated.
JavaME - popular, very quick to start, light API, but sandboxed, access to different phone areas varies from vendor to vendor, from model to model. You can do stuff like connect to net, draw graphics and display menus on pretty every phone, but access to phone book, camera, sms messaging varies greatly
Sometimes it takes time to get app working exactly the same on different phone models (i don't know exactly, but i think this would be a problem on all the mobile platforms)
You surely need to check out Windows Phone 7, it is C# and have great tool support with VS2010 and Expression blend to develop quick Windows Phone applications. Not only this will benefit you in Phone. The same dev-skill set can be used to make Silverlight as well as WPF applications easily.
You can try to use StartJava which illustrate Android application creation.
http://www.en.assoft.ru/startjava
https://play.google.com/store/apps/details?id=com.assoft.StartJava
I want suggest you android is best technology among all now a days android phones are increasing tremendously so the development are also increasing like wise and it can be learn any developer...on the internet many tutorials are available to teach you android programming....so i would like to suggest you is that android is the best option...
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm writing a client app, quite old school, quite conservative. On Windows, I'd probably use .NET Forms, or maybe WPF, I'm not sure. On the Mac, I'd use Objective-C, Cocoa, and all that stuff. But I want this app to work on both, and I'd rather only write it once.
Should I write it in QT? I heard that when you get down to it, QT is buggy when you use it across platforms. Do I have to worry about continuity, what with Nokia's recent troubles? What does the community think about Digia?
Should I write it in Java? Newer Mac OS doesn't come with Java anymore, and Windows never has. How can I create a good setup experience like that? What about USB devices? There are some Java USB projects, but they're all Windows or Linux based, no Mac. I'm also worried about getting a native look&feel, but I guess Swing has me covered there.
Should I write it in Python? I'm worried about performance here. Also, I've written large Python apps before, and I found that Python scales poorly to large code bases, because of the lack of static analysis.
What do you write yours in?
I asked a similar question a few weeks back Building a Mac and Windows GUI Application.
With regards to "native look & feel": If you want this, don't use a cross-platform GUI library. Write the GUI layer once for each platform. You can share the core application logic. You can probably get away with using Qt or wxWidgets on Windows and Linux since requirements for look and feel are more relaxed, but it will look rather out of place on Macs.
If "native look & feel" isn't essential, I'd say go with Qt or wxWidgets and save yourself the headaches. I wouldn't worry about continuity for Qt. Its desktop framework is very mature and isn't maintained by Nokia (they maintain the mobile part). The open source community will keep it alive. Don't know how buggy it is, but what cross-platform framework doesn't have its share of bugs?
If "native look & feel" is essential, read on for languages choices for the core application logic.
Java: Don't. Swing doesn't actually provide a native look & feel. Just try and make any comprehensive GUI with it. Swing is also very painful to program in. There are plenty of alternatives to Swing, but I doubt any of them will be better than Qt. In addition, most apps will probably need to hook into the OS. Java bridging on Macs is deprecated. You'd have to use JNI for any extensions. Probably the same for Windows.
Python: That's the path I took. Python is not only cross-platform, it comes with a rich set of cross-platform libraries. Also easy to write C/C++ extensions on any OS. Downside is that it's relatively slow to start and takes more memory than a native C++ app. Trying to set up a deployable application is rather painful too. I wouldn't worry too much about performance though unless you plan on doing serious data processing.
C++: Also a good choice. It's not too hard to write a cross-platform app with C++ if you use cross-platform libraries like Qt or Boost (haven't tried, conclusions from questions and research). Also compatible with xCode, Visual Studio, etc, so it's easy to set up the project.
Being mainly a Java dev I lean heavily to java. Your concerns with java can for the most part be handled.
One I would JavaFX instead of Swing. It is still fairly new, but I have been playing it recently and it is pretty nice. You should be able to create what ever look you like, and it be pretty consistent. The other added benefit, is that they are adding Native packaging for JavaFX. It is still early, and that is not in the stable releases yet from what I understand.
No matter what you go with there will be hurdles and issues. So regardless of what I said above, you should pick whatever you are most comfortable in. Heck you could if may even be able to go the .net route and use Mono. I hear Mono works well, especially with projects built using it from the beginning.
There are number of options available to you
Java application
Web application
Use a wrapper like App Accelerator
Java Application
Writing a Java application which is platform independent would suite your need. But development wise you might face problems. Specially GUI experience.
Web Application
Web application is the right way to go but installing it and setting up a web server in local machine might be bit tricky. Moreover if you want to host the application this is the way to go.
Application Wrapper (App-Accelerator)
If you can use an application wrapper it will work in pretty much any platform - windows, mac os. A good example might be Wunderlist.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I want to start to make a chat client that runs in web browsers, upon a colleges requests. Its my first time doing something like this, so i made some research about this mostly about HTML5. I did research on the platform itself, how fast and how used it is, but my most important factor was: mobile support
I plan to develop this chat for a long while for experience because, as a coder/programmer I am still inexperienced.So i was thinking in the future as well. i have a forum community with pretty limited chat access. I want to change that as well, and as an extra include mobile support.
i researched Flash, java and HTML5, the two most obvious choice in web applications, and pretty much the new comer HTML5.
Flash is more widely used as web app(at least what i saw and found.), and its more designer oriented than programmer, but many chats are written in this, and are used. but there is no mobile support for it, to my knowledge. thats hinders my future plans.
Java, is a robust programming language, and saw a few webchats in this, but my main issue with this is performance: its much slower than flash. But at least there is mobile support, at least the android mobiles.
as for HTML5....its pretty much still a child, not all web browsers support it fully but the major ones support web socket already, except IE9. and IE9 is the most used web browser, sadly. And i cant find any support for it on mobiles yet.
And i don't know any other platforms out there in the Internet that could do the same as the above three, but i'm open.
So my question is: Which is the best platform for writing a webchat, that lest me do mobile support at a latter stage?
No, the correct answer is: Understand which method is quick to deploy, cost-effective and easy to learn. You'll need to integrate languages to make this work. HTML 5 is the latest and greatest, that's one. JAVA ~ still in demand on the Android side..learn it..
Flash is dying..don't learn that.
Windows ~ .NET..don't count this out...Microsoft is planning on coming out with a mobile platform...this is still good to learn..always learn a language that's going to give you job opportunities in the future.
You cannot write a chat in HTML 5 alone (because it operates on the client and there needs to be server code), you would need PHP or JSP for that.
I wouldn't use flash except if you are already very proficient in it because:
it needs an extra plugin
it frequently blocks or crashes some browsers
I think it is difficult to develop and I am not sure if the development software is free
So my choice would be Java Applet by default. It needs an extra plugin but it is much more stable than flash and you need it for many applications anyways but it has so much functionality that is very easy to make a chat with it.
P.S.: Java's speed is absolutely no problem for a chat. Java is maybe 10% behind C++ depending on the application but we are talking about languages like Flash or PHP so Java is not slower but it doesn't matter anyways because a chat has next to no resource requirements.
The correct answer is: it depends. You can implement such a program using many technologies. Each of these technologies have different characteristics and pros and cons but you have mentioned that this is going to be made for a university task. This way i recommend you to choose HTML5, this is a quite new technology, i think it worths it to have a little experience in that!
If you want to have the least work with this project, you should use java.
This is MY opinion.
You should have a look at nodejs:
http://nodejs.org/
Also the socket.io module for nodejs which allows you to use websockets as a transport mechanism for capable browsers and provides fallback methods for older browsers:
http://socket.io/
There's a node and socket.io chat tutorial which might be helpful and a working chat demo based on node (though I couldn't see any reference to socket.io when I reviewed the code).
I would not discount using Flash. It is still an industry standard in web development. It is way faster than a Java applet, but you are right, Java is not going anywhere. Flash allows you to deploy your project to the web, stand alone application on Mac and PC, and on mobile.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm developing an Android application and I would really like to deploy it for the iPhone as well.
However, I do not know Objective-C and I think it would take an annoyingly long time to figure that and the Apple framework out.
Is there a recommended way to port an Android application to iOS? Would the best bet be to hire a freelancer?
On the run now (home time ;-) ), so my answer will be concise (sorry)
Take a look at/Google (in no particular order):
MoSync <- Compiles C++ native apps to several mobile platforms, including Android and IOS, GPL for non-commercial projects.
AirplaySDK: Similar to MoSync, mainly commercial, has some free licensing for one of the 2 environments you're after (believe that's IOS, please verify yourself). Has been used comercially by Konami, Activision etc.
OpenFrameworks (OF) - Collections of C++ 'wrapper' code which enables unified cross-platform development of Audio/Visual projects (could be used for Games etc). The Android port is beta, see Android/Eclipse/OF Installation and the Android port's GitHub repository/developer (branch 0062_Android). The iPhone-specific code is quite complete (accelerometer access, etc. etc.).
XMLVM - It allows some level of porting from Java to a native IOS executable. Not sure how far forward this project is, and you might need to implement some of their framework classes (relatively trivial if you've got good separation of your existing Java libs).
Personally, I'm looking at OpenFrameworks right now, mainly as I like the 'One API' concept and I'm avoiding Objective-C for the moment (Want to ease myself in, I'm a Java/C# dev).
Edit: Notice that since this answer was written XMLVM development has stopped. Also Codename One came out in the interim and provides a path for Java developers.
Cheers
Rich
Your best bet for X-plat is HTML 5.
You will not be able to automagically port your native code because Android and iPhone use completely different patterns for developing all aspects of "the app".
Right now I've only seen MonoTouch (now Xamarin) available for cross platform development, which allows you to develop in .NET targetting the iPhone.
I have not seen a similar product for Android, but would a .NET based conversion process be feasible? The pricing is not outrageous.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
What is the most efficient way to port an iPhone app to Android? I know Apple doesn't like 3rd-party, non-Objective C platforms generating code for their platform ... but is there something out there that can take an iPhone app and convert it to Android friendly code?
If not, how have folks out there been creating Android versions of their existing iPhone apps?
Thanks
There's nothing of the sort to port your app. You can use 3rd party tools to create apps that work in both. That's what Titanium and PhoneGap were aiming at. With the new changes to the SDK Agreement, those look like they're not really "legal" or at least violate the agreement.
As for your other question, yes, people do create 2 separate apps. One for Android and one for iPhone. That's the way I currently do it and seems as if Facebook and others do the same.
Yeah, people don't usually love the answer that we have for this one at Appiction. It seems like it should be easy since they are so similar, but they are completely different operating systems with different ways of being used. Sometimes a company will be able to cut a deal with you since the art has already be developed and the basic wireframes have been conceived. At Appiction we created a video to answer this exact question for our clients: http://www.youtube.com/watch?v=Y-fdRw1WNYI
Apportable provides a platform to build and deploy existing Objective C apps to Android.
There are few alternatives to port an app from one platform to other. like Rhodes Mobile, Titanium and PhoneGap. In fact they did a good job and tried very well to remove fragmentation in smart phone app development.
But according to Apple's SDK Agreement version 4.0, section 3.3.1
app must be developed in C/C++/JAVA script.
At this stage convincing way is to write it separately.
PhoneGap is not a true cross platform app development tool.
If you want to create an app for both iPhone and Android using PhoneGap, then you have to create two different apps that will make use of PhoneGap framework. But one single app for iPhone and Android can't be created using PhoneGap.
There really isn't a short cut to porting. The best thing you can do is use a company that specializes in porting, like migration.mobi. The cross-platform frameworks have performance problems and really limit what you're able to do.
Games are a different story altogether, so be ready for different answers if you've been a complex real-time game on iPhone and you want it to work on another platform.
Noodlecake Studios appear to have solved the issue of porting from iOS to Android, recently porting Trainyard among others:
Its no secret that the process of porting iOS games to the Android
platform has been met with rough waters... These issues are
familiar to us at Noodlecake Studios and prompted the creation of
Noodlecake Games, a porting and publishing entity designed to
alleviate many of these problems. Through our efforts over the past
year, we have developed technology that allows us run iOS code
natively on android devices. What that means for developers is there
is no need to rewrite iOS code for the Android platform, it all runs
automatically. To be expected, many developers at first didn’t believe
what we were doing was even possible.
At android there are 2 categories: the lower one, with g1 and the better with Nexus 1 if you want to develop games.
Those cross platform libraries I think they can do cross platform "Hello word" applications.
To generate a correct Blackberry networking application or an optimized Android graphic application (to both categories), I highly doubt it!
the frameworks has the big cons, when you want to look outside of the sandbox. Those 3-4 custom stuff, plugin often cost more, than the whole application written fast until that point.
So, "Hello word" +very basic, only soft stuff with cross platform.
High performance, nice graphic, easier to bugfix, support, professional work: develop for each platform and categories.
There actually is a tool that does exactly what you're asking called O2J. You can leverage your existing Objective-C codebase and convert it to Java with the O2J conversion tool.
It's a paid app available on the Mac App Store... O2J Objective-C to Java Converter
Most of the time it's preferable to have a native UI and native code for performance, working with the platform UI paradigms and to take advantage of platform specific APIs/services.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I want to learn mobile programming, specifically Android or iPhone programming, but not sure if it is necessary to learn J2ME before working with Android or iPhone. I know only core Java (and OOP concepts very well).
I need your suggestion, especially if any one working in mobile development field.
Hoping for favorable reply...!
Thanks.
iPhone development has nothing to do with J2ME.
Android development is based on Java, but the SDK is different from J2ME. If you only know Java, Android may be easier for you. In either case you don't need J2ME.
As has been already pointed out, J2ME experience is not a requirement for developing on either stack.
Android development is effectively java-syntax (under the hood things a bit different), so if you already have strong Java skills then this will be the easiest to get started with. There will be a host of new topics to learn concerning UI and general mobile development techniques so familiarity with the language will make things a little easier.
In terms of the iPhone, bear in mind that you will need a Mac to (officially for now) develop using the current SDK and as has been pointed out uses objective-c for development.
In terms of your experience and ease of device debugging then android will offer the lower-bar to entry (and it's cheaper to deploy items to the market).
A useful site will probably be www.anddev.org in addition to the main android link already posted.
No.
Android have a complete different stack. It uses the core of the language and you'll have to learn the API. You can start at: http://developer.android.com
iPhone doesn't use Java, it uses Objective-C, so that's a complete different history. You can start here: http://developer.apple.com/iphone/
For what I know J2ME doesn't have much to do with android development. I'd suggest that you head here
And for iPhone - there is no Java so use Objective-C
J2ME experience is not required, nor an advantage, for Android or iPhone development.
Feature phones from for example Nokia and Sony Ericsson run J2ME applications.
J2ME apps are programmed using a subset of the Java 1.3 programming language.
J2ME apps are realized with the API known as MIDP, and various optional API:s known as JSR:s that may or may not be available on any given device.
Android applications are just distantly related to J2ME applications.
Android apps are programmed using the full Java 1.5 programming language (aka Java 5).
Android apps are realized using the API known as simply Android, and a subset of the Java 1.5 frameworks available for desktop and server applications.
iPhone apps are not even distantly related.
iPhone apps are programmed using the full Objective-C 2.0 programming language.
iPhone apps are realized using the API known as Cocoa Touch, that shares about half of it's API:s with the Cocoa framework used for developing Mac OS X desktop applications (The shared parts are commonly known as Foundation).