Thursday, 20 March 2014

JDK8 Initial Conversion Thoughts, pt 1

The 'vertical problem' in Java does appear to be gone with JDK8. Here is a snippet of some common code used in my daily work.

Pre-JDK8


    private BoneCPDataSource addShutdownHook(final BoneCPDataSource pool) {
        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

            @Override
            public void run() {
                pool.close();
            }

        }));
        return pool;
    }

As a Lambda


private BoneCPDataSource addShutdownHook(final BoneCPDataSource pool) {
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            pool.close();
        }));
        return pool;
    }

To method reference


private BoneCPDataSource addShutdownHook(final BoneCPDataSource pool) {
        Runtime.getRuntime().addShutdownHook(new Thread(pool::close));
        return pool;
    }


That's one line per step: Perform a pool-close on shutdown, return the pool argument back to caller. Nice.