The Specification works for the Windows operating system. What in
the
Specification makes it portable to other platforms? Is it copyrightable, or
is it
more about the functionality and the units chosen in the
definition?
This is a misunderstanding IMO. Nothing about the
API or language specs is
really related to cross platform compatibility (other
than choosing data types
which will broadly work efficiently across different
devices - ie. not 27 bit
integers...)
The API could really look like
anything, and as long as the compiler generates
bytecode that the Virtual
Machine (VM) can read, it will run.
The cross platform compatibility is
achieved by not writing code to target
specific machines or os targets (ARM /
x86, Windows, Linux, OSX, BSD etc),
but instead generating code which targets
the VM specification (which is
entirely separate from the API and language
specs, and doesn't need to be
related in any way whatsoever)
As long
as the targeted device supports a VM implemented to the same spec
across
devices, the code will run (the actual detailed code that forms the VM
will
vary across platforms, as it interacts with the specifics of the platform and
hides the details of the underlying platform and device - it's like a
compatibility layer, or common denominator)
Perhaps from a branding
POV, Sun/Oracle want it to be accepted that Java
is inherently cross platform
compliant / WORA, but that doesn't make
technical sense at all. The cross
platform magic happens in the VM spec, and
in tailoring VMs to each targeted
platform. It's sort of a useful lie.
Google very specifically don't use
the same VM or bytecode structure,
meaning that java compiled bytecode will not
run on Android devices.
It's possible that the concept of compatibility
is being conflated between
"cross device compatibility" and language
compatibility. Android offers
language (and certain API) compatibility with
Java, but does not offer resultant
code compatibility with Java
[ Reply to This | Parent | # ]
|