Will Sun Open Source Java?
capt turnpike writes "According to eWEEK.com, there's an internal debate going on at Sun whether to open-source Java. (Insert typical response: "It's about time!") Company spokespersons have no official comment, as might be expected, but perhaps we could hear confirmation or denial as early as May 16, at the JavaOne conference. One commentator said, "Sun should endorse PHP and go one step forward and make sure the 'P' languages run great on the JVM [Java virtual machine] by open-sourcing Java." Would this move Java up the desirability scale in your eyes? Could this be a way to help improve what's lacking in Java?"
"Open Source" covers a LOT of licenses.
What changes and how would depend upon which license was chosen.
"Will Sun Open Source Java?"
No, haven't they already said that? Like hundreds of times? And does it really matter?
"Sun should endorse PHP and go one step forward and make sure the 'P' languages run great on the JVM [Java virtual machine] by open-sourcing Java."
"No", who would run PHP on Java anyway? Why? Why would open-sourcing it help?
"Would this move Java up the desirability scale in your eyes?"
No, Java is already desirable in my eyes.
"Could this be a way to help improve what's lacking in Java?"
No, what is lacking?
People who complain that Java is slow, should be open-sourced, and so on have never seemed to had a clue.
Certainly couldn't do worse.
No boom today. Boom tomorrow. There's always a boom tomorrow. - Cmdr. Susan Ivanova
I currently avoid Java like the plauge, my reasons are the same reasons that java isnt included in debian... http://www.debian.org/doc/manuals/debian-java-faq/ ch5.html#s-license-concerns
if they address those license concers i would be much happier...
"I reject your reality, and substitute my own" - Adam Savage
... and just do it.
.NET, so Java *will* be open source some day anyway. Sun needs to get at least J2SE out there before .NET runs on every electronic device available.
.NET is looking like the only alternative for managed coding on handheld platforms. (Cellphones are not yet good PDAs, ok?)
WINE did it for Win32 and Mono did it for
Now that Sharp's Zaurus has dropped Java,
SLM
main() {1;}
I still fail to see the benefits of "open sourcing" Java. How will it be improved? It's not as if the engineers at Sun are stupid and don't know how to engineer enterprise software. Don't you think Sun has heard that same complaint from some major league/big $$$$$ customers and done everything they could to improve said performance?
Even if they *do* open it up, Im sure the slashdot community will still hate them because they don't use a GPL variant license. Its a lose-lose situation for Sun, I don't get why they would even consider it. Is there a business case that will generate a 9-figure revenue jump from giving away the source for Java? I don't see it, but Im sure someone around here will happily clue me in.
all the things java was supposed to be great for, all the portability, consumer gadgets, smart coffee machines, etc. there's where Sun could really benefit most from open sourcing. There just isn't that much of a reason to use it on the net anymore, unless you work at a financial institution, the technology at large is just moving too slow. But when hobbyists can easily adopt java to connect the things around the house, that will be a big push forward for everyone. and open sourcing java only speeds up that barrier that keeps most java programmers working on desktops and servers...
Open sourcing Java? Are you kidding me? Chaos would reign. Every month new features would crop up and we have to keep learning and learning and learning. Look at Ruby on Rails, new features every couple of days. Nobody can keep up.
No no no. Let Sun handle Java.
"One commentator said, "Sun should endorse PHP and go one step forward and make sure the 'P' languages run great on the JVM [Java virtual machine] by open-sourcing Java."
Explain that to comment to me, please. It makes no sense.
"Open Source" + "Sun Microsystems" almost certainly = "CDDL"
Microsoft's JVM was actually one of the fastest in the day and had extentions for a native GUI similar to eclipse. (Of course those extentions relied on illegal JVM tricks.) It was certainly much better than Netscape Java or early releases of Sun Java.
The main reason Java has a terrible reputation (IMO) is/was it's tendancy to hang/lockup/freeze your browser when an applet loads, and general clunkyness with Swing.
Business. Numbers. Money. People. Computer World.
Writing a fully compliant JVM takes a lot of time and a lot of effort, especially the class libraries. Sun spent years writing that code, and none of the JCP partners can be bothered re-writing it themselves.
IBM, BEA, Oracle, etc pay Sun to license their source code so they can release compliant JVMs.
So, it should be no suprised the the open *cough*IBM*cough* source community "demands" that Sun open source Java. Guess how much money a certain company would save getting free source code that they're paying to license now? In the same of "the open source community", they'd like nothing better than to get the #1 competitor's hard work for free so they stop having to pay them for it.
The Java spec is open for anybody the re-implement, the source code is viewable by all, and the JDK is a free download. Sun has stated that they won't stand in the way of Apache Harmony or any other open source project that aims for a full open source implementation of the JVM/JDK spec.
So what exactly is the problem?
This space left intentionally blank.
Actually, FreeBSD were given a license at no cost by Sun, and any not-for-profit organisation with a need for access to a Sun-maintained compliance test kit can get it at no charge. So it's really just a matter of having the motivation to ask.
Yeah, because what the world needs is more php.
I fear, some smart ass Java programmer will fork off the Java OpenSource and give some crackpot name like "Javalava" or "JavaJ" or "JuJu Bean" or "Grande Capacino"
I am scared...
"Don't let fools fool you. They are the clever ones."
Kaffe and GNU/Classpath are excellent, active projects with dedicated developers. Notably, GNU/Classpath has recently passed the 99% code coverage mark measured against the Java SE specification. Apache Harmony was started because Apache won't use code licensed under the GPL, not because of any technical defect in the work of the Kaffe and GNU/Classpath developers. Harmony is also making excellent progress and has a skilled and active community. Both are committed to making compatible implementations of Java, but licensed under the licenses their communities need.
The SCSL is going away in Java 1.6 in favor of some much more liberal licenses. I'll be able to compile and use it on my production FreeBSD server at work and not worry about being "tainted" as a programmer.
3 437481
http://www.internetnews.com/dev-news/article.php/
PHP is probably one of the best (worst) examples of what a language would look like if it was designed and developed incrementally in an open source community. It's hack upon hack upon hack. It's backward compatibility breaking changes is just about every point(!) release. Register_globals enyone? Magic quotes? Ambivalence towards types/objects - "type hinting". Arguably (and freely admitted by the designers) PHP is *not* a well designed language. It's a pragmatic ooops kind of language whose main advantage is a large (albeit somewhat amateurish) user base, and free availability. Java on the other hand - if anything - tends to be over-engineered. Swing is actually more flexible than even .NET Windows Forms (which was designed later). It's easier to combine widgets, e.g. put textboxes inside tree nodes, etc. Swing may be a little slow, but nothing Java has ever had that "hackish" feel to it. It's always well thought out. Same thing could be said about JSF, JDO and certainly EJB.
Sun has always taken great care of minimizing BC breaking changes. Sun has always taken pride in being a little on the conservative side, i.e. only introduce well understood technologies. This has been received well by the enterprise developer community. PHP is nowhere near that yet. There's still tons of BC breaking changes in store for PHP developers when PHP finally will get namespaces, unicode support etc.
To put it simple, the primary virtues of Java is nowhere to be found in PHP. And frankly, if PHP is the way a language looks like when it's designed by an open source community, open sourcing Java would possibly destroy it. A model like eclipse where it's formally open sourced but in reality still maintained by a single, competent organization might work, though.
Reading slashdot one-liner: (irm http://rss.slashdot.org/Slashdot/slashdot).rdf.item | fl title,desc*
Yared has long called for Sun to open Java, which, he said, is "great on the back end, but LAMP is great on the Web tier, as Google, Amazon, Yahoo, Flickr, MySpace and Friendster have shown.
Amazon is not LAMP.
Two major development platforms are .Net and Java. One is fairly Open Standard but not open source - and gets demands for Open Source. The other is not even open standard yet people accept this. Maybe the real issue is people can imagine a world where Java is totally open but don't ever expect .Net to be so don't bother discussing it (The wonderful Mono efforts aside)
As the two ACs who have been modded out of view said, that particular drug already exists - Jython - and is already supported in Java IDEs like NetBeans (via Coyote) and Eclipse. It's been interesting to see all the old urban myths about the Java platform being slow, bloated, single language and so on doing the rounds again though, I'd almost forgotten about them...
Please don't forget that utorrent requires Windows to run.
uTorrent is NOT self-contained. It requires the Windows API to run. This part of its footprint is not shown when you look at its memory usage, but that first 256MB of RAM that windows uses is the reason uTorrent looks so small.
I am much happier with Sun's Java than most open source projects out there. It's very high quality. I know that I may offend some people, but I think it's higher quality than Linux (as an OS, not kernel). It's my opinion though. Sun managed to keep it standard is admirable. I think Sun also deserve to make money/own the property it created. Why not develop open source version of it instead of asking Sun to open source it? One answer I think is that Sun does not have enough resource to fix bug or bring out features quicker for something as large as Java. This is a good argument. I think it could be addressed differently than Open sourcing it. For example, manage the development better. Provide better incentive for users to submit bug fixes. Promote Java support service so that critical bugs a company needs to be fixed is fixed quicker (it's there, but maynot be promoted enough). I develop Java enough to know that it's very hard to have a perfect tool to test Java standard. For example, there's no clear spec for Gridbaglayout. What you see isn't enough to implement an exact replacement for what Java has. This is just a simple example to show that stardard is hard to make, hard to be changed quickly.
This brings another point about Java standard. I remember JSF has many bugs that it tooks months to years to be fixed because the standard was broken. I think Sun needs to be much quicker than now to address these issue. These big problem should be fixed in a couple of weeks, or couple of months (2). Most people don't wait for a technology for a year or two to adopt it. They use alternative tech. This is usually a one way street and Sun will loose those customers.
I'm saying there is no time to lose. Newton is gone, Palm has hit the wall ... .NET mobile will be the only binary compatible handheld platform unless Sun act now.
.NET for embedded devices, and they're pushing it *hard*. The first words out of the mouth of every new MS guy I meet are "are you using managed code?". Every single presentation I've seen, block diagrams, feature lists, tools descriptions, every one has a block dedicated to managed code, c-sharp, and the portable dotnet framework right next to native code. It's pretty obvious that there was a directive from high on up of what to do and how to do it (I've never seen Microsoft so organized about something before). On the desktop side, they expect to kill Java by pushing out the dotnet framework with the next version of Windows, so things are currently pretty relaxed. On the server side, they are working on strong integration into all of their server products and all of their development tools (vb and asp replaced by dotnet versions). On the embedded side, they are pushing dotnet like it's the cure for every development issue ever.
As an embedded systems developer who has recently been dealing with Windows CE, let me tell you that Microsoft is pushing
The Java market is fragmenting. All these groups are taking it in different directions. The Apache people are re-implementing it, the GNU people won't deal with Sun Java, distribution is a mess. Microsoft offers a consistant product, a consistant platform, and a hard sell. Java is losing ground on the server side. On the embedded side, Microsoft is determined to "fucking kill [java]", and they're not resting. It's not all doom and gloom, Java will be around for a while. But it wouldn't hurt if Sun got off their asses and removed the obstacles in the way of their allies in the war against dotnet.
you are correct. but whatever we saved using java to get the project started, we have already spent trying to figure out why, oh, why java croaks on OutOfMemoryException when we have more than 8G of ram most of which is not being used.
on a more philosophical level, there is already an excellent VM that *can* use all the 8G and then some. it's called linux. using java to build apps because it's easy to program in is like using tonka trucks because those trucks are so much easier to handle than the real thing. after all, why pay commercial driver rates to drive a multi ton truck when you can get you own kids (for free) to 'drive' the tonka trucks.
i learned java back around '95, '96 and was really excited about it then. but after having used it on some really large projects, i have been really really disappointed and came to the conclusion that the only real contribution of the JVM was a serious neutering to most modern advances in the OS.
forget portable programming languages - use a portable OS - linux. and forget the V, use the M (tm).
anyhow, Guy Steel was right. i am looking at lisp right now (mostly for emacs tho).
People must be tired to mod you up. Performance isn't really an issue anymore and hasn't been for a couple of years. Blaming any perceived slowness on Swing is like saying C++ is slow because of Windows overhead. Most Java code doesn't make use of Swing (think server-side). As for the "122 ms", well, you just made that up.
Other problems with your post: Eclipse is an application; Swing is a language feature. A Smalltalk derivative (Squeak) is not a suitable replacement for Java. I'd go so far as to say Ruby and Python aren't either, though both are very powerful and are better suited to some tasks than Java.
Nice try at a troll...subtly nonsensical.
Pretty meaningless comment, unless you can supply some examples. I've done consulting and development for a number of large, lawyer heavy organizations, and none of them had a problem deploying Java solutions on linux. None.
"2. JVM is fat fat fat, it uses way more RAM than is reasonable."
Sadly uninformed, probably due to severe lack of experience with large applications. Per example, a couple of years ago I worked in a team that bid on and developed an application that, in a nutshell, receives up to 20Megs per sec of market data, breaks it up into itty-bitty messages, and then makes it available to any number of subscribing clients. Call it a proxy, if you will. We developed the app in pure Java, using the new NIO functionality. We competed with another team who started out in C, moved to C++ midway through, and were barely in a position to go alplha when we were ready to deploy. The client, since they were paying and had a lot of anti-Java staff, insisted on waiting, even though the delivery date had long since passed. When they finally had something to show, the apps were launched on identical hardware, and allowed to run 24/7. Our app ran smoothly, uninterrupted (except for a blown network interface) for the duration of the test. The other team had to restart their app several times a day, resulting in unnacceptable outages. Their restart time was, likewise, poor. Their app required 2Gigs to run. Ours ran happily under a Gig.
The client paid both teams for their efforts, then licensed our solution.
So, my quesion then is, where's the fat?
All of this is terribly ironic to me. I've worked with Java for about 6 years now. It's considered the Enterprise Open Source solution (because admin types typically confuse open source with "free and runs on lots of platforms) usually. So it's either Java or Microsoft in every shop I've ever worked for. No PHP. No Ruby. And often Java is paired up with Linux, MySQL, etc. So I find it funny (although I understand the point, but it's still funny) that people consider Java to be so difficult because it's closed source. In every shop where Microsoft is the choice, the decision is usually made because the stack is predictable. It's predictable because Microsoft controls every aspect of it from the database to the app server to the language you use to code on it. So open sourcing Java would probably have the unintended consequence of giving Java a perception problem in the eyes of manager types. It would become risky on the same level as Linux and MySQL and so instead of being the safe, "adult" part of that crazy open source stack, it would just become one more piece of it. Albeit a powerful one, but it would probably push more people into the arms of Microsoft. Sorry, but that's been my experience, given what I've witnessed in the industry lately.
Problem with this argument is that almost nobody runs Windows just to use uTorrent, while quite a lot of people run Java just for Azureus. The resources required for Windows are used by all applications (*including Java*), but most desktop users only infrequently use Java apps.
Business. Numbers. Money. People. Computer World.
I address question 1 elsewhere. There are legal barriers to convenient redistribution of the JVM.
Your second comment is a nonsequitor. My point is the Sun JVM is extremely greedy in allocating memory. You relate a story about a C/C++ project going poorly. Whether or not Java is a superior language and deployment environment for some types of applications (an argument I do not contest) is irrelevant to the fact that the Sun JVM significantly more memory than an equivalent program in a variety of other languages. There are many causes contributing to this, from the java gui classes, to common java programming style, to the Sun JVM memory fragmentation behavior and garbage collector. None of them is "fundamental". You could write better java code; you could clean up the gui classes or write better ones. The Sun JVM could be fixed or improved to have better behavior. On second thought I don't really know if the garbage collector semantics have any fundamental flaws, although I suspect they do not. In practice, however, all these problems do exist, and contribute to relatively plain longrunning java programs balooning to many tens of megabytes when other similar technologies (for example smalltalk) do not have any problems of the sort.
You may counter that java is nontheless a more practial virtual development environment than other available systems, a point I do not care to argue at this time. That is completely aside from the fact that the other comparable virtual execution evironments of comparable complexity do not suffer from nearly the same level of allocation bloat. Squeak for example executes a large virtual system complete with a wide variety of applications, runtime debugger and modifier, entire virtualized framebuffer, a comparably complex foundation library all within a few tens of megabytes, even when used over very long sessions. Java in similar situations will consume hundreds.
-josh
I have the impression that the last couple of months I see more people on Slashdot mentioning Common Lisp as a replacement for Java.
Here is a blog by a Microsoft ASP.NET dev describing the details (it's an interesting read):
http://weblogs.asp.net/scottgu/archive/2006/03/25
Note that some parts of MySpace still use
And just to add more proof (since I know that most here will be skeptical
-- "I never gave these stories much credence." - HAL 9000
The other main problem is Checked Exceptions, which force a programmer to write "try{" before the body of every method and "} catch (Exception e) {}"
No, not EVERY method. Just methods that that can reasonably fail (for instance I/O related operations), and that doesn't "know" how to handle the problem themselves. This helps you create well defined APIs, which in my opinion is one major reason there are so many frameworks and open source projects for Java.
Although relatively useless (if not harmful), these checked exceptions lead to a minimum of 122 extra CPU cycles per method invocation.
Evidence of this? Besides, it has been said so many times, but appearently it has to be said again. Processing cycles keep getting cheaper. Programmer hours keep getting more expensive. Trading a few cycles for a feature that helps you create more stable and transparent code is sensible.
catch (Exception e) {}
That is just about the worst thing you can write. Ok, maybe catch(Throwable t) {} is worse. That the first editions of Bruce Eckels Thinking in Java books were littered with those is evidence he just doesn't get checked exceptions.
Being bitter is drinking poison and hoping someone else will die
Really, i mean it. At the moment, it's hard to find good developers who can leverage the advantages of java. What advantages i'm talking about? Let me explain. I am managing a team of developers (senior & junior) developing a large piece of software. Basicly it's a j2ee app, but with a simple desing, avoiding entity beans, using hibernate etc.. .net developer, the cost of a longer development schedule is a hard thing to defend againgst the management. Please don't start the usual, java is more productive if you know how to do this or that. We usually can't find guys good enough for that. If you can, then it's good for you. Generally our developers are not much experienced or skilled, and this is again related to our budget. We have a certain amount of money, and we are unable to hire the super developers that can use java in a very productive way. .net windows forms, ms office integration requests etc. agains the advantages of .net, we have the huge advantage of depending on specs, and providing better cost alternatives.
what we have done for all the project has been following the specs. we did not do any tricks for windows or any other os. We did not do any tricks for any app server. And now, our solution is able to work on three major os's that we have targeted in the beginning, without even recompiling. we really wrote once, and we're running wherever we need.
Against the more productive avarage
this is our reality, and under these circumstances, the only way we can win against the ms shops doing the same job, is to use our platform independence. we can come up with zero licence versions of our software for small customers, using linux, jboss and postgresql, and it just works. the eliminated licence cost gives us many advantages, and this is how we are going to win. Other than that, there are many problems in real life, like customers falling in love with
so, go ahead, make java open source, and starting from the one man utility developer to IBM, let everyone change anything since they believe it is a better method of doing x,y,z... So 3 years from now, working on the new major version, my software will no longer be easily portable to other configs. It will be possible, but it will cost me much more than today. That cost my friends, will make us go down in the not so long run.
Having a technology based on strict rules, has it's own advantages. in case of java, i believe these advantages far outweight the cons, but that's just me. However, i don't think my argument will be nonsense for many enterprise development projects.
Quoting Deb Goodkin of FreeBSD Foundation (from here):
We spent close to $35,000 for this release. It is hard to estimate the future costs of maintaining the Java releases since we expect to build updated distributions in response to all security advisories released by Sun.
So, while the license itself might have been given gratis, this clearly shows that the process of obtaining it was cumbersome and costly, and the result is still a limited, version-dependent, binary-only distribution.
Yes, Java is still evil. Changing license for something more liberal would certainly help much with adoption here.
I call bullshit - just because you don't know how to set up your machine properly doesn't mean java has language problems.
Great for you; I never got it to work properly (Ubuntu and SCIM/Anthy). I first had to add fonts to some java-specific list to get it to show CJK at all. When I run the app with Swedish locale it refuses to let me input Japanese (it does not listen to the SCIM server).
I'm sure I could get it working with enough effort - but after one frustrating evening I'm not going to bother. Java isn't alone out there; just about every Java app has good equivalents without the hassle (including the Kanji app I was trying to use). And I'm certainly not going to be using Java to develop anything knowing that potential users will have go through the same mess I do.
I should not have to "set up my machine properly" - most users do not have the technical skills to do so. I should be able to select "java" in the package manager (or rather, select the app I'm actually interested in) and it should all work - but it doesn't.
Trust the Computer. The Computer is your friend.
2. JVM is fat fat fat, it uses way more RAM than is reasonable.
1) You do know that tools such as top and ps report a lot more memory than is really used? This has been adressed in the upcoming Java 6, which will more accurately report the memory used, you will likely see a decrease of 25-55% reported memory use on Linux/Unix, and at least 11% of real memory used.
2) You can use jvm startup parameters to limit memory usage and still get acceptable performance.
Being bitter is drinking poison and hoping someone else will die
That is the reason that with SUSE you can decide yourself wether or not you use it or not. e.g. for the upcoming 10.1 version the CD1-5 are pure OSS. There is an additional CD6 that will hold the non-OSS stuff, like Opera and Java.
That way SUSE lies the choice with the user, not with the distribution. If the user still decides to use it (and many will) they still have all the advantages as they have with the different other packages that are included with SUSE, including security updates.
Don't fight for your country, if your country does not fight for you.
Can't speak on the licensing, I'd say that the technology itself however is the complication in deployment. Java has a tremendous number of rough edges and that is was is the problem.
Now, before I take a moment to rag on your ridiculous RAM comment, let me assure you that I hate Java from that ground up. I find it to be little more than a virus.
JVM is thin thin thin. The fact is that most non-Sun implementations of the JVM are tight and small. In fact, from a performance perspective, Java is typically superior to compiled languages because of how it handles RAM. Before you blow me off, let me justify my comment. Thanks to the Java license and NDA agreements, I in fact can not say where I learned this information, but I have extensive experience in this topic since I was forced for extended periods to suffer the Java VM on embedded devices.
Java is a relatively simplistic (though strangley complete to the point of OVER KILL!!!) architecture/language/etc... It provides a language matched to a virtual machine matched to a set of somewhat poorly written libraries.
What makes Java superior to compiled languages is that it compensates for several key factors. First I'll refine my definition of a compiled language to clearly specify C/C++/Pascal/other non-garbage collected languages.
1) Application Developers are not System Developers
Using C++ as an example, most application developers use the standard implementation of new and delete. This is fine, but the first thing to keep in mind is that memory allocation for a C++ application that makes use of a lot of small objects tend to pay a huge performance price. C developers regularly shoot down the performance of C++ without realizing that it's the limitation in the C allocation routines.
Object oriented programming is typically very heap intensive. In many cases, developers insist on iterating through strings and lists far too much. Students are even taught in the university that data structures should be used absolutely everywhere. Of course they are taught Big-O and Little-O, but unless you're actually implementing the data structure classes and types, very little importance is placed on performance of these classes.
Strings are abused regularly since even though the allocation unit size of the heap allocator is limited to blocks of 16 bytes (for example), programmers will actually reallocate the buffer for a string to resize it from 8 to 9 bytes in length. By reallocating, I mean they will in fact allocate a new 9 byte string, then copy the original to the new buffer and delete the original buffer.
Application developers pay very little attention to the actual internal mechanics of the classes and functions which they use. To a certain extent, I can forgive them since an application developer is expected to think differently than a system developer. When we depend on system developers to write applications, they're often extremely fast, but relatively unusable.
So here's where Java shines, because of the garbage collection system and because of the relocatable memory architecture, memory is managed in such a way which decreases the cycles spent in allocation and deallocation of buffers. A well written JVM actually will actually either when necessary or when time is available compress the heap to maximize performance and minimize heap consumption.
So although Java seems like a memory hog, it's actually not that bad given the number of allocations and deallocations being performed by the developers. Sadly, the extreme memory use you're talking about is related to the poor system level development skills of application developers stacked on the additional layer which abstracts even more from the developer therefore making it less practical for the developer to understand the internals of the system.
2) System Developers make Terrible Applications
A system developer is typically biased towards raw high level languages such as C (not C++) because their used to making use of the stack whereever po
Programmer time is much more expensive than processor time these days. Therefore, many current programming languages are optimised to save programmer time first. C and C++ were designed in a time when processor cycles were extremely expensive, and therefore are optimised to save time at runtime instead.
As you have seen, java typically gets you results more quickly than C. In this case, since you simply took less time to get to your basic functionality, you could take more time to think about how to code more efficiently, and ended up actually writing faster code in the end.
However, java is not the only modern programming language out there. People have designed several new languages in the past decade. It seems reasonable to assume that some of those people deliberately set out to improve on java. Compared to such languages, java might appear to be very inefficient.
I'll leave it up to you to compare and decide. For instance, here's a comparison for web applications, done at JPL. (YMMV):
http://oodt.jpl.nasa.gov/better-web-app.movYes, you're right, it does cover a lot of licenses. In order to be allowed to use the trademarked term "Open Source" however, whatever license they choose must (a) comply with the Open Source Definition, and (b) be approved by the Open Source Initiative.
Sure, not all Open Source licenses are the ducks guts to all people, but there's pretty much an assurance of no evil in there. Even microsoft knows that!
"Men will never be free until the last king is strangled with the entrails of the last priest." (Diderot)
Only three things are certain; death, taxes, and apocryphal quotations - Ben Franklin.
You may not realize, but "libraries are the new language". Seriousely, what good is a cool language if you have to reinvent the wheel everytime you want to have something like a report printer with print preview - a bit upset on python, with which I'm fighting right now to get something nice for a business app, I would really like something like jasper reports for python. Drawing on the DC with wx sucks for more then one form, and using reportlab to generate pdfs sucks as well. I've settled on doing a mono-platform hack, generating html with simpletal and calling its print preview dialog through ActiveX.
I'll do the stupid thing first and then you shy people follow...
Sun don't allow redistribution or bundling of java JREs except under certain specific conditions. This makes java as a language unattractive to many organisations when compared with .NET and can also hurt developers tendering for work.
.Net. For the company, this means a single set of negotiations, one licence to review (Team A's app licence) and only 2 support contact points (Microsoft and Team A).
Lets take a hypothetical new company. So far, all they've done is bought Windows and installed their workstation and server population. Now they need an application to do Foo.
Team A propose a solution based on
Team B propose a solution based on Java. Now the company would have to have their lawyers review 2 sets of licences as opposed to one (Team A and Sun), and their support contact points climbs to 3. It also increases overall administrative hassle, as Java has to be patched / updated outside of their OS / application lifecycle.
Team B automatically look less attractive to the company because their hidden costs are much higher. If Sun just allowed Team B to bundle the JRE with their application, this would go away. Of course, then the different problem of every application trying to install Java comes up, but that can be got around by providing a 'JRE bundled' and 'No JRE' version of the products.
If you think that companies won't bother to review Sun's licence before installing Java, you'd be wrong... I've consulted at 2 different places now where they had their lawyers review the GPL and Java's licence before allowing deployment of products licenced under those.
Seriously, though, there are other problem domains out there. A lot of them, in fact. And even in web development, depending on the complexity and context of the solution, might require vast amounts of code that never interact with a GUI of any kind. When you evaluate these languages and platforms in context's outside of web development, Java starts to look far more robust and flexible.
As another poster pointed out, where are the buffered readers for ruby/php? Sure File.open("name") might LOOK nice, but Java's addition of a buffer solves a common problem many programmers in the past needed to solve by hand. There are about a thousand of these examples where Java's framework is more complex than its ruby/php counterpart, but for good reason: it adds much needed functionality for the enterprise developer.
Taft
In order to be allowed to use the trademarked term "Open Source" however, whatever license they choose must (a) comply with the Open Source Definition, and (b) be approved by the Open Source Initiative.
Did you even read the pages you were linking to? The Open Source Initiative's own certification page, that you linked to, has this to say, right in the first paragraph: "the term 'open source' itself [...] can't be protected as a trademark".
I can call anything I like Open Source, and nobody can do a thing to stop me. The new Evil Proprietary License (a viral license that infects any software in the same room with a deadly curse that can only be lifted by the sacrifice of your firstborn) could be called Open Source. What it couldn't legally be called is OSI Certified(tm).
Maybe we'll finally see an AMD64 Java plugin for Firefox.
Oh, no! You have walked into the slavering fangs of a lurking grue!
Why are you arguing as if I stated that java uses more memory than C? Has downsides, sure, but the point is that Java is _the most memory hungry language in the entire world_.
You can go look at language shootouts showing example code and note how java always allocates the most memory. You can look at real world server applications (tomcat vs medus vs apache) or real world client applications (bittorrent vs rufus vs azureus). You will find that java is always using way more memory than the competition.
Java uses more memory than C.
Java uses more memory than C++.
Java uses more memory than Common Lisp.
Java uses more memory than Smalltalk.
Java uses more memory than Self.
Java uses more memory than Erlang.
Java uses more memory than Icon.
Java uses more memory than Pascal.
Java uses more memory than Simula.
Java uses more memory than Python.
Java uses more memory than BCPL.
Java uses more memory than Perl.
Java uses more memory than TCL.
Java uses more memory than Haskell.
Java uses more memory than Ocaml.
Java uses more memory than javascript.
There is _no_ common denomonator to these languages. Some have virtual machines as sophisticated as the jvm. Some have simple hand-hacked runtimes. Some are compiled. Some have features and dynamicism Java cannot hope to touch. Some are terse. Some are verbose. Some are forgotten and old. Some are quite new. Java uses more memory than every single one, and that is a major weakness of java in practical terms at this time.
-josh
why, oh, why java croaks on OutOfMemoryException when we have more than 8G of ram most of which is not being used
Because you are rank amateurs who are unable to read documents or use profiling tools such as jconsole or YourKit?
I diagree. Java is far to bloated and complicated. I've been using it since it first came out and I balk at the vast array of libraries you need to use or choose between to get anything done. I feel really sorry for anyone coming to it for the first time.
I really don't understand this. Having a rich and versatile range of libraries is a problem?
Personally I use Ruby (on Rails) these days for web development: convention over configuration is, imo, a much more important advance in the art than object-orientation was.
And Java has had this for years. I use JDO to persist my Java objects (it is a far more powerful and versatile system than Rails - much faster, and can persist to non-relational stores as well). How much configuration do I need in principle to describe my schema? Nothing but a list of classes. By default, the schema is created and mappings are automatically set up based on the field names of my classes. By default, no configuration needed.
How long has JDO had this? Since 2000!
Convention over configuration is nothing new.
There is _no_ common denomonator to these languages. Some have virtual machines as sophisticated as the jvm. Some have simple hand-hacked runtimes. Some are compiled. Some have features and dynamicism Java cannot hope to touch. Some are terse. Some are verbose. Some are forgotten and old. Some are quite new. Java uses more memory than every single one, and that is a major weakness of java in practical terms at this time.
I know. This is a real weakness in Java. It would have been great if it was a far more memory efficient languages, because then it could have been used in a wide range of low-memory situations like embedded devices, PDAs or mobile phones....
Er - something wrong with this argument, perhaps?