[ 
https://issues.apache.org/jira/browse/DERBY-3966?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12654981#action_12654981
 ] 

Rick Hillegas commented on DERBY-3966:
--------------------------------------

I have experimented with building Derby without jdk1.4. I started out by 
setting java14compile.classpath to be the JDBC3 stubs plus the small device 
classpath. I tripped across a number of issues. The good news is that I think 
our small device support should not raise verification errors at runtime. The 
bad news is that we need more libraries and stubs in order to build Derby 
without jdk1.4.

---------------------------------------------------------

The following limitations are known already, I think. I believe that our small 
device documentation should highlight the fact that these features require 
additional libraries on top of those defined by CDC/FP 1.1:


1) The XML datatype will raise errors on small devices. In order to compile the 
XML support, I needed the following xalan-supplied libraries:

    xml-apis.jar
    xalan.jar

2) Database encryption will not work on small devices unless you include the 
encryption libraries. In order to compile the encryption support, I needed the 
following JCE jar file:

    jce1_2_2.jar


---------------------------------------------------------

The following limitations are known already too, I think. I believe that our 
small device documentation should highlight the fact that these features are 
not available on small devices:


3) Non-blocking i/o will not be used on small devices. To compile this feature, 
we need stubs frm the following jdk1.4 packages:

    java.io (see list below)
    java.nio
    java.nio.channels
    java.nio.channels.spi


4) Java EE resource manager support probably doesn't make sense on small 
devices. In any event, to compile resource manager support, we need stubs from 
the following jdk1.4 packages:

    javax.naming
    javax.naming.spi
    javax.transaction.xa


5) Java Principal-based security may not make much sense on small devices. In 
any event, to compile it, we need stubs from the following jdk1.4 packages:

    javax.security.auth


6) LDAP-based authentication may not make much sense on small devices. In any 
event, to compile it, we need stubs from the following jdk1.4 packages:

    javax.naming
    javax.naming.directory


7) SSL encryption may not make much sense on small devices. In any event, to 
compile it, we need stubs from the following jdk1.4 packages:

    javax.ssl


8) Replication may not make much sense on small devices. In any event, in order 
to compile Replication, we need stubs from the following jdk1.4 packages:

    javax.net


---------------------------------------------------------

The following other issues arose in compiling the network client:


9) The network client CLOB datatype (org.apache.derby.client.am.Clob) relies on 
the following class which does not appear in CDC/FP 1.1:

    java.io.StringBufferInputStream


10) The SQL communications area (org.apache.derby.client.am.Sqlca) relies on a 
method not present in CDC/FP 1.1:

    String.split()


11) The network DATE, TIME, and TIMESTAMP support depends on jdk1.4 methods 
which are not present in CDC/FP 1.1. More specifically, 
org.apache.derby.client.am.DateTime calls the following java.util.Date methods 
which do not appear in CDC/FP 1.1:

    getDate()
    getHours()
    getMonth()
    getMinutes()
    getSeconds()
    getYear()



---------------------------------------------------------

Finally, our tests rely on the following classes/methods not present in CDC/FP 
1.1:


12) The error message test 
(org.apache.derbyTesting.functionTests.tests.lang.ErrorMessageTest) relies on 
these missing classes:

    java.util.regex.Matcher
    java.util.regex.Pattern


13) The replication tests 
(org.apache.derbyTesting.functionTests.tests.replicationTests.Utils.java) rely 
on these missing methods: 

    java.io.FileInputStream.getChannel()
    java.io.FileOutputStream.getChannel()


---------------------------------------------------------

I was able to successfully build the core engine by applying the 
derby-3966-02-aa-buildTools.diff patch and setting java14compile.classpath as 
follows:

java14compile.classpath=${jdbc3stubs}:${xalanlib}/xml-apis.jar:${xalanlib}/xalan.jar:${tmplib}:${jcelib}/jce1_2_2.jar:${jsr169compile.classpath}

where tmplib is a directory containing the following jdk1.4 classes:

./java
./java/io
./java/io/FileInputStream.class
./java/io/FileOutputStream.class
./java/io/RandomAccessFile.class
./java/io/StringBufferInputStream.class
./java/lang
./java/lang/String.class
./java/nio
./java/nio/Buffer.class
./java/nio/ByteBuffer.class
./java/nio/channels
./java/nio/channels/ByteChannel.class
./java/nio/channels/Channel.class
./java/nio/channels/ClosedChannelException.class
./java/nio/channels/FileChannel.class
./java/nio/channels/FileLock.class
./java/nio/channels/GatheringByteChannel.class
./java/nio/channels/InterruptibleChannel.class
./java/nio/channels/ReadableByteChannel.class
./java/nio/channels/ScatteringByteChannel.class
./java/nio/channels/spi
./java/nio/channels/spi/AbstractInterruptibleChannel.class
./java/nio/channels/WritableByteChannel.class
./java/nio/CharBuffer.class
./java/nio/charset
./java/nio/charset/Charset.class
./java/nio/charset/CharsetEncoder.class
./java/nio/charset/CoderResult.class
./java/nio/charset/CodingErrorAction.class
./java/util
./java/util/Date.class
./java/util/regex
./java/util/regex/Matcher.class
./java/util/regex/Pattern.class
./javax
./javax/naming
./javax/naming/AuthenticationException.class
./javax/naming/Binding.class
./javax/naming/Context.class
./javax/naming/directory
./javax/naming/directory/Attributes.class
./javax/naming/directory/DirContext.class
./javax/naming/directory/InitialDirContext.class
./javax/naming/directory/SearchControls.class
./javax/naming/directory/SearchResult.class
./javax/naming/InitialContext.class
./javax/naming/InvalidNameException.class
./javax/naming/Name.class
./javax/naming/NameClassPair.class
./javax/naming/NameNotFoundException.class
./javax/naming/NameParser.class
./javax/naming/NamingEnumeration.class
./javax/naming/NamingException.class
./javax/naming/NamingSecurityException.class
./javax/naming/RefAddr.class
./javax/naming/Reference.class
./javax/naming/Referenceable.class
./javax/naming/spi
./javax/naming/spi/ObjectFactory.class
./javax/naming/StringRefAddr.class
./javax/net
./javax/net/ServerSocketFactory.class
./javax/net/SocketFactory.class
./javax/net/ssl
./javax/net/ssl/KeyManager.class
./javax/net/ssl/KeyManagerFactory.class
./javax/net/ssl/ManagerFactoryParameters.class
./javax/net/ssl/SSLContext.class
./javax/net/ssl/SSLException.class
./javax/net/ssl/SSLServerSocket.class
./javax/net/ssl/SSLServerSocketFactory.class
./javax/net/ssl/SSLSocket.class
./javax/net/ssl/SSLSocketFactory.class
./javax/net/ssl/TrustManager.class
./javax/net/ssl/X509TrustManager.class
./javax/security
./javax/security/auth
./javax/security/auth/Subject.class
./javax/transaction
./javax/transaction/xa
./javax/transaction/xa/XAException.class
./javax/transaction/xa/XAResource.class
./javax/transaction/xa/Xid.class


> Do not require JRE 1.4 libraries at compile time since SUN's JDK 1.4 went out 
> of support and can be used on JRE 1.4 without any problem
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3966
>                 URL: https://issues.apache.org/jira/browse/DERBY-3966
>             Project: Derby
>          Issue Type: Task
>          Components: Build tools
>            Reporter: Pedro Faundez Gonzalez
>         Attachments: derby-3966-01-aa-jdbc3stubs.diff, 
> derby-3966-01-ab-jdbc3jdbc4stubs.diff, derby-3966-01-ac-jdbc3jdbc4stubs.diff, 
> derby-3966-02-aa-buildTools.diff
>
>
> In the "JDK 1.4 support" conversation at Derby Users:
> http://www.nabble.com/JDK-1.4-support--td20650279.html
> I made a point that JRE 1.4 should not be required for build since SUN's JRE 
> 1.4 went End Of Life.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to