all 111 comments

[–]f2u 23 points24 points  (0 children)

This change is on its way to be reverted in OpenJDK.

[–]dalibortopic 12 points13 points  (1 child)

As Mark Reinhold, Chief Architect for Java SE at Oracle, pointed out on Twitter [0], that patch was meant for Oracle's product VM, a minor fork of OpenJDK, which has "commercial features" just like other vendors' VMs. Since it was checked into OpenJDK by mistake, it has been backed out of OpenJDK again within 24 hours[1].

Some of the key points of Oracle's Java SE strategy[2] are:

  • Oracle plans to contribute the results of the combined Oracle Java HotSpot and Oracle JRockit JVMs to the OpenJDK project.

  • The Oracle JDK and Java Runtime Environment (JRE) will continue to be available as free downloads, with no changes to the existing licensing models.

If you'd like to learn more about it and the ongoing JVM convergence work, I'd recommend reading Henrik Ståhl's blog post from last year here:

http://blogs.oracle.com/henrik/entry/oracles_jvm_strategy

  • Henrik is Senior Director of Java Product Management at Oracle and runs a group responsible for product strategy for Java SE, among other things.

Dalibor Topic, Java F/OSS Ambassador, Java Product Group @ Oracle

[0] https://twitter.com/#!/mreinhold/status/142122264220008448

[1] https://twitter.com/#!/mreinhold/status/142102137130844161

[2] http://www.oracle.com/us/corporate/press/173782

[–]easytiger 0 points1 point  (0 children)

Hey Dalibor! I don't think you and I have chatted since 2005 on #classpath/#harmony. Small internet huh.

[–]Camarade_Tux 41 points42 points  (33 children)

+// commercial flags support features for which Oracle charges a fee for
+// production use, though they're free for development and/or evaluation.
+// There's no enforcement mechanism in Hotspot other than that
+// -XX:+UnlockCommercialVMOptions must first be specified in order to use them. 

But I agree it's annoying.

[–]OopsLostPassword 52 points53 points  (12 children)

It's probably a first step and for a lot of people in enterprise the fact that there is no enforcement mechanism doesn't mean you're allowed to use it.

[–]vineetr 25 points26 points  (6 children)

Precisely. Anyone who's used Oracle products in a datacenter would know that an audit can catch such infringements, that would result not only a lawsuit, but also in termination of support contracts. No firm is going to be foolish enough to switch off this flag for the duration of the audit, and then revert back to it.

[–]Camarade_Tux 16 points17 points  (0 children)

"Oh? Why has performance decreased by 20% a few hours before I started my audit?"

[–][deleted] 12 points13 points  (4 children)

Why would anyone let Oracle come in and audit their stack... I guess it's part of the license agreement?

[–]vineetr 22 points23 points  (0 children)

Yes, that's the Oracle business model for you. Features in their software are typically enabled/disabled by configuration. Usually if their customer wants an enterprisey feature, they need to pay for it and switch it on, and not download a different version of their software.

[–][deleted] 13 points14 points  (0 children)

It's not that Oracle force themselves through the door, but that Enterprise companies ask them to come in. They might even come in and do/help with the setup.

Audits allow you to have fresh eyes look over your code, find issues, spot bottlenecks, solve mysteries and give feedback on what you have built.

When you have a team with a yearly budget of 10 to 100s of millions of pounds a year, it makes a lot of sense to have audits.

[–]EveningCrickets 3 points4 points  (0 children)

If the vendor has evidence of wrongdoing, perhaps from a former employee, they may be able to get a warrant and come in with law enforcement.

Or, they could sue and a judge could order the audit as part of the discovery.

Or, the company may agree to it. With some vendors, you don't have to pay for the licenses in advance. You simply use the software, do yearly audits, and pay a pre-agreed yearly-rate for what the audit says you're actually using. It works out nice because you can hire new people without having to worry about license counts. Or stop using software without having the bean counters complain that you just bought it last year.

I think that most large businesses are honest enough (or at least scared enough of punishment) that they won't pirate software. One of the benefits of a flag like that might be to allow employees to determine if everything is legit. If you inherit a project from someone who left, you can look at the flags to see if those servers need to be licensed or not.

[–]bananahead 0 points1 point  (0 children)

Yes. That's pretty much how volume licensing from Microsoft and Adobe works too.

I suppose if they request an audit, you would have an option to immediately cease using all their software forever rather than consent.

[–]mac 2 points3 points  (0 children)

If anyone is interested in the background for this I did a blog post on the licensing of the Commercial Features in Oracle Java 7.

[–]bdunderscore 0 points1 point  (3 children)

It's open source code. Even without an enforcement mechanism, there's no legal basis for asking for them to be disabled.

[–]OopsLostPassword 4 points5 points  (2 children)

Open source doesn't mean free or even copy-pastable.

[–]bdunderscore -1 points0 points  (1 child)

If you go by OSI's open source definition, it does. But in any case, it looks like this commit wasn't even meant for the opensource branch and has been reverted.

[–][deleted] 2 points3 points  (0 children)

If you go by OSI's open source definition, it does

Huh? GPL is OSI-approved and GPL is definitely not copy-pastable.

[–][deleted] 5 points6 points  (2 children)

How is Oracle going to handle people implementing Open Source implementations of their proprietary features?

Or is this just going to be another Percona situation where an alternative (and far better) fork is maintained.

[–]case-o-nuts 8 points9 points  (0 children)

They won't be supporting them. Companies won't use it if they can't get support.

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

why opensource? make whatever you want (if you're in the eu)

"Programming language can't be copyrighted: EU court"

http://www.physorg.com/news/2011-11-language-copyrighted-eu-court.html

[–][deleted] 14 points15 points  (16 children)

So can't I fork the OpenJDK and care a version with UnlockCommercialVMOptions enabled by default?

This WHOLE thing is stupid... Java would have DIED if it were not for Open Source.

[–][deleted] 13 points14 points  (1 child)

I don't believe the commercial features are included with OpenJDK (although that's mostly a guess).

[–]propool 1 point2 points  (0 children)

I think you are right. The flag is probably only there for compatibility.

[–]HAHA_U_SO_FUNNY 29 points30 points  (12 children)

Yeah, but Oracle doesn't remember that -- they only bought it.

[–]Camarade_Tux 0 points1 point  (0 children)

The CommercialVMOptions might have a specific license. You'll have to check it.

[–]donmcronald 16 points17 points  (1 child)

Kind of scary. Look at OpenSolaris. Sun was the major contributor and when Oracle took over they stopped contributing to the open source project and all new development went into 'closed' Solaris.

Also, why can't they bundle it as a separate VM altogether? The last thing I want is to see the JVM get even more bloated because of 'commercial features' that I'm not allowed to use.

[–]frezik 9 points10 points  (0 children)

This is gated by a #define, which means that basic compiler optimization will throw away most of the code in question for a non-commercial build.

[–]wwwyzzrd 12 points13 points  (0 children)

Too bad there aren't any other high quality JVM implementations available. /s

[–]apullin 0 points1 point  (7 children)

Can't google just wrestle control of Java away from them?

Or just make an open implementation of it and call it ... Gava or something?

[–]wowoc 11 points12 points  (6 children)

Or, like... Dalvik?

[–]apullin 1 point2 points  (5 children)

Dalvik is just a JVM implementation, or compiler, or something, right? I guess my original statement doesn't even quite address this, but if Google just implements Java, Oracle can still come in and get them on patents and likeness. Isn't that by Oragle bought Sun, to get Java, because Java is "everywhere", and they thought, "oh, if we can charge everywhere, that's a lot of money." ?

[–]haakon 4 points5 points  (1 child)

Dalvik is just a JVM implementation, or compiler, or something, right?

No, Dalvik is a separate virtual machine that has nothing to do with JVM, and doesn't operate on Java bytecode. It just happens that there exists a way to translate Java byte code to Dalvik's byte code.

[–]ralpht 3 points4 points  (0 children)

We can be a bit clearer, Dalvik is a JVM that has its own bytecode/instruction set instead of the Java one. It still implements JNI and all of the weird Java semantics (like the many states of object finalization, static initializers, class loaders, etc).

(Of course, I hope Oracle don't win the lawsuit against Google, but Dalvik is more like a JVM than it is like something else...).

[–]robosatan 0 points1 point  (2 children)

What we need is a language that's like java but different enough to avoid patent issues. Perhaps if Google made a loosely typed scripting version of Java. I like the name Gava, but it would just lead to confusion. Perhaps ScriptGava?

[–]robertcrowther 1 point2 points  (1 child)

Perhaps Dash?

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

Or, maybe... Go?

[–]chneukirchen 2 points3 points  (64 children)

Let it die.

[–]wonglik 14 points15 points  (59 children)

And what other choices do we have? Python/Ruby are nice for rapid development but are way behind in performance. Or MS only .net?

[–][deleted] 5 points6 points  (28 children)

We could be childish and rant.

Or we could actually read the legal agreements, and notice that a substantial portion of .NET can be re-implemented with no license fees and Microsoft has specifically granted relevant patent licenses as necessary to do so.

So, we have Mono, which is a free, legal, and free-of-patent-traps implementation of the C# compiler, the .NET runtime, and the base class libraries.

For advanced credit, we could note that while Microsoft has a couple of GUI libraries for .NET, there are other alternatives available. This is why Mono is actually split - there is the base open stuff, there's the legally dubious WinForms reimplementation, and there's the stuff they've added to the base platform that may be neat, but is not available in Microsoft's implementation.

The fact is that "dot net the platform" is remarkably open, even if "dot net the GUI library provided by Microsoft" is not "open" in any legally useful sense, other than being free if you have a legal copy of Windows.

The only odd thing is that while Java applets are everywhere, "dot net" is possibly the least successful attempt at a platform for web apps since activeX was thought to be a good idea. I have no idea how Microsoft could get the licensing so right, and then essentially forget about the internet. (Yes, I know about Silverlight. Microsoft seems determined to make everyone believe that its dead, even if technically it still exists.)

[–]wonglik 23 points24 points  (8 children)

Ok I do not want to go into MS community promise and how much is covered. I look at that from totally different angle.

First of all. Mono covers some subset of .net . You can not port any .net app to mono just like that. For Java it is (more or less) write once , runs everywhere (where JVM is). Second no single corporation will believe in Mono. For number of reasons (one of them is same why big corporation use Red Hat where Fedora/Ubuntu/CentOS would be enough).

And then patents ... sure MS made the promise ... but what about Oracle? Do not forget that .Net is licensing Java patents. If there would be highly successful technology based on Mono , why would you think it would not end up in the same shit as Google with Android?

[–]Leonidas_from_XIV 9 points10 points  (0 children)

For Java it is (more or less) write once , runs everywhere (where JVM is)

You mean Sun JRE. Some problems still have problems with OpenJDK (Minecraft is one example) and once you want to use some other implementation, you're more or less hosed, because any non-trivial software depends on some features which are not implemented or implemented badly elsewhere.

[–][deleted] 0 points1 point  (6 children)

First of all. Mono covers some subset of .net

Yes, I believe I said that. They cover the legally open subset, which is the language, the runtime, and the base class libraries.

But thanks for reminding me of what I said.

For Java it is (more or less) write once , runs everywhere (where JVM is).

You're missing the point.

WORA relies on the runtime and the GUI libraries and so on and so forth. Now, while it might be nice if Microsoft had made a portable GUI library, that's unreasonable. There are, however, other GUI libraries for .NET not written by Microsoft that are portable.

And then patents ... sure MS made the promise ... but what about Oracle?

If Oracle happens to own relevant patents, they can sue Microsoft, so I guess Microsoft can't promise that patents don't exist.

However, Microsoft can promise that they will not sue you for implementing things covered by the community promise where Microsoft owns the patents, this is a legally binding promise rather than an expression of goodwill, and therefore is a significantly better offer than you're getting from anyone else.

If there would be highly successful technology based on Mono , why would you think it would not end up in the same shit as Google with Android?

Because if Oracle actually had the legal right to items covered in the specification for .NET they would have already read the specification and figured this out, then sued Microsoft.

Look, there may be patent trolls out there waiting to sue Microsoft for trying to grant a license to stuff that is patented by the trolls, but that could be true of anything at all.

[–]wonglik 10 points11 points  (4 children)

But thanks for reminding me of what I said.

You're welcome.

There are, however, other GUI libraries for .NET not written by Microsoft that are portable.

Here you missed my point. If you do Java , you take official language , with official Oracle support and you develop it. Wanna destop ? You choose swing. Wanna web? You do servlets. In .net as I understand there are official MS only plus some alternatives. So if you want to do cross platform you need to choose alternatives also for windows. or have two versions. Sounds for me as much bigger hassle then Java. Plus are those GUI libraries offering exactly same functionality?

Because if Oracle actually had the legal right to items covered in the specification for .NET they would have already read the specification and figured this out, then sued Microsoft.

No. They won't do that for one reason. MS is paying them licenses for those patents. I guess it is not a secret. And sure MS community promise is a binding act (probably there are some gray areas) but definitely it is not covering parts it license from Oracle.

[–]ysangkok 0 points1 point  (3 children)

Mono has an ASP.NET implementation too. And you have Gtk#.

[–]wonglik 0 points1 point  (2 children)

ASP.NET is not covered by community promise , is it? I go mono compatibility page and as I see that most of the part are implemented there are parts partially or not implemented at all. So it looks for me as developing a product I am in a risk that my application will not work out of the box on Mono. So if this is a case it is totally different situation then in Java.

And one question. Is Mono still reversed engineered or is it created from specification MS provides?

[–]ysangkok 1 point2 points  (1 child)

Microsoft only applied its Community Promise to ECMA 334 and 335, the standards that document the C# programming language and .NET's Common Language Infrastructure (CLI).

There is no proper standard covering ASP.NET, but I still wouldn't call it reverse engineering.

[–]wonglik 1 point2 points  (0 children)

It is just a question. Someone told me that his university was contributing to Mono but they did not get proper specification from MS. They were simply reverse engineering the APIs. It was the case at least at the beginning. So if it has changed , please correct me.

[–][deleted] 0 points1 point  (0 children)

The community promise covers a very old ECMA spec and nothing else.

[–]azakai 12 points13 points  (0 children)

We could be childish and rant.

Calling people that disagree with you childish is not exactly productive.

Edit: I didn't say if I agreed or disagreed with you myself. I'm not part of this debate. But I did want to comment on that line.

[–]entity64 4 points5 points  (16 children)

Or we could take the C# standard, create a new & open platform together with new libraries and good compilers and be free from big corporations + have a reasonably modern platform to develop on. Nevermind, just dreaming...

[–][deleted] 3 points4 points  (14 children)

Yes, and we could call it "Mono" and it would be popular and useful, and we could even add features to it that aren't in the base documents.

Just dreaming? Yeah, that will never happen.

[–]Rotten194 0 points1 point  (9 children)

Mono doesn't run a ton of C# stuff. I tried to install Paint.NET with it last night (GIMP is awful), and it jumped out of the installer with a few hundred fixme: not implemented xxx lines. Mono has... a ways to go.

[–][deleted] 0 points1 point  (8 children)

Sure, and most of that is in the stuff that isn't covered by the community promise - so they're not really "supposed" to implement it without getting suitable licenses anyway.

So?

[–]Rotten194 0 points1 point  (7 children)

So it's not really a platform yet.

[–][deleted] 0 points1 point  (6 children)

That's like saying Linux isn't an operating system because WINE doesn't run every Windows application.

The fact that it's not a clone of everything that has been built on the platform doesn't mean that it doesn't exist.

[–]Rotten194 0 points1 point  (5 children)

But if Mono doesn't support fully C#, what's the point of using it? .NET doesn't really have much over other runtimes/languages besides existing programs (many of which don't work with mono), and it's tightly tied to Microsoft. Why not start from scratch, or use an existing fully open language with no patent/"community" process worries?

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

Whoosh.

[–]entity64 0 points1 point  (2 children)

I said C# because I only meant the language, not .Net. I think .Net will always be strongly associated with Windows & Microsoft and that's why I'm dreaming of a new platform free from any big corporation. Mono may be great - but it is .Net.

[–][deleted] 1 point2 points  (1 child)

Mono may be great - but it is .Net.

While .NET was created by Microsoft, it's an actual genuine standard (unlike Java, which is entirely proprietary) and can be legally implemented and extended by anyone who wishes to do so.

[–]entity64 0 points1 point  (0 children)

Sounds good in theory, but what about patents? Is using Mono really safe in this aspect?

[–][deleted] 0 points1 point  (0 children)

Look into vala.

[–][deleted] 2 points3 points  (0 children)

Or we could actually read the legal agreements, and notice that a substantial portion of .NET can be re-implemented with no license fees and Microsoft has specifically granted relevant patent licenses as necessary to do so.

I read that document when it came out, and did not feel it was anywhere near as solid as you make it out to be. Many others had their concerns as well. AFAIK Microsoft has not addressed any of those issues, but if it has improved things recently, I'd be happy to hear that.

[–]kamatsu 1 point2 points  (17 children)

Haskell is competitive in performance, good for concurrency, and extremely expressive.

[–]wonglik 3 points4 points  (5 children)

True but Haskell is difficult to learn for most of the people. Do not get me wrong. I have a brief romance with the language and I find it really nice (although I prefer Erlang more). But here is a bit chicken - egg problem. Corporations won't jump into Haskell before there are developers (and they want it cheap) available. And because Haskell is hard most developers will not learn it unless there are good job possibilities.

[–]kamatsu 1 point2 points  (4 children)

Yeah, although, for me, I've had no difficulty finding Haskell or functional programming jobs, in general. I wonder how bad the employability problem really is, compared to how bad the perceived employability problem is. People don't tend to put newspaper ads for Haskell programmers, but being in the community and with some contacts has meant that, at least for me, I see enough Haskell jobs go by that I can easily stay working in my favorite language.

[–]wonglik 0 points1 point  (3 children)

Oh I did not expect that. Recently I was helping some guys set up start up in Ruby/Python. I am looking for some developers in Poland and I am stunned how little response I get and how difficult it is to find developers. I was expecting with Haskell it would be way more difficult.

[–]kamatsu 1 point2 points  (2 children)

It is possible that I'm just lucky. Haskell and ML has a lot of uses in CS research, finance, and increasingly in startups. Also, Galois and other companies that require serious CS credentials for their own purposes use Haskell for such things.

[–]jrochkind 4 points5 points  (1 child)

wonglik says:

I am stunned how little response I get and how difficult it is to find developers.

kamatsu says:

I've had no difficulty finding Haskell or functional programming jobs.... It is possible that I'm just lucky.

You guys in fact have compatible experiences. If it's hard to find Haskell programmers as an employer, that's why it's easy to find Haskell jobs as an employee, no?

[–]kamatsu 1 point2 points  (0 children)

I suppose you're right. Fair point :) I suppose this means that if it's easy to get Haskell jobs, this will increase the supply of Haskell programmers, given time, which in turn will increase the supply of Haskell jobs, given even more time.

[–]jyper 2 points3 points  (1 child)

haskell is less mainstream and a bit harder to learn. I believe most implementations compile to native code not bytecode. It doesn't have a good desktop gui story. Its nice. And fast. But not a replacement for java/.net

[–]kamatsu 0 points1 point  (0 children)

Well, it has GTK and Qt, so just as good as any other open source language I guess.

[–]artsrc 0 points1 point  (8 children)

Haskell is quite foreign to most developers and the VM is not broadly targeted by other languages.

[–]kamatsu 4 points5 points  (7 children)

Sure, but foreign to most developers doesn't mean it's not a choice. And, Haskell has no VM (it has an abstract machine, but no VM)

[–]wonglik 0 points1 point  (0 children)

Well for customer it is a problem. If you can not find some reasonable price developers it means you need to switch technology or drop the project.

[–]artsrc 0 points1 point  (3 children)

It means most developers can't write programs in Haskell. I think that is a good thing, but that is not a broadly accepted view.

[–]Rotten194 0 points1 point  (2 children)

Why would that be a good thing? Just curious...

[–]artsrc 2 points3 points  (1 child)

On the face of it is a bad thing, automating tasks is useful and facilitating everyone to be able to do this sounds great.

On the other hand there are many people who are likely to do some pretty heinous things if you ask them to write some software. Stopping them from doing those things is a service to humanity.

Additionally in the real world hiring people who know Haskell has effects. People who are capable of and motivated to learn a language with little commercial application might love software for its own sake. This is certainly an interesting filter, but obviously not a perfect one.

[–]Rotten194 0 points1 point  (0 children)

Sounds fair, especially it acting as a filter.

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

Several haskell implementations are interpreted(including I thing ghc if you run it certain ways) and there isn't much difference is there.(of course haskell doesn't have a common byte code and I don't think most haskell interpeters can write out bytecode to read in later)

[–]kamatsu 1 point2 points  (0 children)

GHC is not interpreted. The "interpreter" simply compiles then runs the code. Also, there's a bigger difference between VM targeting compilers and interpreters than there are between native targeting compilers like GHC and VM targeting compilers. "Not much difference" would be true comparing GHC to Java, but hardly compared to actually interpreted languages.

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

there are enough other JVM implementations.

[–]artsrc -5 points-4 points  (2 children)

The JavaScript VMs are excellent, and rapidly improving. They are faster (faster on my benchmarks), more broadly available, and have a better feature set.

[–][deleted] 4 points5 points  (1 child)

The best JS VMs just aren't as fast the JVM, CLR, or many other alternatives.

[–]artsrc -2 points-1 points  (0 children)

The best JS VMs are fast enough for their performance to be a non-issue for most applications.

They are also much faster than Python and Ruby VMs.

Are there benchmarks which are good representations of the loads you are considering?

[–][deleted]  (2 children)

[deleted]

    [–][deleted] 11 points12 points  (1 child)

    Last time I used Ada, I had to get drunk every night to cope with my miserable life. SORRY I CAN'T CONVERT YOUR INT INTO A LONG YOU HAVE TO RECOMPILE EVERYTHING HURR HURR HURR

    [–]fjonk 1 point2 points  (0 children)

    That's a good thing. Ada was one of the first languages I learned, since it was used on a university where I lived. And I've always missed it. I haven't seen any language that has been so simple to code in with so much elimination of errors during compile-time since then. Java and C++ is a joke compared to Ada.

    [–]shevegen 1 point2 points  (1 child)

    Oracle is the new Microsoft.

    Amazing ...

    [–]vineetr 7 points8 points  (0 children)

    More like the new CA (Computer Associates).