What's New in the Solaris 9 9/02 Operating Environment

Solaris 9 Features for Software Developers

Development Tools

Feature Description 

Compatibility of Solaris and Linux Application Programming Interfaces

Some freeware that was available on the Solaris 8 Software Companion CD is now integrated in the Solaris 9 operating environment. As a result, software application developers can now develop and compile their freeware applications more easily in the Solaris operating environment. Freeware libraries include the following:

  • glib

  • GTK+

  • Jpeg

  • libpng

  • Tcl/Tk

  • libtif

  • libxm12

For further information about freeware that is available on the Solaris media, see "Freeware".

Choice of XML Output for Live Upgrade Messages

When using Solaris Live Upgrade at the command line, you can now choose XML output with the -X option. This option is for use when writing programs or shell scripts that use Solaris Live Upgrade as a tool. The default output is text, but with the -X option, XML that is suitable for machine parsing and interpretation is created. The output for the -X option is XML for all messages, including error, warning, informational, general.

See the man page lucreate(1M).

Multiple Page Size Support

Multiple Page Size Support (MPSS) allows a program to use any hardware-supported page size to access portions of virtual memory. Previously only 8-KB pages were available for a program's stack, heap, or anonymous memory mapped with the mmap() function.

You can tune the performance of large, memory-intensive applications to use any page size. Any page size that is supported by the hardware for stack, heap, or /dev/zero private memory mapped with the mmap() function can be used. The use of larger page sizes might significantly improve the performance of programs that intensively use large amounts of memory.

For more information, see the man pages for pagesize(1), mpss.so.1(1), ppgsz(1), memcntl(2), mmap(2), and getpagesizes(3C).

Improved Multithreading Library

The Solaris 9 release includes an improved and faster multithreading library. This library was available as the alternate libthread in previous Solaris software releases.

For further information, see the Multithreaded Programming Guide and the threads(3THR) man page.

Perl Version 5.6.1

A new, default version of the Practical Extraction and Report Language (Perl) is available in the Solaris 9 release. The new default version of Perl is version 5.6.1. Also, included in the Solaris 9 release is an older Perl version, version 5.005_03. This older verions was previously included with the Solaris 8 release. 

For further information, see the perl(1) man page.

Unified diff Format

The diff and sccs-sccsdiff commands have been updated to include support for the GNU-style unified diff format. In this format, context lines are only printed once in the listing of differences.

For information on these commands, see the diff(1) and sccs-sccsdiff(1) man pages.

Sysevent Framework

The sysevent framework enables notification of kernel-level and user-level system events to appropriate applications. Events can include hardware and software state changes, errors, and faults.

Components of the sysevent framework include the following:

  • syseventd daemon

  • syseventadm command

  • Library APIs for event data extraction and sysevent subscription

  • An interface for driver-level system event, ddi_log_sysevent

The syseventd daemon is a user-level daemon that accepts delivery of system event buffers from the kernel. After an event buffer has been delivered to syseventd, the daemon then attempts to propagate the event to all interested end-event subscribers.

The syseventadm command can be used to configure event specifications. These specifications are subsequently used to invoke commands, applications, or scripts in response to a system event.

For information on the sysevent kernel and library APIs, see the man pages syseventadm(1M), syseventconfd(1M), and syseventd(1M).

See ddi_log_sysevent(9F) for information about driver-level event notification logging.

Kernel Pseudo-Random Number Generator

The Solaris Pseudo-Random Number Generator (PRNG) is available through the /dev/random and /dev/urandom devices. PRNG provides ISVs with a standard interface to access pseudo-random numbers for cryptographic operations, scientific applications, and simulation tools. The PRNG operates in the Solaris kernel. PRNG protects the contents of the entropy pool. The PRNG gathers entropic data from kernel memory pages and maintains a high level of randomness at all times.

For further information, see the random(7D) man page.

Application Interface to Remote Shared Memory on Clusters

If you develop applications that extend the use of a Sun Cluster environment, you can benefit from this interface. Using the new Remote Shared Memory (RSM) API, you can program your applications to lower the latency for message passing over high-speed cluster interconnects. Such cluster-aware applications can significantly reduce the time that is required to respond to events in a clustered configuration.  

You must have Sun Cluster 3.0 installed. Existing Sun Cluster applications need to be modified to exploit the new interface. 

For further information, see the Programming Interfaces Guide. Also, the librsm(3LIB) man pages and the "Section 3: Extended Library Functions" (3RSM) man pages include references to RSM.

GNU-Compatible Version of the gettext() API Functions

The Solaris 9 release provides a GNU-compatible version of the gettext() API functions while maintaining backward compatibility with Solaris gettext() API functions.

  • Existing functions in libc now can handle both Solaris and GNU-compatible message files. Existing functions include the following:

    • gettext()

    • dgettext()

    • dcgettext()

    • textdomain()

    • bindtextdomain()

  • New GNU-compatible functions in libc can handle GNU-compatible message files. New functions include the following:

    • ngettext()

    • dngettext()

    • dcngettext()

    • bind_textdomain_codeset()

  • The msgfmt and the gettext utilities now can handle both Solaris and GNU-compatible message files.

For further information, see the gettext(3C) man page.

Extended File Attributes

The UFS, NFS, and TMPFS file systems have been enhanced to include extended file attributes. These attributes enable application developers to associate specific attributes to a file. For example, a developer of a file management application for a windowing system might choose to associate a display icon with a file.  

For further information, see "File System Enhancements".

New Fixed-Priority (FX) Scheduling Class

The FX scheduler provides a scheduling policy for processes that require user or application control of scheduling priorities. See "System Resources Enhancements".

Dynamic Host Configuration Protocol (DHCP)

The Dynamic Host Configuration Protocol (DHCP) service enables host systems to receive IP addresses and network configuration information. This information is received at boot time from a network server. Before the Solaris 8 7/01 release, DHCP configuration data could only be stored in text files or NIS+. Now, data access in the Solaris DHCP service has been redesigned to use a modular framework. Solaris DHCP provides an API that enables you to write shared objects that support any data storage facility for storing DHCP data.  

The Solaris DHCP Service Developer's Guide provides an overview of the data access framework that is used by Solaris DHCP. The guide also provides general guidelines for developers. Also included is a listing of the API functions that you can use to write a module to support a new data store.

For further information, see the Solaris DHCP Service Developer's Guide.

Solaris "Web Start Wizards" SDK 3.0.1

Solaris "Web Start Wizards" simplify the installation, setup, and administration of native Solaris, Java, and non-Java applications. With Web Start Wizards, developers can copackage both Solaris and Microsoft Windows versions of their applications. The installation wizard manages the platform specifics.  

The Web Start Wizards SDK 3.0.1 is now included with the Solaris 9 release. SDK 3.0.1 can be installed by using the Solaris Web Start installation program. 

Modular Debugger (mdb)

The mdb utility is an extensible utility for low-level debugging and editing of the live operating system. The utility can also debug system crash dumps, user processes, user process core dumps, and object files. In the Solaris 9 release, mdb provides new symbolic debugging support for the Solaris kernel and new kernel debugger commands. The mdb utility also provides new features for the examination and control of live running user processes, and the ability to examine raw disk files and devices.

The Solaris Modular Debugger Guide and the mdb(1) man page provide more information.

Audio Enhancements

New audio directories have been added to the Solaris 9 operating environment. The /usr/include/audio directory is a new directory for applications' audio header files. The audio file format has a new header file, /usr/include/audio/au.h, and man page, au(4).

The /usr/share/audio directory is a new depository for miscellaneous audio files. The audio files from the /usr/demo/SOUND/sounds directory have been moved here. A symbolic link from /usr/demo/SOUNDS/sounds to /usr/share/audio/samples/au has been created. This link enables current applications and current scripts to run without failure.

Numerous bug fixes have been made to the audio kernel modules to improve reliability. 

For further information, see the System Administration Guide: Basic Administration.

Vectored System Call: sendfilev()

The vectored system call, sendfilev(), enables better performance for sending data from application buffers or files. For example, in web performance, a web server can construct an HTTP response in a single system call. This HTTP response includes header, data, and trailer as well as server side includes. This feature provides optimal performance with the Solaris Network Cache and Accelerator (NCA). And, sendfilev() enables the return of multiple chunks, which might come from various files, for the response.

For further information, see the sendfilev(3EXT) and sendfile(3EXT) man pages.

Verify File Conformance With the appcert Utility

The appcert utility verifies an object file's conformance to the Solaris ABI. Conforming to the Solaris ABI greatly increases an application's probable compatibility with future releases of Solaris software.

For more information, see "Using appcert" in the Programming Interfaces Guide.

Generic Security Services Application Programming Interface (GSS-API)

The Generic Security Services Application Programming Interface (GSS-API) is a security framework that enables applications to protect their transmitted data.  

See "Security Enhancements".

Web-Based Enterprise Management Tools

Feature Description 

Solaris WBEM Services 2.5

Solaris WBEM Services 2.5 is Sun Microsystems' implementation of Web-Based Enterprise Management (WBEM). WBEM is a set of management and Internet-related technologies. These technologies are intended to unify the management of enterprise computing environments. Developed by the Distributed Management Task Force (DMTF), WBEM enables organizations to deliver an integrated set of standards-based management tools. These tools support and promote World Wide Web technology. Solaris WBEM Services was updated to version 2.5 in the Solaris 9 release. 

For further developer information about WBEM, see the Solaris WBEM SDK Developer's Guide.

New WBEM Batching API Added

The Java Web-Based Enterprise Management (WBEM) client application programming interface (API) now supports the batching of multiple Common Interface Model (CIM) operations by a client into a single "request and response." The CIM Object Manager now accepts and services these batched requests as well. This facility is defined in the Distributed Management Task Force (DMTF) Specification for CIM Operations Over HTTP.

The number of remote calls that a client needs to make is consequently reduced. 

For further information, see the Solaris WBEM SDK Developer's Guide.

WBEM CIM WorkShop Enhanced

CIM WorkShop provides a graphical user interface for the WBEM development tool. CIM WorkShop can be used by instrumentation, system, and network application developers. These developers can view and create WBEM classes and WBEM instances through CIM WorkShop.  

In CIM WorkShop, you can do following: 

  • View and select namespaces

  • Add and delete namespaces

  • View, create, modify, and delete classes

  • Add and delete properties, qualifiers, and methods to new classes

  • View, create, and delete instances

  • View, modify, and delete instance values

  • Traverse associations

  • Execute methods

  • Display contextual help

Enhancements and new features that are available in CIM Workshop include the following: 

  • Updated and corrected contextual help.

  • Ability to traverse associations.

  • Ability to subscribe to and display information about events for a selected class, thus enabling you to debug applications that use events more easily. You can use this new feature only when you select the RMI protocol.

  • Ability to submit WBEM Query Language (WQL) queries that search for and display WBEM information.

For further information, see the Solaris WBEM SDK Developer's Guide.

Support for WBEM Process Indication (Extrinsic) Events Added

Currently, WBEM event services enable client applications to asynchronously receive indications when conditions of interest are met. However, the only supported indications belong to the class life cycle indications. Life cycle indications denote the modification, the creation, and the deletion of an instance. 

While this class of indications is very flexible and wide ranging, instrumentation might need to publish indications that do not fall into this category. Given this requirement, the DMTF introduced the process indication hierarchy as an extension to the current indication hierarchy. The process indications for WBEM services now handle this extended hierarchy.

Process indications for WBEM services is Sun Microsystems' implementation of the process indication portion of the event model. The process indication class is the superclass of all indications that are published by instrumentation. This superclass also includes the life cycle indications. 

The process of subscribing to process indications is the same as the process of subscribing to life cycle indications. 

For further information, see the Solaris WBEM SDK Developer's Guide.

WBEM mofcomp Command Enhanced

The Managed Object Format (MOF) compiler (mofcomp) now allows you to specify a namespace on the command line. If the namespace does not exist, it is created.

In addition, the MOF Compiler now generates Java interface and class source files. This feature enables you to use standard Java interfaces rather than CIM constructs and CIM object model application programming interfaces (APIs). 

For each CIMClass, an interface and a class file are generated. The interface is generated to enable you to create different implementations while maintaining interoperability.

For further information, see the Solaris WBEM SDK Developer's Guide.

Sample Programs Are Added for New Java WBEM SDK

The Java WBEM Software Developer's Kit (SDK) now includes a new sample Java applet and sample programs. The Java applet and sample programs are installed in /usr/demo/wbem.

The Java WBEM SDK sample programs show you how to use events, queries, and batching. You can use these samples as a basis for developing your own programs. 

For further information, see the Solaris WBEM SDK Developer's Guide.

Solaris WBEM Software Developer's Kit

The Solaris Web-Based Enterprise Management (WBEM) Software Developer's Kit (SDK) includes APIs that developers use to create applications. Based on WBEM, these applications can access data and manage resources in the Solaris operating environment. The Solaris WBEM SDK also includes CIM WorkShop. The CIM WorkShop is a Java application that developers can use to create WBEM applications. With the CIM WorkShop, developers can view the sample WBEM client and provider programs included with the software. 

For more information, see the Solaris WBEM SDK Developer's Guide.

New Solaris Providers

The new Solaris Providers enable developers to create software that gets and sets information about managed devices in a Common Information Model (CIM) environment. A Solaris Provider provides the CIM Object Manager with instances of managed resources in the Solaris operating environment. 

Five new Solaris Providers are available in the Solaris 9 software:

  • WBEM Performance Monitor for Solaris devices and systems - Provides a variety of statistical information about a system on which the Solaris operating environment is running.

  • WBEM Product Registry - Provides the ability to add, delete, or modify new or existing products that are installed on a system.

  • WBEM SNMP Provider - Enables WBEM services to deliver information by means of the Simple Network Management Protocol (SNMP), a protocol of the Internet reference model that is used for network management.

  • WBEM EEPROM Provider - Enables the display and modification of configuration information in the EEPROM.

  • Provider for WBEM System Availability - Provides reboot information about a system. This information enables applications to compute the percentage of time that a system has been up and running. This provider also supplies reasons why a system failed:

    • System panic occurred

    • System halted by a user

    • System shut down by a user

For further information, see the Solaris WBEM SDK Developer's Guide.

Writing Device Drivers

Feature Description 

Frame Buffer Power Management

Some devices, such as certain tape drives and frame buffers, should not lose power, even in a power cycle, when their drivers are detached. A new interface, ddi_removing_power, checks whether or not a device loses power as a result of a suspend operation. A new property, no-involuntary-power-cycles, can be specified to ensure that the device is not powered down unintentionally.

For more information, see the ddi_removing_power(9F) and no-involuntary-power-cycles(9P) man pages.

Sun StorEdge Traffic Manager

The Sun StorEdge Traffic Manager supports multiple paths for I/O devices such as Fibre Channel-accessible storage. This feature balances the workload across multiple devices. The Traffic Manager increases reliability by redirecting requests from a failed interface card or storage device to a card or device that is operational. 

Driver Fault Injector Harness

The driver fault injector harness is a Solaris device driver development tool. The harness injects a wide range of simulated hardware faults when the driver under development accesses its hardware. The harness tests the impact of the test fault conditions on a SPARC based device driver. 

For more information, see the man pages th_define(1M) and th_manage(1M).

Generic LAN Driver

Driver developers can use the Generic LAN driver (GLD). The GLD implements much of the STREAMS and Data Link Provider Interface (DLPI) functionality for a Solaris network driver. Until the Solaris 8 10/00 release, the GLD module was available only for Solaris Intel Platform Edition network drivers. Now, GLD is available for Solaris SPARC Platform Edition network drivers.

For more information, see "Drivers for Network Devices" in Writing Device Drivers.

Java Releases

Feature Description 

JavaHelp v. 1.1.2

JavaHelpTM v. 1.1.2 is a full-featured, platform-independent, extensible help system. This system enables developers and authors to incorporate online help in applets, components, applications, operating systems, and devices. For more information, refer to the following Web site:


Java 2 SDK, Standard Edition v. 1.4.0

The Java 2 SDK Standard Edition v. 1.4.0, J2SETM 1.4.0, is an upgrade release for Java 2 SDK, Standard Edition. The upgrade release includes new platform features, new tools, and utilities.

For full details on these enhancements, see the J2SE 1.4.0 platform documentation at the following Web site: 


JSP 1.2 and Java Servlet 2.3 Support in Apache Web Server

Jakarta Tomcat 4.0.1 and a mod_jserv module have been added to the Apache Web server. This server now supports JavaServer PagesTM, JSP Version 1.2, and Java Servlets Version 2.3.

The following files are stored in /etc/apache:

  • tomcat.conf

  • README.Solaris

  • zone.properties

  • jserv.properties

  • jserv.conf

See the README.Solaris file for information on enabling Tomcat support. Also, refer to the following Web site for configuration information:


Tomcat and the mod-jserv module, like the rest of Apache software, is open source code that is maintained by a group external to Sun. This group seeks to maintain compatibility with previous releases.