views:

1631

answers:

10

Our desktop-only product at work has been using JDK 1.4.2 until now (also 1.4.2 JRE shipped with product). I am trying to convince the management to let us upgrade to a newer version in order to get the performance, API/features and developer comfort benefits.

Since 1.5 has reached EOL transition, I'm I thinking of the upgrade to 1.6.0_10 directly (update 10 chosen as it is a major one). In terms of code, all compile errors are just variable names called enum which I have renamed and the product works fine.

The question is

  • Whether this upgrade is recommended/fine i.e. skipping 1.5 ? are there any catches
  • If yes then should I upgrade to 1.6u10 or the latest 1.6 available ?

Thanks

+5  A: 

I would say if you are going to do the upgrade then go for whatever the latest update is. You may actually get some free performance gains going with 1.6, I know some JVM improvements have been made since 1.4.

Gandalf
A: 

It's Java, it's not a dirty scripting language which changes its syntactic, its grammar, and its API every minor release.

Backward compatibility is one of the major features of Java.

ivan_ivanovich_ivanoff
Although generally true, Swing has been the worst offender in terms of backwards compatibility.
Yishai
+1  A: 

There's always a possibility that any specific release may contain a bug affecting you, or that your code depends on some unspecified behaviour of standard API classes that has since changed, but in general, upgrading to the latest Java release is recommended and relatively painless. You should of course test the product extensively on the new JRE.

Michael Borgwardt
+1 for a balanced response.
Robert Munteanu
A: 

Just did it (Swing app) from 1.3 to 1.6 :)

Works (according to UAT testing) perfectly OK (except some changes required for awt UI). PTE shows some memory consumption reduction (not much), and the server side works somewhat faster (I tend to think it's due to GC improvements and string intern()).

In any case, you have to do it because of EOL, and 1.6 is not much different from 1.5. So I'd say 1.6 definitely.

Vladimir Dyuzhev
A Swing app I was working on ran into an endless event loop when it was migrated from 1.3 to 1.4 - the focus subsystem was apparently completely rewritten, and the app was depending on a specific sequence for certain events that was not guaranteed.
Michael Borgwardt
Correct, we had to make changes to focus handler too. This was one of the biggest one, I believe, in the whole migration effort. The second biggest is the "make all changes in UI only via event handler thread". Worked (more or less) in 1.3, hanged in 1.6. But changes are pretty straightforward, and besides, the choice is "1.5 vs 1.6", not "stay on 1.3 or move to 1.6"
Vladimir Dyuzhev
A: 

I would recommend upgrading to Java 6 over 1.5. As there would already be a need to test your app against the new JRE regardless of the version you choose, you may as well take advantage of this opportunity. Instead of incrementing your upgrade twice (once for 1.5 and later for 1.6) and requiring a test cycle twice, you can get it out of the way once. While you are at it, upgrading to the most recent version available would be perfectly fine.

akf
+3  A: 

In general, Java is fairly good in being backwards compatible.

In case there is a need to find out what has changed in the Java platform from 1.4 to 6, the following is a list of changes that Sun has listed for each release:

coobird
A: 

Whether this upgrade is recommended/fine i.e. skipping 1.5 ? Are there any catches

I think it's a good idea to skip 1.5 and go directly to 1.6 and there is absolutely no requirement that forces you to go through 1.5.

If yes then should I upgrade to 1.6u10 or the latest 1.6 available ?

I'd go for the latest. Actually, I think 1.6u16 is the current major release.

Pascal Thivent
To add to this, always go for the latest version of a given release, just because of security and bug fixes.
R. Bemrose
A: 

We recently upgraded our Swing-application (lots of drag and drop) from 1.4 to 1.6 to get the concurrent facilities, and we have not seen a single issue which is due to Java itself. We also want to go to the Nimbus Look and Feel since the Windows look and feel doesn't look and feel like Windows.

The killer feature you should show your boss, is how to attach to the application using jvisualvm to introspect the running program in case of issues.

Thorbjørn Ravn Andersen
A: 

Swing apps can definitely have issues version to version. We have had issues every upgrade (1.3 to 1.4 and 1.4 to 1.5 and we stuck our toe into 1.6 - and more issues). However, there is no reason to spend time on 1.5. Go straight to 1.6, the latest release, you won't be saving any time by going to 1.5, you will just spend a bunch of time testing on 1.5 and then do it again at some point in the future for 1.6. Much more economical to jump to 1.6.

A lot of minor revisions fix issues, so sticking to 1.6_u10 is just inviting issues. u10 was a big upgrade (unlike its name implies) as far as Swing is concerned, and several of the releases after that addressed issues that came to light after u10 was released.

Yishai
A: 

I migrated from 1.4.2 to 1.6.0_10 and got the errors like thread death exception at times. Regards Tej

Tej