Beyond An Open Source Java 550
Karma Sucks writes "LinuxToday is featuring a intriguing article on why Sun should open source Java, as a stronger followup to the recent ESR saga that was reported here. The writer notes: 'Sun needs to do some radical things to improve its chances of survival, and all of them involve Open Source in some form or the other.' One thing the article fails to mention is the threat of Mono, which should be of special interest to Sun, with its vested interest in GNOME."
That would suck for java... (Score:5, Insightful)
Open cool, but still keep distribution rights. (Score:5, Insightful)
When you have a cross platform interpreter, you need to make sure there is consistency. For example, Microsoft JVM ruined it for alot of people since developers will forget to debug it on Suns JVM, causing huge incompatibility issues that they blamed on Sun.
Re:Java, who needs it? (Score:5, Insightful)
Qt and GTK are not even languages, what the hell are you talking about? You are comparing an enterprise level language with a GUI library! Java is not Swing!
Not sure this is what we need (Score:5, Insightful)
The worst thing that could happen... (Score:5, Insightful)
I mean, Sun could still have a vested interest in an open source Java and still derive revenue from custom design services and support while displacing the Beast [microsoft.com]. It isn't even like the implementation is a trade secret. Heck, the Beast has developed Java bytecode interpreters in the past. But the Beast would love to displace Java with
Hence, Sun has a great opportunity here. Will they see it?
Re:Java is ok (Score:3, Insightful)
Nah. Java is cool for run of the mill OO projects where everyone else is using Java too, because everyone else is using Java.
If you want to look at something interesting check out Apple's Squeak, an implimentation of Smalltalk-80 where even the VM is written in open source Smalltalk.
Squeak [squeak.org]
KFG
Re:Not sure this is what we need (Score:4, Insightful)
I haven't seen that happen with perl or python. So, I doubt it will happen with java.
No relief (Score:5, Insightful)
Microsoft effectively broke Java by extending it to allow the implimention of native windows widgets that wouldn't run cross platform and since Sun owns Java they were able to sue, and win. I think if Java were open source MS would be free to break it again. It's an old argument and one that we have heard over and over again but it has staying power, I believe, because it is true.
OpenSource to the rescue? (Score:0, Insightful)
It's ludicrous to think that opensource in _any_ form will save _any_ company. No one has built a successful business model around opensource and Sun isn't going to do it either.
Mono?? A threat to java?? (Score:5, Insightful)
While Mono is cool project and, like many developers, one I've been following since it's inception, I don't see it ever overtaking Java, or
Re:Java, who needs it? (Score:5, Insightful)
>
>You do realize that this is impossible, right?
What makes you say that? In fact, the original poster is quite correct. The JVM *can* generate faster code. You know how? By doing runtime optimizations. Compilers have to optimize for what *might* be the best performance profile at runtime. Also, they can only compile for the lowest common processor. (e.g. A pentium II) The Hotspot Java VM can optimize based on how the code is currently being used, undo an optimization if it starts slowing things down, and use processor specific instructions! Natively compiled code just can't beat that.
Laughable? (Score:5, Insightful)
How so?
The term "scripting language" doesn't have the name meaning it used to; especially where Perl and Python are concerned. They both get compiled to an intermediate form and executed...just like Java. The only difference (other than the internals of the runtime) is that the Java's development "model" is closely related to it's static typing; i.e., you manually compile your code into a binary before executing. Trying to discount Perl and Python by calling them scripting languages is silly. The real issue is what works as an enterprise development platform, not the "taxonomy" of the language. As far as platforms go, Python has got a pretty good thing in Zope/Plone etc. And both Perl and Python have libraries for damn near everything you'd want to do. J2EE may be more prevalent at the moment, but in terms of bang for buck Python and Perl present some interesting alternatives in the long term.
What will happen (Score:5, Insightful)
Grrrr (Score:4, Insightful)
large, distributed enterprise apps
Has J2EE replaced CORBA in those scenarios where either the client or server is NOT written in Java?
One of the facts of life in the enterprise is that it is heterogeneous in terms of platforms, operating systems and (maybe) network technologies. Neither J2EE nor
RTFA (Score:4, Insightful)
What the author is talking about is a lack of the right communication from Sun on this matter. If Sun continue to advertise only WebSphere and WebLogic, they set the visible price very high.
Re:Java, who needs it? (Score:3, Insightful)
> Also, they can only compile for the lowest common processor. (e.g. A pentium II)
That may be true for traditional proprietary software, but NOT for F [fsf.org]/OS [opensource.org] Software. Witness Gentoo [gentoo.org]; I compile everything for my computer's specific processor. And surely you don't believe that the Hotspot Java VM does its optimizations 'for free'! Every runtime optimization check introduces a performance hit.
Apples to Oranges (Score:2, Insightful)
As for Mono... I will not state my opinion about Mono per se, it's not the point, but let me just say that Mono is trying to catch up on a Microsoft implementation. I fail to see how that compares with opensourcing Java, or even how it is a threat.
Just my two cents...
Re:OpenSource to the rescue? (Score:2, Insightful)
That said, the fact that sucessfull open-source companies are rare (red hat anyone?) means that open-sourcing java is not gaurenteed to save the company. Simply put, your argument is incomplete at best.
Sorry, I am a bit picky about proper logic.
Haven't we heard this once before? (Score:3, Insightful)
Hopefully (for Sun!) history won't fall into its old habit of repeating itself.
Re:What will happen (Score:4, Insightful)
Why?
I don't see that happening with C, C++, Perl, Python or any of the zillion other programming languages which have open-source implementations.
There's a spec out there, and Sun owns the trademark on "Java". Only compliant implementations can use it. If it doesn't comply, it's not java, it's a java-like language. And few will use it.
However, it is true that Sun may lose some degree of control, but only by the same way they're already losing control, by not developing it in the direction people need.
Few people want to fork stuff just for the heck of it.. but if Sun doesn't want to go in the same direction as their developers, they're going to lose control either way.
Re:Dumb question (Score:5, Insightful)
What about IBM Clones? That was successful... (Score:4, Insightful)
Open Source it, but under a new license (Score:2, Insightful)
Re:Java is ok (Score:5, Insightful)
As a professional Java developer who works primarily in Eclipse, Java is not your problem here.
Are you using a legacy app based around AWT? Then your GUI will most likely be annoyingly limited (with a couple of exceptions on MacOS X).
Are you using a GUI app using the Swing toolkit? Okay, yes, that's going to be slow -- I'll give you that. But that's similar to saying "Linux is ugly! Just look at (GTK|Qt|Tk|whatever)!"
Seriously, I'm tired of reading this drech on Slashdot. A properly-implemented Swing is reasonably fast (see MacOS X for an example), but unfortunately the Windows implementation isn't one. Before slamming the language, however, try changing toolkits -- I recommend SWT, as used in Eclipse.
Re:Java is ok (Score:3, Insightful)
My god, what sort of equipment are you running Java on, an abacus?
No, Java probably will not be used in the next uber-doom type progam, but for everyday usage type programs on fairly recent computers (built within the last couple of years) it's perfectly fine.
I'm getting the impression that there are a lot of really POOR programmers out who have no idea how to make a program run fast and use C or C++ as a crutch.
I also get the feeling that there are a lot of people out there who really haven't even tried a real Java application and just continually regurgitate the MS line.
Java (Score:3, Insightful)
Re:That would suck for java... (Score:3, Insightful)
Well.. I think the potential for optimization is greater after linking, at runtime. Just imagine inlining library calls, for instance.
The real advantage, however, is the jvm's access to real run-time performance data. Even if you waste 1% of the app's cpu-time on profiling and dynamic recompilation, you quickly make up for that by agressive optimization in the right places.
It would be nice if virtual machines stored some kind of native images/dumps between sessions, though, to minimize those startup times..
Re:Not sure this is what we need (Score:2, Insightful)
there are many in incompatible closed-source c++ compiler. gcc solved that problem by becoming the defacto c/c++ compiler on linux.
Windows does have many problems with library incompatibility issues. never heard of dll hell?
I still don't see the problem with opensourcing java.
Re:The worst thing that could happen... (Score:5, Insightful)
Open Source Java (Score:5, Insightful)
The questions Sun needs to ask itself are (1) whether or not Java is ready for that -- or is it more likely that differing implementations would lead to fragmentation, and thus nullify the whole point of Java?; and (2) if Java is ready to go open-source {and I personally believe it is}, what would be the best licence to ensure against fragmentation whilst not putting off purists?
All these things being said, Java is only a programming language -- a means to an end. Programming languages come and go. There is no reason why another contender should not arise to solve the same problems for which Java was invented, and eventually displace Java. Mono may be that, of course. It is just as likely that something totally new could arrive on the scene and change the whole picture.
I don't care anymore (Score:2, Insightful)
Now, I just don't care anymore. Java has fulfilled its function: it has made garbage collection and runtime safety acceptable among commercial programmers. The Java language and libraries themselves are nothing to write home about and never were. Java could have become a good, general-purpose language and a good, general-purpose platform, but it never really fulfilled its promise. It's become a mediocre specialty language mostly for some kinds of server-side hacking. Open sourcing it or opening the spec would only prolong the agony.
People should move forward and widen their intellectual horizons again. Look at languages other than Java and get over this illusion that we will ever have a single language in which everything will be done on every platform.
Re:What about IBM Clones? That was successful... (Score:5, Insightful)
The IBM PC was a hit from the start. Apple never had "all the market share" outside of the home computer market.
Nor did IBM ever license their PC architecture. The PC was built mostly on off-the-shelf hardware. Clone manufacturers just reverse-engineered the BIOS.
Later, IBM tried to regain a proprietary hold over the PC market by putting a bunch of non-standard stuff in the PS/2, like the Microchannel architecture, which never took off because none of the clone manufacturers bought into it.
There can be no doubt that IBM wanted the total market control.. indeed, they've been playing that game for over 30 years in the Mainframe market.
Re:That would suck for java... (Score:5, Insightful)
Like how gcc being open source causes incompatibilities with different gcc ports? Or how the x86 arch being open ruins the ability to write for it?
I really don't see how any of these arguments hold water except if you believe that somehow one company with proprietary control over a standard will do a better job than the open source community at writing to the spec.
The fact is, the Java spec is free as far as I know, and there's nothing really preventing someone from writing their own implementation and porting it to several platforms. Of course, they can't call it Java (Java is trademarked, as use of a programming language), but they can just as easily do everything but call it Java and have or not have compatibility problems. The only thing that Sun open sourcing Java would do is cut out a lot of the work developing the libraries and such which make up the bulk of Java's classes. Sun still owns the trademark and could write a license to prevent anyone using the term Java except Sun (they could even come up with a specific trademarks to clarify degrees of Java-ness which are allowed to be used by people). Open source doesn't mean Free software. And maybe people aren't happy with that. I personally don't care, since Free software wouldn't ever call it Java (maybe they'd call it Java-like), and I firmly believe that the core useful parts of Java will be written by the open source community eventually which will negate a need for Sun to do anything (well, except keep the specs open).
I just find it funny that the defense of keeping Java closed source is it's broken now, so having more people work on it will somehow make it worse. A company is like a bunch of cooks making one cake (or maybe two or three). The community at large is like a bunch of cooks make a bunch of cakes. If enough of the cooks get together, they can make a larger, better cake just like a company. But, there's a lot more cooks out there than there are in one company. And if what the community writes is utter crap, then no one uses it, and we'll stick to the old recipes. It's not like the open source community is a monopoly that can force you to use an inferior product. Only closed source setups work that way, thanks to things like forced bound upgrades from a single company.
C#, Java & GNOME (Score:3, Insightful)
Face it: Sun, one of the head developers of GNOME, is losing the fight of Java versus C#, which is the official language from GNOME (Linux)'s biggest enemy Microsoft. Where's the logic? I mean, if Java loses even *this* battle, then how are they ever going to keep any significant marketshare?
So yes, Sun should do something.
Re:What will happen (Score:3, Insightful)
"Oh, to finish this program, you need the Borland C++ compiler, because it uses some Borland-only calls"
"Oh, to finish this program, you need the Microsoft C++ compiler, because it uses some Microsoft-only calls"
"Oh, to finish this program, you need to port it to your favorite C compiler, because it uses standard calls that no compiler implement all off."
What the fuck? And this is just in classes??? I'm scared to find out what it's like in the "real world".
Re:Laughable? (Score:2, Insightful)
The author of the article is thinking in terms of what your boss is going to insist you code in because all the other bosses are insisting that their people code in it and thus it has built up an nearly unassailable position in the business code base and mindshare. MS, of course, is assailing it.
I'm afraid that's how so. Technical merits and suitability aren't even an issue to be discussed at this point.
In your own business and projects your milage may vary considerably. Lord knows mine does.
KFG
Re:C#, Java & GNOME (Score:2, Insightful)
The conspiracy minded might wonder if Sun sees Java -- not Linux -- as the most important part of the Java Desktop System [sun.com]. As long as people are migrating away from Windows, why not sell them an OS where Java is the preferred system programming language?
Re:Java, who needs it? (Score:5, Insightful)
Of course it won't! That's the point. The Hotspot compiler will generate the second piece of code because it notices you're using a Pentium Pro. If the JVM was running on a 386, it would generate the first bit of code, just like the C compiler.
Also, GNU GCC compiles code for processors like i686 that still executes on i386 by not using the i686-only instructions.
As much as I wish they did, not all OSes use ELF binaries. Besides, generating binaries for multiple processors creates a great deal of bloat in the binaries. Not to mention that the JVM will be able to optimize for future processers (when they come out) while the GCC binaries will only be optimized through the current processor.
Re:Java (Score:1, Insightful)
We switched from Java to C#, and it was a great switch, we're much more productive now:
- C# is a much better language than Java (pre 1.5).
- Development tools for doing GUI stuff (web or Windows forms) are much, much better than anything available for Java.
- Deployment on
Yes we're locked into MS products, sort of. If they ever do anything really horrible, we can do a rewrite: rewrites are much easier than first tries. But I've been locked into MS before, and the possible problems generally never turned into real problems. Nobody from Redmond came to grab my code. When their products sucked, e.g., VB4 or Access (data corruption), I switched to something that didn't suck.
However, developing in Java was absolutely a real problem. And we solved it.
That being said, C#/.NET is only as good as it is because of the competition from the Java world. Java 1.5 seems to be a good language, finally. I really hope that Java also gets a good development environment, good (easy to use) servers, and good documentation. I'd love to switch back.
Re:Not sure this is what we need (Score:3, Insightful)
Tons of people bitch and moan about java being piss poor for application X or application Y. Right now, I'm looking at an ostensibly "Java" Oracle Forms 9i form that will only run on one JVM, Oracle's JVM. It's convenient for them that they had the money to license Java so they could make their own JVM, its more convenient for us that most people DON'T have that ability.
Imagine for a moment that every company had the source to Java and the ability to hack the shit out of it to accelerate their own products. It already happened with both Oracle and Microsoft, which was wholly unrelated to the fact that the source to Java was closed. It becomes relevant to the argument at hand when you realize that they were two of the few companies who could embark on such a venture, simply because of prohibitive cost.
It's possible the only reason this fragmentation hasn't happened right now is because there's no open source JVM that's realistically close to running everything that Sun's can.
I'm simply playing devil's advocate here, although I do believe closed/open is not relevant to the fact that the MS implementation was incompatible. It was incompatible because they programmed it that way, irregardless of the fact that the source was available or not.
Re:Java, who needs it?/Bytecode vs. native code (Score:5, Insightful)
Java".
The front-end languages C++ or java don't really do much about the perfomance (except that you can manually optimize things you can't do in java because of missing pointers etc.) (*)
IMHO, java bytecode suffers from the following things (and so do the users of java programs) - [they are the reasons,I think, why all java programs I've seen so far (and all the not-for-java-crafted benchmarks) are running considerably slower than C/C++]:
Technical:
- Java bytecode is low level enough to lose certain optimizations (JITs have to apply decompilation techniques) which you can do in C/C++. You can of course compile Java natively (e.g. with gcj), yes. But then, you lose portability.
- Java bytecode is not low-level enough that you can take advantage of the features of the particular hardware. Java's ints are 32 bit. What if you run your numerical java code on 64 bit machines?
Political:
- The java bytecode format is so specific that it is impossible or rather hard (there was once a java backend for egcs, admitted) to get other languages like C/C++ to run on it. Why does one have to chose the platform java with the language java? I don't know
I'd like to have a VM for C++ *and* Java. That would surely rock and end some of the flamewars.
(*)- The often stated security argument (java has no pointers and is therefore inherently more secure than C++) would fall with C++ on a VM.
Re:Open cool, but still keep distribution rights. (Score:2, Insightful)
I'd like to know how "not let any 3rd party distribute their own Java" qualifies as open sourcing Java. See Open Source Definition [opensource.org]
What's more likely is that any 3rd party can distribute their own "Java", but they can't call it "Java". without Sun's permission because Sun owns the trademark.
Re:What will happen (Score:5, Insightful)
FYI, I can write a Java app that requires MS DLLs as well. It's not the fault of the language.
Re:That would suck for java... (Score:2, Insightful)
What a dumb article (Score:5, Insightful)
J2EE is small and easy, not large and expensive. Anyone can build JSP pages or use Servlets on a free but high-quality App server like Tomcat - this may not involve Enterprise Java Beans (the least used aspect of J2EE), but its still J2EE and it costs nothing.
How can
Why does Java need to be Open Source to ride the Linux revolution? High-quality Java VMs are ready for Linux.
Java is the most widely requested language for development, and its use is still rapidly expanding. Sun has nothing to fear.
OK without RTFA,, Sun does alright as it iit seems (Score:3, Insightful)
Heck look at the wave of new cellphones, they all have Java and Real as far as I'm aware. This is also where the DRM fight is going to be, not on your PC (otherwise I don't use the little plastic critters at all -- don't ask me).
Re:Dumb question (Score:3, Insightful)
Re:Dumb question (Score:3, Insightful)
Please point out to me one of the Approved Open Source Licenses [opensource.org] that "discriminates against commercial ventures".
Note that I didn't ask for licenses that happen to be suboptimal for using copyright law to protect specific business models, but those that truly discriminate about who can use or contribute.
At first glance, it would seem that a fair share of those approved licenses were in fact authored by "commercial ventures".
Re:Java, who needs it? (Score:3, Insightful)
Now here's the catch-22. All this stuff about making code perform better on the processor is BS. Unless you happen to have a platform designed for HPC (such as a Cray), your processor is otherwise spending that time doing nothing. (Memory wait states, cache misses, and other annoyances.) The thing to pay attention to is that the lost cycles don't matter. A
Unless programmers have a justification for a few thousand extra instructions a second (e.g. crypto cracking), their time would be better spent writing portable and maintainable code. The time they save from that maintainability can then be put into adding new features, and making their applications that much better. Especially since Java excels in the area of libraries. Dream up the most complex program you want, and I'll guarantee that 60-90% of the hard work has already been done for you.
Compare that to DLLs and staticly linked libs. Using C and C++ libraries back in the day, was more an exercise in frustration. Eventually you just said, "screw it!" and rewrote it yourself. Today, there are some very good libs for Unix, but there is still nowhere near the wealth of libs as Java has.
Re:The complexity problem (Score:5, Insightful)
classes.
Re: Biggest threat is Microsoft (Score:5, Insightful)
Doesn't follow. Open source or not, it would be trivial for them to use some feature which is only available on Windows. Sun can have all the source code they want, but if it can't run on other platforms (without effectively porting chunks of Windows too), then they're stuffed.
Open Source is wonderful for apps with a known interface. But Java isn't an app; it's a platform. One of its greatest advantages is its platform neutrality. While having a single company like Sun in charge of it may prevent Joe Bloggs from adding his whizzy new feature, it also prevents M$ from doing the same, which IMO is far more important. I think Sun have steered a fine line between locking Java up so tightly that no-one feels safe using, and opening it up so much that no-one can choose which of the multiple subtly-incompatible versions to use.
Re:Open sourcing Java give MS free reign (Score:3, Insightful)
Another ignorant article (Score:1, Insightful)
You can change it. You can give your new stuff to whoever.
You just can't call it "java", you'll need to think of a new name,
like "java++".
If you want to make changes and call it java, don't be an ESR and whine, just joint the JCP. Java is "community guided" open source. It's a new concept I guess, but new concepts do come up sometimes.
If you reject any new variants of "open source" you still have plenty of options - there are many existing open source java implementations.
By ignoring all these facts, the article is effectively saying
something quite different than what the title indicates. An open source java is not what is wanted -- that already exists in many forms. What's the problem then?
I can only explain by analogy-
let's pick Gimp. It's open source. Photoshop isn't. Now, I write
a paint program called BozoPaint, give away the source, but
say that, to keep some level of compatibility, changes to
the BozoPaint file format have to be proposed and voted
on by the BozoPaint steering group, which anyone can join.
Completely reasonable...
The author of this article evidently cannot tolerate an article
in which BozoPaint (and Photoshop) exists.
This is the thing that really bugs me about the Linux community.
Linux is great, but so many of the people who speak up about
it are wacos.
Re:Open Source Java (Score:3, Insightful)
Kind of like how Linus Torvalds completely lost control of Linux? </sarcasm>
Sun would retain copyright and the right to relicense or dual-license. The scenario could be parallel to Mozilla or Qt, but with Sun Java's existing huge userbase.
If the JVM (at least) was Qt style relicensed GPL, we might perhaps see some performance enhancements on Linux, as well as integration of Sun's JVM into GNU/Linux distros like Debian and Fedora Core. Sun would surely like that.
This makes a lot more sense than relicensing under BSD, as that would enable MS (say) to quickly release broken/incompatible JVMs in their future OSs without breaching their legal obligations and without giving the source away.
To sum up, My answer to your query (2) is 'GPL'.
Re:That would suck for java... (Score:4, Insightful)
Re:Laughable? (Score:4, Insightful)
1984: Anyone actually working in the IT industry today knows that PC clones are hardly a competitor to genuine IBM machines.
1993: Anyone actually working in the IT industry today knows that IP is hardly a competitor to NetBIOS and IPX.
1994: Anyone actually working in the IT industry today knows that Internet Email and the Web are hardly a competitor to Lotus Notes. (or you could use Compuserve)
1998: Anyone actually working in the IT industry today knows that XML is hardly a competitor to CORBA.
Now here we are in 2004: anyone actually working in the IT industry today knows that Perl and Python are hardly competitors to Java.
I've learned over the years that it isn't worth arguing with these people. Just let the change wash over them. They'll never admit in 5 years that they were so short-sighted.
Re: That would suck for java... (Score:4, Insightful)
Some might think that's a Good Thing as it helps discourage native code unless it's absolutely vital :)
Re:How does GPL dual licensing work again? (Score:1, Insightful)
No, you misunderstood again. See, copyright is immediately assigned (regardless of license) when a work is produced. You don't have to do anything. If you write an e-mail, it is immediately copyrighted to you. You can optionally register the work as yours, to prevent others from claiming it belongs to them, but under copyright law, you are implicitly protected.
Now, by default, copyright law affords no right to any party to copy, distribute, use, eat, burn, whatever any work that does not belong to them (in the sense of copyright law). Therefore, licenses were born. These say "we agree to allow you to use the work we wrote, on condition x, y, and z." That's why licenses are legal even if you don't sign anything. Because if you don't accept the license, you have no rights.
Now, getting to open source. The intrinsic problem with open source lies in the creation of a derivative work. I write some source code and post it on the net; as sole author, I "own" (in the sense of copyright) the work. However, if you come along and edit my code, you own the portions you wrote, whereas I own the portions I wrote (assuming that my licensing allows the creation of a derivative work.)
So, for example, Linux is not copyrighted to Linus Torvalds -- parts of it are, but the vast majority of the code is copyrighted by the individual people that make contributions. So in this case, Linus cannot "relicense the code" under some other license, because he does not own it all.
Now, being based on the GPL, MySQL cannot prevent anyone from making a derivative work and maintaining copyright on their changes; however, they can state that any would-be-submitter of a patch or change to the main MySQL tree must assign his copyright to MySQL, and not reserve those rights for himself. Nothing prevents Joe Bob Hacker from saying "fuck you", but he'd have to fork the project. So if he wants his bug fixed and put into the main tree, he needs to accept that his code will be copyrighted by MySQL, and not by himself.
Still with me?
So, because of this, MySQL "owns" (in the sense of copyright) the entire MySQL source tree, despite the fact that they are not responsible for much of the code. Because the source belongs to them, they can license it in any way they choose.
So, they don't need to keep two forks. Does that make any sense?
The real danger (Score:2, Insightful)
I call bullshit on this. If Sun released a GPL'ed version of Java, as they own the copyright to it, they can include whatever changes they made in their GPL'ed version into their own commercial version. On top of that, as they own the copyright to the name "Java", they could set the standards (as they already do) where if implementations did not conform to their standard, then the implementations could not be called "Java".
The real danger, which until now fortunately has been avoided, is when developers are presented with the choice of either having to open their source code when using the GPL Java, or paying Sun a fee for using the commercial Java. How can this be considered more "free" than the current situation where you can do what you please with your own software? If you want to GPL your software, go ahead. If you want to keep it closed, you are free to do so.
Currently as far as I understand you can implement Java any way you wish, as long as it conforms to Sun's standards. Isnt this what the OSS community has been calling for? Open standards? This appears to present us with both the advantages of OSS and commercial software. A central controlling body for the standard, with the openness to implement how anyone sees fit.
Re:Java is ok (Score:3, Insightful)
You're completely avoiding the real issue here. You can say "Java is as fast as C++" as much as you'd like, but that doesn't change the fact that most Java apps ARE slower to the end user. This may be because the libraries aren't loaded or the UI isn't as responsive, but the bottom line is that Java isn't keeping up.
You refer to "cheating-ass windows programs". I assume you're referring to programs like Office or Mozilla who have a quickstart option that loads the program into memory on boot. That's a whole different issue. Most native code programs start fast because there isn't much to start up, not because they cheat. There's a lot more to it than that, but my post is getting long already, so I'll explain the rest if you really want to hear it.
In short, just because a lot of people claiming Java is slow are idiots doesn't mean that you can just dismiss their complaints. There are a lot of smart people who want a faster Java too.
who cares of standards? (Score:4, Insightful)
IT has open ECMA specification - and Microsoft made a great P on that.
But the real programs will be made upon MS
Projects like www.DotGNU.org understands it well, so they are running behind (and trying to chase) the very MS libraries, not only the standards.
And Microsoft said that it is their strategy - add new technologies so fast, that competitors have no time to invent their own one.
Opensource is not the all answer (Score:5, Insightful)
Why? Well remember JVM and how Microsoft corrupted the compatiablity? Java's goal is to be cross platform and to do so means there needs to be a centralized development effort. If suddenly there are 50 versions of J2EE on the market, each with its unquie traits, which do I run? How do I know that the app I program will work on the others? If it doesn't run on everything, hasn't the point of Java been defeated?
I once worked for a company that was looking to port some of its Solaris & AIX Applications to Linux, but 3 months into the project, the question became what distros to support. They tried porting their application with some modifications. Got it to run fine on RedHat 5.x (it was a while ago), but then it took some playing around to work with SuSE and we never did get it to compile on Slackware. When they said they planned to support RedHat default only, meaning if system admins were using a tweaked box or kernal, we would not offer support. Needless to say, potential clients scoffed at the idea and after 6 months they decided that the Linux Market wasn't worth the hassle until some standards had emerged. This is why a lot of developers won't port to linux, especially desktop applications: too many variations.
I see the same potential of Java, to become slpit into so many forks, that it defeats the purpose in the first place.
I like opensource applications, but I don't think that Opensource is always the answer. Another good example is a good friend that is developing a support ticket application for the company he works for. I asked him, "Isn't there several GPL'd apps outhere that could installed within a couple hours?" He responded of course, but he put it this way: "I like to use my own code and not other peoples. Its a lot less messy that way." and I see his point.
IF it wasn't for opensource, I would have never learned how to program in PHP, PERL, and various SQL databases, it was a great learning tool, but like every tool, there is the correct tool for the job. I say this as I switched from Linux to Macintosh almost two years ago now and I am willing to pay for the luxury of having everything work. Just like we now pay for managed instead of self-managed servers for our business. There is only 3 of us and we now have enough business that its costing us more to run our own servers than to pay a little extra for managed services where the keep up with the updates and such.
All I am saying is that projects have goals. Sometimes Opensource meets those goals, but its not a cure all. The beauty is that we have the choice of using Opensource or to use a propritary solution.
Re:Open Source Java (Score:2, Insightful)
Re:Dumb question (Score:5, Insightful)
1. Tomorrow, Sun might decide to charge for a JVM. Then you will be screwed.
2. They might decide to drop Java, closing all future to all your beautiful programs.
3. What if Sun decide not to support your favorite platform? (Say BeOS, or Linux on PS/2, or HP48SX...)
With open-source, this is less likely to happen - though still possible. We can imagine for Java that we will always have some geeks ready to give a hand even if Sun dropped the whole thing.
facts? (Score:2, Insightful)
Orkut [orkut.com] is another example of a
Granted they are hitting some bumps, but I've seen java based shopping sites with bigger problems and fewer active users. They ended up taking the site down for weeks. Not to mention the site was unusable while up.
Just goes to show that it's not the language... it's how you use it.
A More Pragmatic Request (Score:2, Insightful)
the GNU Compiler for Java (GCJ) [gnu.org] posted a very nice and
much more pragmatic request to Sun [javalobby.org]. Reproduced below:
Re:Dumb question (Score:5, Insightful)
Sun has copyrights on one of many JVMs, which is closed source, and they control the name "Java" by holding the trademark. This is all, and this is not enough to effectively control the use of the language, even if they wanted to screw customers.
Re:Dumb question (Score:2, Insightful)
If we mean we can obtain the source code and read through it then it is defiatly open.
If you beleive that it has to be available under a GPL license, then it is not.
However the JVM spec and the language spec is unrestricted, the words "shut up and hack" come to mind.
Re:Java, who needs it?/Bytecode vs. native code (Score:2, Insightful)
I think it basically comes down to design intentions. The Oak project was intended to provide WORA with a sandbox model to reassure people that it was safe to run applets. The CLR, OTOH, was designed to allow people who already knew any VS language to write for .NET. I don't know quite what that means in terms of sandboxing, but I haven't noticed MS release an applet-style plugin.
As far as getting C/C++ to run on a JVM is concerned, I think someone with enough dedication and compiler skills could probably write a compiler which got most of it to run. Most pointer idioms can be rewritten, autogenerated mixins can simulate MI. Variant fields in structs could be tricky, although I think they could be hacked up. The question, though, is why people would want to run C++ on a JVM. Surely the reason for using C++ is obsession with speed or a desire to do really low-level stuff? If you're obsessed with speed, you should take to heart the mantra "Don't optimise. (For experts) Don't optimise yet", and if you want low-level stuff then you don't want a VM in your way.
Learn from Apple + Darwin and Open Source the JVM (Score:2, Insightful)
Re:Learn from Apple + Darwin and Open Source the J (Score:2, Insightful)
More assorted grumbling (Score:2, Insightful)
Are you saying that the problem is that they can not download it and put it on the Debian CD for redistribution?
Yes. Other more subtle problems of a similar nature lurk here as well.
If that is the entire problem, why can't they do it like the BSD port system, where the makefile downloads the most recent one and installs it?
That isn't the entire problem, but even so a BSD like port system is not a good solution for everyone. For example it doesn't work well for people who have low bandwidth or inconsistent connections. Obviously you're right to point out that Java is somewhat accessible to Debian and FreeBSD users, but that is not what Open Source means. I use the Sun JDK on Fedora for everything GCJ doesn't currently do. Still, significant problems would be solved if Java were more open.
I am not clear why you prefer AWT.
I am more pleased with the concept of AWT than with the actual implementation. As you say, it is dreadful. However, as I understand it -- do correct me if I'm mistaken -- Swing is built on top of AWT, which means that while it doesn't have to be slow, it can't plausibly be much faster. Also, AWT is certainly as cross-platform as anything else in Java.
Do you mean that the look and feel varies by platform? I consider that a good feature in principle since I prefer applications to be consistent across a desktop. Clearly that's a matter of taste though, and there's no accounting for it. Naturally the lack of GTK+ and Qt based AWT implementations makes things much uglier than they need to be in practice.
I usually find myself implementing lighweight components in AWT, but then I generally use HTML and forms backed by Python for everything they can support and wheel out Java only for custom widgets. I suspect that if I were writing entire applications with Java I would grudgingly prefer Swing in spite of the look and feel issue.
Since the Java chips are 32-bit with only 8-bit operands, they are able to grab 4 instructions and use 1 every clock cycle, [...]
This is not an advantage that is unique to Java. Donald Knuth's MMIX architecture has the same property and there is a GCC back-end so C, C++, Fortran, Java and other languages can be used with it easily. Unlike the alleged .NET language neutrality no changes to syntax are required. Even standard libraries only need to be changed enough to make low level system calls work.
What do you mean by ["the advantages of Java are application focused"]? Do you mean that it is no good for server software (which it is even better for than GUIs), or do you mean that it is not good for things like device drivers?
I mean the latter. (I don't dispute the utility of Java for server software, but I prefer Python for a variety of reasons.) Well, actually, I mean that the advantages of Java are not especially compelling for system software in general. A Write Once Run Anywhere kernel seems a bit nonsensical. Similarly, running system daemons on top of a virtual machine seems unlikley improve anything.
USB device drivers are an interesting counter-example, though I think the notion that software which communicates with a device over a USB bus is a "device driver" is a bit misleading and conceals what makes USB great: it transforms something that was once clearly system software into something more like application code.
Every single time you see any application crash in your OS, that is a runtime exception.
That's an interesting way of looking at things. Are you saying all exceptions ought to be checked exceptions? Does that include NullPointerException and OutOfMemoryError? Plenty of shoddy software that doesn't deal with these gets sent to customers. What makes exceptions useful in the first place is that they allow parts of a program to ignore problems that they couldn't reasonably do anything about. Checked exceptions take that advantage away, often tearing enorm