Oracle JVM 12.1 Readme =========================== What's New in 12.1.0.1 Oracle JVM? --------------------------------------------- - Multiple-JDK: -- The default Java VM runtime and compiler have been upgraded from JDK 5 to JDK 6 update 37. -- The runtime and compiler corresponding to JDK 7 update 9 are also provided. -- JDK upgrade/downgrade: The effective JDK in the Database can be upgraded from JDK 6 (the default) to JDK 7, or downgraded from JDK 7 to JDK 6. Details are provided in the Oracle Database 12.1 Java Developer's Guide. - Customizing the Default Java Security: -- Alternate java.security file can now be added to customize java.security settings in the Database. See Java Developer's Guide for details. -- The new routine dbms_java.set_runtime_exec_credentials, added in the previous release, is documented in the Java Developer's Guide. Also, a section on secure use of Runtime.exec is added. The routine dbms_java.set_runtime_exec_credentials allows DBAs and security administrators to bind Runtime.exec's processes to OS accounts with restricted power. - More robust debugger: Some issues in the Java debugger backend have been fixed to make the Java debugger backend more robust. - JNDI Support through the Java Directory Service Namespace Provider (OJDS): A general purpose directory service for storing objects and object references. All objects stored must implement the java.io.Serializable interface. - Logging Support through an extended LogManager API. Java Compatibility ------------------ The compatibility of JDK 6 and JDK 7 in this release has been thoroughly tested with Oracle's Java Compatibility Kits 6 and 7 respectively. Oracle is committed to Oracle JVM keeping pace with Java and other Internet standards. Getting Started --------------- The Oracle 12.1 Java Developer's Guide (the documentation of the Oracle JVM product) is available on line. If you are not familiar with the Oracle JVM, it is important to first follow the instructions in the documentation to install and configure the product properly. It is recommended that you follow the examples presented in the documentation to begin. The demonstrations and examples in ORACLE_HOME/javavm/demo include a HelloWorld example. Execution of the HelloWorld example and other examples will ensure that your installation is complete and that Oracle JVM is properly enabled in your Database. Memory resources being used for Java application development and deployment can vary widely. To ensure proper development-time and run-time operations, it is a must to understand how to configure the memory parameters to satisfy your needs. The product documentation has an extensive discussion on Java Memory Usage. Useful Tips ----------- - Troubleshooting Tips * Errors are often reported in a trace file. Please examine the trace file as your first step in isolating problems. - Java Stored Procedure * Mismatches between call-specification definition and the actual Java method are only detected at runtime. * DESCRIBE of package.procedure gives "object does not exist" when the method has a Java rather than PL/SQL implementation. DESCRIBE of package lists only PL/SQL procedures and excludes Java Stored Procedures. - Loadjava and Dropjava * The recommended workflow is to first compile Java source with a client-side Java compiler, and then load the resulting class binaries into the Database. This workflow will save overall compiling and loading time. The client-side Java compiler must be at a Java SE level compatible with Oracle JVM. Java sources may also be loaded in the Database, which will get compiled by Oracle JVM. * It is not supported to load source (.java) and binaries (.class) together in a jar file. You cannot load source and binary files for the same class in the same jar file. * You must drop Java schema objects in the same way that you first loaded them. For example, individual classes cannot be dropped from a JAR object. The entire jar must be dropped with the -jarsasresource command option. * If you experience problem loading large jar files, you should consider increasing the value of the SHARED_POOL_SIZE parameter. The creation of Java schema objects consumes shared pool memory. * If you suspect that classes are not properly loaded and resolved, you can examine the state of loaded classes by connecting as the user who loaded the classes and then executing the following commands: SELECT * FROM user_objects; SELECT * FROM user_errors; Properly loaded and resolved classes should show up with status of VALID in the user_objects view. - runjava * runjava is designed to be used in application development and prototyping workflows. It is not efficient to be used for deployment. * Use of the client side JDBC-OCI driver is not supported in the database and will fail if used with runjava. There may also be permissions that need to be granted in order to use the JDBC-THIN driver. Details can be found in the Oracle JDBC and Java Developers Guides. Known Problems --------------