Will Sun Open Source Java? 700
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?"
all the things java was supposed to be great for.. (Score:3, Interesting)
Someone once said... (Score:3, Interesting)
Make sure 'P' Languages run on JVM.....huh? (Score:4, Interesting)
Explain that to comment to me, please. It makes no sense.
Re:No (Score:5, Interesting)
No, haven't they already said that? Like hundreds of times? And does it really matter?
Sure it matters. A lot of people have issues with it because of the license. It would clearly expand the number of potential adopters to go open source. More adopters will mean better tools.
"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?
Well, I agree with the first part. But presumably integration will get better/faster in open source.
"Would this move Java up the desirability scale in your eyes?"
No, Java is already desirable in my eyes.
But a lot of people would find it more desireable. You can trust that java won't go away in open source, whereas you can't really say the same as long as SUN is at the helm.
"Could this be a way to help improve what's lacking in Java?"
No, what is lacking?
Mostly modernizing. The pace of java development is glacial, compared to say what is going on in C# or Ruby. People with specific integration issues that can't get sun to address compatibility problems are stuck.
People who complain that Java is slow, should be open-sourced, and so on have never seemed to had a clue.
There's no doubt java is still slow in a number of contexts. There are also obvious opportunities for performance enhancement that could be addressed in an open source process. I recently benchmarked ten of my applications in c++ and java, java is about 2x slower for most of the cases I tried, and never faster. To me, that's perfectly acceptable, but java could make more inroads into other areas of computing if it was more competitive in performance. More inroads means more developers, and that means better tools, which is what I yearn for.
Re:Third-Party JVM (Score:3, Interesting)
Yes, sure (Score:1, Interesting)
This same exact rumor has been spread several times before. And it always ends up with the same thing: it's a basic part of Sun's strategy to keep full control over Java, therefore it won't be open sourced. Now stop daydreaming.
Re:too little too late (Score:2, Interesting)
Re:Why Should Sun Do This? (Score:5, Interesting)
I don't have the Sun JDK on my Fedora system by default because of the Sun license.
Meanwhile, Microsoft has been adopting ocaml as the next big language [microsoft.com]. For once, Microsoft is technically ahead of its competitors -- ocaml [inria.fr] (which Microsoft did not produce) is very fast and safe, and from a technical standpoint is much more impressive than C# and Java.
Plus, ocaml can be used as a pure functional language -- such languages eliminate almost all the reason to use (error-prone, difficult to guarantee correctness with) threads. Pure functional code is inherently parallelizable any time the compiler can say "hey, no data dependency here".
Ocaml is picking up quite a bit of steam -- there are a slew of open-source libraries for it out there, it's the only safe language that I'm aware of that provides performance comparable to C and C++, yadda yadda yadda. The INRIA ocaml compiler is open source (though, annoyingly, QPL instead of GPL). The runtimes and the stuff that you stuff into your code is LGPL. I didn't realize that Microsoft was backing it and integrating ocaml support into Visual Studio until quite recently, though. There have been gtk+ bindings for ocaml for a while, but MS may actually be ahead of the OSS world in providing complete ocaml bindings.
If you've never used ocaml before, wait until the first time you break in the debugger at a problem...and then step *backwards* to watch the problem occurring. It's simply delightful.
What's particularly satisfying is that C was well-designed -- for a specific set of systems and circumstances that don't apply to most application software development today. Ocaml is the first language in a long time that I've seen where I can say not just that the language has good ideas, but that it is really well-designed. It's also a lot better-suited to application development than C is.
Gah...sorry. Ocaml gives me the warm fuzzies.
Re:too little too late (Score:2, Interesting)
PHP and Java is oil and water (Score:5, Interesting)
How to avoid forks of JAVA (Score:2, Interesting)
Secondly, make a testsuite available to use for free (but only when developing against the GPL version of the VM) so people can make sure their VMs are compatible.
Thirdly, if you are a company that wants to use the JVM embedded in your product and want a closed source licence (either to ship the JVM as is or to modify it), you would be able to get one from sun (just like it is now)
Forthly, there would be rules governing the use of the JAVA trademark.
So basicly, forks would be prevented by controling the trademark, having a solid testsuite available so people can make sure their VM is still 100% compatible and that they didnt make any changes that accidently broke things and by encouraging people to submit changes back to the main tree.
Plus, just look at other open source projects. There are a few people hacking on the Mozilla codebase and releasing their own stuff but most people just follow what mozilla.org puts out (and/or tries to get their changes into official mozilla.org tree somewhere). Most GCC development (with the exception of Apple OSX stuff and a few platforms like MingW which (for whatever reason) seem to end up second class citicens) is done on mainline. Same with pretty much all GNU projects.
Along with WINE and a number of others.
The only time I have seen forks is the X fork where people didnt like the way xfree86 was being run and created x.org. These days most people have moved to x.org.
The licence and releases should cover all 3 flavors of java, J2EE, J2SE and J2ME.
Re:Third-Party JVM (Score:3, Interesting)
Re:No (Score:5, Interesting)
On the other hand, Sun's Java compiler has always had broken dependancy tracking (at least since I started using it heavily in 1999). (If a build has an error, the set of output class files may be such that the next run of the compiler skips a source file which needs to be compiled; this is mainly that it can generate the public class without generating other classes in the same file.) I think it's likely that, if Sun does open source the JDK, they'll get fixes for a number of annoying flaws of that sort pretty quickly, and things that are clearly wrong but aren't considered worth working on will be improved substantially.
Of course, there's essentially no chance that they'll relax their grip on the language standard, and they probably shouldn't, unless they turn it over to a standards body due to no longer being able to employ good language designers.
Re:This would help (Score:5, Interesting)
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).
Re:Bad idea (Score:5, Interesting)
Honestly, that's part of the problem.
Enterprise developers are used to a very particular envelope. That involves putting up with a lot of large-company bullshit and unfriendly tools. People in other environments have different needs that are poorly served by Java. And actually enterprise people have those needs too; they're just used to suffering.
Take all of the C#-inspired improvements in Java 1.5, for example. Many of them are about programmer convenience and improved expressiveness, neither of which mattered much until C# was a threat. Or consider EJB 3.0. EJB sucked for years until Hibernate, an open-source project, came along and beat the snot out of it. EJB 3.0 is basically a straight import of Hibernate.
Or take Ruby on Rails: you can't write that in Java. Why? My theory is that in large companies, they'll let you go away for three months and build infrastructure. Plus, neither Sun nor an enterprise architecture group trusts programmers with the kind of heavy wizardry that Rails uses to make things happen. So again, Sun gets its ass kicked by an open-source project.
If they really open it up, perhaps Sun can harness some of that power. But I'd bet they won't do it properly; Java reeks of "cathedral" thinking, and that papa-knows-best mentality is hard to shake.
What Java needs (Score:2, Interesting)
1) A free software license (GPL?) to allow for fast, active development, quick fixes of current problems, and license purity. Plus, imagine the boost if all those talented GCJ people put their efforts into the already rich Sun codebase!
2) Constant references! Please! Java's encapsulation is about as secure as Internet Explorer. A harmless getter method for a private member variable allows you to replace that variable with anything of your choice, because you effectively get a pointer to the member. The only current solution is to copy everything in the getter, which is unacceptably awkward and slow. So much for design by contract.
3) Sane memory requirements. Right now coding an inherently memory-intensive app in Java is very very difficult. I tried it once, and had to rewrite in C++ to get anywhere.
Re:Amazon is not LAMP (Score:5, Interesting)
Re:This would help (Score:5, Interesting)
Re:This would help (Score:3, Interesting)
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.
Re:This would help (Score:5, Interesting)
I have the impression that the last couple of months I see more people on Slashdot mentioning Common Lisp as a replacement for Java.
go ahead, make java obsolete forever (Score:4, Interesting)
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.
Comment removed (Score:5, Interesting)
Yeah and Duke Nukem Forever will run on it (Score:1, Interesting)
That's the reality. It's stupid, but it's the reality. What they don't seem to comprehend, no matter how obvious it may be, is that a fork in Java does NOT mean any changes to the JVM or java.* or javax.* or any other language changes. No! Forks have nothing to do with it!
What does this mean? For example, let's say Java goes Open Source, and so OpenBSD wants to include it. They would need to modify it to work with OpenBSD. That does NOT mean changing that language. It means changing the system calls it uses, etc. Yeah that's a FORK but it does not impact compatibility at all. Same with the idea of setting up Qt native peers for Swing (something I would love to see). That would be a fork, but would not introduce any language or specification changes.
So they need to stop their BSing about forks.
I think there are some other reasons why they aren't open sourcing it:
So as frustrating as it is, I just don't see the business case for open sourcing Java.
In the meantime, the real Open Source Javas (and components) like GNU CLASSPATH, GCJ, Kaffe, JamVM, etc, etc are really getting quite impressive. The OS community has really gotten behind a full OS Java system. I am sure that by the end of this year, you'll be able to run a fully OS compiled Tomcat, for example.
I have played around some with GCJ and it results in impressively fast executables. Faster than Sun Java. So maybe we shouldn't even care.
--------------
Carry a gun in California, legally [californiaccw.org]
Re:If they do, it will all depend upon the license (Score:3, Interesting)
Yes, 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 [opensource.org], and (b) be approved [opensource.org] 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!
Re:Bad idea (Score:4, Interesting)
You are missing my point. I am saying the enterprise approach to things only applies to a selection of software projects. Sun has ignored the ease-of-use and low-barrier-to-entry criteria for years and years. This means that small projects correctly don't use Java because it's not economical. They uses PHP, Rails, and the like.
But large projects often start as small projects, so Sun is, presumably accidentally, driving a lot of users away from Java. There is no good reason for this; the world wanted Rails, and Sun missed the boat. When I look at the Alexa Global 100 [alexa.com], none of the up-and-comers I recognize seem to be using Java. I know that Craigslist, MySpace, and Flickr are built on those non-enterprise technologies you disdain; in a few years I'd bet will see some Ruby on Rails entries, but none for, say, Java Server Faces or Struts.
Enterprise developers are, by nature, unlikely to use Rails yet because they are relatively conservative. Java is, in many ways, the new COBOL. But Rails, which used Ruby's greater power to dramatically increase ease of use, now has created a substantial user base for Ruby.
And unlike Perl and PHP, Ruby has the potential to be an enterprise-scale language. It's a much better OO language than Java in many ways. With a few improvements, some supporting tools, and another five years, you will see Ruby invading enterprise shops if Sun doesn't counter effectively.
Re:This would help (Score:3, Interesting)
Half a SuSE installation? I haven't even got Linux compatibility compiled into my kernel.
$ uname -a/ i386/compile/LAPTOP i386
NetBSD tietokone.panews.press.net 3.0_STABLE NetBSD 3.0_STABLE (LAPTOP) #0: Fri Apr 14 22:31:45 BST 2006 root@tietokone.panews.press.net:/usr/src/sys/arch
$ pkg_info jdk14
Information for jdk14-1.4.2.8:
Comment:
Java Development Kit 1.4.2
Requires:
openmotif>=2.2.3
xorg-libs>=6.9.0
Description:
This is Sun's Java[tm] Development Kit, version 1.4.2, made buildable
and usable natively on *BSD/i386 by Greg Lewis and a host of others.
Re:Alternate VMs (Score:2, Interesting)
Allow me to translate:
"I was once writing a serach engine in a language I didn't know how to use, and it took a gig of RAM to do something stupid that I told it to do"
Please, don't blame the language for your incompetence. I have this horrible feeling that the Flyweight pattern would have saved you much grief.
I haven't checked, so I could accept that Treemap is suboptimal for what you were trying to use it for. There's nothing that says you have to use it.
Disclaimer: I have in my possession (propriety commercial) code for a search engine that searches across over a gig of data. It takes up about 20MB of ram more than the data takes on disk in a flat file. It was written in a couple of hours.
Further disclaimer: I didn't write it. Although I did suggest a performance optimisation. It was returning results in under 10ms before the optimisation.
Oh alright I will bite (Score:3, Interesting)
It don't sound like they were but still.
Let me know point you to some of the most demanding applications in existence that push hardware to its limits.
Yes, games.
Now how many of the BIG titles that have your CPU and GPU groaning and gobble memory like it is candy are written in C/C++ vs Java?
This is as fair as your story for showing wich is the superior language.
The fucking fact is that it don't matter shit. I bet you could do the application you describe in perl as long as the person doing it is competent.
For fun, look up code that checks wether an IP has a valid format. You get the weirdest examples. Some look really cumbersome but would translate to fast code while some of the smallest regex would choke you cpu like a java GUI (Sorry had to get a java jab in to keep my cool license)
Frankly I think the fat is for a large part still there from the days of java applets that you got on your pentium with 32mb that took ages to load and then crash.
Funny thing, you still get those. They still take ages to load and then crash.
Java applets are offcourse not server side java BUT most people don't care. Reputation matters sadly enough.
Don't expect sympathy however as long as every java programmer says PHP don't scale. We all got our prejudices.
Re:No (Score:3, Interesting)
From the accounts I've read, SWT addresses the artifacts of Swing and AWT by making applications work really well on Windows, and really badly elsewhere. It targets the features of the lowest common denominator platform, instead of targeting the lowest common denominator features of all platforms like AWT does. Swing is better if you use a recent JVM with all the performance bugs fixed, and use the look and feel package that matches your platform.
Re:This would help (Score:2, Interesting)
But that's all irrelevant - just like the fact that this is a pkgsrc-wip package, which is a more or less independant addition to the package set, and in practice means that you cannot use the quarterly stable branches - the fact still remains:
===> jdk14-1.4.2.8 is not available for NetBSD-3.99.18-x86_64
Or anything else but -i386. Really: I want coffee with my toast!
Why I hate Java (Score:2, Interesting)
I'll stick to C++ and code in native development environments thank you.
Java's distribution policy does hurt it! (Score:4, Interesting)
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.
Re:If they do, it will all depend upon the license (Score:2, Interesting)
So basically Java is the Linux of programming languages? You must really hate choice and having a large amount of problems already solved for you. Java is not for those with NIH syndrome.
Would you use PHP without it's C bindings? (Score:3, Interesting)
Re:If they do, it will all depend upon the license (Score:4, Interesting)
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.