Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This question already has an answer here:

Q1. I would like to know if it's free for a developer (I mean, if I have to pay no royalties to Sun/Oracle) to develop (Android) mobile apps in Java?

After reading this snippet about use of Java field, I'm getting the impression that Java is not free for mobile development, is that right?

.."General Purpose Desktop Computers and Servers" means computers, including desktop and laptop computers, or servers, used for general computing functions under end user control (such as but not specifically limited to email, general purpose Internet browsing, and office suite productivity tools). The use of Software in systems and solutions that provide dedicated functionality (other than as mentioned above) or designed for use in embedded or function-specific software applications, for example but not limited to: Software embedded in or bundled with industrial control systems, wireless mobile telephones, wireless handheld devices, netbooks, kiosks, TV/STB, Blu-ray Disc devices, telematics and network control switching equipment, printers and storage management systems, and other related systems are excluded from this definition and not licensed under this Agreement...

and from http://www.excelsiorjet.com/embedded/

Notice : The Java SE Embedded technology license currently prohibits the use of Java SE in cell phones.

Q2. how come these plethora of Android Java developers aren't paying Sun/Oracle a dime?

share|improve this question
5  
Android is not Java. It uses the Java language as it's programming language, but the runtime environment is distinctly not a JVM (it's the Dalvik VM) –  Joachim Sauer Sep 27 '12 at 5:28
add comment

marked as duplicate by gnat, MichaelT, Martijn Pieters, GlenH7, Jalayn Apr 12 '13 at 2:57

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

3 Answers

up vote 1 down vote accepted

Your reading of the Java license snippet you quote is wrong not only in that it doesn't apply to Android (as explained in another answer).

As an application developer, you don't have to pay Sun/Oracle anything when developing applications for whatever device that has Java installed (here, I am talking about "official" Java, not Android). The license snippet you quoted covers / protects another thing, namely installation of Java runtime at this device.

  • You probably already noticed how you freely install Java runtime (JDK / JRE) to desktop computers, notebooks, servers, did you? That's legal and official and that is compliant with the license you quoted.
     
    But, if you would want to do the same to any other device, this would not be free - you'd have to pay / negotiate with Oracle for permission to do this.

In that sense, it would be easier to think about mobile Java development like you think about development for Windows. Microsoft won't charge you for developing applications for Windows. But you are not allowed to freely install Windows OS.

Similarly, Oracle won't charge you for developing mobile applications. But you are not allowed to freely install Java runtime at mobile.

share|improve this answer
1  
exact, clear and informative. Thanks –  exTrace101 Sep 29 '12 at 13:14
add comment

Q1

You don't need to pay Sun / Oracle any licensing fees to develop for Android.

The license text quoted in the question refers to Oracle's own Java implementations. If you want to use one of these, then you will obviously have to agree to a license under Oracle's terms. But that is completely separate from Android. There is also the OpenJDK, which is the major open source implementation of Java and can be used pretty much anywhere you like without restrictions.

Q2

This is complex, but the reasons are broadly:

  • Google basically engineered the whole Android stack independently from Sun/Oracle. So Oracle have no IP rights regarding the implementation.
  • Courts have generally maintained that you can't copyright a language syntax or API definition. So Google (and you!) can use the Java langauge syntax and core Java API definitions freely.
  • Oracle owns the Java trademark. So Google can't advertise Android as "Java" unless they obtain an appropriate license from Oracle. But Google doesn't really care since they are advertising it under their own Android brand instead.

Oracle tried suing Google recently over these issues, and lost pretty badly.

P.S. IANAL so don't treat this as legal advice. Obviously.

share|improve this answer
1  
I'll add that the OpenJDK is awesome but does not have a mobile profile as it were. It's not intended to be run on embedded devices. Highend smart phones and tablets and things like raspberry pi can in theory run it fine (assuming you're using an ARM capable VM) –  Martijn Verburg Sep 27 '12 at 10:01
add comment

This is more of a licensing question and therefore might not actually be a relevant question in this space, but I believe android developers don't pay licensing fees because they build their applications on a Java system already in place (that I assume has already been paid for by Google).

So if you wanted to make your own OS on a mobile device that's built on Java, you would probably have Sun/Oracle knocking at your door. However, if you're building this software on top of the Android system, I believe your use is already covered in the licensing Google has with Sun/Oracle.

share|improve this answer
3  
This is somewhat incorrect. Google did not pay Sun/Oracle, hence the recent lawsuit. But it's true that developers don't have to pay in order to build using 'Android Java' on Dalvik. Yes, if you're using Java ME then ther are some circumstances you need to enter a licensing agreement with Oracle. –  Martijn Verburg Sep 27 '12 at 7:02
    
@Martijn Verburg, thanks, would you please elaborate on who has to pay royalties to Oracle, is it the app developer, the hardware/device manufacturer, or the operating system company? –  exTrace101 Sep 27 '12 at 7:42
1  
Currently no one pays to Oracle for Android development. Oracle sued Google and AFAIK lost big time. –  user281377 Sep 27 '12 at 7:52
    
@exTrace101 - IIRC generally the hardware manufacturer or the operating system company. I'm pretty sure if you visit Oracle's Java ME pages it'll explain the terms there. –  Martijn Verburg Sep 27 '12 at 10:02
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.