Image I/O is widely useful, but Java 7 JVMs aren't widely available (
http://en.wikipedia.org/wiki/Comparison_of_Java_virtual_machines), and
neither are all APIs - even those in use at the moment. There were already
several forks of Sanselan just to make it independent of AWT and run on
Android/Java ME (eg. http://code.google.com/p/sanselanandroid and
http://code.google.com/p/sanselanme). AWT is also largely unsupported on
IKVM, in headless environments, etc.

So ideally I'd like to use the Java 7 *language* for its wonderful features
and ease of development, but the *API* used I want to keep at Java 5 or 6
and no AWT (maybe using conditional compilation, or at least in a branch),
so it runs on more platforms.

Damjan

On Mon, Nov 4, 2013 at 10:52 AM, Gary Gregory <garydgreg...@gmail.com>wrote:

> I thought we were going to Java 7 for 2.0?
>
> Gary
>
> -------- Original message --------
> From: Damjan Jovanovic <dam...@apache.org>
> Date:11/04/2013  02:11  (GMT-05:00)
> To: Commons Developers List <dev@commons.apache.org>
> Subject: Re: Backporting try-with-resources to Java < 7 (was: Re:
> [imaging] Closing stream)
>
> For the record, I would only use this for imaging >= 2.0.
>
> Weaver looked undocumented and undecipherable to me, but let me look at it
> again slowly.
>
> Damjan
>
>
> On Sun, Nov 3, 2013 at 9:14 PM, Matt Benson <gudnabr...@gmail.com> wrote:
>
> > I wasn't under the impression this was blocking imaging 1.0. In any case,
> > framing Damjan's work as a Weaver module would still use the same work
> he's
> > done with ASM and would really only utilize a standard mechanism for
> > triggering the process. It would also avoid proliferation of multiple
> maven
> > plugins with essentially the same mission: post-processing bytecode.
> >
> > Matt
> > On Nov 3, 2013 10:08 AM, "Gary Gregory" <garydgreg...@gmail.com> wrote:
> >
> > > On Sun, Nov 3, 2013 at 10:56 AM, Matt Benson <gudnabr...@gmail.com>
> > wrote:
> > >
> > >> Sounds like it would be trivial to frame what you've done here into
> the
> > >> context of a Weaver module, for which there exist both a maven plugin
> > and
> > >> an Antlib, as well as a need for a near-term release. :-)
> > >>
> > >
> > > and eating our own dog food :)
> > >
> > > We may pushing the limits of Dajman's patience for a 1.0 which is long
> > > overdue.
> > >
> > > I suppose D needs to weigh using ASM or [weaver] vs. adjusting the
> > current
> > > code with Java 5.
> > >
> > > Gary
> > >
> > >>
> > >> Matt
> > >> On Nov 3, 2013 2:30 AM, "Damjan Jovanovic" <dam...@apache.org> wrote:
> > >>
> > >> > On Fri, Oct 25, 2013 at 1:52 PM, Matt Benson <gudnabr...@gmail.com>
> > >> wrote:
> > >> >
> > >> > > On Oct 25, 2013 6:30 AM, "Damjan Jovanovic" <damjan....@gmail.com
> >
> > >> > wrote:
> > >> > > >
> > >> > > > On Fri, Oct 25, 2013 at 12:36 PM, Jörg Schaible
> > >> > > > <joerg.schai...@scalaris.com> wrote:
> > >> > > > > Hi Damjan,
> > >> > > > >
> > >> > > > > Damjan Jovanovic wrote:
> > >> > > > >
> > >> > > > > [snip]
> > >> > > > >
> > >> > > > > Thanks for explanation.
> > >> > > > >
> > >> > > > >> We would be able to adapt that for Java < 1.7 by swallowing
> the
> > >> > close
> > >> > > > >> exception instead of calling addSuppressed() on the primary
> > >> > exception,
> > >> > > > >> but the show stopper is catching and rethrowing the primary
> > >> > exception
> > >> > > > >> (Throwable), which javac < 1.7 refuses to compile because it
> > >> doesn't
> > >> > > > >> do "Rethrowing Exceptions with More Inclusive Type Checking"
> > >> > > > >> (
> > >> > >
> > >> > >
> > >> >
> > >>
> >
> http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html
> > >> > > ).
> > >> > > > >>
> > >> > > > >> But this would work and always sets succeeded correctly
> without
> > >> > > > >> catch/re-throw:
> > >> > > > >>
> > >> > > > >> final InputStream is = factoryMethodThatCanThrow();
> > >> > > > >> boolean succeeded = false;
> > >> > > > >> try {
> > >> > > > >>     try {
> > >> > > > >>         is.methodThatCanThrow();
> > >> > > > >>     } finally {
> > >> > > > >>     }
> > >> > > > >>     succeeded = true;
> > >> > > > >> } finally {
> > >> > > > >>     closeSafely(!succeeded, is);
> > >> > > > >> }
> > >> > > > >
> > >> > > > > I guess the nested try was unintentionally ;-)
> > >> > > > >
> > >> > > > > Cheers,
> > >> > > > > Jörg
> > >> > > >
> > >> > > > Well that actually won't work, because the "succeeded = true;"
> > will
> > >> be
> > >> > > > skipped if there is a "return;" in the inner try.
> > >> > > >
> > >> > > > Other than a custom Java compiler, I guess there's no clean way
> of
> > >> > > > doing this in Java < 1.7. There's really only option 2 - with
> > being
> > >> > > > careful to always set succeeded correctly on all paths out of
> the
> > >> try
> > >> > > > block. Almost like releasing memory in C.
> > >> > > >
> > >> > >
> > >> > > I haven't deeply followed this conversation, but would this be a
> > >> > candidate
> > >> > > for a [weaver] module?
> > >> > >
> > >> > > Matt
> > >> > >
> > >> > >
> > >> >
> > >> > [weaver] I am less sure about, but by playing with Objectweb's ASM I
> > did
> > >> > manage to compile code with try-with-resources on Java 7, change the
> > >> class
> > >> > file version, do some bytecode manipulation to delete calls to
> > >> > Throwable.addSuppressed(), and get it to work on Java < 7.
> > >> >
> > >> > Made it into a Maven plugin and it works well :). Also verified
> other
> > >> Java
> > >> > 7 language features (binary literals, underscores in numeric
> literals,
> > >> > strings in switch, diamonds, exception multi-catch and re-throw)
> work
> > on
> > >> > Java < 7 because they're just syntactic sugar.
> > >> >
> > >> > It's very small and simple - 143 lines in 1 file. Is it worth adding
> > as
> > >> a
> > >> > new commons project? Or do we not host (projects that contain) Maven
> > >> > plugins?
> > >> >
> > >> > Damjan
> > >> >
> > >>
> > >
> > >
> > >
> > > --
> > > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> > > Java Persistence with Hibernate, Second Edition<
> > http://www.manning.com/bauer3/>
> > > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> > > Spring Batch in Action <http://www.manning.com/templier/>
> > > Blog: http://garygregory.wordpress.com
> > > Home: http://garygregory.com/
> > > Tweet! http://twitter.com/GaryGregory
> > >
> >
>

Reply via email to