Nearly two years ago, Oracle went to court and accused Google's Android team of infringing patents and copyrights related to the Java programming language. After about 900 motions and filings, and legal fees that are undoubtedly mind-boggling, the trial will finally get started this week. Android has faced many legal challenges, but this is easily one of the most significant, and one of the only ones targeting Google itself rather than the company's hardware partners.

With Oracle demanding royalties from Android revenue, a ruling in its favor could raise the price consumers have to pay for Android devices. An Oracle win could also force Google to design around the patents asserted by Oracle, perhaps limiting Android's functionality.

Jury selection will take place Monday, and the trial proper is scheduled to begin later in the day Monday, or Tuesday. Let's take a look at what's happened so far, and what's next in this crucial trial for Android, the world's largest-selling smartphone operating system.

What Oracle wants

The case got underway on August 12, 2010, when Oracle filed its complaint in US District Court in San Jose, Calif. Oracle's claims then were far broader than they are today, as rulings unfavorable to Oracle have forced the company to abandon many of its allegations.

Oracle initially sought billions of dollars worth of damages from Google, but the money at stake has dropped considerably, partly because most of the patents Oracle asserted against Google have been invalidated. Recent damages estimates put forward by Oracle and Google were quite similar, with Google proposing $37.5 million in payments in the event Oracle prevails at trial, and Oracle proposing $32.3 million, Groklaw notes.

However, the sides are still far apart. Oracle's proposal was a minimum, not a maximum, and Oracle has asked for a tripling of damages because of the "willful and deliberate nature of Google's infringement." For ongoing royalties from future sales, Google has proposed payment of just over one-half of one percent of revenue if patent infringement is proven, but Oracle wants more. Beyond financial damages, Oracle has asked for a permanent order preventing Google from continuing to infringe the patents and copyrights.

The numbers we just mentioned, which were based on the value of Oracle's intellectual property and Android revenue numbers, don't necessarily indicate what each company was willing to concede to during settlement negotiations. The court has ordered settlement talks on multiple occasions, but Oracle and Google reached an "irreconcilable impasse," leaving a trial as the only option.

Can a programming language be copyrighted?

In both damages estimates, the majority is taken up by the copyright claims, so we'll look at the copyright allegation first. Oracle accuses Google of copying 37 Java API (application programming interface) design specifications and implementations, and 11 Java source code files. But the key question isn't so much whether Android uses Java technology, it's whether a programming language can be copyrighted at all.

In an April 12 brief, Google argued that computer programming languages are not copyrightable. "A given set of statements or instructions may be protected, but the protection does not extend to the method of operation or system—the programming language—by which they are understood by the computer," Google argued. "In copyright terms, the set of statements or instructions is the expression and the language used to make that expression intelligible to the machine is the method of operation or system."

Google argued that, for the same reason, APIs are not copyrightable.

In a brief filed last month, Oracle pointed out that Google admits using Java API packages, and notes that the burden of proof is on Google because Oracle's Java copyright registration carries "a presumption of validity." Oracle pointed to previous cases, including a 1992 decision in a lawsuit Atari filed against Nintendo in which the Federal Circuit court ruled that Nintendo's video game console "was entitled to copyright protection because it contained a 'unique sequence' of code." In that case, Oracle said the court found that "Atari could reverse engineer the code to learn its unprotected features, but could not replicate it without infringing the copyrights."

Oracle's patent allegations

Oracle initially asserted seven patents filed between 1997 and 2003, covering a broad range of under-the-hood technologies developed by Sun Microsystems, which Oracle bought for $7 billion in January 2010.

Questionable patents are often granted by the overworked US Patent and Trademark Office, only to be invalidated upon litigation. In this case, Oracle had to drop five patents from the lawsuit as a result of their claims being rejected after the trial began. Patents that are no longer on the table include methods for enforcing security rules with protection domains, a permission-based system for determining whether access to code is authorized, methods for pre-processing and packaging Java class files that take memory allocation into account, dynamic preloading of classes through the "memory space cloning of a master runtime system," and systems for increasing the execution speed of virtual machine instructions.

Of the two patents remaining, one covering a type of compiler and interpreter has been preliminarily rejected by the USPTO's re-examination. While Oracle is still asserting that patent for now, it may have to drop it from the trial. That would be bad news for Oracle, as its own estimates pin the damages value of this patent at $4.1 million, compared to just $500,000 for the other patent remaining in the case. However, Oracle said it doesn't want the re-examination of this patent to hold up the trial, as it could take a year or more.

The one Oracle patent that is on solid ground as the case heads to trial is #6,061,520, but even this patent has been cut down to size. The patent itself makes 23 claims. After Google asked the USPTO to review the patent, citing prior art that might invalidate the claims, the office rejected eight of the 23 claims and confirmed 14 as being patentable. One was not ruled on.

Sun's patent application, filed in April 1998, explains that the invention overcomes some problems related to Java virtual machines' reliance on the "class file format," which imposed burdens on developers of Java programs. "Although the class file format is a robust file format, it is unable to instruct the virtual machine to statically initialize an array efficiently, thus posing a problem," the patent states. Previous methods for building Java applications required the use of large amounts of memory. Sun's invention, described as a "method and system for performing static initialization," reduced the amount of code needed to execute the tasks.

Upon re-examination, the patent office threw out some claims that were covered by prior art and perhaps overly broad. For example, one rejected claim covered "A method in a data processing system, comprising the steps of: receiving code to be run on a processing component to perform an operation; play executing the code without running the code on the processing component to identify the operation if the code were run by the processing component; and creating an instruction for the processing component to perform the operation."

But the USPTO said the prior art pointed out by Google wasn't strong enough to invalidate all of the '520 patent's claims. The office upheld a patent claim describing "A method in a data processing system for statically initializing an array, comprising the steps of: compiling source code containing the array with static values to generate a class file with a clinit method containing byte codes to statically initialize the array to the static values; receiving the class file into a preloader; simulating execution of the byte codes of the clinit method against a memory without executing the byte codes to identify the static initialization of the array by the preloader; storing into an output file an instruction requesting the static initialization of the array; and interpreting the instruction by a virtual machine to perform the static initialization of the array."

The USPTO also upheld the patentability of a data processing system proposed to carry out the new methods.

Google has since withdrawn its argument that the '520 patent is invalid, but that doesn't mean Oracle is home free. Google also argues that Android doesn't infringe Oracle's asserted patents, anyway, and will make its case in more detail during the trial.

What's next

As mentioned earlier, jury selection is scheduled for Monday, with the trial following immediately afterward. Predicting the length of a trial is often not easy, but Judge William Alsup has scheduled it for eight weeks. There are three phases: the first will cover copyright questions, and the second will focus on patents. If Oracle wins, a third phase will be held to handle the amount of damages.

Oracle's lead counsel is David Boies, who represented Al Gore in the Supreme Court case that halted the 2000 US presidential recount. Lawyer Robert Van Nest will represent Google.

Because of Android's various patent problems, phone makers using the software have had to pay licensing fees to Microsoft and defend themselves against lawsuits filed by Apple and other companies.

Although Google has been successful in limiting the scope of the case, an Oracle win would still, obviously, not be good for Google and Android. Google has complained that its rivals are trying to cripple Android with "bogus patents"—this case will go a long way toward determining just how vulnerable Android really is.