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
Learn why the map is cool in Go!
A method to design records so that they're allocated on a specific byte boundary, such as 16 bytes, 512 bytes, 4096 bytes, etc.
Learn the command line used to compile System.pas in Delphi
How to free more space on your home drive by redirecting the location for SDKs in RAD Studio