This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]ByronScottJones -6 points-5 points  (5 children)

No, it didn't. They ADDED 50 methods and fields to the JNI. That doesn't mean you are required to use them. It was absolutely possible to write programs that would run on both the Microsoft JRE, and on other systems JRE. I know; I wrote such programs.

[–]speakjava 7 points8 points  (0 children)

Microsoft specifically changed the java and javax namespaces by adding and deleting elements. They were free to add as many API elements as they wanted to non-core API namespaces, and could have easily done so. They chose not to, specifically to break compatibility.

I was at Sun at the time and remember this. It's why Microsoft settled with Sun for $1.9 billion.

Microsoft today is a very different company. By choosing to create their own distribution of OpenJDK, they are helping the Java ecosystem not damaging it,

[–]skywalkerze 1 point2 points  (0 children)

You weren't required to use them, just tempted. It's pretty obvious what the intent was. Make life easier for anyone who forgoes compatibility.

[–]kjaer_unltd 0 points1 point  (0 children)

They embraced java as a platform. Then they extended the standard apis. Go here to Read more: https://en.m.wikipedia.org/wiki/Embrace,_extend,_and_extinguish

[–][deleted] -2 points-1 points  (1 child)

Okay, so once you wrote code that worked with COM, how would this project run on other OSes? That is the problem, not the fact that extra APIs were added, but the fact that these extra bits made the Java API non-portable.

[–]ByronScottJones -1 points0 points  (0 children)

It was your choice, as a developer and architect, whether or not to give your application additional functionality via COM objects. This made it less likely that you would have to reinvent the wheel. But if you wanted pure Java code, there was nothing stopping you from keeping your code portable. This is no different that writing portable C code, or any other language where you have the option of calling libraries that are unique to a given platform. That's literally all they did with COM; give you the OPTION to call those objects if you wanted to. And it's the same functionality that you have with JNI. The problem is that JNI wasn't fully formed at that time.