views:

73

answers:

1

I'm currently investigating if it makes sense to delay some minor planned refactoring work and combine it with the migration to Java 7, but I'm a little bit concerned that it might make it harder to trace the causes of some bugs if both code and platform change at the same time.

The benefit of the move would be the ability to clean up and improve many IO-related things in the application with NIO.2.

I have all necessary sources of the applications and the related libraries (if changes would be necessary). Considering that Java 7 has only some minor improvements - after most of the VM updates are already in Java 6 and the bigger changes like Closures or Chainsaw are cancelled - it should be sufficiently stable to use it after a few months, right?

+2  A: 

I'm currently investigating if it makes sense to delay some minor planned refactoring work and combine it with the migration to Java 7

Well, there is still a lot of uncertainty about the Java 7 schedule, as recently explained by Mark Reinhold (Chief Architect of the Java Platform Group at Oracle) on his blog and on the OpenJDK mailing list:

It’s been clear for some time that the most recent JDK 7 development schedule is, to put it mildly, unrealistic.

(...)

Our present best estimate is that we could complete, test, and stabilize the planned work in time for a release around the middle of 2012.

(...)

Our current estimate for this “Plan B” is that we could ship a reduced JDK 7 in mid-2011 and JDK 8 in the second half of 2012.

To summarize:

Plan A:     JDK 7 (as currently defined)                     Mid 2012
Plan B:     JDK 7 (minus Lambda, Jigsaw, and part of Coin)  Mid 2011
            JDK 8 (Lambda, Jigsaw, the rest of Coin, ++)    Late 2012

So in the best case, Java 7 will be there in a bit less than one year and Java 8 (with the big changes) in a bit more than two years. And in the worst case, Java 7 will be there in a bit less than two years.

The benefit of the move would be the ability to clean up and improve many IO-related things in the application with NIO.2.

For the later part (NIO.2), you'll need Java 7. But for the former part (clean up), there is IMO no good reasons to wait if you get immediate benefits, especially given the uncertainty of the Java 7 schedule.

Considering that Java 7 has only some minor improvements - after most of the VM updates are already in Java 6 and the bigger changes like Closures or Chainsaw are cancelled - it should be sufficiently stable to use it after a few months, right?

Firstly, even if the community seems to favor Plan B, there is nothing written in stone so I wouldn't base a decision on it. Secondly, even if Sun has always tried to maximize ascendant compatibility between Java versions and to offer stable platforms, I can't predict the future :) And although I'm pretty confident, some conservative companies will probably wait a bit (regardless of the chosen scenario).

References

  • Re-thinking JDK 7 by Mark Reinhold (Chief Architect of the Java Platform Group at Oracle)
  • Re-thinking JDK 7 by Mark Reinhold (Chief Architect of the Java Platform Group at Oracle)
Pascal Thivent
Well, I do consider Plan B to be set in stone. Oracle "listening" to anything lower than CEOs especially "us developers"? That's a PR stunt but nothing substantial. Combined with an absurdly late release for Plan A they made sure that people say what they want to hear. I guess I will just try to refactor some smaller, more modular parts first and see how it works out...
soc
@soc I think Plan B is probable, but still... Anyway, I wouldn't wait 1+ year to refactor identified problems.
Pascal Thivent