17 ms·
Java Trap, 2010 Edition
- 16s 16y agoI agree with the article and use truly free dev tools whenever possible, but for some there is no choice because of the platform they have chosen to target. If you decided to do Android apps, you'll probably use Java for 90% (or more) of the work.
- mcherm 16y ago...and that's exactly the point. Oracle is suing Google, complaining that they are violating Oracle patents by running Dalvik on Android. Perhaps they'll win, and every app written in Java for Android will become useless.[1] [1] - Note: not a realistic possibility. Someone would pay a billion dollar ransom instead. But the fact that the threat is out there, regardless how how credible it is, shows the problem.[2] [2] - Note: the problem in this case is NOT due to non-free implementations: no one questions whether Dalvik is sufficiently free. The problem in this case is software patents. The only proper fix for that is to change the law. Please call your congresscritter.
- bad_user 16y agoThe other possible fix would be for a Java/Android related alliance to get formed by companies with relevant patent portfolios and sue the crap out of Oracle.
- carson 16y agoGiven their extensive patent portfolio IBM would have had some hope in fighting a fight like that. I don't know that there are many others that have an interest and enough to fight with.
- famsam 16y agoUnfortunately, IBM has sold out to Oracle. Why is that not surprising?
- hga 16y agoI think "sold out" is way too harsh. I suspect ' more like they got tired of waiting for something that went from "doesn't look like it's going to happen" (but probably realized only after they'd put a fair amount of work into it) into "it will be a cold day in hell...". Sun demanded a mobile usage restriction. Oracle is suing a company that for technical and no doubt monetary reasons went around this restriction. Oracle now can't make up with Apache without undercutting their lawsuit, even if they were so inclined, which strikes me as unlikely.
- aphexairlines 16y agoHalf (or more?) of Apache's contributors are IBM employees. For example: http://harmony.apache.org/contributors.html http://harmony.apache.org/contributors.html
- sanxiyn 16y agoThis is not trolling. I honestly ask: why is TCK important? How does it prevent Apache Harmony from ever shipping a "real release"? After all, before OpenJDK, GCJ and lots of other free Java implementations released fine without TCK.
- pilif 16y agothe problem is that Sun/Oracles patent license only covers implementations that passed TCK. Conversely, by not passing TCK you don't get their patent license. Many of the patents in question are difficult (if even possible) to work around if you were to create your alternate implementation. This means that using any non TCK implementation of Java makes you liable for patent lawsuits (as seen with the Google case).
- sanxiyn 16y agoAh, so anyone using GCJ in a product could be sued the same way Google was sued. I didn't know that. The right conclusion to make seems to be that software patents are bad.
- bad_user 16y agoThe other conclusion would be that Sun, and now Oracle, are schizophrenic hypocrites: let's not blame it solely on software patents.
- pilif 16y ago> Ah, so anyone using GCJ in a product could > be sued the same way Google was sued. I > didn't know that. this is exactly the point. And this might also be (one of) the reason(s) why Google PR is calling the suit against them a suit against Open Source in itself.
- rbanffy 16y agoI believe the GCJ is vulnerable because, like Dalvik, it's not derived from the OpenJDK.
- deleted 16y ago[deleted]
- rbanffy 16y agoDidn't Stallman write an update to his original? It's really hard to miss, right under the title, in big bold type: http://www.gnu.org/philosophy/java-trap.html http://www.gnu.org/philosophy/java-trap.html
- bobds 16y agoI was browsing Wikipedia's list of Java implementations recently, so I was wondering in what way the Java Trap still exists, as now you can find dozens of both proprietary and open implementations. http://en.wikipedia.org/wiki/List_of_Java_virtual_machines http://en.wikipedia.org/wiki/List_of_Java_virtual_machines
- kprobst 16y agoThe read from the Oracle lawsuit is that using any of those will get you sued. I've read many arguments about how Dalvik is 'different' and some or all of these are 'safe' and so on, but the reality is that 'safe' is whatever Oracle decides it is.
- bobds 16y agoIcedTea for example, unlike Dalvik, has passed the TCK, which from my understanding makes it Oracle-approved. I don't really understand how this whole thing works, so I might be wrong.
- hga 16y agoIcedTea is a OpenJDK fork, its major purpose was to replace those parts of the the JDK that Sun just couldn't open source (e.g. because they were based on licensed code that Sun couldn't make arrangements for). It was Sun approved, and I see no reason Oracle would change that unless they want to fsck with OpenJDK in general. But, again, who knows? Oracle is the new Java steward and their polices, so far some good, some bad, are demonstrably different than Sun's were.
- 16y ago
- nadam 16y agoWhat is not clear in the article is that languages and platforms are almost completely orthogonal in most cases. If we are speaking about the Java platform lock-in, languages are irrelevant, because I can use this platform from multiple languages. Even if I use Python, I can be locked into the Java platform because I call existing Java classes (using Jython). Also, for example whether Java the language is good or bad is irrelevant, because I can use Scala to compile to the Java platform, which is the best programming language I have ever seen (for my taste at least). I can also choose to target the .NET platform from Scala. So Java platform lock-in can be a problem, I understand. But this seems to be totally orthogonal to the topic of from wich programming languages to which platforms you can compile. These different issues are somehow mixed in the article I think.
- jacobolus 16y agoThe article’s argument is this: If you write your code in Python targeting Jython and the JVM, and the Java platform becomes unusable, there’s still a lot of your code that can be easily ported to run in CPython or IronPython or PyPy or something. If you write your code in Java and the platform becomes unusable and Oracle decides to squish alternative Java platforms, then you’re stuffed.
- nadam 16y agoOk, so the problem is that Java the language supports only one target platform. This is not completely true, I don't know too much about about J#, but as far as I know using J# basically you can compile your program written with Java syntax to .NET.
- hga 16y agoJ# is capped: the last version was shipped in 2007, it is supported by VS 2005 (now superseded by two newer versions) and support will end in 5 years.
- koenigdavidmj 16y ago
- tickle_me_elmo 16y agoAt the multinational I work at, we recently upgraded to Java 1.5. By the time we have to upgrade to Java 1.7, I expect this little storm-in-a-teacup to be well and truly forgotten.
- hugh4life 16y agoI really wish more effort was put into D... I think that's really the best path to freedom vs Java and .Net... I wish Nokia would would adopt D because nobody wants to use C++ and Python is slow... I just saw this on twitter... http://twitter.com/casperbang/status/27134952930 http://twitter.com/casperbang/status/27134952930 "Java has an official open source reference implementation, but is not free. C# has only unofficial open source implementations, but is free!" http://www2.research.att.com/~bs/bs_faq.html#Java http://www2.research.att.com/~bs/bs_faq.html#Java "Java isn't platform independent; it is a platform. Like Windows, it is a proprietary commercial platform. That is, you can write programs for Windows/Intel or Java/JVM, and in each case you are writing code for a platform owned by a single corporation and tweaked for the commercial benefit of that corporation."
- Keyframe 16y agoWhich D, 1 or 2? I have used D for several years and know a few people that also used D for a longer period of time. Consensus is that D is dead for all practical purposes (especially D2).
- hugh4life 16y ago"Which D, 1 or 2?" D2 of course... "Consensus is that D is dead for all practical purposes (especially D2)." BS.. There is a chicken and egg situation with D... if somebody big doesn't put some backing behind it then it will go nowhere...
- Keyframe 16y agoThere is no chicken and egg situation with D anymore. It has been around for 10 years. D1 at least. D1 and D2 are different beasts. Tomasz wrote it better than I can right now http://h3.gd/devlog/?p=22 http://h3.gd/devlog/?p=22 and I respect his view because, if nothing else, he is the man that wrote the largest code base there is written in D (for his Nucleus engine and tools). Main problem, among MANY, is that people who are working on D these days are not coding in D at all, not serious projects at least - otherwise they would see fairly quickly what is wrong with it. This topic has been covered among D community by large now, you can dig up fallout of tango team from D2 and numerous sagas alike on digital mars newsgroup.
- jakevoytko 16y agoJNI minimizes the Java trap, since your entire program doesn't need to live in the JVM. Other functionality can be implemented in native code, and it will work with Java just fine. Oracle does not control native code, so they don't control what platform you target in the future. JNI is not a panacea - your code still runs on Oracle's JVM. But it provides an escape route, since pieces of your application can be ported away from the JVM without requiring an entire rewrite. If you've reached this escape point, yes, you're wasting time by porting your application away from Java. But you knew Java is a closed platform owned by one company, and you took that risk.
- tomjen3 16y agoEven more importantly, you can start the JVM from C code -- indeed 'java' is nothing more than a simple wrapper around the necesarry DLL calls.
- devmonk 16y agoI think the author is just taking advantage of Java's name having been drug through the mud by Oracle to push his point-of-view. Many of Apache's projects are Java-based, and I don't seem them making any effort to port all of them over into a different language. Though Oracle stunk up JavaOne this year, and the lawsuit against Google is making Oracle look like a supreme ass, companies like IBM, RedHat, SpringSource, and many, many others have a significant investment in Java. Java has been and will continue to be close to the top of Paul's heap in terms of jobs for the foreseeable future: http://www.indeed.com/jobtrends?q=java%2C+Python%2C+Javascript%2C+C%2C+C%2B%2B%2C+PHP&l= http://www.indeed.com/jobtrends?q=java%2C+Python%2C+Javascri... http://www.indeed.com/jobs?q=java http://www.indeed.com/jobs?q=java However, I would be the first to say that if you are looking to the future, explore dynamic and functional programming languages. If I had to pick one right now, I'd lean toward Ruby, not because it is the most well adopted (and for goodness sakes, it has had enough time to be), but because the language itself is great, and it has a growing and thriving community. But Java is not dead yet, and it is far from a trap.
- mbreese 16y agoI don't think that Apache would start porting existing projects, but do you think that there will be many new ones? Or how many existing projects will have any significant effort put behind them? Imagine, if you will, that there were no Apache. What would the Java landscape look like today? If Java at Apache flounders, the platform as a whole will also diminish. Java has thrived for so long in a Microsoft dominated world thanks largely to third-party open source efforts. If a (the?) major contributor of open source code in Java goes away, which direction do you think Java will go? "Thriving community" is not how I see this turning out.
- devmonk 16y ago"do you think that there will be many new ones?" Yes, I think there will continue to be some new projects, and other projects will fall off. Apache isn't the end-all be-all of Java projects, however. Several of the larger newer projects were under SpringSource's wing, and there continue to be new projects there. And there's Codehaus. And some Java projects under GitHub, Java.net, SourceForge, etc. Then there's Groovy, Grails, and related projects. JRuby (formerly at Sun, now at EngineYard) is Ruby, but it allows some reuse of other Java projects. Android (like the author states) is a subset of Java, so all of those Android app projects. Kindle's KDK is Java. Your cable box may even run on Java. If you've been only looking at Apache for Java growth, you've been looking in the wrong place. "Or how many existing projects will have any significant effort put behind them?" The Java projects at Apache have had continued effort put behind them, but some of the people that would have put effort towards Apache projects have spread out into some of the places I mentioned. "If Java at Apache flounders, the platform as a whole will also diminish." That's BS. If Apache fell on its ass, Java would still survive. See all of the other projects I mentioned, plus all of the current Java jobs I mentioned. Where "Java" itself isn't the new hot thing, Java is dominant, and things using/requiring Java are hot, for example- look at this Google trends of Java vs. Android to see what I mean: http://www.google.com/trends?q=java%2C+android http://www.google.com/trends?q=java%2C+android
- rbranson 16y agoI agree with the article, but I'm also starting to not see why Oracle even cares about Java anymore. There are enough fantastic free / open source products available that if you told an investor you were starting a company to build J2EE infrastructure, they'd probably laugh you out of the room. At this point the only reason to use a commercial J2EE platform is either lock-in (it'd be too much time to move to open source) or for some corporate reason (support, big name, impressive, etc). In what other ways can Oracle monetize the Java platform at this point?
- doki_pen 16y agoSummary: "I don't agree that users deserve freedom, but if someone takes away my freedom, then its wrong." I'd love to hear his reasoning for disagreeing with RMS's ideal of user freedom.
- adbge 16y agoA BSD license gives the user near absolute freedom to do what one wishes with a piece of source code -- they can sell it, modify and make proprietary, integrate with existing proprietary licensed projects, etc. On the other hand, the GPL imposes heavy restrictions on what a user can do with a software's source code in order to preserve other users' freedoms. That's the fundamental split in permissive licenses vs copyleft licenses. It has been argued to death and the author probably (correctly) assumed that most readers are already familiar with it.
- doki_pen 16y agoOnce they distribute it, they are not just users anymore. The people who receive it are the priority with GPL. The major difference with the GPL is that the user is king.
- doki_pen 16y agoWhy does anything need to be run the TCK? Why does anything need to use the name Java? Isn't this more of a people problem then a licence problem? Am I really to believe that if someone doesn't have access to Oracle's magical testing kit then it's impossible to make something that runs java source code? Isn't it more just a corporate perception problem? Who cares?
- wrs 16y agoWell, that's what Google thought...after they spend a few million dollars in attorney's fees, we'll see if they were right.
- matrix 16y agoLet's say we buy into the Java Trap Hypothesis; the question then is: what's next? What do you choose if you're a corporation with large projects and large teams of mostly non-rockstar developers. For the sake of the argument let's assume the JVM is out, and you can't use .Net (e.g. need Linux, or more flexible licensing, etc). I'm curious what people would choose, if given a clean slate for this kind of situation.
- ciupicri 16y agoFor Linux there is Mono for Linux and it has a pretty liberal license, a mix of MIT/X11, LGPL, GPL and MPL[1]. [1] http://mono-project.com/License http://mono-project.com/License
- alextingle 16y agoC? C++? (Or are you seriously suggesting that the average Java programmer is too feeble-minded to learn how malloc/free or new/delete work?) Python is a great choice too, provided you don't mind about performance (which is true in the majority of applications).
- jrockway 16y agoHaskell. Faster than java, easier than java, safer than java. And it even has a centralized repository of libraries.
- flogic 16y agoOk. From my limited understanding of the FAQ. Sun agreed to release the TCKs without "field of use" restrictions when they entered the community process? But they failed to meet that obligation with the JavaSE TCK? Isn't there some legal structure to force Sun/Oracle to meet that obligation?
- hga 16y agoWith the JavaSE TCK for the Apache Harmony project. There may be a legal structure to address that, but for anyone who depends on the good will of Sun, now Oracle, which probably includes IBM, it certainly wouldn't have been practical.
- JVerstry 16y agoDe facto, if Oracle/Sun refuses to TCK any independent implementation of Java SE, while tolerating their implementation under open source license, then there is ground for anti-trust action. The argument being that 3rd parties have no means to validate their implementation. Hence, there is no practical way to implement Java SE independently. Considering the dominant position of Oracle/Sun, we can't exclude the possibility that the European Commission will start a new anti-trust investigation against Oracle/Sun.
- itissid 16y agoWas there not news yesterday that IBM and oracle are going to work together on Open JDK?
- kaffiene 16y agoThe article is FUD. Java is too important to too many people to not be around any time soon. Also, there's a GPL'd release and IBM's Java.