To Avoid Confusion: Oracle's Confusing New Java Numbering Scheme
twofishy writes "'To avoid the confusion caused by renumbering releases,' Oracle has announced that it is adopting a new numbering scheme for JDK 5.0, JDK 6 and JDK 7. 'The next Limited Update for JDK 7 will be numbered 7u40, and the next 3 CPUs after that will be numbered 7u45, 7u51, and 7u55." The vendor notes that a more elegant solution would require the changing of the version numbering scheme to accommodate different kinds of changes (for example by using 7u44-2 ). However this cannot be implemented outside of a major release, since doing so might break existing code that parses version strings (possibly including the Java auto-update system)"
Here's Oracle's announcement.
An absurd TLA overloading.
Surely they could just number them from 1 to infinity. Why does name matter? Who knows.
You know, to be able to insert something between two existing lines.
Nae king! Nae laird! Nae yurrupiean pressedent! We willna be fooled again!
Why not copy MS and have 2 ver numbers like how windows 7 is also 6.1
v 0.0.2.6.b26b (version 1.2)
Thinks the numbering scheme is second only to its own.
Going from 7u40 to 7U39-1 would be confusing.
I can just tell my users "don't worry, they never released 41-44."
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Mensa can use this as a 'What is the next number in the sequence' for their IQ test.
They should have named it: JAVA 3.0
Why is this change necessary now?
Some of the goals of this numbering scheme are:
Allow us to assign a fix/enhancement to a specific release in our bug systems. To accomplish this all planned releases must have predictable numbers.
Oh, so the numbering change is for your benefit, not mine.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
An inelegant solution to a non-problem.
Every time they try to standardize version numbers, they make it more confusing. 11G database release 1 was 11.0, but release 2 is 11.2. Where was 11.1? App server 9i was actually an 8.0 base. Most of the time I can't even figure out which product I am actually buying.
Why not just switch the numbering to the sha of the package. Equally informative...
I resolved the issue by removing it.. perhaps, that is the intended effect. Apologies to those with no choice.
..don't panic
If Java is "write once, once everywhere" surely it's running in Buzz's space-suit.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Allow us to assign a fix/enhancement to a specific release in our bug systems. To accomplish this all planned releases must have predictable numbers.
Oh, so the numbering change is for your benefit, not mine.
It's for everyone's benefit. This will permit knowing when a bug is slated to be fixed, which currently has to be managed out-of-system.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Silly kids! Java is for dirty floors, not clean tables!
Get free satoshi (Bitcoin) and Dogecoins
Really? What does this contribute to the conversation?
You are a terrible terrible programmer and you deserve to be caned by a band of angry Thai policemen.
Something simple like: API-level (revision release date)
Isn't something like "Java 7 (20130514)" relatively obvious what it means?
At this point I would be happy as soon as they stop trying to infect my computer with ask toolbar.
I still think that it is strange that it is legal to try to install it that way.
I don't care what they call it so long as I don't have to install any toolbars.
Like seriously what is this 2003? It's crowding out my "Bonzi Buddy"
Oracle... we don't care. Please just donate Java to Apache.
Dear Oracle, In order to help you with your version numbering issues I have spent many hours inventing the perfect numbering scheme for you. The format is as follows: MajorVersion.Release.BugFix/Security for example: Java 7 update 45 (formally known as 7u45)becomes Java 7.45 Java 7 update 45 emergency security release 5 becomes Java 7.45.5 this allows you to have an unlimited number of security fixes (which you are sure to need) per release without having to rely on complex mathematics to decide what the next update version will be; simply incriminate the Release number. my billing department will be contacting you shortly.
Java is a floor polish.
No! Java is a programming language!
Ha Ha Ha! Java is a floor polish and a programming language!
It was easier to change the version numbering scheme to break all the current malware rather than fix the myriad of holes in the code.
Join the Slashcott! Feb 10 thru Feb 17!
Ever heard of Android?
They should have chosen to number their updates using two-three digits, the first one representing the feature update and the next the security one. This would have solved their problem while still being understandable.
Sun made people feel safe putting their eggs all in 1 basket. Witness the result that many of us said was a foolish move.
C# may be a knock off and not have Oracle but then you have MS holding your eggs; and while MS might not act as badly as Oracle, they have a borg mentality that Oracle does not yet have with Java.
Do not build your business around closed languages. When C# becomes fortran the MS holdings company will still be extracting blood.
Oracle is secure (and just evil,) MS on the other hand has 1 real market success and 2 monopolies that people don't care about or even like. All 3 based on platforms that have a limited future at the scale they are presently. When MS gets more desperate... they already have taken the place of SCO instead of finding another shell corp to perform their legal extortion scheme.
While it is true there is a non-Oracle Java out there; it hardly replaces the official one and is still subject to their whims.
Democracy Now! - uncensored, anti-establishment news
Marvin? Of course. But he's a bit paranoid.
Get free satoshi (Bitcoin) and Dogecoins
Why not just do a normal numbering scheme? If you dig into their packages, they sometimes claim stupidly to be version 1 of Java 7 update 17. WTF? Instead of that, how about Oracle just acts with some sanity and call it v. 7.17?
If you need sub versions of 7.17, then call it 7.17.1 and 7.17.2. You know, a sane person might do.
Or how about we all just drop Java since it's terrible and the cause of too many security problems?
simply incriminate the Release number
Sadly, this is their current process.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
I would submit that this is somewhat sensible and that the switch from 1.5 to 5.0 back in the Sun days was far more confusing.
Duct tape, XML, democracy: Not doing the job? Use more.
I'm assuming the updater does this to make sure it's getting a newer version than what's already installed. How would you handle it? A single 64-bit number? A history graph à la Git?
Duct tape, XML, democracy: Not doing the job? Use more.
Or do we not have numbers that go that high?
Are their releases really called CPUs?
If so, that is so amazingly stupid it appears actually designed to confuse.
20130514 (year, month, day etc.) as an example of something meaningful.
That's not Java(TM)
Well.. maybe. Or Maybe not. But Definitely not sort of.
This is pretty simple. For a feature update, add 20. For a security update, add 5. For retrospective updates (for those "oh crap" releases), use the numbers in-between.
It only gets complicated because they wanted to use odd numbers for security updates. That means a bump by 1 in some cases. It's a bit random, but I imagine it's to do with legacy systems.
This scheme guarantees that the version of Java with the most security patches applied is the one with the highest number. Also, it guarantees that the feature set doesn't regress (eg. replacing 7u20 with 7u33 will not remove features that an app requires).
The way developers have been doing it for decades, using the de facto standard of major.minor.build version numbers.
IOW, JDK 5 uses 5.x.y numbers, JDK 6 uses 6.x.y numbers, JDK 7 uses 7.x.y numbers. X is incremented for feature releases and resets Y to 0. Y is incremented for security releases.
Simple. Easily parseable. And it the ways things used to be done before the whole stupid "my number needs to be bigger than your number, logic be damned" movement started.
Microsoft - One big version number. One little one. .Net Framework 2.0, 3.5, etc... easy to know where you are. Security patches don't alter the name unless they're a service pack. Then it would be .Net 3.5 sp 1 whatever. You at least know that as long as you have the update service running you are fully patched up and manually running it will make sure.
7u45 is freaking Chinese - it sounds like something that should be on the side of a submarine. Imagine trying to say one of these numbers on a phone to someone you're trying to help through a problem. You can't overload CPU either; too damn confusing even for me. I won't know whether you will talking about your computer or the software. Especially if it is like 2am and something broken.
Java is becoming more and more aggravating the longer Oracle has anything to do with it.
Version is a single number. It is a database key.
Provide a database that maps version numbers to metadata (changelogs, bug fixes, security fixes, compatibility information, marketing name, etc). Make tools so that the database is useful, not just some text file.
Make the version number increase monotonically over time. This is the only contract to enforce with versioning.
Don't shove metadata into the version number.
Let the marketing drones identify your stuff by marketing names. The version number should not be in your marketing.
Attention Oracle: Doesn't matter any more what you do because people are removing Java as quickly as they can. If you don't want Java you don't need to continue to rape it, just make it open software and let it go. Anyone, absolutely anyone, could do a better job of maintaining it - even a room full of monkeys with keyboards.
After reading the Oracle announcement through three times, I actually checked my calendar to see if April 1st had somehow come around again.
Which is a distinct possibility if Oracle takes over the Gregorian Calendar next.
Koans and fables for the software engineer
Just number the bugs sequentially as they go in
I just had the realization that perhaps auto-correct is some emergent AI's first baby steps at trying to contact us. The GP is certainly evidence of it.
My husband, some hotshot!
HERE'S his "Ancient Chinese Secret"!
No one really used applets anyway (they suck) and that's what people are getting rid of.
Java is already open source software.
Mod me down, my New Earth Global Warmingist friends!
EOM
Finally something to break the obtuse Java updater.
If I tell you not to run, don't goddamn run.
Look, OMG, for Goodness' sake can we get it right for once?
TLA isn't what it claims to be. TLA is a TL_I_:
http://oxforddictionaries.com/definition/american_english/initialism?q=initialism
Let's hear it for the initialisms, IMHO...FBI! NSA! CIA! MI5! NKVD! :)
Oh, now, FUD, that's a TLA alright. And LOL. Now you're getting it...
Why not call it "Java Blew"?
Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
Oooh! GregorianCalendar, my favourite java class!
Firefox and Chrome are breaking new ground in this important technology field.
So basically the tech naive types get this thing installed and it thoroughly messes up their internet experience, but they are not sure how it happened... thanks Oracle! I cannot think of a better way of getting nobody to use Java.
I would like Java to thrive and compete with other languages, so I'm trying to make sure Oracle to get all the bad press it deserves for this abusive practice. Heh, every time there's a Java story, I try to post a reminder for people to be super careful when applying Java updates. Posting this warning repeatedly I think means I've satisfied one of the three tests for becoming a certified Internet Crazy Person. I just need to figure out what the other two are and I'm all set!
They pretty much do that, just with a useless prefix and an _ instead of . as the last delimiter.
So instead of major.minor.build it is 1.major.minor_build, which means I could take your statement and easily alter it to read:
JDK 5 uses 1.5.y_z numbers, JDK 6 uses 1.6.y_z numbers, JDK 7 uses 1.7.y_z numbers. Y is incremented for feature releases and resets Z to 0. Z is incremented for security releases.
As you say, that's "Simple. Easily parseable."
The funny thing is, they never put out "feature releases" so the Y is always 0. Hey, that makes it even simpler (albeit more pointless) in a way.
From TFA:
Is this the long-term solution?
This solution is a compromise to create predictable release numbers for future Java releases, leave version numbers available for unplanned releases needed to address security alerts, and maintain backward compatibility with systems that expect the version number to have only a family number plus a single “update” number. It will be the new standard for the affected version.
A more elegant solution requires changing the version format of the JDK to accommodate multiple types of releases. To avoid incompatibilities with existing code however, a change in the version string format needs to be implemented on a future major Java release and will have to be documented and communicated with adequate time to allow software developers to prepare for the change.
Is this the long-term solution?
This is a workaround. Oracle is being plain about this and at least making an effort not to break applications.
"I think this line is mostly filler"
It's not confusing, it's just Klingon numbering.
Table-ized A.I.
I'm thinking in a week or less, Oracle will actually release a frustrated press release that finally just states: "What aren't you people getting about this? Stop using Java! We've tried everything! Security flaws, endless releases, updaters that don't work, breaking all your code every update, numbering systems that make no sense, and a horribly misleading and impossible to navigate website. Why is anyone still using Java? We're trying to kill it, damn it!"
After reading the Oracle announcement through three times, I actually checked my calendar to see if April 1st had somehow come around again.
Which is a distinct possibility if Oracle takes over the Gregorian Calendar next.
http://docs.oracle.com/javase/6/docs/api/java/util/GregorianCalendar.html
You're welcome.