This appendix describes the benefits of using Oracle JInitiator as a plug-in for your users' Web browsers. Oracle JInitiator makes it possible for users to run Forms Server applications using Netscape Navigator or Internet Explorer. It provides the ability to specify the use of a specific Java Virtual Machine (JVM) on the client, rather than using the browser's default JVM.
Oracle JInitiator runs as a plug-in for Netscape Navigator and as an ActiveX component for Internet Explorer. Oracle JInitiator does not replace or modify the default JVM provided by the browser. Rather, it provides an alternative JVM in the form of a plug-in.
Oracle JInitiator delivers a certified, supportable, Java Runtime Environment (JRE) to client desktops, which can be launched transparently through a Web browser.
Oracle JInitiator is Oracle's version of JavaSoft's Java Plug-in. The JavaSoft Plug-in is a delivery mechanism for a JavaSoft JRE, which can be launched from within a browser. Likewise, Oracle JInitiator is providing a delivery mechanism for an Oracle certified JRE, which enables Forms Developer applications to be run from within a browser in a stable and supported manner.
In addition to providing a certified platform for the execution of Forms Developer applications, Oracle JInitiator provides a number of additional features over and above the standard JavaSoft Java Plug-in. These include JAR file caching, incremental JAR file loading, and applet caching.
Oracle JInitiator provides these benefits:
The first time the client browser encounters an HTML file that specifies the use of Oracle JInitiator, it is automatically downloaded to a client machine from the application server. It enables users to run Forms and Graphics applications directly within Netscape Navigator or Internet Explorer on the Windows 95 and Windows NT 4.0 platforms.
The installation and updating of Oracle JInitiator is performed using the standard plug-in mechanism provided by the browser. Oracle JInitiator installation performs the required steps to run Forms Developer applications as trusted applets in the Oracle JInitiator environment.
Oracle JInitiator supports the following configurations:
|Internet Explorer 4.0||Internet Explorer 5.0||Navigator 4.0||Navigator 4.5|
The minimum system requirements for Oracle JInitiator are:
Oracle JInitiator leverages the Netscape Navigator plug-in architecture in order to run inside the browser in the same way other plug-ins, such as QuickTime movies or Shockwave animations operate. Using the Netscape HTML <EMBED> tag, Web application developers can specify that plug-ins run as part of a Web page. This is what makes it possible for Oracle JInitiator to run inside the Web browser with minimal user intervention.
When Navigator first encounters an HTML page that specifies the use of Oracle JInitiator, users will see a "Plug-in Not Loaded" dialog on the HTML page, which directs the user to the Oracle JInitiator download page. Users can then download the version of Oracle JInitiator for their operating system and install it.
Once Oracle JInitiator is installed, users must shut down Navigator, restart it, and then revisit the original HTML page. Oracle JInitiator will then run and use the parameters in the <EMBED> tag to render the applet. The next time Navigator encounters a Web page that specifies Oracle JInitiator, Navigator will seamlessly load and run the plug-in from the local disk, without user intervention.
Oracle JInitiator leverages the Microsoft Internet Explorer extension mechanism for downloading and caching ActiveX controls and COM components. Using the HTML <OBJECT> tag, Web application developers can specify that ActiveX controls or COM components should run as part of a Web page. Such components include Oracle JInitiator.
When Internet Explorer first encounters an HTML file that has been modified to specify the use of Oracle JInitiator, Internet Explorer will ask the user if it is okay to download an ActiveX control signed with a VeriSign digital signature by Oracle Corporation. If the user clicks "Yes," Internet Explorer will begin downloading Oracle JInitiator. Oracle JInitiator will then run and use its parameters in the <OBJECT> tag to render the applet. The next time Internet Explorer encounters a Web page modified to support Oracle JInitiator, it will seamlessly load and run Oracle JInitiator from the local disk, without user intervention.
To set up the Oracle JInitiator plug-in:
To add Oracle JInitiator markup to your base HTML file:
Installing the Oracle JInitiator on your server allows you to test and refine your configuration before deploying your applications to customers. Note that this is not a required step. It is merely useful for local system testing.
To install Oracle JInitiator on your Web server:
The Oracle JInitiator download file (JINIT_DOWNLOAD.HTM) is the template HTML file that allows your users to download the Oracle JInitiator file.
To customize the Oracle JInitiator download file:
To make Oracle JInitiator available for download:
To modify the Oracle JInitiator plug-in:
To modify the cache size for Oracle JInitiator:
The default cache size for Oracle JInitiator is 20000000. This is set for you when you install Oracle JInitiator.
To modify the heap size for Oracle JInitiator:
The default maximum heap size for Oracle JInitiator is 64MB. This has been set for you when you install Oracle JInitiator.
To view Oracle JInitiator output:
This example illustrates the Oracle JInitiator markup for both Microsoft Internet Explorer and Netscape Navigator. Adding these tags to your base HTML file will enable your applications to run within both Netscape and Microsoft browsers.
<HTML> <BODY> <P> <OBJECT classid="clsid:9F77a997-F0F3-11d1-9195-00C04FC990DC" WIDTH=600 HEIGHT=480 codebase="http://acme.com/jinit11711.exe#Version=1,1,7,11"> <PARAM NAME="CODE" VALUE="oracle.forms.engine.Main" > <PARAM NAME="CODEBASE" VALUE="/forms60code/" > <PARAM NAME="ARCHIVE" VALUE="/forms60code/f60all.jar" > <PARAM NAME="type" VALUE="application/x-jinit-applet;version=126.96.36.199"> <PARAM NAME="serverPort" VALUE="9000"> <PARAM NAME="serverArgs" VALUE="module=order.fmx"> <PARAM NAME="serverApp" VALUE="default"> <COMMENT> <EMBED type="application/x-jinit-applet;version=188.8.131.52" java_CODE="oracle.forms.engine.Main" java_CODEBASE="/forms60code/" java_ARCHIVE="/forms60code/f60all.jar" WIDTH=600 HEIGHT=480 serverPort="9000" serverArgs="module=order.fmx" serverApp="default" pluginspage="http://acme.com/jinit_download.htm"> <NOEMBED> </COMMENT> </NOEMBED></EMBED> </OBJECT> </BODY> </HTML>
The most frequently asked questions about Oracle JInitiator are discussed in detail in the following sections:
When will Oracle JInitiator be available?
Oracle JInitiator has been available since September 1998 for the deployment of custom Forms Developer applications. Oracle Applications completed certification of Oracle JInitiator in February 1999.
How is Oracle JInitiator distributed?
Starting with release 6i of Forms Developer, Oracle JInitiator will be shipped as part of the Forms Developer distribution CD. Oracle JInitiator is also available for download from the Forms Developer section of the Oracle Web site: http://www.oracle.com/tools/dev_server. Updates for Oracle JInitiator may also be obtained through the Oracle Worldwide Support Organization.
Will Oracle JInitiator work on non-Windows platforms?
Oracle has no current plans for porting Oracle JInitiator to non-Microsoft Windows platforms. However, we are working very closely with a number of hardware vendors to provide support and certification for running Forms Developer applications on non-Microsoft Windows platforms.
What versions of Netscape Navigator and Internet Explorer is Oracle JInitiator certified with?
Oracle JInitiator will be certified with the latest production releases of these browsers when each Oracle JInitiator release undergoes final QA testing. Oracle will also be providing support for earlier releases of the browsers. The exact browser versions that have been certified will be contained in the accompanying documentation for an Oracle JInitiator release.
What is the difference between the JavaSoft Java Plug-in and Oracle JInitiator?
The primary difference is that Oracle JInitiator includes the Oracle certified JRE whereas the JavaSoft Java Plug-in is shipped with a JavaSoft JDK reference implementation. JavaSoft's implementation has not been certified with Forms Developer applications. Forms Developer places extreme demands on the JRE; so we have modified JavaSoft's JRE to perform under extreme conditions.
While Oracle is diligent in notifying JavaSoft of its enhancements, it is not possible to wait until JavaSoft can provide a new version with the included enhancements.
The JavaSoft Plug-in is a delivery mechanism for a JavaSoft JRE which can be launched from within a browser. Likewise, Oracle JInitiator is providing a delivery mechanism for an Oracle certified JRE, which enables Forms Developer applications to run within a browser in a stable and supported manner.
Since Oracle is responsible for the production of Oracle JInitiator, we provide full product support for it. Through the Oracle World Wide Support Organization, Oracle customers can obtain the relevant level of support required to support their applications.
In addition to providing a certified platform for the execution of Forms Developer applications, Oracle JInitiator provides a number of additional features over and above the standard JavaSoft Java Plug-in. These features include JAR file caching, incremental JAR file loading, and applet caching.
Why is Oracle certifying and delivering a specific JRE rather than using the JRE provided by JavaSoft?
Forms Developer has responded to its customers who are moving to server-based deployment as a way to reduce computing costs, but also realize the need to protect their investment in existing applications that are essential to their business.
Providing our customers with the ability to run their existing applications completely unchanged on a Java platform places unique demands on Java, especially given that many of these applications are large and complex.
Can the JavaSoft Java Plug-In be used to run Forms Developer applications?
Using the JavaSoft Plug-In to deploy Forms Developer applications has not been certified and is therefore not a supported deployment configuration. Today, the JRE provided by Oracle JInitiator includes a number of enhancements that are not yet available in the JRE provided by JavaSoft. In addition, Oracle is able to provide full support for the Oracle JInitiator through the Oracle Worldwide Support Organization.
Does Oracle intend to support native browser deployment?
The primary problem with providing native browser support is the dependence on browser vendors and platform providers to support the same version and quality level of Java that is required by Forms Server. This dependency has prevented Oracle from certifying native browser deployment as a deployment option in the timeframe that our customers require. Therefore, we are fully endorsing Oracle JInitiator as our Internet application deployment strategy. This ensures a stable and supported platform on which to deploy Forms Server applications.
Who will provide support for Oracle JInitiator?
Oracle Corporation provides full support for Oracle JInitiator through the Oracle Worldwide Support Organization.
Which versions of Forms Developer Server does Oracle JInitiator support?
Oracle will support Forms Server Release 1.6 and later with Oracle JInitiator running on the client.
Is Oracle JInitiator supported with Oracle Applications?
Yes. The Oracle Applications group has certified the use of Oracle JInitiator for the running of Oracle Applications within Netscape Navigator 4.06 and later and Microsoft Internet Explorer 4.0 and later.
What do I need to install on the client in order to run Forms Developer applications in the Web browser?
By leveraging the standard browser extension mechanisms provided by both Netscape Navigator and Microsoft Internet Explorer, Oracle JInitiator is able to automatically download itself to the client machine when the browser first encounters an HTML page that requires it. Oracle JInitiator is then installed using the method required for the addition of Plug-ins or ActiveX Objects by the browser currently in use.
How large is Oracle JInitiator when it is downloaded to the client?
The compressed Oracle JInitiator distribution is approximately 8MB and expands to approximately 10MB when completely installed on the client.
Is it possible to perform a silent installation of Oracle JInitiator where the user does not have to enter any details?
Oracle JInitiator supports a silent installation mode in which the user doesn't need to actively step through the installation process provided by the InstallShield. To perform the silent installation, the user must download the Oracle JInitiator distribution to their machine and then specify "
-s -sm" from the command line or from the Windows Run dialog when running the downloaded executable.
For example to perform a silent installation from the command line, the user would open a DOS shell and type:
C:\TEMP> jinit1179 -s -sm
To perform a silent installation using the Windows Run dialog, the user would click Start Run and then enter
jinit1179 -s -sm in the Run dialog window that appears:
Is it possible to perform the Oracle JInitiator installation from a central server such that user interaction is not required?
Using the facilities provided by the host operating systems, it is possible to install Oracle JInitiator on each client desktop without user intervention. This involves the System Administrator accessing each client machine and running the silent, non-GUI installation option of Oracle JInitiator.
Can I force Oracle JInitiator to use the same configurations for Proxy Servers, etc. as the browser in which it is running?
The operation of Oracle JInitiator is controlled via the Oracle JInitiator Control Panel. The Oracle JInitiator Control Panel is installed at the same time Oracle JInitiator is installed and can be accessed from the StartPrograms menu.
With the Oracle JInitiator Control Panel, you can configure Oracle JInitiator to use either its own specific Proxy settings or the defaults supplied by the browser from which it is invoked. Select the Proxies tab and insert the appropriate settings.
How can I force my browser clients to download and install a new version of Oracle JInitiator?
Oracle JInitiator functions as a Netscape Plug-in or a Microsoft ActiveX object depending on the type of browser being used. The browser uses a MIME type to provide a mapping between an HTML page request and the required Plug-in/ActiveX object. Each Oracle JInitiator installation has a specific MIME type associated with it. When a browser loads an HTML page that contains a MIME type that it is not aware of, the browser informs the user that it does not have the required Plug-in/ActiveX object and will open a dialog that will help the user retrieve it.
By changing the MIME type specified in your application's HTML page to be a later version, the browser will detect that it does not have a valid Plug-in/ActiveX object for that MIME type and will prompt the user to download a new file so it can serve the request completely.
An HTML page HR.HTML allows users to run the HR application. The HR.HTML page indicates to the browser that it should use Oracle JInitiator version 184.108.40.206.1 through the MIME type value.
If a later release of Oracle JInitiator is obtained and placed on the server, the client browser can be forced to use the newer version by modifying the version specific lines in the HR.HTML file with the newer version release information.
I pressed the Cancel button on the Netscape "Plug-in Not Loaded" dialog and now I never get prompted to install Oracle JInitiator. How do I install the Plug-in?
Netscape uses the Windows registry to store information about installed Plug-ins. As soon as the "Plug-in Not Loaded" dialog appears, Netscape writes the details for the Plug-in into the registry, irrespective of whether the Plug-in is actually installed or not. When a page is encountered that calls for the use of that specific Plug-in, it will appear to Netscape that the Plug-in is installed because the registry says it was. This results in the "Plug-in Not Loaded" dialog box not being shown again. To overcome this, you can force Netscape to load a Plug-in by clicking the Plug-in missing icon. This will result in Netscape displaying the Plug-in download dialog.
I have a lot of HTML pages that have different MIME types in them. Will the latest Oracle JInitiator release still run with these earlier MIME types?
Currently the Netscape browser has limit of 256 characters that may be used to store the recognized MIME types for a particular Plug-in. Microsoft Internet Explorer does not have this restriction with their extensible browser Objects architecture. Working within this limit, Oracle JInitiator will provide backward support for as many earlier MIME types as is possible.
The accompanying documentation and release notes for an Oracle JInitiator release will provide an accurate description of what MIME types are supported for that specific release.
Is it possible to make Forms Developer applications run in any version of Oracle JInitiator?
Yes. Oracle provides a generic MIME type that will allow any installed version of Oracle JInitiator to run the Forms Developer Application. This MIME type application, x-jinit-applet, is recognized by every version of Oracle JInitiator. Always using this MIME type will enforce the upgrading of later Oracle JInitiator versions by the browser.
Can the Forms Applet window be run within the same browser window from which it was launched?
Forms Server Release 6i supports the running of the Forms applet both within the same browser window and in a new window. This is a configurable option and is set as a parameter in the base HTML file.
What happens to the running Forms Developer application if the user navigates off of the current browser page?
Oracle JInitiator contains an additional feature that allows a running Java application to be cached and retrieved when required during the current browser session. This means that when a Forms application is run and the user navigates to a different page and then comes back to the Forms application page, the running Forms application will appear exactly as it was when the user left it.
Can I use the Oracle JInitiator to run my custom developed Java applications?
Oracle JInitiator uses a standard JavaSoft JVM that has been enhanced by the Oracle development team. It should be capable of running custom Java applications. However at this time, Oracle only provides support for Oracle JInitiator when running Oracle Java-based applications, such as Forms Developer, Oracle Enterprise Manager, and Oracle Discoverer. The use of Oracle JInitiator to run custom Java applications is not supported by Oracle.
Can Oracle JInitiator and the JavaSoft Java Plug-in coexist on the same machine?
Yes. They can coexist in the same browser installation because they use different MIME types to launch the plug-in.
Will Oracle JInitiator coexist and operate correctly when used at the same time as the Javasoft Plug-in, in the same browser instance?
No. Due to the way that dynamically loadable libraries are loaded and the JVM dynamically loadable libraries are named, the Oracle JRE and the JavaSoft JRE can not be run simultaneously from within the same browser instance. This means that a browser user cannot switch from using the JavaSoft Java Plug-in to Oracle JInitiator in the same browser instance. The browser must be stopped and restarted when switching between the different applications that use Oracle JInitiator and Java Plug-in from JavaSoft.
With the JavaSoft Java Plug-in and Oracle JInitiator there is an option to use a different JRE. Can I use the JavaSoft Java Plug-in when it is configured to use the Oracle certified JRE to run Forms Developer applications?
The only certified and supported combination is Oracle JInitiator with Oracle JRE. The Oracle JRE, while conforming to the JavaSoft standard, contains bug fixes to the JavaSoft JRE that allow Forms Developer applications to run correctly. Oracle works closely with Javasoft to ensure that Oracle's enhancements are communicated to JavaSoft and applied to the standard JRE, but is unable to wait for the improved JavaSoft JRE to be released.
The figure below shows the Oracle JInitiator Control Panel and the correct settings for the Java Run Time Environment value.
Can Oracle JInitiator cache the Java class files downloaded when an application is run? If so, does this mean the Java class files are downloaded only once and not each time the application is started?
Yes. Oracle JInitiator provides a persistent caching mechanism for JAR files that it downloads when running Java applications. A JAR file is a standard Java archive that contains a series of Java class files that are used by the Java application. By putting all the required class files into a single JAR file, a single download is performed rather than multiple downloads for each individual class file required.
By caching the JAR files on the client, Oracle JInitiator alleviates the need to download the JAR files each time they are required for an application. The first time a JAR file is required it is downloaded from the Web server and then saved to the local client machine. The next time it is required, Oracle JInitiator will look into the cache directory to see if the file is stored there; if it is, it will use it from the local directory and avoid having to re-download the file from the Web server. This saves a lot of user time and network traffic for commonly used applications. For example, if your application uses a 2MB JAR file and you have a fast Ethernet connection that is capable of downloading a 2MB file in 5 seconds then you will save 5 seconds at application startup. If you are running on a slow dial-up network that takes 10 minutes to download a 2MB file, then you will save 10 minutes at application startup.
How does Oracle JInitiator caching technology work?
Oracle JInitiator provides browser-session-independent caching of JAR files. Oracle JInitiator stores the downloaded JAR files on the local client machine so that it does not need to download them the next time they are required.
When a JAR file is requested, Oracle JInitiator will check the cache directory to determine if the file has been previously requested, downloaded, and stored. If the JAR file is not present, Oracle JInitiator will download the JAR file from the Web server and then store it for future use in the cache. Some additional information is stored in the cache file to enable Oracle JInitiator to uniquely identify the JAR file as well as the Last-Modified date of the requested file as reported by the Web server.
If the file is present in the cache, then the Web server must be checked to determine if the stored JAR file is current. Oracle JInitiator takes the Last-Modified date contained in the cached JAR file and asks the Web server (using standard HTTP interactions) if the file on the server has been modified. The Web server uses the given Last-Modified date and the timestamp on the file stored on the server. Then it either serves the newer file to Oracle JInitiator with a status code of 200 or returns a status code of 304, which indicates that the file in the cache is current.
If the cached JAR file is not current, a new one is downloaded and stored for future use in the cache directory. If the file is current, Oracle JInitiator loads it from the cache directory and updates the timestamp on the cached file to indicate the last time it was used.
Where do the cached JAR files get stored?
By default, Oracle JInitiator stores the downloaded JAR files in the jcache subdirectory, which is located in the Oracle JInitiator installation directory.
Why does the jcache directory contain strange names for the cached JAR files?
Since each JAR on a Web server can be identified by a URL (URL = codebase + JAR filename), the Oracle JInitiator caching mechanism uses this to uniquely identify the JAR file. On Windows operating systems, since the full URL is not a valid filename for a file, Oracle JInitiator transforms it via a simple hashing algorithm into an acceptable filename and then uses this as the stored JAR filename. When a request is made for a JAR file, Oracle JInitiator performs the hashing algorithm on the complete URL and then checks to see if the resulting filename exists in the cache.
How does JAR file caching work with server load balancing?
As outlined previously, JAR files are identified in the cache based on the URL from which they were retrieved. Consequently, the same JAR file from different servers will be downloaded from each different server. This is done deliberately to ensure security and application integrity. If JAR files were cached solely using their name, then a malicious application could replace the JAR file from another application. When the original application was run, the Java class files would be different. Also, since JAR files are not guaranteed to have unique names, it is possible for JAR files to collide. This would happen where two different applications use the same JAR filename, but require different class files from the JAR file.
It appears that the timestamp on the cached JAR files is updated every time I run an Forms Developer application. Is this normal? Does it mean that the file is being downloaded every time?
No. Oracle JInitiator supports a configurable cache maximum size. Every time a cached JAR file is used, Oracle JInitiator updates the timestamp to indicate the date and time that the cached file was last used.
If the cache size grows to the point where files must be removed in order to maintain the maximum cache size, Oracle JInitiator uses the timestamp of the cache files to determine which is the least recently used file and then removes that.
How can I tell that my cache is functioning correctly and that the JAR files are not being downloaded every time?
When Oracle JInitiator needs to download a required file, it does so via the Web server that has been configured to run Forms Developer applications. Modern Web servers support the use of log files that enable the tracking of what files have been downloaded, by whom, and when. The Web server log file uses a standard format to describe the transactions that have occurred. This log format includes the name of the requested item and the result of the request. The result of the request is indicated using a set of standard HTTP status codes.
If the JAR file was downloaded to the client, the log file will contain the name of the requested JAR file and the HTTP status code 200. If the JAR file was not downloaded because the timestamp on it was earlier than the cached file timestamp, then the log file will contain the name of the requested JAR file and the HTTP status code 304.
The following example shows an entry made in a log file using standard NCSA log formatting when the JAR file in the cache is not current and must be downloaded from the Web server.
ferret.us.oracle.com - - [19/Feb/1999:17:40:12 -0800] "GET /forms_java/f60all.jar HTTP/1.0" 200 -
The following example shows an entry made in a log file using standard NCSA log formatting when the JAR file in the cache is current and is therefore not downloaded from the Web server.
ferret.us.oracle.com - - [19/Feb/1999:17:42:29 -0800] "GET /forms_java/f60all.jar HTTP/1.0" 304 -
It seems that when the JAR file is downloaded, a .JCX file is created in the jcache directory. What is this file?
As the JAR file is being downloaded a temporary copy of it is written to the file system. This temporary copy is identified by the .jcx file extension. Once the download has successfully completed, the .jcx file is moved to a .jc file. If the download is interrupted at any point or the connection is dropped, the operation will not be complete and the temporary file will remain with a .jcx extension. Oracle JInitiator will not load a file with a .jcx extension since it is not valid.
I've verified that the caching is working correctly, but my application is still taking longer to start than I'd like. Why is that?
The JAR file caching provided by Oracle JInitiator does not perform any magic to increase the speed of Java on your system. What it does is save you the time it requires to download the required JAR files for each application startup. The operation of unzipping a JAR file, loading the contained classes into memory, and then authenticating them to ensure that they have not been tampered with takes a significant amount of the startup time. In fact, on a very fast network the amount of time taken to download the JAR file will be smaller than the amount of time required to load the Java classes into memory and perform the authentication. This means that caching saves you very little in terms of overall application startup. On a slower network, the time required to download JAR files will become proportionately larger in the overall startup time, so JAR file caching becomes more important.