
Apache loses Java showdown vote to Oracle - nradov
http://www.theregister.co.uk/2010/12/07/apache_google_vote_no_oracle_roadmap/
======
kls
As a long time Java developer (I downloaded the first beta that was released).
I would have to say that this pretty much did it for Java. Sure it was showing
it's age but until now the pain of leaving it behind was too great for many. I
think now there are a lot of people wondering what the future pains will be
brought if one decides to stay in the Java world. Oracle has thrown the
gauntlet down and pretty much said, Java is for paying customers. So my
question now is who is the likely successor? I have been playing the guessing
game for a while now as to who I think the most likely champion is and I keep
drawing blanks. I think the JVM languages are too close to Oracles reach for
comfort now, so I think Clojure, Scala, JRuby and the rest are out. Python is
nice and has a pretty decent eco-system but there is a die hard no interpreted
languages camp (I know, I know) but it exists. I don't know enough about Go to
form an opinion of it's worthiness. I don't think we are going back to C or
C++. Objective-C is perceived to be too Apple, .NET too Microsoft. Perl had
it's moment in the sun. Ruby too controlled by a select few. My point is, I
would love to know what other people think on the subject. I think the writing
is on the wall, I just can't seem to read what name the writing spells.

~~~
callahad
I think .Net is poised to capture much of Java's current market. The C#
developers I know really do seem to enjoy the language and associated tooling,
and it's very well established in the enterprise. I can't think of anything
else that has significant mindshare and is directly addressing that space.

At the same time, alternative languages (Python, Ruby, etc.) are becoming more
and more capable, and are slowly eroding the class of problems that need
"enterprise-grade" solutions. Furthermore, virtualization, as well as tools
like Chef, Puppet, Capistrano, Virtualenv, and RVM are making great strides at
simplifying the deployment and management of "native" solutions.

Taken together, I think you'll see huge gains by smaller languages in the
areas traditionally served by Java and .Net.

But if I had to pick a dark horse or two, I'd look to LLVM and JavaScript.
There's huge amount of momentum and money behind LLVM, and I could easily see
it becoming the next major target platform for experimental languages.
Similarly, the recent JavaScript arms race has left us with at least four
extremely high-performance JavaScript runtimes, and it's quickly becoming the
lingua franca of the web. There have been many attempts to harness that talent
and apply it to more general application development: Apple's Dashboard,
Palm's WebOS, Node.JS, Appcelerator Titanium. Others initiatives are trying to
pull general application development into the web dev world: Sproutcore, 280
North's Cappuccino, etc. Eventually, someone is going to strike the right
balance, and JavaScript's importance and influence will skyrocket.

Other things that may spawn something really cool: Parrot, Go.

~~~
eitland
>I think .Net is poised to capture much of Java's current market.

Anyone leaving Java because of Oracle is not going to .Net.

> The C# developers I know really do seem to enjoy the language and associated
> tooling, and it's very well established in the enterprise.

Doesn't matter. If you are leaving Java because of Oracle, then you don't care
about the tooling. Moving to .Net will just move you to another vendor those
guys have spendt the last years moving away from.

~~~
sukuriant
Sadly, you can't say "anyone" here. I'm quite certain some people will find
Microsoft more free than Oracle and, given the surface-level similarity
between the two languages, will chose C# before they move on to a different
language.

~~~
rbanffy
> I'm quite certain some people will find Microsoft more free than Oracle

After all, like professor Wirth once said, P. T. Barnum was right. It's not
reasonable to bet your company on the premise either Microsoft or Oracle will
have a sudden change of mind and start playing by the rules.

It's not reasonable to bet a dollar on that ludicrous idea.

------
SkyMarshal
I can't help but wonder why Google is apparently willing to spend $6B on
Groupon, but wasn't willing to spend roughly the same to secure a significant
portion of the intellectual property assets that Google is heavily dependent
upon.

Is Groupon really as or more valuable than Sun to Google?

~~~
felipe
Good observation. Yes, it makes sense, because Google is a media company, and
not a technology company like many people think.

~~~
varikin
I would say Google is an advertising company instead of media company, but the
sentiment is the same.

~~~
orangecat
Google is a company that extracts revenue by automating everything that can
possibly be automated. That's why they're much better at self-driving cars
than customer support.

------
chadj
So what does the HN community think of Vala (<http://live.gnome.org/Vala>)? C#
like syntax. Compiles down to C. Reference counting for memory management.
Appears to work with clang as well.

More example syntax here: <http://live.gnome.org/Vala/Tutorial>

~~~
rbanffy
Looks interesting for low-level stuff. I assume memory management will become
more sophisticated with time.

~~~
kaffiene
You can't do sophisticated GC in C. The memory model of the JVM is important -
it knows what is a pointer and what is data, which is important for efficient
GC.

~~~
rbanffy
If course you can. But you will have to write a memory manager for that and
make the compiler keep track of what your pointers point to. I don't know
enough about Vala to say it's not desirable given its syntax and what it
assumes about the memory management the program does, but it's not impossible.

It may be a whole lot of work.

~~~
dfox
actually, you can do consevative GC in C just fine without any special support
in compiler, see Boehm's GC. Which is actually what was until recently used in
Mono and also extensively used by various other runtimes (gnu java, ecl, many
scheme implementations...)

~~~
rbanffy
True, but it would be uglier than if the compiler hid the CG behind a wall of
syntactic sugar.

~~~
dfox
Well, the only difference you see is that you call GC_malloc() instead of
malloc() (and that can be redefined, even link-time), and that on some
platforms (at least Cygwin and AIX, maybe also Solaris) you need to call
GC_INIT() from main().

~~~
rbanffy
Yes, but that should be placed in the C code, not in the Vala sources.
Assuming it's a c#/Java-like language, the programmer should be spared from
this job.

~~~
dfox
In case of Vala I think that required modifications are pretty well limited to
underlying runtime library (gobject) and do not touch compiler too much. But
on the other hand they will be quite invasive across whole Gtk/Gnome platform.

------
anttipoi
Results are out. <http://jcp.org/en/jsr/results?id=5111>

Quite a few of those who voted yes added comments about the yes being on
technical merit, not licensing.

~~~
JoachimSchipper
Interesting to see that e.g. Eclipse and Red Hat voted yes.

------
elblanco
Since it seems that the concept of compiling code to an intermediate bytecode
run in a JIT-VM seems to have proven itself pretty well (and the concept of
compiling multiple languages to said VM a la Scala), perhaps it's time for the
community to look at building their own from the ground up VM with associated
language support?

Perhaps <https://www.parrot.org/> ?

~~~
harryh
<http://llvm.org/>

~~~
dkarl
_The LLVM Project is a collection of modular and reusable compiler and
toolchain technologies. Despite its name, LLVM has little to do with
traditional virtual machines, though it does provide helpful libraries that
can be used to build them._

If LLVM is not a VM, do you have a particular LLVM-based VM in mind?

~~~
JoachimSchipper
LLVM does include a VM, although that's not the focus.

~~~
elblanco
I'm wondering if it might be better suited in this context to producing byte-
code for Parrot?

~~~
JoachimSchipper
Why? It seems perfectly capable of producing native code.

~~~
elblanco
Because sometimes compiling to an intermediate VM has advantages over
compiling to native code.

<http://news.ycombinator.com/item?id=1977956>

~~~
JoachimSchipper
I'd read that comment, which is in this very thread (!), I just don't see why
you'd want to do that.

~~~
elblanco
Which part doesn't make sense, running intermediate byte-code in a VM, or
using LLVM to target Parrot? If it's the former, I'm not sure I can persuade
you in this thread if a decade of enterprise software can't do that, if it's
the latter, then I can see that also.

------
cturner
Could Harmony just rebrand and go its own way? i.e. people would be "Harmony
developers" instead of "Java developers" but it would be the same thing. Or
are there patent or licence obstacles to this? A platform run by Google and
Apache would have a core of great engineering and the pick of the best
libraries.

I appreciate that ASL is in reality an impossible boat to turn because it
relies on the voluntary contribution of dozens of key developers, each running
private projects with investments in software based on the existing VM
tradition.

------
badmash69
The features in JDK 7 and 8 are what we the Java developer community have been
asking for. Heck, even RedHat held its nose and voted yes for the technical
merits. Java is only getting beter and the JVM -- thanks to Clojure , Scala
and JRuby -- has a vibrant community that is extending it beyond the
limitations of Java.

But please don't let these facts get in the way of Java fear mongering. Good
to see the Java haters' FUD factory is back in action. The old " java is too
slow" campaign was losing its appeal. Good to see a fresh new FUD.

------
BonoboBoner
While the situation is far from perfect, I am at least happy that actual
progress is made, as we have a release date for JDK7 and respective JSRs at
last.

Regarding the "premium JDK", I dont mind Oracle charging companies like
investment banks extra bucks for additional JRockit-features (Monitoring, etc)
that the open source community never actually had free access to anyway. There
are so many Oracle products that heavily depend on Java, that it does make no
sense for them to hurt Java. If they destroy Java, they destroy part of their
income, which I just dont see happening. Although the geekish OSS-nature of
Sun's stewardship is gone, things could be by far worse for the Java
ecosystem.

Speaking from our situation, I dont see us switching to .NET any time soon.
Although it is a great platform especially with the recent developments on C#,
for us it is just not cost-effective to buy new Windows Server, SQL Server,
etc licenses for every new non-trivial project. It is just far easier and
cheaper to build a new Debian-machine on our VMWare cloud and apt-get whatever
we need.

~~~
__david__
Can't you "apt-get install mono"?

------
dmak
What does all this mean? How did this even happen? Can someone give me the
summary? I haven't really kept up with this from the beginning.

~~~
wmf
This has been going on for something like eight years so it's not easy to
summarize. But you might start here:
[http://www.jroller.com/scolebourne/entry/sun_apache_ip_in_pi...](http://www.jroller.com/scolebourne/entry/sun_apache_ip_in_pictures)

------
peapicker
The article is a little misleading; the refusal by Oracle is to not let them
run the certification tools _for_free_; every other JDK developer has paid for
certification. Apache won't pay; so they don't get certified.

------
buster
Would it be possible to "fork" Java? Alternatives could probably be Parrot or
LLVM?

------
binaryfinery
The power of Java is not the VM, or even the system runtime, but the open
source libraries available for it. It is time to create a "new language" whose
compiler will accept Java, and whose VM implementation is unencumbered by
legitimate patents. Hm. If Dalvik isn't it, then something similar will be
created. I, for one, would like to help. Anyone else up for it?

~~~
prodigal_erik
Java is the prototypical Blub. It's saddled with a type system that wasn't
even state of the art in 1991, motivating gigantic enterprisey libraries of
RequestSpecificProcessorFactoryFactory crud. The VM is the reason we
grudgingly tolerate it where I work.

~~~
dkarl
It may be "prototypical Blub," but it has attracted a lot of bright and
effective programmers, including several top-ten finishers in the Google AI
Challenge and many, many people writing oodles of useful, practical code. I
think it's fair to say from history that if you want to get things done in a
cool, nicely designed language, it helps if your cool, nicely designed
language runs on a platform that is dominated by a popular Blub language.

Proof: If there's no Blub on your platform, you'll exclude the vast majority
of people who might write useful code you can use. If there is a Blub on your
platform, its popularity will ensure that the vast majority of useful code on
your platform will be written in Blub, and first-class language status on your
platform will be defined by ability to interoperate with Blub. Therefore, the
best case scenario is for your favorite language to be a minor player on a
Blub platform.

~~~
JoachimSchipper
Why Java interoperability instead of a good C FFI? That's what
Perl/Ruby/Python/Lua/... are doing, and it works for them.

~~~
dkarl
C is another Blub, so you aren't contradicting my point, but I would say that
the reason C isn't a good replacement for Java is that C has no support for
garbage collection. C and Java both have a large amount of valuable, working
code that programmers can utilize from other languages, but a language written
on top of C has to accept that whenever a C library is used, someone must deal
with C memory management, either the programmer who writes the bindings or
every programmer who calls the bindings. They may have to deallocate memory
and they may have to reason about the lifetime of memory deallocated by
library code. Scala programmers can call Java code with no such worries. If
they wrap a Java API in a Scala API, it is only for style and convenience. A
Scala programmer would not use a C library lightly, certainly not without
bindings that ensured memory safety, and writing such bindings would require a
lot of care.

The difference in practice is obvious: there is no Scala "FFI" to Java, at
least not one that is visible to programmers. You just instantiate Java
objects and call their methods. Ruby programmers do not blithely write calls
directly to C functions in their Ruby code. They look for bindings, write the
bindings themselves if necessary (making sure the bindings handle all the C
memory management safely,) and then call the bindings from their Ruby code.

Where increased performance is worth such an investment of time and care (and
a little bit of unavoidable risk) it makes sense to build a language on top of
C. Java caters to a different set of needs, where convenience and safety trump
performance.

P.S. The Java community went through a phase back in the day when many
libraries were wrappers around C libraries, for performance reasons or simply
because there was no Java implementation available, and it was a big problem
because it invalidated some of the guarantees that attracted people to Java in
the first place. Almost all (very, very close to all) of the cross-platform
discrepancies encountered in server-side Java code were because the same C
library behaved differently on different platforms.

