On Fri, Aug 16, 2013 at 4:34 AM, Christopher Schultz < ch...@christopherschultz.net> wrote:
> Mark, > > On 8/15/13 6:47 PM, Mark Thomas wrote: > > This isn't going to be quite as simple as I first thought. > > > > The WebSocket client API requires Java SE 7 or later. > > The WebSocket server API requires Java EE 6 or later. > > Java EE 6 requires Java 6 or later. > > Clarification: are you saying that Java EE requires that it be allowed > to run on JVMs as low as Java 6? > > > The WebSocket server API depends on the WebSocket client API. > > > > The WebSocket client implementation makes extensive use of new Java 7 > > non-blocking IO features. > > Are any of these possible (albeit with some back-flips) with Java 6? > Perhaps one class (Java7NioShims) could be replaced with another > implementation (Java6NioShim) at runtime depending upon the current JVM? > I know nothing about the code involved... just stabbing in the dark. > > > My conclusion from the above is that the back-port is going to require > > Java 7. That begs the question how to do that while keeping the main > > build Java 6 based. > > > > My (untested) plan is as follows: > > - Create a WebSocket module > > - Back-port (i.e. copy) the trunk code to that module > > - Build just that module with Java 7 > > - Make the minimum changes necessary to get it to work > > - Modify the back-ported SCI so it only adds the filter if Java 7 is > > detected (going to need to ensure the SCI is executable on Java 6) > > - Ship Tomcat 7 with the WebSocket JARs > > I'm not sure there's a better way, but the whole > compile-one-module-with-a-higher-version thing has been a small thorn in > the past (IIRC, Tomcat 6 had to be built with Java 6, but could be run > with Java 5) causing a mild amount of confusion. If this could be > avoided, I think it might be best. > > Maybe we could package JSR-356-for-Tomcat7 as an optional module that > has a Java 7 prerequisite? > +1 for making it optional and Java 7 dependent in Tomcat 7 Keep it simple if possibble Java 7 is slowly adopted in productive environments anyway. One reason is EOL http://www.oracle.com/technetwork/java/eol-135779.html > -chris > >