About the author
I was on a software archaeology mission, to convert a Java application to a Delphi.NET application. The mission is necessary, so I won't blog about the why. Why Delphi.NET, instead of Delphi Win32? It's because the .NET Framework implements almost the entire Java runtime library (in the assembly vjslib.dll) and certain classes, such as Hashtable, Vector, FilterInputStream, ByteArrayStream, etc, are not available in Delphi Win32, and I'm not ready to implement these classes in Delphi Win32.
The vjslib (Visual J# library) assembly seems to be derived from an earlier work done by Microsoft. Specifically, in the mid-to-late 1990s, Microsoft undertook to have their own Java VM implementation, and they created Visual J++, and created some enhanced classes with the namespace com.ms (see the wiki entry on Visual J++). My own speculation begins here :-) Subsequently, when the .NET Framework CLR is created, all the com.ms.* classes were resurrected (why throw away all that code when you can reuse it?), and moved into the vjslib assembly and provided the base for Microsoft to implement the Java 1.1.4 runtime in .NET. The Java namespaces implemented in the vjslib assembly are as follows:
I used Borland Developer Studio 2006 instead of CodeGear RAD Studio 2007, as the dccil compiler in RS2007 is unable to import the vjslib assembly due to compile-time SYxxxx errors. BDS 2006 by default generates code for .NET 1.1 (though, with some configuration, one can make it generate code for .NET 2.0). There is certain functionality available in the J# library, which implements more of the standard Sun Java RTL in the .NET 2.0 Framework that is not available on the .NET 1.1 Framework, so, I had to translate certain code differently.To translate the Java application into Delphi.NET, it is necessary to understand Java, Delphi (two languages), the .NET Framework and the Java platform, a discipline that not many engineers possess. I have, years ago, gotten myself certified as a Sun Certified Java Programmer, but over the years, as I have less work on Java than other languages in my day-to-day work, I have forgotten some of the Java-isms, and this software archaeology mission refreshes my memory on Java, the language and the platform.
Continuing from my Adventures in translating Java to Delphi.NET: Part 1 article... In translating Java
A method pointer is now the same as a global procedure, ie, procedure of object = procedure.