J/Direct
# J/Direct

J/Direct was a technology included in some versions of Microsoft Java Virtual Machine, which allowed direct calls into the Windows API. J/Direct was specific of Microsoft's Virtual Machine, in replacement of the standard Java Native Interface (JNI).

A Java program which used J/Direct would not run on platforms other than Microsoft Windows.

The release of J/Direct (along with AFC and WFC), was part of an effort by Microsoft to gain leadership on the growing Java community.

Since this destroyed one of the main advantages of Java, its cross-platform nature, J/Direct was often seen as an attempt by Microsoft to undermine Java's cross-platform capabilities, and an example of the tactic of embrace, extend and extinguish.

After the drop by Microsoft of their specific Java virtual machine, and the switch to the .NET environment, J/Direct was no longer maintained.

## Architecture

J/Direct used a kind of annotation in Java code to make the link between Java and Windows functions. As annotations did not exist in Java when J/Direct was designed, Microsoft used a special syntax in Java comments.

For example, to declare the GetSysColor function in the User32 API:

The Microsoft Java implementation already provided a pre-defined package which provided a set of pre-defined classes bound to the User32, Gdi32.dll, and Kernel32.dll APIs.

Additionally, the Microsoft VM used some built-in rules to be able to bind automatically the Java code to some Windows API functions. For example, it chose automatically between ANSI and Unicode versions of Windows API functions.

