Oracle stabs Java in the Heart

Java, and the Java eco-system is fueled by the the developers that use it day-in-and-day-out, and that develop that frameworks that serve as it's skeleton. I've already spoken on my fears for the future of java given Oracle's stance in my post on The Summaries of War. I see Google's move to pull out of JavaOne as yet one more sign of how this course of action will cause many of these developers and the companies that foster Java to move on to another language, and perhaps even another ecosystem. I personally hate all the "Is Java dead" posts, but I fear that Oracle is going to bring about the birth and rise of languages that fully embrace the Open Source paradigm. I for one see an interesting future for Google Go. Google's Statement: An update on JavaOne Friday, August 27, 2010M Like many of you, every year we look forward to the workshops, conferences and events related to open source software. In our view, these are among the best ways we can engage the community, by sharing our experiences and learning from yours. So we’re sad to announce that we won't be able to present at JavaOne this year. We wish that we could, but Oracle’s recent lawsuit against Google and open source has made it impossible for us to freely share our thoughts about the future of Java and open source generally. This is a painful realization for us, as we've participated in every JavaOne since 2004, and I personally have spoken at all but the first in 1996. We understand that this may disappoint and inconvenience many of you, but we look forward to presenting at other venues soon. We’re proud to participate in the open source Java community, and look forward to finding additional ways to engage and contribute. By Joshua Bloch, Google Open Source Programs Office

Additional Comments

Additional comments and replies can be found at: Dzone

Thanks for the great post.

Thanks for the great post. Really enjoyed the Summaries of war post as well.

I truly resent what Oracle

I truly resent what Oracle does in suing Google. There are people that side with Oracle - they call themselves the voice of reason. I call them the voice of t-reason. You know what, I am an emotional person too, and I find software patents trash. Yes, the silver lining is a new ecosystem where Oracle, or Microsoft or Paul Allen cannot touch. Let it be Python. I won't take me long.

echo-system? lol...

Well, I kind of stopped reading at "echo-system", and started facepalming.

I'm sorry a typing error

I'm sorry a typing error caused you to stop reading. Guilty as charged. Yes, I do make mistakes.

Go is a joke

Forget about Go. Unlike C++, Go is not object-oriented. There is no support for classes, no inheritence, polymorphism, function overloads, .. etc., etc.. http://bit.ly/bNrJbk .. Outside of the web and the Android Google showed with Go that they have no idea what they are doing when it comes to offering an alternative to Java's landscape, if indeed that was their intent with Go.

Go has a different approach to OOP-style programming

A blanket statement of "Go is not object-oriented" leaves an impression to those not familiar with Go language that is rather skewed from the actuality.

It's fair to say that Go has a different approach to OOP style of programming than, say, Java or C++ language.

Here's a Go FAQ link that sheds a bit of light on that (but is just scratching the surface of the topic of OOP in Go):

http://golang.org/doc/go_lang_faq.html#inheritance

A comment about polymorphism in Go via interfaces:

http://golang.org/doc/go_tutorial.html#tmp_268

And type subclassing in Go using type embedding:

http://golang.org/doc/effective_go.html#embedding

This section on Go interfaces is a good read:

http://golang.org/doc/effective_go.html#interfaces_and_types

BTW, it's rather strange to see the use of pejorative comments such as "Go is a joke" - that really is just indicative of not having much insight into what Go language is about or like at all. The creators of the language are exploring a different milieu for doing such things as OOP and concurrent programming - after we've had a couple of decades of experience doing such with C++ and Java.

Well, I spent the decade of the '90s mostly in C++ and then the '00 decade predominately with Java and some C# (and the last half of the '80s doing mostly C). So I've traversed the arc, so to speak.

As such, I've found Go language to be a refreshing experience that rekindles new excitement.

I'm going to check out your

I'm going to check out your link, and respond further. I am just about to get started with my learning of Go. I have heard enough to get me intrigued - but I also don't know if all the information I have heard is correct. Go was on my list of things to learn, and I still need to do my due diligence to determine if I need to move it to the top of my list.

The problem of Go its that is

The problem of Go its that is a System or lower level language. Dalvik VM is here to stay but as you say they will come out with a language over the dalvik vm and that one I think it will be Python or Javascript. Google is heavily invested in Python as a multipurpose language and Python is a very easy language to learn so it could be for dalvik vm. I think, Python will be the choice and for lower level or speed/native it will be C++ and Go and for the web is Javascript. So my guess will be with Google is displace Java once and for all and the 4 languages of choice for Google will be: C++, Python, Go and Javascript.

How does Python solve the problem?

The Oracle law suit has NOTHING to do with Java the language and everything to do with the Dalvik VM. Saying that Dalvik will stay but Python will be the new language for Dalvik simply does not make any sense at all.

You do realize that you can use Python today for writing Dalvik apps using Jython don't you?

suitability of Go language for becoming flagship Android languag

Go has a good bit of the sensibility of Python about it. Python was one of the inspirational languages for Go's design. However, unlike Python, Go can be compiled and linked into a binary executable and delivered as such - instead of having to deliver an application as a conglomeration of source text script files. Plus, Go is a compile time statically type checked language. Because Go compiles and links so fast it is as nimble to work with as a scripting language. IOW, it is an entirely suitable alternative to languages such as Python, and then offers up additional programming concepts such as goroutines for addressing concurrency.

Go isn't really any more "low-level" than, say, Objective C, which, of course, still retains full C language capabilities (Objective C could fairly be said to be more "low-level" than Go).

Objective C has been an entirely successful language for native app development on Android platform's principle rival, Apple's iOS. Unlike Objective C, Go langauge intrinsically relies on garbage collected memory management (Objective C only optionally has garbage collected memory and that is only on Mac OS X - is not available for iOS devices).

The Go language package library has been developed on top of POSIX and though it has been ported to Windows, it is easiest to bring up on Unix and Linux. Android has Linux as its underlying OS.

For Android development, the Android APIs would need to be re-developed with Go packages wrapping and abstracting them. That would probably be the most substantial work in adapting Go for Android.

There is already and ARM native code compiler for Go so there would not be a need for porting Go to run on the Dalvik VM. Hence the entire matter of Dalvik patent infringement could be dodged by going with Go.

However, Go is currently statically linked into a monolithic executable. For small Android devices, it would be good to enhance Go with a runtime shared library feature comparable to what Adobe did for the Flex SDK libraries where they can be cached by the Flash Player. There would likewise need to be version management for caching such libraries. That way different editions of apps built with Go could have their particular version of the core Go runtime libraries suitably cached on the host device.

So beyond its current static linking approach, Go would need to be enhanced to support some manner of dynamic linking to make the above library management strategy possible.

Wrapping the Android APIs with Go packages and adding version managed runtime shared library support are the two primary issues that would need to be addressed when attempting to position Go as a new flagship programming language for the Android platform - such that it could viably replace the use of Java language in that role.

Thank you

Your comments mirror much of my thought with Go - that Dalvik would not be the VM that it would run on. Your thoughts on the monolithic executable is interesting - and something I wasn't aware of, but that I will take note of as I start my study of Go. David

Android is Dalvik

Android without Dalvik simply doesn't exist. Look at the NDK: you can do very few things with it in C. Android without Dalvik is Maemo.

Thanks for the comment. You

Thanks for the comment. You aren't the first to mention that Python will become a key player. I haven't spent a lot of time with Python honestly, and I guess I need to change that. I have done a lot of C++ in my day, but I didn't really expect to see a huge resurgence of it for new projects. I'll have to give that a second thought

Digg this

Theme provided by Danetsoft under GPL license from Danang Probo Sayekti