法庭對陪審團的問題只有一個:Google 在使用 Java API 的時候是否為在版權法律允許下的正當使用?陪審團全體一致認為「是的」,全票通過,Google 勝訴。
New York Times
Google Prevails as Jury Rebuffs Oracle in Code Copyright Case
A jury ruled in favor of Google on Thursday in a long-running legal dispute with Oracle over software used to power most of the world's smartphones.
2012.5.9
Oracle v Google
Who owns the perk in Java?
May 8th 2012, 0:28 by G.F. | SEATTLE
IN 2010 Oracle accused Google of pilfering its
intellectual property (IP) for use in the Android mobile platform. It
has since presented oodles of forensic evidence, including e-mails among
Google executives and bits of allegedly copied program code. On May 7th
a federal jury in San Francisco found in its favour. Sort of.
Google,
the jurors decided, had indeed copied Oracle's IP related to bits of
its Java infrastructure. For a start, the search giant purloined nine
lines of Oracle's code for its own version of Java, out of 15m that make
up the contentious software. Damages for this misdeed, which will be
set at a later stage of the trial, cannot exceed $150,000 by statute.
More controversially, Google was also deemed to have infringed Oracle's
copyright by mimicking "the overall structure, sequence and organisation
of copyrighted works", even where it had not directly copied any code.
Curiously,
the jurors could not agree whether this infringement was in fact
acceptable under the law. This means that Oracle cannot collect damages
from Google (it was seeking up to $1 billion) or require Android to be
partially rewritten, at least for now. To add to the confusion, it
emerged that one juror had discussed the case with her husband, which
the law forbids. Google has called for a mistrial. It now seems likely
that this first part of the case, which now proceeds to humdrum patent
disputes, will be either retried or appealed.
So, what is all the
fuss about? Oracle's copyright-related accusations centred on two bits
of software plumbing: application programming interfaces (APIs) and Java
virtual machines (JVMs).
Start with APIs. These are the link
which allows software developers to create applications which interact
seamlessly with a programming language (like Java or C++) or a service
(like Facebook or Twitter). Without an API, programmers would first have
to suss out how the gears and cogs inside the target platform work, and
then construct software to mesh with those. Moreover, different
hardware platforms would require separate software versions, which would
need to be constantly updated as languages or services are tweaked by
their makers. APIs limit such inefficiencies.
Fortunately for
programmers, they do not need to write software in machine code, an
impenetrable string of 0s and 1s that a computer processor understands.
Instead, a separate program called a compiler translates code written in
a particular "high-level" language (whose vocabulary and syntax are not
entirely unlike that in natural language) into machine-readable
commands. APIs make coders' lives easier still, by providing access to
ready-made chunks of code to perform some basic, well-defined tasks,
from simple ones like displaying dates to the more complicated, such as
creating encryption keys.
An API for a particular language is
paired with a functional counterpart, a library containing snippets of
code in that language which perform the tasks in question. These can be
integral parts of languages, paid and licensed add-ons, or some
combination of public source and free-but-copyrighted code. Then there
is an instruction manual in plain, albeit technical English. It includes
descriptions of what each snippet does, together with a command (known
as a function call) that, if inserted into a program's source code, acts
as a shortcut to the relevant section of the library. Any snippet in
the library could be written from scratch—but this takes time and,
crucially, fails to take advantage of the extensive testing the existing
code in the library has been subject to. It is easier, and safer,
simply to bung a reference to the required function into the newly
created program.
To run on a particular piece of hardware, a
program written in a high-level language must first be converted, or
"compiled", into machine code (this typically happens after the program
has been completed and prior to distribution). When the hardware runs
the compiled program and reaches the function call, it jumps to the
relevant section of the library (which is included in the completed code
and compiled with it), runs the function's code, and jumps back to the
main flow of the program.
Besides snippets of code in a high-level
language, some APIs' code libraries contain portions pre-compiled
for specific hardware platforms, with the appropriate one picked
automatically when the remainder of the program is compiled for a given
device. Java API code libraries contain only high-level code. A Java
program is compiled all at once. This is where virtual machines come in.
A
virtual machine is a computer program which simulates a physical
processor. It allows applications designed for one platform, Microsoft
Windows, say, to run on another, like Apple Macintosh. A Java VM is not
itself written in Java but in another language like C++, and then
compiled in the machine code for the device on which it has been
installed. Every combination of processor and operating system (Apple's
iMac running on an Intel chip, say) therefore has its own unique JVM.
Just
as real processors understand a specific machine vernacular, all JVMs
speak a machine-code-like version of Java (called Java byte-code). In
effect, they act as translators between Java byte-code and the physical
hardware's machine language. In theory, then, any Java program only
needs to be compiled once and should run on any JVM, prompting Java's
developer, Sun Microsystems (which Oracle bought in 2009), to hail it as
"write once, run anywhere".
In practice, however, Oracle offers
four types of JVM which support distinct dialects of Java byte-code,
tailored for smart cards, mobiles, desktops and servers. A program
compiled for a server JVM may not necessarily work on a mobile JVM, or
vice versa, as some elements needed to carry it out may be missing from
the other sort of virtual machine. A slimmed-down mobile JVM, for
instance, lacks the ability to perform complex server tasks, which are a
drain on processing power and would unnecessarily slow down a
smartphone. A server JVM, meanwhile, does not need to be able to be
efficient about draining a battery.
Oracle also licenses other
companies to create their own JVMs, on the condition that they can show
that their virtual machines are capable of running any software written
for at least one of the four classes of virtual device. This lets
device-makers create bespoke JVMs for their gadgets.
Google
created its own version of Java, which it dubbed Dalvik, for its Android
mobile platform, complete with Dalvik APIs, libraries and VMs. Although
Dalvik and Java differ on the surface, their structure and many
features are identical. As a consequence, a Java program can be adapted
to work in Dalvik and vice versa. Crucially, programmers who know one
are by the language's fundamental similarities proficient in the other.
When a Dalvik program is compiled for use on the Android platform,
however, its byte-code is different from Java's—and therefore
incompatible with other JVMs.
To create all its Dalvik
paraphernalia Google relied on open-source projects, only some of which
had secured licences from Oracle. It supplemented them with code of its
own, without obtaining a licence. The upshot is that 37 of Dalvik's 173
APIs are functionally identical to Java's (which itself sports a total
of 166), albeit implemented using different underlying code.
All
this irked Oracle in several ways, prompting the lawsuit. First, the
company alleged that Google pinched bits of its code for Dalvik's
API-associated libraries. Google admitted this but said it had removed
the contentious snippets long ago. The jury agreed with Google, apart
from the nine lines mentioned in its verdict. Second, Oracle accused
Google of copying its language designs, using its API descriptions, and
building a virtual machine incompatible with other elements of the Java
infrastructure, without obtaining permission or licences. Here, the
jurors agreed with Oracle.
In doing so, they were told by the
presiding judge to assume that it is not just the particular wording of
the plain-English API descriptions, the function calls, or the
underlying code that are protected by copyright. So are the functions
themselves, regardless of how they are implemented in software, at least
so long as the functions' inputs and outputs are indistinguishable.
Some observers found this odd, given that there is currently no clear
doctrine about whether API functionality is in fact subject to
copyright.
Either way, despite concluding that infringement had
occurred, the jury still deadlocked on whether Google's actions fall
within the "fair-use" doctrine, which in the context of software might
be construed as permitting Google to figure out and emulate all that
Java does without seeking a license or permission. The judge accepted
this partial verdict and may yet bring his own opinion to bear on the
question of doctrine at a later stage of the trial.
Google
insists that API functions, as separate from code, cannot be subject to
copyright. That, Google has warned, would be like claiming ownership of
ordinary words in a language. If its call for a mistrial is heeded, it
will rehearse those arguments anew. If not, it is likely to appeal
against the ruling, possibly all the way to the Supreme Court.
Many
tech types are jittery about a verdict fully in favour of Oracle.
Equivalent API functions based on distinct source code abound across all
aspects of hardware, software and services, on the internet and
offline. If the court ultimately sides with Oracle it might reshape the
nature of technological development.
Google's Tim Lindholm faces off with David Boies on Java license
CNET
Tim Lindholm said that he didn't mean that Google needed a license for Java in his 2010 email that said, "We conclude that we need to negotiate a license for Java under the terms we need." by Dan Farber April 19, 2012 12:51 PM PDT Follow @dbfarber ...
See all stories on this topic »
Google Employee Testifies His Java Email Was Misinterpreted
Wall Street Journal
By John Letzing Of DOW JONES NEWSWIRES SAN FRANCISCO (Dow Jones)--The Google Inc. (GOOG) employee who wrote an email that Oracle Corp. (ORCL) said bolsters their infringement case against the Internet giant testified Thursday that the internal memo was ...
See all stories on this topic »
Google Engineer Says E-Mail Didn't Refer to Java License
BusinessWeek
By Karen Gullo on April 19, 2012 A Google Inc. software engineer testified that when he wrote in a 2010 e-mail, “We need a license for Java,” he didn't mean a license from Java's creator, Sun Microsystems Inc., or any other company.
See all stories on this topic »
Apple, Google, Intel fail to dismiss staff-poaching lawsuit
Reuters
By Jonathan Stempel (Reuters) - Apple Inc, Google Inc, Intel Corp and four other technology companies were ordered by a judge to face an antitrust lawsuit claiming they illegally conspired not to poach each other's employees. District Judge Lucy Koh in ...
See all stories on this topic »
EXPLAINER: Here's What Google And Oracle Are Fighting Over (ORCL, GOOG)
San Francisco Chronicle
After the excitement of Larry Page and Larry Ellison testifying earlier this week, the Google-Oracle trial has turned into a highly technical discussion about Java. So what the heck is really going on? Here's our brief explainer.
See all stories on this topic »
Oracle probes Google engineer about key email
Reuters
By Dan Levine | SAN FRANCISCO (Reuters) - A Google engineer, testifying in a high-stakes trial pitting Oracle Corp against Google Inc, denied that he referred to Oracle or any other company when he wrote in an email that Google should take a license to ...
See all stories on this topic »
Google's Lindholm dances around questions about Java licences
ZDNet (blog)
By Rachel King | April 19, 2012, 12:45pm PDT Summary: After Google CEO Larry Page claimed that he isn't too familiar with him, Google software engineer Tim Lindholm took the stand in the IP trial against Oracle on Thursday. Tim Lindholm leaving the ...
See all stories on this topic »
ZDNet (blog)
APIs take center stage at Oracle-Google trial
CNET
The scene of the Oracle-Google trial Thursday was more like a computer science classroom than a courtroom as the witnesses explained the inner workings of Java and APIs. by Dan Farber April 19, 2012 10:26 AM PDT Follow @dbfarber The scene of the ...
See all stories on this topic »
Oracle Vs. Google: Tour The Evidence
InformationWeek
Google CEO Larry Page took the stand and gave Oracle's attorney's little with which to work. There were no unexpected revelations or confessions. In part, that's because both companies have already laid out their cases in slide decks that summarize ...
See all stories on this topic »
Apple, Google, others to face antitrust suit over staff poaching
Los Angeles Times
By Jessica Guynn SAN FRANCISCO -- Apple, Google, Intel, Pixar and other high-tech companies will face an antitrust lawsuit that alleges they illegally conspired not to poach each other's staffers. San Jose US District Court Judge Lucy Koh rejected a ...
See all stories on this topic »
APIとは【Application Program Interface】(プログラミングインターフェース ...
e-words.jp/w/API.html
APIとは:あるプラットフォーム(OSやミドルウェア)向けのソフトウェアを開発する際に使用できる命令や関数の集合のこと。また、それらを利用するためのプログラム上の手続きを定めた規約の集合。個々のソフトウェアの開発者がソフトウェアの持つすべての機能 ...
Lex_Oracle/Google lawsuit
法庭對陪審團的問題只有一個:Google 在使用 Java API 的時候是否為在版權法律允許下的正當使用?陪審團全體一致認為「是的」,全票通過,Google 勝訴。
Google Prevails as Jury Rebuffs Oracle in Code Copyright Case
A jury ruled in favor of Google on Thursday in a long-running legal dispute with Oracle over software used to power most of the world's smartphones.
|
2012.5.9
Oracle v Google
Who owns the perk in Java?
May 8th 2012, 0:28 by G.F. | SEATTLE
IN 2010 Oracle accused Google of pilfering its
intellectual property (IP) for use in the Android mobile platform. It
has since presented oodles of forensic evidence, including e-mails among
Google executives and bits of allegedly copied program code. On May 7th
a federal jury in San Francisco found in its favour. Sort of.
Google,
the jurors decided, had indeed copied Oracle's IP related to bits of
its Java infrastructure. For a start, the search giant purloined nine
lines of Oracle's code for its own version of Java, out of 15m that make
up the contentious software. Damages for this misdeed, which will be
set at a later stage of the trial, cannot exceed $150,000 by statute.
More controversially, Google was also deemed to have infringed Oracle's
copyright by mimicking "the overall structure, sequence and organisation
of copyrighted works", even where it had not directly copied any code.
Curiously,
the jurors could not agree whether this infringement was in fact
acceptable under the law. This means that Oracle cannot collect damages
from Google (it was seeking up to $1 billion) or require Android to be
partially rewritten, at least for now. To add to the confusion, it
emerged that one juror had discussed the case with her husband, which
the law forbids. Google has called for a mistrial. It now seems likely
that this first part of the case, which now proceeds to humdrum patent
disputes, will be either retried or appealed.
So, what is all the
fuss about? Oracle's copyright-related accusations centred on two bits
of software plumbing: application programming interfaces (APIs) and Java
virtual machines (JVMs).
Start with APIs. These are the link
which allows software developers to create applications which interact
seamlessly with a programming language (like Java or C++) or a service
(like Facebook or Twitter). Without an API, programmers would first have
to suss out how the gears and cogs inside the target platform work, and
then construct software to mesh with those. Moreover, different
hardware platforms would require separate software versions, which would
need to be constantly updated as languages or services are tweaked by
their makers. APIs limit such inefficiencies.
Fortunately for
programmers, they do not need to write software in machine code, an
impenetrable string of 0s and 1s that a computer processor understands.
Instead, a separate program called a compiler translates code written in
a particular "high-level" language (whose vocabulary and syntax are not
entirely unlike that in natural language) into machine-readable
commands. APIs make coders' lives easier still, by providing access to
ready-made chunks of code to perform some basic, well-defined tasks,
from simple ones like displaying dates to the more complicated, such as
creating encryption keys.
An API for a particular language is
paired with a functional counterpart, a library containing snippets of
code in that language which perform the tasks in question. These can be
integral parts of languages, paid and licensed add-ons, or some
combination of public source and free-but-copyrighted code. Then there
is an instruction manual in plain, albeit technical English. It includes
descriptions of what each snippet does, together with a command (known
as a function call) that, if inserted into a program's source code, acts
as a shortcut to the relevant section of the library. Any snippet in
the library could be written from scratch—but this takes time and,
crucially, fails to take advantage of the extensive testing the existing
code in the library has been subject to. It is easier, and safer,
simply to bung a reference to the required function into the newly
created program.
To run on a particular piece of hardware, a
program written in a high-level language must first be converted, or
"compiled", into machine code (this typically happens after the program
has been completed and prior to distribution). When the hardware runs
the compiled program and reaches the function call, it jumps to the
relevant section of the library (which is included in the completed code
and compiled with it), runs the function's code, and jumps back to the
main flow of the program.
Besides snippets of code in a high-level
language, some APIs' code libraries contain portions pre-compiled
for specific hardware platforms, with the appropriate one picked
automatically when the remainder of the program is compiled for a given
device. Java API code libraries contain only high-level code. A Java
program is compiled all at once. This is where virtual machines come in.
A
virtual machine is a computer program which simulates a physical
processor. It allows applications designed for one platform, Microsoft
Windows, say, to run on another, like Apple Macintosh. A Java VM is not
itself written in Java but in another language like C++, and then
compiled in the machine code for the device on which it has been
installed. Every combination of processor and operating system (Apple's
iMac running on an Intel chip, say) therefore has its own unique JVM.
Just
as real processors understand a specific machine vernacular, all JVMs
speak a machine-code-like version of Java (called Java byte-code). In
effect, they act as translators between Java byte-code and the physical
hardware's machine language. In theory, then, any Java program only
needs to be compiled once and should run on any JVM, prompting Java's
developer, Sun Microsystems (which Oracle bought in 2009), to hail it as
"write once, run anywhere".
In practice, however, Oracle offers
four types of JVM which support distinct dialects of Java byte-code,
tailored for smart cards, mobiles, desktops and servers. A program
compiled for a server JVM may not necessarily work on a mobile JVM, or
vice versa, as some elements needed to carry it out may be missing from
the other sort of virtual machine. A slimmed-down mobile JVM, for
instance, lacks the ability to perform complex server tasks, which are a
drain on processing power and would unnecessarily slow down a
smartphone. A server JVM, meanwhile, does not need to be able to be
efficient about draining a battery.
Oracle also licenses other
companies to create their own JVMs, on the condition that they can show
that their virtual machines are capable of running any software written
for at least one of the four classes of virtual device. This lets
device-makers create bespoke JVMs for their gadgets.
Google
created its own version of Java, which it dubbed Dalvik, for its Android
mobile platform, complete with Dalvik APIs, libraries and VMs. Although
Dalvik and Java differ on the surface, their structure and many
features are identical. As a consequence, a Java program can be adapted
to work in Dalvik and vice versa. Crucially, programmers who know one
are by the language's fundamental similarities proficient in the other.
When a Dalvik program is compiled for use on the Android platform,
however, its byte-code is different from Java's—and therefore
incompatible with other JVMs.
To create all its Dalvik
paraphernalia Google relied on open-source projects, only some of which
had secured licences from Oracle. It supplemented them with code of its
own, without obtaining a licence. The upshot is that 37 of Dalvik's 173
APIs are functionally identical to Java's (which itself sports a total
of 166), albeit implemented using different underlying code.
All
this irked Oracle in several ways, prompting the lawsuit. First, the
company alleged that Google pinched bits of its code for Dalvik's
API-associated libraries. Google admitted this but said it had removed
the contentious snippets long ago. The jury agreed with Google, apart
from the nine lines mentioned in its verdict. Second, Oracle accused
Google of copying its language designs, using its API descriptions, and
building a virtual machine incompatible with other elements of the Java
infrastructure, without obtaining permission or licences. Here, the
jurors agreed with Oracle.
In doing so, they were told by the
presiding judge to assume that it is not just the particular wording of
the plain-English API descriptions, the function calls, or the
underlying code that are protected by copyright. So are the functions
themselves, regardless of how they are implemented in software, at least
so long as the functions' inputs and outputs are indistinguishable.
Some observers found this odd, given that there is currently no clear
doctrine about whether API functionality is in fact subject to
copyright.
Either way, despite concluding that infringement had
occurred, the jury still deadlocked on whether Google's actions fall
within the "fair-use" doctrine, which in the context of software might
be construed as permitting Google to figure out and emulate all that
Java does without seeking a license or permission. The judge accepted
this partial verdict and may yet bring his own opinion to bear on the
question of doctrine at a later stage of the trial.
Google
insists that API functions, as separate from code, cannot be subject to
copyright. That, Google has warned, would be like claiming ownership of
ordinary words in a language. If its call for a mistrial is heeded, it
will rehearse those arguments anew. If not, it is likely to appeal
against the ruling, possibly all the way to the Supreme Court.
Many
tech types are jittery about a verdict fully in favour of Oracle.
Equivalent API functions based on distinct source code abound across all
aspects of hardware, software and services, on the internet and
offline. If the court ultimately sides with Oracle it might reshape the
nature of technological development. Google's Tim Lindholm faces off with David Boies on Java license CNET Tim Lindholm said that he didn't mean that Google needed a license for Java in his 2010 email that said, "We conclude that we need to negotiate a license for Java under the terms we need." by Dan Farber April 19, 2012 12:51 PM PDT Follow @dbfarber ... See all stories on this topic » | ||
Google Employee Testifies His Java Email Was Misinterpreted Wall Street Journal By John Letzing Of DOW JONES NEWSWIRES SAN FRANCISCO (Dow Jones)--The Google Inc. (GOOG) employee who wrote an email that Oracle Corp. (ORCL) said bolsters their infringement case against the Internet giant testified Thursday that the internal memo was ... See all stories on this topic » | ||
Google Engineer Says E-Mail Didn't Refer to Java License BusinessWeek By Karen Gullo on April 19, 2012 A Google Inc. software engineer testified that when he wrote in a 2010 e-mail, “We need a license for Java,” he didn't mean a license from Java's creator, Sun Microsystems Inc., or any other company. See all stories on this topic » | ||
Apple, Google, Intel fail to dismiss staff-poaching lawsuit Reuters By Jonathan Stempel (Reuters) - Apple Inc, Google Inc, Intel Corp and four other technology companies were ordered by a judge to face an antitrust lawsuit claiming they illegally conspired not to poach each other's employees. District Judge Lucy Koh in ... See all stories on this topic » | ||
EXPLAINER: Here's What Google And Oracle Are Fighting Over (ORCL, GOOG) San Francisco Chronicle After the excitement of Larry Page and Larry Ellison testifying earlier this week, the Google-Oracle trial has turned into a highly technical discussion about Java. So what the heck is really going on? Here's our brief explainer. See all stories on this topic » | ||
Oracle probes Google engineer about key email Reuters By Dan Levine | SAN FRANCISCO (Reuters) - A Google engineer, testifying in a high-stakes trial pitting Oracle Corp against Google Inc, denied that he referred to Oracle or any other company when he wrote in an email that Google should take a license to ... See all stories on this topic » | ||
| ||
APIs take center stage at Oracle-Google trial CNET The scene of the Oracle-Google trial Thursday was more like a computer science classroom than a courtroom as the witnesses explained the inner workings of Java and APIs. by Dan Farber April 19, 2012 10:26 AM PDT Follow @dbfarber The scene of the ... See all stories on this topic » | ||
Oracle Vs. Google: Tour The Evidence InformationWeek Google CEO Larry Page took the stand and gave Oracle's attorney's little with which to work. There were no unexpected revelations or confessions. In part, that's because both companies have already laid out their cases in slide decks that summarize ... See all stories on this topic » | ||
Apple, Google, others to face antitrust suit over staff poaching Los Angeles Times By Jessica Guynn SAN FRANCISCO -- Apple, Google, Intel, Pixar and other high-tech companies will face an antitrust lawsuit that alleges they illegally conspired not to poach each other's staffers. San Jose US District Court Judge Lucy Koh rejected a ... See all stories on this topic » |
APIとは【Application Program Interface】(プログラミングインターフェース ...
e-words.jp/w/API.html
APIとは:あるプラットフォーム(OSやミドルウェア)向けのソフトウェアを開発する際に使用できる命令や関数の集合のこと。また、それらを利用するためのプログラム上の手続きを定めた規約の集合。個々のソフトウェアの開発者がソフトウェアの持つすべての機能 ...Lex_Oracle/Google lawsuit
Why didn’t Google just sign
up for a licence and move on? Oracle’s lawsuit alleges that when Google
used the Java programming language as the basis for its Android mobile
operating system – without taking a licence – it misappropriated
intellectual property Oracle acquired when Oracle bought Java, along
with Sun Microsystems, in 2009. The trial is set to start today. A
licence would not have been expensive. There is even a free, open-source
version.
As Oracle tells it, Google built Android out of Java building blocks
so that it would be easy for the legions of existing Java developers to
write Android applications. But it didn’t want to make Android fully
compatible with other Java-based platforms, which taking a licence would
have required.The idea was to keep the applications within the Android ecosystem, and under Google’s control. Developers can check in, but they can’t check out. This damages “the entire Java ecosystem”, according to an Oracle lawyer, because part of the value of any Java application is in its ability to “talk” to all the others.
This story turns the images of Android as open software, and of Google’s “don’t be evil” ethic, upside down. Oracle is also cast against type, as the defender of openness, protecting compatibility in the name of all Java developers.
Yet it is a bit hard to see how Google has harmed Java developers by building the first viable mobile operating system they can use and profit from. Anybody who has written an app for Android will have little trouble recasting it for another Java platform. Oracle is more likely concerned to participate in the future of a popular operating system that may grow beyond phones, and even enter Oracle’s core market, business software.
Of course, all of this is only relevant if Google is found to have violated Oracle’s intellectual property, which Google denies. There will only be reparations if there was a theft.
Google: Oracle Wants To Glom Onto Android's Success InformationWeek Day two of trial featured Oracle CEO Larry Ellison on the stand, plus Google assertions that case boils down to Oracle trying to latch onto Android's accomplishments. By Thomas Claburn InformationWeek Defending itself in a San Francisco courtroom ... See all stories on this topic » | ||
| ||
Google and Oracle battle over the future of Android CNN By David Goldman @CNNMoneyTech April 17, 2012: 3:49 PM ET Google CEO Larry Page (left) and Oracle CEO Larry Ellison will testify against one another in the coming weeks. NEW YORK (CNNMoney) -- A landmark court battle between Google and Oracle has begun ... See all stories on this topic » |
沒有留言:
張貼留言