Hello guys coding newbie here. I've just finished basics of Java and some multithreading techniques then started learning some Java SWING coding. At the same time I have started Android which I found more interactive and fun to learn and the fact that it uses Java meant I did not have to learn it all over again.
So when I was learning the two simultaneously, I found out that the construction of Android application and Java SWING applets are very similar. So simple stuff like getting responses of the button seemed to be exactly the same for the two (I guess it's because they use the same language). Are they completely the same?
Also, although Android uses Java, does it have some of its own variations in usage of Java that makes it different from Java language itself?
Thanks guys
Android is using java as a coding(native) language , there is no difference, but they've removed some packages in the android api because they might not needed in Mobile development and they've included some of their own.
Android applications are different from Swing application in terms of platforms and their scope.
Android applications are designed more in .xml files, it has different machanism (like generating ids specified in xml to R.java etc). But the basic java with which you are accessing resource is same
Swing wasn't designed for a touch based constrained environment so it just couldn't fit into mobile. Android is actually radically different to Swing in many regards e.g. Activity.
I'd suggest checking out Codename One (my employer) which allows Android/iOS development and is more similar to Swing. Codename One has its roots as a Swing clone designed for mobile that we built at Sun Microsystems.
is there a point starting with java basisc or should I go for android-based examples and tutorials?
They are basically the same. But, I recommend going with android based examples since android has unique app cycle and app format.
Android SDK is build in and using Java.
They are for all intents and purposes the same.
However Android is coded using it's own specific library methods and syntax, hence it's a better idea to skip directly to Android. Knowing Java makes it easier but is not a necessity to code in Android.
You will require the JDK since it does need Java to run.
I am a newbie in android apps development. I was wondering which of the two is easier for developing android apps which are more geared towards GPS and GIS related data/activity.
I see python being predominently used for GIS related applications/programs. I have also heard/read that Python is easier to code and learn to code. In addition, I am not looking for an complicated applications other than simply logging acceleration, GPS data along with triggering camera activity.
What IDE would you suggest me based on your answer?
I was playing with Eclipse IDE for Java to develop some "Hello World Apps".
This post seem to be old to me and the answers does not seem to consider the GIS aspects.
My advice is unless you have a highly compelling reason that has been peer-reviewed, do not fight the Android platform. That means you should just use the standard Java Android APIs.
I've programmed a couple of apps that make use of the Android GPS hardware. You will find many examples and guides using Java.
If you find some compelling reason to use python for your back-end of an enterprise system, that will still be possible.
As far as IDE advice, I prefer IntelliJ IDEA, having used both eclipse and IDEA. Eclipse is great, though I find the IDEA UI and features to be easier to learn and use. No doubt they are both fantastic and complicated software that will at times frustrate you.
The answer is Java as Java is Android's language.
There are other options like Mono with C#, Python, C++ with NDK, C++ with Marmalade, etc
Most official android docs are about java and C++ with NDK.
Python on Android is mostly used by python fans in rooted environment.
If you wish to make commercial and release it in Google Play market then you should use Java in such application.
I just ordered an Android smartphone and want to start playing around with creating my own applications. Now the question is which language to use, the native Java or Python using SL4A (former ASE).
I tend to Python, as I know it much better than Java, but I'm wondering what I would be missing using a "second class" language on Android. On the SL4A website it is also stated to be alpha quality software, which is not exactly encouraging.
I'm also not quite sure what the limitations of the scripting environment are and if they would be problematic.
At the moment you cannot create a releasable program with Python (or any other scripting language) using SL4A. I have heard rumours that this is something Google is working on, but even if they do enable it Python apps are likely to be slow and power-hungry compared to Java. Also the scripting API only gives you access to a limited subset of the native Java API. I would not consider using SL4A for serious development work at the moment, only for one-off scripts and prototyping.
Take a look at Scala. It is a statically typed language on the JVM, but uses type inference to remove most of the noise that you get in Java. It also fully supports functional programming, and has a lot of pythonish features. Because it is statically typed it is as efficient as straight Java with none of the disadvantages. IMHO it is the language that Java should have been in the first place.
A lot of people are blogging about using Scala on Android, so Google around for more information.
More likely will depend what type of applications you will develop.
I would start with Java to become familiar with Android SDK. Anyway first you need to look into some examples, tutorials. Most of them are done in Java, and only a few, probably on the dev site of SL4A for that.
Also there is native development Android NDK, that can be programmed with C++.
But anyway Java rules for general applications.
Adding an update to Dave Kirby's answer:
Issue 55, Distribute scripts as APKs, in the issue tracker at SL4A deals specifically with that.
There is a solution being worked out (may be complete by now) described at SharingScripts. The only issue seems to be that you need to have a interpreter APK already installed.
you may want to check out Ruboto it is a framework for developing Android apps based on JRuby which means your JRuby code can call Android APIs and can also be called back from the Android Java side.
Here is an introduction article .
Consider ising Kivy, if you want to write Android apps with Python. The process of packing script to .apk file is described here.
The problem is, resulting .apk will be big (~7Mb for 300Kb data). It is obvious, because you need to pack there Python runtime and all libraries.
Another solution I have heard of, is Pygame for Android, but it works on lower lewel, so you need to draw graphics manually.
Unfortunately, I have not tried any of this ways yet, but it looks, that I'm going to start using kivy soon.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I was wondering if is it possible to develop iPhone applications using Java plus XMLV, which claims to cross-compile Java-based Android applications to native iPhone applications.
Is XMLV a viable way to develop iPhone applications using Java?
Here are a few Java code examples used to build and application in an iPhone:
http://www.xmlvm.org/iphone/#
I think we will have to wait a couple of years more to see more progress. However, there are now more frameworks and tools available:
Here a list of 5 options:
Codename One
RoboVM <-- Closed
Avian no maintainer
XMLVM
J2ObjC
Multi-OS Engine not maintained
If you've completed your other projects, why not take the time to learn Objective-C? There is a ton of material out on the web to help you get started. Honestly, it won't be that hard and learning to do some memory management will be a great learning exercise. Have you programmed in C before?
Most cross compilers won't do a great job in converting your code, and debugging your project may become much more difficult if you develop them this way.
I think your teacher sent you down the wrong path.
This is a classic example of trying to put a square peg into a round hole. The best way to develop for the iPhone is with the iPhone SDK and objective C. The best way to develop for Andriod is Java and the Android SDK. The best way to develop for WinMobile is C#/VB and the .Net Framework.
As you can see each has their own "best" SDK. Since you are only learning Java I would second the suggestion to play around with Java and Android.
There is anew tool called Codename one: One SDK based on JAVA to code in WP8, Android, iOS with all extensive features
Features:
Full Android environment with super fast android simulator
An iPhone/iPad simulator with easy to take iPhone apps to large screen iPad in minutes.
Full support for standard java debugging, profiling for apps on any platform.
Easy themeing / styling – Only a click away
More at Develop Android, iOS iPhone, WP8 apps using Java
take a look at codenameone.com project, it's a cross platform mobile framework where the ui part is a fork of LWUIT.
This project leverage xmlvm to translates the java bytes code to Objective C
You can also take a look at RoboVM.
It translates Java byte-code into native ARM or x86 code which can run directly on the processor without any VM or interpreter needed. Most of the Obj-C UI elements are already bridged into Java and follows the usual Java design patterns.
Edit
Robo VM recently announced that it would be shutting down the service - Source
You need to know at least basics of Objective-C to develop for iPhone. However, it is possible to use C++ classes.
As far as I know Adobe is working on building Flex/Flash applications for iPhone. Read more here: http://theflashblog.com/?p=1513
You can't.
Note however that Monotouch allows you to develop in C# instead of Objective-C. http://monotouch.net/
If you plan on integrating app functionality with a website, I'd highly recommend the GWT + PhoneGap model:
http://blog.daniel-kurka.de/2012/02/mgwt-and-phonegap-talk-at-webmontag-in.html
http://turbomanage.wordpress.com/2010/09/24/gwt-phonegap-native-mobile-apps-quickly/
Here's my two cents from my own experience: We use the same Java POJOs for our Hibernate database, our REST API, our website, and our iPhone app. The workflow is simple and beautiful:
Database ---1---> REST API ---2---> iPhone App / Website
1: Hibernate
2: GSON Serialization and GWT JSON
Deserialization
There is another benefit to this approach as well - any Java code that can be compiled with GWT and any JavaScript library become available for use in your iPhone app.
I'm answering this question 2 years down the line and I must stress that I did have pretty much the same problem as you did. However I'm so happy that Android has evolved into what it is today.
Having said that, I do regret that I did not learn C/C++ while I could have and I don't want to blame my teachers for it cos where was my brain when the time was right?
I'm sunk in Java today and I'm glad that I did not make the mistake of learning too many languages and being less productive... However I did learn HTML5 which really made things a lot easier, maybe someday, I might get motivated to learn C/C++ . Or if I get an Apple mac at a real throw-away price, I might learn Objective-C :)
I think Google Open Sources Java To Objective-C Translator will make it possiblöe to develop in Java for iOS https://code.google.com/p/j2objc/
try to use TotalCross. It is a Java Framework to help devs create iOS and Android apps with only one source code. Different from the others platforms, it doesn't require any knowledge in iOS (Objective-C or Swift) nor Android (SDK or NDK)
there is a maven integration
https://gitlab.com/totalcross/TotalCross/wikis/building-with-maven
http://www.xmlvm.org/android/
Specifically talks about Java based Android apps being ported to the iPhone using non-Apple hardware.
You might also want to check out MonoTouch (C# rather than Java...but the two are very similar).
Perhaps you should consider Android applications instead of iPhone applications if you really want to develop in Java for smartphones. Android natively uses Java for it's applications; so perhaps this might be a better option?
As for iPhone, I would recommend you to look into Obj-C or C/C++ depending on the type of applications you want to make. Should be fun to dabble into a new language! :)
You can try iSpectrum ( get it at http://www.flexycore.com )
You'll be able to develop and debug your Java apps in Eclipse. You'll still need a Mac and XCode to launch it on the simulator, or install it on the real device, though.
But you won't have to actually use XCode editor. Plus you can use it for free if you're planning to work on an open source project.
To add to this there's: http://www.oracle.com/technetwork/developer-tools/adf-mobile/overview/index.html
A Java & HTML5 Based Framework for Developing
Oracle ADF Mobile enables developers to build and extend enterprise
applications for iOS and Android from a single code base. Based on a
hybrid mobile architecture, ADF Mobile supports access to native
device services, enables offline applications and protects enterprise
investments from future technology shifts.
Even if the question states Java, most of the answers have digressed. So I thought I would do the same :)
We have been using Adobe AIR for the last 5 years and it is truly cross-platform and provides native-like performance with the same code base (at least 99% of our code is the same). Adobe AIR got some bad press at the beginning during the 'beta' period (slow, no GPU, Flash 'dead' etc.) But now, it's amazing what you can do with it. Not to mention the wealth of open source libs out there.
With the same code base you can push your app onto:
iOS
Android (x86 and ARM)
Flash (still VERY useful)
ChromeBook
PC (as native with installer)
Mac (as native with installer)
Why bother with Java or Objective-C ?
The only common platform not covered is Window Phone. But that's coming soon too.
Build a hybrid app. Anyways Java is not enough for a software engineer , you need to learn JS,HTML5,CSS as well for becoming a full stack mobile/app developer.
Build the complete backend using Java & frontend using Cordova/Phonegap.
I'm assuming you dont need the last drop of juice from the hardware even hybind app should suffice your needs.
Build a responsive webapp using Bootstrap 4 + React JS. Use https://github.com/ipselon/structor to quickly build up the frontend. Now the web app becomes an app in the browser.
You could also take the same app and build it using cordova to publish a app on ios/android platform.