1. Introduction 1.1. Project/Component Working Name: openInstaller JDK Selection 1.2. Name of Document Author/Supplier: Gustave Loial 1.3. Date of This Document: 07/31/07 1.4. Name of Major Document Customer(s)/Consumer(s): 1.4.1. The community this proposal comes from openInstaller (External) Message Queue 4.1 IFR (Internal) 1.5. Email Aliases: 1.5.1. Project alias: dev@openinstaller.java.net 1.5.2. Project Lead: Gustave Loial <gustave.loial@sun.com> 1.5.3. Interest List: dev@openinstaller.java.net 2. Project Summary This project is part of the openInstaller (formerly known as project Purple Haze) It does not modify any existing interface. It adds an interface to fulfill needs expressed by our users related to selecting JDK for use during install. 2.1. Project Description: This project introduces a mechanism to select a JDK/JRE (a.k.a. a "Java Platform" for use by java-based products that have a dependency on JDK/JRE. This project delivers a stock user interface and associated logic for detecting and allowing the user to select a JDK/JRE. The Java Platform selected by the user is unrelated to the Java Platform that is actually used to execute the install applicaiton. The one selected by the user is the one the product being installed will use at runtime of the product. Three main options are exposed on the user interface: - Use the Java Platform that is shipped with the distribution, - Use a JDK detected in expected locations, - Use a JDK previously installed but not detected by the module. 2.2. Risks and Assumptions: The assumptions made here are broad enough to cover all situations: the user has the possibility to declare the path to a JDK had the module not detected it. This approach greatly reduces the risks of unforeseen situations happening. 3. Context and Need Summary 3.1. Problem Area: Some distributions do not want to change or introduce a new JDK on a system under installation. This modules allows the installer to reuse an already existent JDK for the product(s) being installed. 3.2. Consumer/Requester: The Message Queue project has requested this functionality (WSARC/2006/536). 3.3. Justification: The Message Queue distribution wants to minimize the modification on the system under installation and reuse as much as possible the already installed JDKs, as it is a widely-available technology with a large installed footprint. 3.4. How will you know when you are done?: When it is possible to re-use an existing JDK during an installation based on openInstaller, or supply a bundled JDK. 4. Technical Description: 4.1. Details: This project delivers a new stock UI page that is similar to the stock pages delivered in LSARC 2007/095 Purple Haze Component Framework. Prior to the rendition in a page, a detection algorithm will be run, looking in specific locations on the file system. This is a precaution avoiding a complete scan of the system and an effort to save time. This mechanism also searches system registeries such as the Windows Registry, for the presence of JDKs by looking in well-known locations. The candidate JDK discovered in the process are actually tested by running a basic program that has two intents: 1- verify that the JDK is operational 2- identify the JDK in terms of version and vendor. That information is stored for the next phase of the process. The stock JDK Selection Page then conveys the following options to the user: a- install and use the JDK that ships with the rest of the distribution, b- pick a JDK from a subset of the detected JDKs, c- manually locate a JDK that is already present on the host by typing in a path to the JDK_HOME. Option a is selectable if the distribution actually contains a JDK. In which case the version and vendor are pulled directly from the JDK's dependency descriptor (see LSARC/2007/098) Option a is contingent on a given install application based on openInstaller delivering a a JDK. If a product wishes to bundle a JDK, it must declare the name of the JDK using the following configuration parameters: JDK.Installation.JDK_PRODUCT_NAME - Name of the JDK product as declared in its dependency descriptor Option a is only enabled if the product actually contains a subproduct named the same as the value of the variable JDK.Installation.JDK_PRODUCT_NAME The product must also declare what the destination directory of the bundled JDK is using the JDK.Installation.JDK_HOME_BASEDIR variable, such that products that depend on knowing this location can reference it in their configuration schemas, and be passed this value during product configuration. Option b is contingent on the availability of JDKs that satisfy the version criterion. In case some JDK were detected on the system and fulfill the version requirement, they are represented for the user to choose among them. The install developer can constrain the acceptable JDK versions which appear in the drop-down list of option b. They can do so by declaring one or more acceptable version ranges using the JDKSelection.directory.JDK_VERSIONRANGE configuration parameter. The default value for this is "[1.5.0_12--INFINITY)" meaning 1.5.0_12 or later (the exact syntax is specified in the syntax for version ranges described in 2007/095 Purple Haze Component Framework). Option c is always present and allows the user to enter a path to a JDK. This covers the cases where a JDK was previously installed in an unexpected location. No version comparison is made when the user\ selects a JDK in this manner. If no JDKs are detected on the system, this option (b) is disabled. If no JDKs are detected on the system *and* no JDK is shipped along with the installer, the user is told as such and is forced to supply a path to an existing JDK. 4.2. Bug/RFE Number(s): 6537960: PH: The framework needs to detect whether a JDK is available on the system 4.3. In Scope: No other area beyond the one described above. 4.4. Out of Scope: 4.5. Interfaces: Exported Interface Classification Comments User Interface Uncommitted JDKSelection configuration variable names and syntax Uncommitted Imported Interface Classification Comments Configuration Schema Format Uncommitted LSARC/2007/096 Dependency Provider API Uncommitted LSARC/2007/098 UI Template Schema Uncommitted LSARC/2007/099 Java VM CLI[1] Standard Windows Registry CLI (reg.exe) Unknown [1] Used to test a potential JDK to see if it really is a JDK/JRE. http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/java.html 4.6. Doc Impact: None 4.7. Admin/Config Impact: None 4.8. HA Impact: None 4.9. I18N/L10N Impact: The error messages that can occur from this module are localized. There is no impact to localization beside the addition of the new messages 4.10. Packaging & Delivery: N/A 4.11. Security Impact: N/A 4.12. Dependencies: LSARC 2007/096 Purple Haze: Configuration Framework LSARC 2007/098 Purple Haze: Dependency & Product Model LSARC 2007/099 Purple Haze: User Interface Framework 5. Reference Documents: http://blogs.sfbay.sun.com/PS72inst/ - Example screenshots from MQ showing L10N Screen 6. Resources and Schedule: 6.1. Projected Availability: Now 6.2. Cost of Effort: feature design feature implementation tests documentation i18n ----------------------- Total cost: 2 man-week 6.3. ARC review type expected: FastTrack 7. Prototype Availability: Now 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: unknown 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open |