This problem happens no matter what java versions are being talked about. When 
the aim is to support java N, but the latest is java X then it is difficult to 
prevent accidents.

Compiler property "source" prevents the use of *language features* that are not 
supported in the specified version

Compiler property "target" ensures that the generated bytecode is readable by 
the specified version.

But nothing checks that you are using only APIs provided by the runtime library 
distributed by that version. Currently the only way to do that is to compile 
against the runtime lib distributed with that version (which basically means 
*using* that version to compile).

The CLIRR project does binary-compatibility testing on jars. I have always 
suspected that it would only need a minor enhancement to generate an "API 
summary" for the rt.jar of version N of java, and then to be able to 
automatically check that an app only makes calls to the APIs defined by that 
summary file. Just need that old 40 hour day in order to get time to do it :-)

Cheers,  Simon

---- Matthias Wessendorf <[EMAIL PROTECTED]> schrieb:
> I'd be fine with Java5 instead of 1.4
> 
> -M
> 
> On Dec 20, 2007 3:37 PM, Martin Marinschek <[EMAIL PROTECTED]> wrote:
> > yes, that is what I'm saying.
> >
> > Saying that this is a bug is maybe pushing it too hard... the
> > attributes just translate into a compiler language level - that does
> > not mean that someone automagically knows all API changes from 1.4 to
> > 1.6 and automatically applies them. The only chance for you to catch
> > all these problems is to actually compile with 1.4.
> >
> >
> > regards,
> >
> > Martin
> >
> > On 12/20/07, Matthias Wessendorf <[EMAIL PROTECTED]> wrote:
> > > So,
> > >
> > > you say that a configuration like:
> > >
> > > <plugin>
> > >   <groupId>org.apache.maven.plugins</groupId>
> > >   <artifactId>maven-compiler-plugin</artifactId>
> > >   <inherited>true</inherited>
> > >   <configuration>
> > >     <source>1.5</source>
> > >     <target>1.5</target>
> > >   </configuration>
> > > </plugin>
> > >
> > >
> > > does allow you to use JDK6 methods?
> > > That would be a bad bug, IMO.
> > >
> > > -M
> > >
> > > On Dec 20, 2007 3:22 PM, Martin Marinschek <[EMAIL PROTECTED]>
> > > wrote:
> > > > Yes, so 1.5/1.6 syntax will correctly be found and disallowed. But API
> > > > changes are not checked for, so a newly added method will not be
> > > > found.
> > > >
> > > >
> > > > regards,
> > > >
> > > > Martin
> > > >
> > > > On 12/20/07, Matthias Wessendorf <[EMAIL PROTECTED]> wrote:
> > > > > On Dec 20, 2007 3:19 PM, Matthias Wessendorf <[EMAIL PROTECTED]> 
> > > > > wrote:
> > > > > > I thought the compile was configured for source/target not 1.5 || 
> > > > > > 1.6
> > > > >
> > > > > (the compiler plugin)
> > > > >
> > > > > >
> > > > > > -M
> > > > > >
> > > > > >
> > > > > > On Dec 20, 2007 3:18 PM, Martin Marinschek
> > > <[EMAIL PROTECTED]>
> > > > > wrote:
> > > > > > > No - if you are building with 1.6, it won't. Only the language 
> > > > > > > level
> > > is
> > > > > checked.
> > > > > > >
> > > > > > > regards,
> > > > > > >
> > > > > > > Martin
> > > > > > >
> > > > > > >
> > > > > > > On 12/20/07, Matthias Wessendorf <[EMAIL PROTECTED]> wrote:
> > > > > > > > On Dec 20, 2007 2:45 PM,  <[EMAIL PROTECTED]> wrote:
> > > > > > > > > Author: skitching
> > > > > > > > > Date: Thu Dec 20 05:45:06 2007
> > > > > > > > > New Revision: 605927
> > > > > > > > >
> > > > > > > > > URL: http://svn.apache.org/viewvc?rev=605927&view=rev
> > > > > > > > > Log:
> > > > > > > > > Remove accidental use of java 1.6 method String.isEmpty
> > > > > > > >
> > > > > > > > isn't the build catching this ?
> > > > > > > >
> > > > > > > > -M
> > > > > > > >
> > > > > > > > >
> > > > > > > > > Modified:
> > > > > > > > >
> > > > > > > >
> > > > >
> > > myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/dateformat/SimpleDateFormatter.java
> > > > > > > > >
> > > > > > > > > Modified:
> > > > > > > >
> > > > >
> > > myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/dateformat/SimpleDateFormatter.java
> > > > > > > > > URL:
> > > > > > > >
> > > > >
> > > http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/dateformat/SimpleDateFormatter.java?rev=605927&r1=605926&r2=605927&view=diff
> > > > > > > > >
> > > > > > > >
> > > > >
> > > ==============================================================================
> > > > > > > > > ---
> > > > > > > >
> > > > >
> > > myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/dateformat/SimpleDateFormatter.java
> > > > > > > > (original)
> > > > > > > > > +++
> > > > > > > >
> > > > >
> > > myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/dateformat/SimpleDateFormatter.java
> > > > > > > > Thu Dec 20 05:45:06 2007
> > > > > > > > > @@ -838,7 +838,7 @@
> > > > > > > > >
> > > > > > > > >      private static void formatPattern(DateFormatSymbols
> > > symbols,
> > > > > > > > ParserContext context, String patternSub, boolean 
> > > > > > > > yearIsWeekYear,
> > > > > > > > StringBuffer out)
> > > > > > > > >      {
> > > > > > > > > -        if ((patternSub == null) || (patternSub.isEmpty()))
> > > > > > > > > +        if ((patternSub == null) || (patternSub.length() == 
> > > > > > > > > 0))
> > > > > > > > >          {
> > > > > > > > >              return;
> > > > > > > > >          }
> > > > > > > > > @@ -1137,7 +1137,7 @@
> > > > > > > > >
> > > > > > > > >      public Date parse(String dateStr)
> > > > > > > > >      {
> > > > > > > > > -        if ((dateStr==null) || dateStr.isEmpty())
> > > > > > > > > +        if ((dateStr==null) || (dateStr.length() == 0))
> > > > > > > > >              return null;
> > > > > > > > >
> > > > > > > > >          ParserContext context = parseOps(symbols,
> > > yearIsWeekYear,
> > > > > > > > firstDayOfWeek, ops, dateStr);
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > Matthias Wessendorf
> > > > > > > >
> > > > > > > > further stuff:
> > > > > > > > blog: http://matthiaswessendorf.wordpress.com/
> > > > > > > > sessions: http://www.slideshare.net/mwessendorf
> > > > > > > > mail: matzew-at-apache-dot-org
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > >
> > > > > > > http://www.irian.at
> > > > > > >
> > > > > > > Your JSF powerhouse -
> > > > > > > JSF Consulting, Development and
> > > > > > > Courses in English and German
> > > > > > >
> > > > > > > Professional Support for Apache MyFaces
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > >
> > > > > > Matthias Wessendorf
> > > > > >
> > > > > > further stuff:
> > > > > > blog: http://matthiaswessendorf.wordpress.com/
> > > > > > sessions: http://www.slideshare.net/mwessendorf
> > > > > > mail: matzew-at-apache-dot-org
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Matthias Wessendorf
> > > > >
> > > > > further stuff:
> > > > > blog: http://matthiaswessendorf.wordpress.com/
> > > > > sessions: http://www.slideshare.net/mwessendorf
> > > > > mail: matzew-at-apache-dot-org
> > > > >
> > > >
> > > >
> > > > --
> > > >
> > > >
> > > > http://www.irian.at
> > > >
> > > > Your JSF powerhouse -
> > > > JSF Consulting, Development and
> > > > Courses in English and German
> > > >
> > > > Professional Support for Apache MyFaces
> > > >
> > >
> > >
> > >
> > > --
> > > Matthias Wessendorf
> > >
> > > further stuff:
> > > blog: http://matthiaswessendorf.wordpress.com/
> > > sessions: http://www.slideshare.net/mwessendorf
> > > mail: matzew-at-apache-dot-org
> > >
> >
> >
> > --
> >
> >
> > http://www.irian.at
> >
> > Your JSF powerhouse -
> > JSF Consulting, Development and
> > Courses in English and German
> >
> > Professional Support for Apache MyFaces
> >
> 
> 
> 
> -- 
> Matthias Wessendorf
> 
> further stuff:
> blog: http://matthiaswessendorf.wordpress.com/
> sessions: http://www.slideshare.net/mwessendorf
> mail: matzew-at-apache-dot-org

Reply via email to