IntroductionHow can you balance the needs of developers who want to use new Sun technologies while supporting your customer base, many with older technologies? This article describes a proven method to allow application software developers to use the latest version of the Solaris Operating Environment (OE) (as well as new Sun hardware that might require it) while supporting previous versions of the Solaris OE. Problem DescriptionFrequently, independent software vendors (ISVs) have to support a variety of versions of Solaris software because many of their customers have not yet upgraded to the latest version. To allow us to make this discussion version-independent, let's refer to the latest version of the Solaris OE as "SolarisNew" and an older version as "SolarisOld". To keep their applications working under SolarisOld, the ISVs have to run SolarisOld themselves, or so the conventional wisdom goes. The Solaris OE is guaranteed to be binary upward compatible, but not downward compatible. Indeed, if you compile and link a program under SolarisNew, it will most likely fail to run properly under SolarisOld. On the other hand, developers want to use SolarisNew because it gives them access to various improvements, new tools (or versions of tools) and faster hardware that are not available with SolarisOld. This situation exists with any two versions of the Solaris platform, whether it be Solaris 2.6 and Solaris 8 or Solaris 8 and Solaris 9, which is scheduled for upcoming release. How can an application developer work with SolarisNew such that their applications will work properly when deployed on customers' SolarisOld-based servers and/or workstations? For example, let's say an ISV has application developers using the Solaris OE and an integration group that builds the software which is shipped to customers. Developers go through the code-test-debug cycle, creating local development builds several times a day. While developers are working on their piece of the application creating object files (*.o), they link against other object files or libraries that are accessible via an NFS-mounted development build server that is common to both developers and integration engineers. After iterations of the code-test-debug cycle, developers submit their locally-tested error-free code into a common source tree. The integration group builds the official binaries (those that are shipped to customers) using that tree. To be able to support both SolarisNew and SolarisOld platforms, there are two traditional options that ISVs may follow:
Neither of the above options is satisfactory. SolutionThe solution is based on the fact that you do not really need to build the application under SolarisNew and run it under SolarisOld. Instead, you can build portions of it under both versions and combine the resulting object files when needed. The following three-step solution provides details on how an ISV could set this up.
Using this method, ISV developers can enjoy all the benefits of using the latest version of the Solaris OE (including new hardware) as well as support customers who use the older versions. In a certain sense, this new method is not very different from the first traditional one cited earlier, which has both the developer team and the integration team using SolarisOld. Even in that case, no two systems are exactly the same. There are always differences in the Solaris update levels, patches, graphics devices, middleware software versions, and the like. The Fine PrintThe method described above will work correctly if you follow a few simple rules.
Performing the appcert check regularly is a very good idea regardless of whether you use the method described in this article or not. Only ABI-compliant applications using dynamic linking for system libraries are guaranteed to provide upward binary compatibility. In summary, this method allows application developers to enjoy the best Sun tools and systems available while ensuring a broad deployment of their applications, including the customers who are not running the latest version of Solaris software. It has been submitted for official documentation via the Sun RFE (Request For Enhancement) process. You can reference this by RFE 4444438 "Enabling ISVs to develop on new Solaris version using old .o files."). This method has been successfully used in the field by at least one large ISV, where it has worked quite well. About the AuthorGreg Nakhimovsky is a member of technical staff at Sun Microsystems. He works with independent software vendors making sure their applications run well on Sun systems. He has over 20 years of industry experience developing, performance tuning, and troubleshooting technical computer applications. January 2002 | ||||||||
|
| ||||||||||||