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."
as ESR said in CatB (Score:5, Informative)
High cost of J2EE? (Score:5, Informative)
It fails to note that these are the *most expensive* full-suites of these products that have lot of non-J2EE frills (you can get into Weblogic's base J2EE support for $10k). Other commercial J2EE application servers are well under the $10k mark (e.g. $1500 for Orion Server)
This article also fails to note that there are more than a couple very robust OpenSource implementations of J2EE application servers, that are of course free.
It's obvious that if they pointed these facts out that their argument would be weaker...
Mono is not a threat (Score:4, Informative)
There's no motivation to "Open Source" Java. It's supported on a myriad of platforms and you can even get access to the source if you want to take on the implementation on a new platform.
Re:Dumb question (Score:5, Informative)
There are two major Java implementations currently in use -- one by IBM, one by Sun Microsystems. Both of them may come without charge, but are without the freedom that would make them qualify as Free Software.
Therefore, all software written in Java (even software under a Free Software license) running on such a platform will "put the user's freedom at risk" (a quote from FSF/GNU people). It's like running Free Software on Windows.
If you want more detailed 411 about the status of Free Software versions of Java, hit up the following URL:
http://www.gnu.org/directory/devel/prog/java/ [gnu.org]
Re:Java, who needs it? (Score:3, Informative)
You can also compile Java applications to native code using GCJ, assuming that you're not using anything beyond JRE 1.0 (or something like that).
Re:Biggest threat is Microsoft (Score:2, Informative)
Re:Java, who needs it? (Score:5, Informative)
You do realize that this is impossible, right?
No, this is not impossible. Read up on just-in-time (JIT) compliers and you'll see why. In a nutshell, the Java Virtual Machine profiles the code that is being executed, then uses sophisticated algorythms to anylize this information, then compile (while the system is running) native code from the java byte code, that is optimized for the environment, and more importantly for the ways in which the code is being invoked. Subsequent calls are executed by this newly compiled native code.
Thus the JIT compiler is able to (often) do a better job at creating optimized native code than a C++ compiler can do, because the C++ compiler doesn't have run-time analysis to use in its decisions of how to optimize the code. The JVM can continuously re-optimize the same code over and over during the life of the application. JVMs of today (and the last few years) do this as standard practice.
Re:Java, who needs it? (Score:5, Informative)
I'm not necessarily disagreeing with you, I'm just elaborating on what Qt is. It's closer to Java in nature than you might think, and with the upcoming Qt4 I can imagine it becoming quite a competitor.
Re:The worst thing that could happen... (Score:4, Informative)
Not so. Check out Shared Source CLI [microsoft.com], as known as Rotor. Basically a free, open-source version of the
Also check http://www.sscli.net [sscli.net] for some SSCLI/Rotor Projects.
And did you know that C# and the
(If you want a linux version of the
Re:Biggest threat is Microsoft (Score:3, Informative)
The only thing that prevents them is anti-trust law, not proprietary licensing.
Also, the GPL would guarantee that Sun can rejoin the WOOSJAVA fork whenever they like, and gain all the benefits. As someone pointed out, Microsoft could use make their open source implementation call some closed source DLL, but at least Sun would also be able to release a version of OSJava that called that closed source DLL just the same. The API would be pretty obvious.
Avoid SWT on OS X (Score:3, Informative)
What were they thinking implementing SWT in Carbon. Even that is not an excuse for the slowness though. About the only full blown java IDE that is slower than Eclipse on OSX is Netbeans :(
Re:How does GPL dual licensing work again? (Score:4, Informative)
You can use and distribute MySQL under the GPL as long as you comply with the letter (and spirit
Re:Java, who needs it? (Score:5, Informative)
Ok. My assembly is a little rusty, so bear with me. Let's say we have equivalent Java and C programs. They both have to run on a 386 or higher. (Bear with me. I haven't kept up with the MMX/SSE/SSE2 instructions, so I'll have to fake this a little.) Now, your C compiler will see that you want to store a 32 bit value, but has to generate code for a 386. So, it generates the code:
pop AX
STOSW 0x0005
pop AX
STOSW 0x0005
Even though the code may be running on a Pentium Pro (which is optmized for 32 bit code), it's still going to execute those 4 statements.
Now, the Java Hotspot compiler will start and notice the fact that you're running on a Pentium Pro. So when it converts the bytecode to machine code, it creates the following instructions:
pop EAX
STOD 0x0005
That's twice as fast as the C code!
Real code would tend to be running on modern processors, so this example is a little contrived. However, the JVM can (and will) use SSE instructions to do multiple calculations in one instruction, while the C code will be forced to generate non-SSE instructions to support the old Pentium Is out there.
Hotspot is also capable of analyzing the running code and regenerating even better assembly that would perform poorly in other circumstances. For example, let's say Hotspot notices that the bounds can't be exceeded on an array. Well, Hotspot will then recompile to remove the bounds checking.
Does that explain it better?
Programming Language Popularity Trends TIOBE (Score:3, Informative)
Re:Dumb question (Score:3, Informative)
I'm free to develop whatever Java software I wish. They're improving it like crazy, with the help of tons of pretty smart people (look at Doug Lea's working group's contribution in the latest JDK).
Maybe I'm not getting something here, but it sounds like people just want it to be open source so it can be open source. I'm not seeing what the benefit would be.
Re:Biggest threat is Microsoft (Score:1, Informative)
I sure hope you intended to make a joke...
If not... Well, it's completly different. For once, you cannot compile a program in C# and run in JVM, or compile in java and run in
The possible problem with java being open source is that several quasi-compatible java appears but the incompatibilities would destroy java. MS for sure, could make a java version with several enhancements that would run only in windows... And since most people use windows Sun could loose control of Java. I stated in my previous post that Java is a trademark of Sun, so Sun can make an Apache-like version where it states derivative works can't be called Java. That way, people could contribute, but Sun had full control over Java.
Re:I don't care anymore (Score:3, Informative)
Not true at all.
Go read [sun.com] Sun's license for use of their Java API docs.. Or in english:
You can use this to implement your own Java, as long as it is fully compliant with the Java specification.
Re:Java, who needs it? (Score:3, Informative)
Wrong on many counts. First off, Hotspot is a native compiler. It just compiles at runtime. Secondly, a good compiler can outperform a human optimizer because it can juggle such concepts as superscaler packets, out of order execution, and predictive branching. These are things that take a human a long time to calculate and figure out effectively.
BTW, it's been this way for 10+ years. It's just taken Intel processors a long time to catch up. And the *#$@ things STILL don't do SuperScaler right. Nor do they have enough registers. Or proper task switching. In fact, I think Intel still recommends not using the built-in task switch instructions. Blech.
Re:High cost of J2EE? (Score:4, Informative)
Other commercial J2EE application servers are well under the $10k mark (e.g. $1500 for Orion Server)
This article also fails to note that there are more than a couple very robust OpenSource implementations of J2EE application servers, that are of course free.
From the article:J2EE is a set of specifications, not any particular implementation. There can be pricey implementations, and there can be affordable ones. The trouble is, the pricey ones have the mindshare (IBM WebSphere, BEA WebLogic). There are far cheaper implementations, but who has heard of them? Orion or Pramati, anyone? And of course, there are Open Source implementations as well (e.g., JBoss), but JBoss (as of February 2004) is not yet a certified J2EE server, and its fledgeling commercial support organisation (the JBoss Group, now called JBoss Inc.) often lacks the clout to open many corporate doors.
I guess they must have quickly jammed those in right after they saw your complaint on Slashdot. Alternatively, you just didn't read the article.
Re:Java, who needs it? (Score:3, Informative)
Re:Dumb question (Score:5, Informative)
Three specific quotes:
Q: How many people are currently JCP members?
A: The JCP has over 500 company and individual participants.
Q: What prevents Sun from controlling or dominating the groups that develop and maintain Java specifications?
A: Sun, and the other Executive Committee (EC) members, serve as technology oversight groups for the work of the Expert Groups. The ECs do not micro-manage the day-to-day workings of Expert Groups. Rather, the ECs have the opportunity to review the work of each Expert Group at well-defined points as their specifications proceed through the JCP. The primary function of the ECs is to ensure that specifications do not overlap or conflict with one another and that the specifications meet the needs of the industry segment for which they are being written.
The following EC members elected by the community during the JCP EC Elections in October and November of 2001 took office on November 20, 2001: Apache Software Foundation, Apple, BEA Systems, Borland, Caldera Systems, Cisco Systems, Compaq, Ericsson, Fujitsu Limited, HP, IBM, Insignia Solutions, IONA Technologies, Macromedia, Matsushita Electric Industrial (Panasonic), Motorola, Nokia, Oracle, PalmSource, Inc., Philips, RIM, Siemens AG, Sony, Texas Instruments, and Zucotto Wireless, as well as an individual participant, Doug Lea, representing the research and education communities
Lots of stuff on javalobby.org (Score:2, Informative)
Re:Java is ok (Score:3, Informative)
Done.
google for RVM, research java virtual machine. An IBM project.
angel'o'sphere
Re:That would suck for java... (Score:2, Informative)
SUN would still hold the Java trademark and can withhold its use from any implementation that fails to pass a comprehensive compatibility suite.
Re:Dumb question (Score:5, Informative)
You can consider it whatever you want. However, there is an official Open Source Definition [opensource.org] that most people mean when using the term. Also see the Debian Free Software Guidelines (DFSG) [debian.org]. Sun's Java process, though fairly open for a commercial software product, doesn't comply with the letter or the spirit of either of these.
Re:That would suck for java... (Score:5, Informative)
I was rather surprised, actually, to see the amount of change from 1.4 to 1.5, at all levels: language, jdk, and jvm. The language itself has a lot of C++/C# features now like covariance and contravariance. 1.5 has more improvement over 1.4 than 1.4 over 1.1, in all aspects, imho.
Re:Not sure this is what we need (Score:2, Informative)
Common Lisp
ANSI Common Lisp standard (X3.226-1994)
Popular commercial implementations:
Allegro Common Lisp [franz.com]
Xanalys Lispworks [lispworks.com]
Macintosh Common Lisp [digitool.com]
Corman Common Lisp [cormanlisp.com]
Popular free implementations:
CMUCL [cons.org]
CLISP [cons.org]
Open MCL [clozure.com]
SBCL [sourceforge.net]
GCL [gnu.org]
All of these implement the Standard, some better than others. All have interesting extensions which are not portable. All bring different elements of interest to the table of developers looking to solve different problems.
Perl and Python haven't for whatever reason needed to be forked to provide a better implementation for a specific market segment. While large applications are being written in these languages, they're obiviously not in environments where the demand on the engines is high enough to warrant someone funding a fork and a port. (say, Perl for Palm, or Embedded Python, or Enterprise Ruby, whatever -- there is no complete "Python Compiler", for example, that I'm aware of at least). Though ActivePerl et al should be acknowlegded.
BEA has JRockit which is its own JVM, though it may well ship Suns class library. They felt that they wanted a better JVM to meet their markets needs better than IBM and Sun were.
Put an implementation to work and the market will fork it as necessary. Just ask MS.
The majority of dot net is VB.net? (Score:2, Informative)
Don't believe me? Don't take my word for it. [techtarget.com]
Re:Java, who needs it? (Score:1, Informative)
Performance of Java versus C++
http://www.idiom.com/~zilla/Computer/javaCbe
Re:How does GPL dual licensing work again? (Score:3, Informative)
For some reason, the idea of the GPL gets people so confused they can no longer see clearly. I'll try to explain: the GPL may be like the New York Times saying "it only costs 50 cents if you are only copying for educational reasons". I.E you can violate their copyright, but only under certain restrictions (such as for educational use only). It should be clear in the NYT case why somebody would still be interested in paying $1000 for the rights to republish an article in a for-profit book.
In GPL the restriction is you must also grant anybody receiving the copy the same rights the GPL gave you. Now if you don't want to give people your code, it is pretty obvious that you will not be satisfied with the conditions that you can violate the copyright on the GPL code with.
In this case you can completely ignore the fact that the GPL exists, because the rights it grants do not concern you because you don't plan to take advantage of them. Instead you can pretend it is normal copyright, and then it should be clear that you must talk to the original authors and see if you can purchase rights to violate their copyright.
Re:Java is ok (Score:3, Informative)
I say this after watching some very simple, no-GUI programs translated straight from C++ to Java code. No extras added, bare minimum amount of work.
I wont dig for the Slashdot article but a OSS article covered a benchmark showing Java running as fast (and sometimes faster) than C++. One thing poorly done though in Java was trig functions.
Java does come with some baggage you wont find in C++. Mainly thats the garbage collector. But then again, you cant get a memory leak in Java which is very simple to do in C++.
But once it reaches a certain level of complexity, I'd rather save the CPU cycles and go with something better.
I mix the two. Theres two ways of doing this: JNI or CNI. The Java Native Interface is okay for accessing C code from Java. The Cygnus Native Interface (see gcj) treats every java object as a c++ object which makes using the two languages together very easy. Oh, and GCJ allows you to compile to native executable rather than byte code if speeds and issue.
Now, I dont see java becoming a mainstream staple for game development or heavy multimedia. But I could be wrong in the next couple of years.
I have to say you are atleast honest and explained your views. Many Slashdotters give the "its slower than dirt" and generally have no idea what they are talking about. I myself play all sides and just know the strengths and weaknesses of the different languages and dont play favorites. Its the best way to be IMHO.
Re:That would suck for java... (Score:4, Informative)
NIO adds in some really great I/O capabilities. I absolutely love having channels/selectors for network servers. 5 hours of coding on a network server to go from single thread per connection to one thread multiplexing all of my I/O. Using a few worker threads to process incoming data and my stress testing I used before doesn't even come close to pushing the server like it used to. I had to increase the brutality of the testing quite a bit more to find top level performance.
I know I/O is just one aspect of programming, but it is VERY key to overall performance.. and in I/O bound apps NIO is a godsend.
So anyway, there were some really good improvements in 1.4. I think 1.4 was a pretty marked improvement just because of NIO.
Jeremy
Re:The worst thing that could happen... (Score:3, Informative)
Some of the Sun Java source licenses (there are several), in contrast, pretty much come down to that anything you do after looking at Sun's source code may be considered a derived work.
The Rotor license is not open source, but harmless. The Sun license, on the other hand, is a serious problem.
Re:Laughable? (Score:4, Informative)
"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)"
They aren't competitors. Notes is a collaboration/groupware suite.
"1998: Anyone actually working in the IT industry today knows that XML is hardly a competitor to CORBA."
They aren't competitors. XML is just one of many protocols that can be used to implement CORBA. Corba is an Architecture, XML is a data transmission format.
"Now here we are in 2004: anyone actually working in the IT industry today knows that Perl and Python are hardly competitors to Java."
They aren't competitors. You don't use Java to bind apps together or to write small scripts. You don't (if you are sane) use a scripting language to write enterprise-level apps like finance or CRM software, or secure distributed systems, or high-performance numerical software. Java and scripting languages complement each other - you can embed Python in Java using Jython, or you can use Java itself as a scripting language via the Bean Shell.
Re:Open cool, but still keep distribution rights. (Score:3, Informative)