On Monday, December 7th, Sun Microsystems outlined its new licensing model for Standard Extensions to the Java API. The new licensing model defines a process by which Sun manages the development of Java platform Standard Extensions, establishes policies for companies that wish to implement Standard Extensions, and defines options for companies that wish to use Standard Extensions.What are Standard Extensions?Simply put, a Standard Extension is an API that extends the Java platform. The Java platform consists of an implementation of the Java Virtual Machine (JVM) and a set of packages that implement the core Java APIs. The core APIs are those packages (standard libraries) that are always included in every full implementation of the Java platform. In version 1.2, packages for the core APIs include: java.* , javax.accessibility, javax.swing*, org.omg.CORBA* , and org.omg.CosNaming*. Standard Extensions are packages that expand upon the functionality of the core APIs, often to make the Java platform better suited for market-specific applications. Although Java platform vendors are required to deliver all of the core APIs as part of their Java platform implementation, Standard Extensions are optional. If a Java platform vendor decides that certain Standard Extensions make sense for their customer base, they can deliver those as well. In other words, when you install some implementation of the Java platform, you may or may not receive a particular Standard Extension along with the implementation. If your implementation of the Java platform does not arrive with the particular Standard Extension that is close to your heart, for example, the JavaMail API, you can install the JavaMail API on top of your Java platform implementation. The services of the JavaMail API will then be available to Java technology-based programs you run. Sun defines a Java platform Standard Extension as a Java API that:is open and publishedhas been tested and verified for compatibility and interoperability between Java platforms and applicationsStandard Extensions enable the Java platform to be augmented to provide functionality useful to specific market segments, without bloating the core APIs with packages that are not generally needed. They enable developers to make use of and deliver functionality that is not offered in the core Java platform, without reinventing the wheel. They may also play a role in the future growth of the core Java API. As time goes by, Standard Extensions that become more generally useful may be moved into the core Java API, becoming a required part of any Java platform implementation.Current Standard ExtensionsMany Standard Extensions exist today. The following seven are shipping: JavaBeans Activation Framework (javax.activation)Enables developers to determine the type of an arbitrary piece of data, encapsulate access to it, discover the operations available on it, and instantiate a JavaBeans component to perform those operationsJava Naming and Directory Interface (javax.jndi)Provides a uniform interface to multiple naming and directory services in the enterpriseJava Servlet (javax.servlet)Provides Web application developers with a simple but powerful mechanism for extending the functionality of the Web serverInfoBus (javax.infobus)Enables dynamic exchange of data between JavaBeans components by defining a small number of interfaces between cooperating Beans and specifying the protocol for use of those interfacesJava Media Framework (javax.jmf)Specifies a simple, unified architecture, message protocol, and programming interface for media players, media capture, and conferencingJava 3D (javax.media.j3d)A set of classes for writing three-dimensional graphics applications and applets (expected to be released during Java Business Expo conference)JavaMail (javax.mail*)Provides a platform- and protocol-independent framework to build mail and messaging applications for the Java platformThe following four Standard Extensions are scheduled for final release by mid-1999: Java Cryptography Engine (javax.crypto*)Provides a framework and implementations for encryption, key generation and key agreement, and Message Authentication Code (MAC) algorithmsJavaHelp (javax.javahelp)A full-featured, platform-independent, extensible help system that enables developers and authors to incorporate online help in applets, components, applications, operating systems, and devicesEnterprise JavaBeans (javax.ejb*)Provides a fully scaleable, distributed, and cross-platform component architecture for managing business resources in the enterpriseJava Advanced Imaging (javax.media.jai*)Allows sophisticated, high-performance image processing to be incorporated into Java technology-based applets and applicationsImpact on customersUntil now, Sun has not had a formal policy for Standard Extensions. The new licensing model formalizes the process that Sun will employ to manage Standard Extensions to the Java platform going forward. This new model should provide customers with a more consistent way to transact with Sun regarding Standard Extensions. For each Standard Extension, Sun will develop, co-develop with a third party, or allow a third party to exclusively develop a reference implementation. In the case of a third-party implementation utilizing Sun’s production (reference) implementation of a Standard Extension, the third party must license from Sun the appropriate source code, including the conformance test suite and JCK Testing Tools, and must purchase porting/testing support from Sun. All Standard Extensions implementations must pass the conformance tests and be certified by an independent test house (to be announced). For certified implementations, Sun will issue a “compliant” Java platform Standard Extension brand. Sun expects to offer this certification and branding program for Standard Extensions by the end of first quarter of 1999. In addition, for each Standard Extension, each of the following items will be price-listed at the time of its FCS release:Binaries (if free, it will be listed as such in the price book)Source code, including conformance test suite/JCK Testing ToolsPorting and testing supportThe bottom lineIn short, the new licensing model for Standard Extensions clarifies the process by which Standard Extensions will be specified, licensed, certified, and sold. For licensees, the new policy specifies the process they must follow to implement a Standard Extension. For developers and end-users, the certification and branding program provides a brand that enables them to easily identify compliant Standard Extension implementations. For everyone, the price book listings clarify what the various aspects of Standards Extensions — binaries, source, and support — will cost. Bill Venners has been writing software professionally for 12 years. Based in Silicon Valley, he provides software consulting and training services under the name Artima Software Company. Over the years he has developed software for the consumer electronics, education, semiconductor, and life insurance industries. He has programmed in many languages on many platforms: assembly language on various microprocessors, C on Unix, C++ on Windows, Java on the Web. He is author of the book: Inside the Java Virtual Machine, published by McGraw-Hill. JavaTechnology Industry