[
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.