Java is a strongly- and statically-typed procedural, garbage-collected _(object-oriented) *(programming language) with syntax like that of the *(C language) released by Sun Microsystems as a platform for hardware-independent applications, but only in a very limited sense. Java started as an in-house development tool by Gosling named Oak for the various Sun-supported platforms.

The downfall is that Java was built using _(Smalltalk) and _(Self) compiler technology, but is a less-expressive language, and requires interface signature dependencies that break the encapsulation promised by object-orientation. In particular, not all elements of Java are objects, including classes, literals, arrays, etc. In particular, only recently has genericity been introduced in even common extensions. However, a lot of research is performed in Java because of the money behind it, so we cannot fully ignore it.

See also _(OpenJava).

<ul class="links">
<li>_("Sun's home for Java"|http://java.sun.com).</li>
</ul>

<ul class="implementations">
<li>See the _(JVM)s.</li>
<li>_("OpenJIT"|http://www.openjit.org/): a _(reflective|reflection) _(JIT) compiler (a _(Run-Time Code Generator|Run-Time Code Generation)) for Java. From its home page:
  <blockquote>
  OpenJIT is a "_(reflective|reflection)" _(JIT) compiler in that not only it is almost entirely written in Java, but also that it _(bootstrap)s and compiles itself during execution of the _(user) program, and compiler components coexist as first-class _(object)s in user heap space. Thus, users can tailor and customize the compilation of classes at runtime for variety of purposes such as application-specific optimization and _(partial evaluation), _(dynamic), compiler-assisted environment adaptation of programs, debugging, language extension and experimentation, and other types of advanced compiler-based research and applications. OpenJIT even allows full _(dynamic) update of itself by loading the compiler classes on the fly from the network. OpenJIT is fully JDK compliant, and plugs into standard _(JVM)s several _(Unix) platforms such as Solaris (Sparc), _(Linux) (x86), and _(FreeBSD) (x86). On Linux/x86 platform, OpenJIT 1.1.14 (the current release) is faster than the JDK 1.2 classic _(VM) compiler, runs more or less the same speed as other commercial _(JIT) compilers on classic _(VM).
  </blockquote>
</li>
</ul>
