tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Thomas <ma...@apache.org>
Subject Re: Tomcat and Sun/Oracle Java 7
Date Mon, 04 Feb 2013 14:55:40 GMT
On 04/02/2013 14:39, André Warnier wrote:
> Mark Thomas wrote:
>> On 04/02/2013 13:41, Caldarale, Charles R wrote:
>>>> From: Mark Thomas [mailto:markt@apache.org] Subject: Re: Tomcat and
>>>> Sun/Oracle Java 7
>>>>> What is the status of Tomcat vs Sun/oracle Java 7 ? I vaguely
>>>>> remember seeing some messages on this list about some kind of
>>>>> incompatibility.
>>>> There are no known issues.
>>> Although there are no issues with running Tomcat under Java 7, I was
>>> under the impression that Tomcat 7 and below could not be built with
>>> Java 7 due to JRE interface incompatibilities.
>>
>> Correct. JDBC. Again.
>>
> 
> Ok, then sorry about my persistent deep lack of knowledge of
> Java-things, but are the following assumptions correct ? (and if not,
> why ?)
> 
> - tomcat 6 will run fine under a Sun/Oracle Java 1.6 JVM
> - tomcat 7 will run fine under a Sun/Oracle Java 1.6 JVM
> - tomcat 6 will run fine under a Sun/Oracle Java 1.7 JVM
> - tomcat 7 will run fine under a Sun/Oracle Java 1.7 JVM
> - tomcat 6 will run fine under an OpenJDK Java 1.7 JVM
> - tomcat 7 will run fine under an OpenJDK Java 1.7 JVM

Yes. And you can add Java 1.5 from <vendor of your choice> to that list
for Tomcat 6.

> and, there may (or may not) be problems compiling a servlet that uses
> JDBC under a Sun/Oracle Java 1.7 JDK,

If you use JDBC and compile with a 1.7 JDK, you must write your code to
the JDBC 4.1 interfaces. This is mainly an issue for JDBC driver /
connection pool implementers and is unlikely to impact web application
developers.

> but assuming that this servlet
> does not use JDBC in any way :
> 
> - the classes of a servlet that has been compiled under a Sun/Oracle
> Java 1.6 JDK will run fine under Tomcat 6 and a Sun/Oracle Java 1.7 JVM
Yes.

> - the classes of a servlet that has been compiled under a Sun/Oracle
> Java 1.7 JDK will run fine under Tomcat 6 and a Sun/Oracle Java 1.6 JVM
Yes, providing that "javac -target 1.6 ..." is used and no APIs
introduced in Java 1.7 are used.

> - the classes of a servlet that has been compiled under a Sun/Oracle
> Java 1.6 JDK will run fine under Tomcat 6 and a OpenJDK Java 1.6 JVM
Yes.

> - the classes of a servlet that has been compiled under a Sun/Oracle
> Java 1.6 JDK will run fine under Tomcat 6 and a OpenJDK Java 1.7 JVM
Yes.

> or alternatively, is it so that to run a servlet compiled under some JDK
> only works under the corresponding JRE/JVM ?
> (or any other simpler rule-of-thumb rather than my exhaustive kind of
> list above)
The rule of thumb is that:
a) you must run Tomcat on a Java version greater or equal to the target
Java version the application was compiled for.
b) you must run Tomcat on at least the minimum Java version required by
that Tomcat version

For all of the above, I have assumed only the public APIs have been
used. If an app starts using JRE internals directly (e.g. classes in the
sun.* package) all bets are off.

Also, s/will/should/ since a JRE bug could break the expected compatibility.


> I apologise if these are more Java-level questions than Tomcat-level
> questions, but as a sysadmin I have to decide which JVM to install, to
> run Tomcat along with webapps which I receive pre-compiled, and other
> non-Tomcat Java applications also precompiled.
> And I have to decide this for several Linux and Windows platforms,
> whereas I am told that for some of these platforms at least, the
> pre-packaged versions of Java and/or Tomcat are not always the most
> recent ones. Hence my confusion.

It gets worse. You often find commercial applications that only run on
specific versions of the JRE and specific application server versions.
For example, it was only relatively recently that Jira was supported on
Java 7 and Tomcat 7. It wasn't just a case of being unsupported, stuff
broke if you ran it on Java 7 and/or Tomcat 7 rather than Java 6 /
Tomcat 6. That just shouldn't happen.

Personally, I'd aim for Tomcat 7 and Java 7 everywhere and require a
very good justification of why not for any exception cases.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message