Java question...
How much does a current Android device depend on this alledged Java code?
Oracle's lawsuit against Google over Java copyrights probably won't be back in a courtroom again until next year, but in the meantime, Oracle has asked the court to let it expand the scope of its complaint to include events that have occurred since it was first filed in 2010. What's more, it has once again asked the court to …
It's the standard language used for writing apps, much like Objective C is for Apple phones. A lot, if not most, of the Google provided apps are probably written in the language as well.
Now a lot of stuff is also written in things like C++, or uses HTML5 and Javascript wrapped up in a container (e.g. cross platform apps that also run on Apple phones do this), so not everything uses the Java language, but there is a lot that does.
However, it's not Oracle's Java that is used. Google (or rather the company that Google bought) wrote their own from scratch, designed around running under the very limited resources phones had back when Android was being designed.
It doesn't even use a Java VM. Instead, the Java byte code gets cross compiled to a different format designed specifically for mobile platforms. That's the basis of Oracle's complaint that "Google has intentionally made sure Android apps won't run on a plain-vanilla Java virtual machine". Google very carefully doesn't call their system "Java" to avoid stepping on Oracle's trademarks. It uses the Java language, but it isn't a Java system.
Any effort to purge the Java language from Android faces the problem of the huge amount of existing software written using it. However, I think it is eminently doable within a couple of years, especially if automatic translation tools are provided. The corner cases involving third party apps that won't or can't be ported to a different language could be handled by telling those app vendors to purchase an Oracle license for a run-time that would get bundled with their app.
On the other hand, the issue is supposedly the APIs, or rather the library headers and library function names that are at question, rather than the Java language. I suppose it might be possible to simply rename all the functions and then mechanically translate the source code so that it isn't the same as what Oracle's Java uses. A lot of the libraries are probably fairly thin wrappers around the underlying Linux C libraries anyway. It would probably be possible to put out a tool which goes through the source code and does this automatically (a big "sed" script might do it, but I wouldn't want to trust myself not to screw that up). If they get rid of the Java APIs and call straight to the C APIs, then Oracle's complaint collapses.
If that sounds silly, well I think the whole thing is silly to begin with. Oracles case relies on a whole new theory of copyright. The other thing to think about is that I suspect the actual ownership of these "new theory" copyrights may be a complete mess along the lines of AT&T's lawsuit against BSD a few decades ago. A lot of the ideas of the newer features in Java probably came in from the community. AT&T's case against BSD collapsed when eventually it was discovered that a lot of the code that AT&T thought they owned turned out to have been written by third parties in a sort of informal open source manner.
If Oracle succeeds completely though, I am pretty sure that other languages will be under threat, even if Oracle doesn't go after them right away. All programming languages borrow from each other, and I know of several (to remain nameless to avoid FUD) who took things like concurrent futures from Java with the explicit intention of making their implementation similar to Java's in order to limit bikeshedding when adopting it. If Oracle succeeds, then anything using those features will come under a cloud until those features are ejected from the language. When that happens, Java programmers will find themselves treated like lepers by everyone else. That's not a good result.
Have an upvote for a Groklaw-level posting.
The law of unintended consequences might well strike again because of OracleLeisure Suit Larry. It will be 1000 times worse than the "software patent" metastatic cancer that was injected in the early 90s with developments ignored by "the industry" until it was too late.
OracleLarry the Hutt hasn't even noticed that what makes Java interesting is the JVM, not the rather pedestrian language (particularly pedestrian in 2015) and the sometimes quite horrific-in-usual-Sun-style APIs. I would ditch them in a moment for some Clojure.
(...who owns the copyright in original LISP? John McCarthy? Ayyeeee!!!)
""If they get rid of the Java APIs and call straight to the C APIs, then Oracle's complaint collapses.""
If I was Google I would have begun such move. ;-)
""If that sounds silly, well I think the whole thing is silly to begin with. Oracles case relies on a whole new theory of copyright.""
The whole thing plays like this: because you wrote your book in USA-English and I invented the UK-English language, I want all your money, because all that USA-English use around the world makes our UK-English sound silly and it is preventing the adoption and use of the English language.
If Oracle wins, which given the typical US bench warming shyster is quite likely, it is likely to kill a large part of the Java ecosystem. There are several newer languages that look very interesting, doing approximately the same thing as Java- Rust, Go, Julia, & Swift possibly. Also, there are several old standbys that if they interpreter/compilers where modernized could make a serious run at Java - Python and Ruby for example. Either way there are possible options that Leisure-Suit Larry has not considered.
Actually the best move by Oracle would be to forget the money and ask the courts to declare any API non-copyrightable. What Oracle is ignoring is that fact that Android code is a dialect of Java means that there will be more Java coders.
"There are several newer languages that look very interesting, doing approximately the same thing as Java- Rust, Go, Julia, & Swift possibly."
There is also an older language, Oberon, from which Java and Go, especially were derived, and which arguably could do as good, if not even better, a job. The only problem is that it is a Wirth language, and must, as a consequence, be ignored. Of course, it does need a set of libraries that could serve as a drop-in replacement for the Java libraries, although it already has libraries that are almost functionally equivalent.
To me, Java always had characteristics of a language designed by committee; a committee that thought every fashionable thing must be included in the language.
Yes, and this is the problem with courts that act more like roulette wheels than actual legal rulings.
I expect that Google is not whittling away at the case to save money as much as to limit the possible attack paths when they argue the fair use angle. IF they win on fair use they don't need to appeal the idiotic API ruling. If they don't win on fair use, they still have the option of appealing the API ruling. Hopefully a full SCOTUS could be convinced of the idiocy of the appellate court ruling.
"Google doesn't use Microsoft ware for security reasons."
Yes of course. Google don't want a relatively secure application platform like .Net when they could have the soporific leaking sieve that is Java - clearly that must be the "security reason" based choice they are making!
All it takes to cook this goose:
Reorder the arguments for the function calls. Rename the functions and macros. Add random arguments like "Larry factor" and "Sun version". Create new names and values for the constants. Reorganize the data structures. And such. Make a new virtual machine that uses this API. Call it "AJA" (Ain't Java Anymore, pronounced "aha" or "ha-ha".). For memetic purposes, poke fun at Oracle at every possible place in every change - rename max() to NULmax() (Not Uncle Larry's max()) for example.
And then provide a cross compiler. Better yet, a translator that converts from apk to AJA. Automatically convert all the Play Store apps. Gamify the programmer retraining.
And then create an nonprofit foundation that independently releases an open source AJA compiler that does things the old way for the programmers who can't adapt. Publish it out of someplace that doesn't have insane copyrights. Bind it into Android Studio as a one button plugin or skin install.
Done and sorted. Should only take a few weeks.
A motion for a sales ban is filed in almost all patent or copyright lawsuits, but rarely granted - really only in the most extreme cases.. The reason for asking is because it would give tremendous leverage in negotiation, leading to quick and very lucrative settlement for the plaintiff.
Would a panel of plumbers be able to decide how to perform an appendectomy?
Could a panel of doctors be able to decide how to frame a house?
Why would we let a group of parasites who would not know the difference between pass by value and pass by reference (for example) decide on coding matters?
Well, the previous judge turned out to have been a programmer who went back to law school before becoming a judge. He said that Oracle's case was rubbish, and laughed at Oracle's claims about the importance and uniqueness of some of their code.
Now these appeal judges have just said otherwise. I imagine it will go through a series of appeal processes for a while though.
The really big problem is going to be what all the legal trolls at other companies are going to do with the ruling. It will be like patent trolling with the dial cranked up to 11 as this principle gets applied generally to everything relating to software, hardware, and medicine.
The real problem is that the appeal court (CAFC) is notoriously dominated by ideologically committed "Intellectual Property" maximalists. The original judge, Alsup, having actually troubled to learn some programming, went to considerable extra effort to explain, step-by-step, (on a level that lawyers and judges could be expected to understand) the technical underpinnings of how Java, programming, and programming API, actually works, and also, step-by-step, how the technical underpinnings of Java programming intersects with the technical details of Copyright law -- and how therefore the matter in dispute was not protected by copyright law for the purposes in question.
So the CAFC Judges came up with a novel legal interpretation that, despite Alsup's careful analysis and exposition, the copyrightable "expressive" elements could still be distinguished from and thus could still somehow be separated from the obligatory "functional" elements of the Java API they're merged with or embedded in -- and that therefore the functional, strictly unalterable elements were still protected from unauthorised/unlicensed use.
This is rather like arguing that the "Seeing Eye companion" can be distinguished and thus somehow separated from the trained and certified "Seeing Eye dog" that it's merged with or embedded in -- and that therefore, accessibility provisions of law notwithstanding, fancy restaurants and public transit can still refuse them entry on the grounds that they're still, nonetheless, "domestic animals" and thus still barred from public facilities.
It's a travesty.
Android is using the libraries provides by the clean-room implementation Apache Harmony. Harmony was never certified as being a Java implementation, mainly because Sun refused to provide them with the official test suite.
Android up to 4.4.4 has been using the Dalvik VM, a clean-room JIT VM not using Java byte code. Android 5.x uses the ART, Android RunTime, which precompiles the Dalvik byte code into native code.
The only way Oracle could win this is if the judge is technically illiterate (which is not uncommon...)
Judge William Alsup showed in the original case that he was far from technically illiterate, and actually for a judge had good understanding of programming, calling the code copyright that Oracle was obvious and something a 10 year old could do and hardly worth the billions Oracle were claiming
Unfortunately the appeals court had no such technical nounce and threw the case back to him after they disagreed with his findings
"Oracle are sharper and much bigger."
Oracle are so sharp they are at risk of cutting their own throats. Having Oracle sue you because you happen to write some code that looks a bit like one of their dumb APIs should be a huge red flag for anyone thinking of making money on the back of some Java code. Presumably they aren't suing banks using Java yet because they are paying through the nose for other Oracle crud.
Oracle are so sharp they are at risk of cutting their own throats
Indeed. If Oracle manages to get a precedent set that re-implementing an API is a copyright infringement, then one has to wonder how much IBM will be looking for from Oracle because of their re-implementation of the SQL API :-)
This ruling from the appeals court is not just dumb, it positively threatens the livelihoods of every programmer working in the US or dealing with it. It cannot stand.
Vic.
It has everything to do with copyright. Harmony is immune from legal threat exactly because it's reverse engineered.
Certainly, Dalvik uses Harmony, and that's great.
However, Dalvik also used just regular ol' copying, and that ain't so legal. The appeals court pointed out that the GPL was available as an option. It's fine that Google didn't choose the GPL, but, if they wanted to to use the ASL, they should've actually reverse engineered everything.
Google claims that some (Harmony) was reverse engineered.
There's no claim that everything was reverse engineered. Harmony, is therefore, a total red herring in this argument. It's the parts not in Harmony which are at issue.
If Dalvik were a clean room implementation, then there wouldn't be a problem.
Did you read the appeals court decision? They pointed out this as an option, and note that Google didn't reverse engineer.
If you want to make the case that Dalvik is a clean room implementation, go ahead. Wikipedia says:
" Google says that Dalvik is a clean-room implementation rather than a development on top of a standard Java runtime, which would mean it does not inherit copyright-based license restrictions from either the standard-edition or open-source-edition Java runtimes.[19] Oracle and some reviewers dispute this.[20]"
The appeals court said "nope".
"what Oracle has worked hard to build and maintain, and in the process to destroy the value of the Java platform"
For a start, most of the work was nothing to do with Oracle, they bought Sun's stuff then have trolled it chasing Android.
As for destroying the platform value, I think the endless security holes in Java, slow patching, and the various problems of which specific JVMs will actually work for a given application have done that. Had Oracle managed to make Java what it promised, i.e. "write-once and run-everywhere, securely" then I might just be able to pull some sympathy from the depths of my arse. But they have not.
Well, that phrase would only make anyway sense if Oracle were in the market of offering
1) An ORACE™-BRAND oracle™ JVM™ (or similar implementation, like an Oracle Dalvik)
2) A potentially complete Java™ 8 language implementation
3) A potentially complete Java™ 8 API implementation (the "java.*" namespace)
for mobile devices in the first place.
Which AFAIK they don't.
There used to be Sun-era rather horrific Java Micro Edition and "Java Limited Configuration" implementations. (CLDC and CDC). I didn't think these are still a thing but Wikipedia says these can still be found on mobiles.
Interestingly As of 22 December 2006, the Java ME source code is licensed under the GNU General Public License, and is released under the project name phoneME. Hmmm... LARRRRAAYYYYYY!
(I remember developing for Java ME generating pages in Wireless Markup Language. Those times were BAD)
Bingo.
The core problem is the fact that once upon a time Sun marketing decided that Java SE will not be used on phones and small devices. Google laughed that restriction off.
That is the real reason here. SnOracle wants to _SOLELY_ control how the language is used and all Java Open Source implementations are actually NULL and VOID, because the desired restrictions are incompatible with their licenses.
No. Microsoft did an embrace-and-extend on an implementation of the JVM, causing Sun to get nervous and sue for breach of contract, the contract allowing Microsoft to implement their own version of the bytecode-processing virtual machine on Windows.
IIn the present case we are talking about the APIs for the Java language (the shims, not even the implementation of the APIs).
"At the same time that Android has become truly ubiquitous, the Java platform has suffered greatly, in large part because Google provides Android to device manufacturers at no charge."
Um, WRONG! You caused Java to suffer because it is a security nightmare that requires frequent updates and the constant demand to bundle some junk toolbar with your product.
This post has been deleted by its author
...they'll pay tenfold back in salaries to pissed off coders. :-P
It's like working for spammers, or patent trolls, or copyright maximalists, or law enforcement and intelligence agencies: they'll have to be sh*&^(load more money in it for hackers to take the job. 30 pieces of silver...
FBI is already having problem filling IT positions.
"If Uncle Larry prevails in this API nonsense under the current eternal copyright regime, Java belongs to AT&T as a derivative of C"
No, because if the nonsense does rule AT&T don't own C as it is a derivative of Algol 60 (derived mostly by throwing away the useful bits) or perhaps of BCPL.
Although in reality in some versions of copyright law lampoons are permitted derivative works, so Java can't be infringing the C copyright which in turn can't be infringing the BCPL copyright. Or does the lampoon get-out not apply in cases where the creator of the derived work didn't intend it to be a lampoon?
Of course why anyone ever wanted to produce software in any C or any of its derivatives is quite beyond comprehension, but it does seem to be a rather popular idiocy.
How does OpenJDK fit into this?
OpenJDK is GPL, so all copyrighted materiel within it is available under that licence.
Under Oracle's interpretation of copyright[1], the API is copyrighted, meaning that to use that API from OpenJDK would require your code to be placed under GPL. And Android is not GPL.
Vic.
[1] Oracle's interpretation is wrong, obviously. It is properly dangerous[2] to try to copyright APIs. We'll see that from the fallout later - but in the meantime, I can imagine America's software industry ending up embroiled in litigation amongst itself. Which will be fun.
[2] I await IBM's suit for Oracle's unlicenced re-implementation of the SQL APIs with bated breath. I believe Oracle has made quite a bit of money out of that API...
The appeals court specifically quoted ?ralph Orman?, the former US register/registrar of copyrights, who filed an amicus brief. In that brief, he stated that all Google had to do was to follow the GPL. The appeals court noted this.
By following the GPL, there can be complaints regarding copyright. Because, by definition, that's using, or employing, the copyright license through the GPL.