My own feeling is that 1.6 is finally dying out and officially moving to
1.7 allows some nice capabilities which assist in writing reliable code.
 Of the major changes, here are my reactions after about a year of using
1.7 seriously:

IO and New IO - The nio package is significantly better and more
    coherent in 7.  The differences creep up on you if you are not
    looking for them, but add up over time.  It is hard to point at
    any single important change, however.

Networking - The networking integrates IPV6 better.  This probably has
    no impact on Mahout.

Concurrency Utilities - concurrency has some much better capabilities
    in Java 7.  Fork/Join and work-stealing both make significant
    differences in capabilities for threaded applications. Obviously,
    we don't benefit from these capabilities in existing code, but it
    would be nice to be free to use them in new code.

Java XML - JAXP, JAXB, and JAX-WS - I don't know how much this matters
    given that Jackson works so very well.

Strings in switch Statements - This really helps some codes

The try-with-resources Statement - this is the biggest deal for me.
    Handling exceptions and closeable resources correctly is
    incredibly difficult without this (see the guava rationale for
    removing closeQuietly)

Catching Multiple Exception Types and Rethrowing Exceptions with
    Improved Type Checking - this makes a lot of code much simpler.
    Exception handling code is verbose and difficult to get right with
    many branches doing nearly the same thing.

Underscores in Numeric Literals - cute.  Helps readability.

Type Inference for Generic Instance Creation - For me this is a small
    issue since IntelliJ does the type inference for me and hides type
    parameters that I don't want to know about.

Java Virtual Machine (JVM) - The Java7 JVM seems to me to be a bit
    more performant in a number of areas.  These differences aren't
    night and day

Java Virtual Machine Support for Non-Java Languages - This impacts the
    ability to integrate non-Java languages such as Jython and
    Javascript with programs.  Little direct impact on Mahout given
    our recent focus on Scala and given the fact that Scala is
    reportedly jumping directly from Java6 to Java8 byte codes as of
    2.12.

Garbage-First Collector - the G1 collector is heaps better (pun
    intended) than previous collectors.  I have had several programs
    that have long-lived data structures work much better with G1.
    Server configuration is vastly simpler.

Java HotSpot Virtual Machine Performance Enhancements - these speak
    for themselves.



On Wed, Aug 6, 2014 at 2:33 PM, Dmitriy Lyubimov <dlie...@gmail.com> wrote:

> the only problem is that we are not really requiring it. We are not using
> anything of 1.7 functionality. If people compile (as i do) Mahout, they can
> compile any bytecode version they want.
>
> There are some 1.7 artifact dependencies in H20 but 1.7 would be required
> at run time only and only if the people are actually using h2obindings as
> dependency (which i expect majority would not care for).
>
>
> On Wed, Aug 6, 2014 at 1:28 PM, Andrew Palumbo <ap....@outlook.com> wrote:
>
> > As far as I can tell there should be no problems with declaring Java 1.7
> > as the official minimum Java version for building and running Mahout.
>  Are
> > there any objections to this or problems that I am missing?
> >
> > Andy
> >
>

Reply via email to