Slashdot videos: Now with more Slashdot!

View

Discuss

Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

Um no. Implementation issues aside (stack vs. register), Dalvik is a virtual machine that runs the Java language using an incompatible byte code dictionary. That said the byte code that can run in Oracle's JVM can be easily mapped into byte codes that can be executed within Dalvik. The fact that Android (ie Dalvik) isn't using Java SE libraries is immaterial to Oracle v. Google.

The underpinning problem with Dalvik is that its implementation follows many JVM specifications. For example:

The binary format, not the actual instructions themselves, follows very closely to Java's binary class format (I think this one is a weak argument, but it is one that Oracle is throwing.)

The method used to pre-process the binary code and package the binary so that it can be pre-processed is very similar in both. (This one is a little bit less weak because the binary headers look almost the same bet

The underpinning problem with Dalvik is that its implementation follows many JVM specifications. For example:

No it doesn't. They specifically break away from JVM specifications because Java's formats are slower and hinder some of both speed and memory optimizations.

The binary format, not the actual instructions themselves, follows very closely to Java's binary class format (I think this one is a weak argument, but it is one that Oracle is throwing.)

With this definition, anything is everything. Furthermore, law specifically allows for interoperability. But beyond that, there isn't any similarities worth noting as they specifically did not care to retain any interoperability. That's the first I've heard such a claim. If in fact they are making such a claim, its like saying you and I are the exact sa

No it doesn't. They specifically break away from JVM specifications because Java's formats are slower and hinder some of both speed and memory optimizations.

I guess the best way to present this would be if I had a patent on eating cereal (which would and should be ruled invalid but let's not get off the point here.) If my method is to grab cereal, grab bowl, grab milk, pour cereal into bowl, pour milk into bowl... put milk up, put cereal up, grab spoon, eat, then just because your method is to leave the box of cereal out until done eating and grab the spoon while getting the bowl just to save time; doesn't mean you haven't infringe on my cereal eating idea.

Project lambda [java.net] was arguably the most important planned addition to the JDK7, but apparently got dropped in the last few months and pushed back to JDK8. To be honest Project Coin [java.net], Fork/Join, and InvokeDynamic are useful, but not much of a big deal as Project Lambda.

There are quite a few situations where the bloat of Java doesn't fit. One of those is writing operating systems and drivers. Another is writing games. Sure, there are a few games here and there (Altitude, Minecraft) written with Java; however, a significantly greater number of games are written in C++.

It's kind of like Lua vs Python. When you need a huge set of libraries built into the language's standard library, go with Python. When you don't need all that bloat, use Lua.

If you want lambdas and such, why wouldn't you just use LISP or Scheme instead of trying to hack it into a C-syntax family language.

Because those languages have different features than a language like Java -- the biggest being that they are not statically typed. It's a useful enough feature that hacking it into the language is worth it.

Also, there's tons of Java code and programmers already in place, and people don't want to abandon it all just to gain a new feature.

If you want lambdas and such, why wouldn't you just use LISP or Scheme [racket-lang.org] instead of trying to hack it into a C-syntax family language.

Because the main competing C-derived language to Java (C#), which is also the key systems language for the main competing managed framework to the JVM (.NET) already has "lambdas and such", while still having the rest of syntax more accessible than Lisp-family languages to the vast number of developers that have strong backgrounds in C-derived languages but le

Speaking of lambdas, Project Lambda folks are doing polls on syntax right now, and asked to spread the word. There will be a series of simple polls to gauge relative preferences; this [surveymonkey.com] is the first one - go and vote!

It's been gone for a while from the JDK 7, which simply got split between 7 and 8. And with good reason, it was just taking too much time, and Java is not the language people should screw up.

I'm not waiting that hard for Lambda, in my opinion it's a language feature that really requires a lot from the platform, is very strong but not very good for maintenance. I can already see it being used for interfaces and I can already see my less apt collegues making a mess of it. Heck, even I think it is a helluva st

I currently have Version 6 Update 26 installed on all my home computers. Will that be the final release of the version 6 branch? I hate using x.0 releases until they work out any kinks or bugs, but I have also been bitten by having an old Java version installed (it is the only vector that has successfully installed malware on my computers).

Actually, probably longer if you have a proprietary Unix OS such as Mac OS X, AIX or HP-UX where the OS vendor ships patches. The OS vendors usually find it easier to just issue patches for the old version rather than adding support for a new one.

Java is actually not particularly well designed from versioning point of view. For example, if a new release of Java adds a new method in some class, and you inherit from that class in your code and had a method with the same name and signature, your method now becomes an unintentional override.

Or how about this:
I'm a developer on an enterprise application suite that exercises critical bugs in Java 6 Update 18-24 (we haven't yet tested 25 and 26). Oracle introduced a regression in 6u18 that they fixed in 6u21, but in 6u20 or 6u21 they introduced yet another regression. Both regressions cause a complete crash of the JDK that, on busy production systems, causes a complete crash, usually 1+ times a day.

Therefore, we can only recommend 6u17 as the stable version of the software, because 6u18+ isn't. I would strongly prefer that you not "beat the ever living shit out of me" for Oracle not being able to create a stable JVM for an enterprise product.

We'd get an Oracle support agreement to get these problems resolved, but you wouldn't BELIEVE how much money they want for such support. And even if we did pay Oracle a BOATLOAD of money, there's no guarantee that they'd even fix our issues--just that they would listen.
on busy production systems, causes a complete crash, usually 1+ times a day.

Java7 doesn't appear to be much better for stability. I just got this email today:
Hello Apache Lucene & Apache Solr users,
Hello users of other Java-based Apache projects,

Oracle released Java 7 today. Unfortunately it contains hotspot compiler
optimizations, which miscompile some loops. This can affect code of several
Apache projects. Sometimes JVMs only crash, but in several cases, results
calculated can be incorrect, leading to bugs in applications (see Hotspot
bugs 7070134 [1], 7044738 [2], 7068051 [3]).

According to this page [oracle.com], you've got until July, 2012 before they stop supporting 1.6. When 1.6 was released, they continued to release fixes for 1.5, so I would assume they'll do the same for the 1.6 to 1.7 transition.

Not to take this thread off course a little, but malware is the #1 reason we're stripping Java off of our systems this year.

From what I can tell, Java 1.7 is no different then 1.6 when it comes to updating. It still doesn't have an option to automatically install updates without prompting. And since nobody ever clicks on the taskbar icon to update Java and are usually 2-5 updates behind, Malware authors have a field day infecting systems with Java left and right.

More to the point - I'm currently in 2 minds regarding DISABLING updates to our corporate desktops for Java. We have 2 content filtering firewalls to block exploits, and the amount of legacy shit we have that are only supported on specific versions of the JVM. Now it's in oracle's hands my confidence in backwards compatibility with old code is rapidly diminishing...

I'm no M$ fanboi, but Bill Gates did give away most of his fortune and is trying to cure malaria and what not. Even if his business practices were a bit scummy that's gotta earn him some nice guy points!
Larry Ellison would be more likely to use his fortune to invest in a pharmaceutical company that makes malaria medicine and then start a bunch of mosquito farms...

Gave away most of his fortune? What? In 2010 he was the richest man in the world, for the 17th straight year!. So far in 2011, he's only the 2nd richest, coming in behind Carlos Silm. While I applaud and encourage his philanthropy, let's not get carried away. I once read that if you start from a point in time back in 1975 (when MS was founded), on average he's been making $300/second ever since. This means that if he sees a $1000 bill lying on the floor, it's not worth his time to pick it up!

Funny enough, I just set up an Ubuntu box and decided to grab JDK 7 without knowing that today would be the day it was "released". As such, I downloaded it directly from Oracle/Sun/Java/Whatever. [java.net].

Note, I then installed Eclipse Indigo, which was having some problems with some of the plugins. I added the following line to the eclipse.ini file and the problems went away:

It breaks things that improperly implement the Comparable interface then try to sort objects that implement that interface.

*sigh*... I've seen more invalid implementations of Comparable than valid ones.

However, the reason for the change is that there's a new implementation of the default merge sort that is much faster for partially sorted input and small collections so if we get over the adoption phase it will speed up a lot of legacy code.

Be warned that the Java 7 BETA plugins are just that, I've seen it create invalid byte code, something I haven't seen for a while. I'll be filing a bug report on monday (forgot to mail it to my home). It's good enough to test the Java features though, and it even packs some Java 7 refactoring (on e.g. the multi-catch statement).

InvokeDynamic is a pretty awesome new feature in JDK7 and will likely be tranformative for dyanmic languages on the JVM. For my mustache.java templating solution it increased performance on an integration benchmark by 25%.

Initially the performance impact will be none since the languages need to actually use the construct and then optimize it before it becomes a factor. But if I understood correctly during the Java 7 launch I visited in Utrecht, NLD, it will be a lot easier and probably quite a bit faster for the dynamic languages out there. But don't take my word for it, the slides of the launch should be easy to find and they contain a whole section on the subject.

It's called "using" in C#, IDisposable is the name of the corresponding interface.

It's too bad that they had to come up with a new interface for this, though. Closeable was already there, but it was in java.io, and they needed something in java.lang. Well, at least they support types which already implement Closeable.

Oracle has a detailed list [oracle.com] of the additions in Java 7. OpenJDK has relatively the same information [java.net] listed in a different way.

While it took forever to get JDK7 out the door, it's finally out and they can work toward JDK8, which is currently scheduled for release a year from now. The Oracle takeover is said and done and they are able to keep pushing new features into the language now. For all of us that use Java daily, this is a nice change.

I recommend looking over the feature list if you are a java dev. There are some really nice changes to make your day-to-day code just a little easier.

Going through the release notes, there really are a ton of neat and cool features going into the language. I hope that Eclipse will be ready for me to start playing around with some of the ones that are more IDE centric are supported!

Well, being under new ownership one might expect things to get better (or worse). I don't know, just a possibility. A lot of people have this software on their laptops and desktops so it might be significant.

that's the truth, for the language itself warmed over 1980s c++ concepts, then the promise of right-once - run anywhere in practice just a pile of B.S., the typical libraries used make business apps bloated hardware hogs.....now add to that the Oracle ogre.....fuck java, the jvm and j2ee. Superior lightweight alternatives are being embraced except for those companies with time and money to burn. And if you want to descend to an even deeper level of Hell, than sign IBM up for websphere project and watch the con-slut-ants descend like vampires

"Superior lightweight alternatives are being embraced except for those companies with time and money to burn."

Please list them with pros and cons.

BTW, Java was a stupid idea (VisualWorks Smalltalk was better then and might still be), but after fifteen years or so of suffering, there is a lot of good stuff about the Java platform IMHO, both code libraries and including the use of the JVM for other languages. Android is based around a version of Java. Everything has its problems. Java could use a lot more attention on the desktop, and I prefer a message passing model over a function calling model myself. Too bad Java has not been free-as-in-freedom from the start or it would have gone much further.

Actually, a better question might be: Is anyone starting anything new in java? I suppose there's lots of legacy java code that people are stuck with, at least until they can get around to rewriting it. And I've known a few organizations that are pretty much married to the language.

But I can't really imagine starting a new project in java these days, not until we have legally-binding assurances that using the language doesn't mean risking that we'll be sued into bankrupt

Ummm, I think you need to look up clean room design [wikipedia.org], which is supposedly what Dalvik is. New developments can be worked into Dalvik through that process, while definitely keeping Dalvik as "not Java". It's Java in pretty much the same way an AMD processor is an Intel processor. They do the same thing, pretty much, they just do it completely different ways (or at least ways that aren't based on each other). Result: Oracle is being evil, Google not so much.

Not quite AMD started with an intel design. When Intel couldnt make enough 386 chips they got AMD to do help them (and a bunch others). That meant 'here are the plans to make it'.

Wrong. If 8086 chips were going to be put in the PC, IBM required that Intel have a second source manufacturer for the parts. So Intel contracted with AMD to also crank out the chips.

Intel tried to cancel this arrangement when the 80386 was introduced, and a long legal battle followed. In the mean time, AMD started a clean room design of a 386 clone. AMD has had their own distinct designs since then, and I'm sure that there's just about nothing from pre-386 chip internals that is in any way relevant to current CPU designs.

Somewhere along the line, the two companies also did a patent cross-licensing agreement, which allows them to freely copy each other's concepts.

Can you tell us which valid patents (or at least likely valid; and no I don't mean granted patents) Dalvik is infringing which is part of the JVM?

Originally Oracle claimed copyright and patent violations. From what I read, all of the copyright crap has proven to be just that - crap. And of the supposed 236 patents which Dalvik violated, over 220 are patents which should have never been granted by the USPO. So on and so on; leaving only about three of any serious point of contention. So honestly, which actua

I think you may have confirmed the sarcastic humor of the GP. He never mentioned patents, instead he was poking fun at people who insist that "Dalvik is not Java". You on the other hand fell into his trap by essentially saying "Yes Dalvik is Java! Now what patents are being infringed?"

Actually I didn't fall into the trap. I'm normally the voice of reason of saying exactly what you're saying while being troll moderated to hell. I decided I'd try something different and try to see if he was joking or not and if not, to determine which, if any patents people believe actually have any merit. I mean, are you not a little curious to read about these so called few patents which, according to some, may actually have at least some debatable merit? I know I am.

Not saying they are valid just answering your question. There are a couple of more and I even think that Oracle was ordered to reduce the claims down to three distinct violations, of which, I am not sure if any of these were cited.

However, Google is in a sort of hot mess right now because all of the patents have to be proven invalid, a recent review of Google employee's email show that they were indeed worried about the legal ramifications of

Well many in my circle have noted that an immediate roll out of Java7 is not warranted at this time, in fact discouraged. The update 26 of 6 is good enough for most customers now and Java7 should be used in small installations and test beds.

Not dissing what you have here, VMWare support is a biggie in my book, but this is the x.0 release. Maybe we should give Oracle the benefit of the doubt (OMG I'm really saying this?) and wait for them to provide the support later.

I actually went and read the blog post, and it has the following comment now:

Hi – The supported platforms page was mistakenly created using a standard Oracle template which is not applicable to Java. It will be updated to clarify that we support Java explicitly on certified platforms (eg those called out in the page) and on other platforms as long as we don’t run in to platform specific issues. In that case (eg, if VMware is broken) you will have to go to the platform vendor for troubleshooting and a fix.

switch from using Java as a teaching language to something like Python

I think it helps very much to have a statically typed language instead of a dynamically typed language used in teaching (regardless of Python vs. Java). Much better feedback for the student in figuring out why things work and don't work, enforcing designs, and lots more than I won't bother to enumerate.

For everything that Java does, there is a better alternative under a more functional language.