Two Takes on the Java Dilemma
Joe Barr writes "NewsForge is running a pair of excellent commentaries on the plight of Java and the Java development community following the recent "settlement" between longtime rivals Sun and Microsoft. One is by Rick Ross, the articulate leader of JavaLobby, entitled "Where is Java in the settlement?" The second is "Free but shackled: The Java trap" by Richard Stallman. Good reading. Both commentators put their finger on the heart of the problem, albeit from different perspectives." Yes, Newsforge and Slashdot are both owned by OSDN.
My theory is that Sun is going to sell Java, probably to IBM. That's also a reason why Sun is will not
open-source Java. Even if it is losing money, it's still a valuable asset. Sun owns the trademark, many Java-related
patents and is the only company with the authority to prevent Java from being forked.
Sun's threat is to sell Java to Microsoft. Not sure whether MS wants to buy it (they would certainly be
willing to spend a lot of money to destroy it, but it would also annoy many people and renew the antitrust trouble). Losing Java would be so bad for IBM that they would be willing to spent a few billions to save
it. Possibly together with other companies in the Java trap, like SAP.
Sun's control of the Java language is a benevolent dictatorship. If Java was truely Open Source, then Microsoft could have forked it to allowed J++ to exist on Windows and blow a hole in the "write once, run everywhere" theory.
In order for there to be a language that's solid in all environments, there's got to be a gatekeeper at the door.
Isn't it the only real asset that they have left now? If they don't successfully commercialize Java then where do they go next?
The biggest problem is that Java is just another speed bump in the long line of speed bumps called Algol descendents. Its convoluted syntax, unclear precedence rules, and general tendency towards cryptic programs are all problems that originated with Algol back in the 60's and little has been done to improve it. C, C++, Java, C#, they all suck because Algol sucked.
While we could probably debate for days the benefits and pitfalls of a language like LISP, the only good thing we can say about Algol-like languages is that they are pervasive. There are so many alternative languages that new language designers can base their syntaces on that it only shows the lack of creativity and knowledge of language history when language creators use Algol as the base of their languages.
I have been pwned because my
It seems quite certain that Java is doomed: Microsoft did not pay $2bn just because it likes the sound of change dropping. It wants Java dead, and .NET to be the main platform for large applications. It hopes to cripple IBM this way. Most likely Sun's refusal to open source Java was based on the promise of the upcoming funds.
So: Sun will slow down and finally stop development of Java. IBM will either try to roll-out its own compatible platform or propose a migration to something else.
And RMS will be muttering: "those fools, those fools, if only they understood what the GPL was about". And he would be entirely right.
OTOH, perhaps I'm just being paranoid and Microsoft will allow Sun (which is now a neutered zombie company selling its own living organs for booze money) to continue supporting one of the main obstacles to its domination of the platform business.
Ceci n'est pas une signature
A slow bloated language-maker goes to bed with a slow bloated OS-maker. Can make more slow bloated software...
More seriously though, Java has lost to C#, dotNet and whatever Microsoft vaporware-du-jour. Plain and simple. The only reason Java has been around for so long is because Microsoft was slow to really set its target on it in the past.
"A door is what a dog is perpetually on the wrong side of" - Ogden Nash
the Gnu dialect of the C language shows you don't need a "benevolent" dictator. Its been around much longer than Java. Its probably used by more people. Its GPL'ed. And yet it hasn't led to a GNU-C linguistic forkfest.
(the same argument applies to nearly every library under the GPL, does it not?)
Can you create scalable, distributed appliations that run inside an application server with Phython?
;)
Do you have the same array of libraries and APIs in Phython?
Me don't think so.
JavaMail? JTSA? JNDI?
You could JPhython of course
So Phython in itself is simply not a viable
programming language.
Just go to big companies and try to sell them
something written Phython.
Not entirely. I don't expect a free version of Java to come from Sun. I expect free Java to come from the open source community. There are already a significant number of people (including RMS) who are working towards this goal without Sun.
The more people with the itch, the more scratching that will get done.
As I pointed out, even those of us who want to work on these projects have a hard time because it is difficult to get the environment recommened by RMS set up. Bundling gjc, some free jre, and the classpath libraries into an install package would be a boon. Sun does this with their non-free Java and I have no problems installing their stuff.
From RMS: "If you develop a Java program on Sun's Java platform, you are liable to use Sun-only features without even noticing."
Does anyone have a clue what he's talking about? The "com.sun.*" libraries? How could you use those without noticing?
Doesn't sound like this guy has ever programmed in Java.
Sun won't release the source code for their JVM and Java compiler, but they allow development of an open-source compiler and VM or a Java-to-C[++] translator which can be used for future-proofing today's Java applications. Therefore, programming- and CS-savvy amateurs and professionals should undertake such a project to improve their skills and make the world a better place in which to live.
Rick Ross made this parting shot in the close of his article:
I hope you will join me in watching how things progress before we draw conclusions about this settlement (or was it a purchase?)
The body of the article was well-written and I agree completely with his fundamental question -- where is Java in this settlement? I was shocked to hear pretty much squat about Java in the wake of the settlement, and I think his point that we must just wait and see is unfortunately correct.
But this little jab right at the end wasn't in keeping with the rest of the article. I wish he had instead expanded upon the idea of "What sorts of things might there be in the settlement, both good and bad for Java and/or Sun?". It almost feels as though it was inserted by someone else, it trips up the reader (well, me anyway) so badly.
- Leo
You don't use science to show that you're right, you use science to become right.
Java is an open specification. The libs are open specifications. Just because the FSF hasn't been able to finish an implementation doesn't mean it can't be done.
Stallman's argument about libraries being required to conform to the specs if they're publicly available is also a load of crap. Basically it only applies if YOU CLAIM TO IMPLEMENT THE API. In other words, don't claim to be J2EE compliant until you actually are. There is nothing stopping anyone from starting a project and saying "Out goal is to build a system fully compliant with API x." and developing it. The only restriction is you can't claim to be API x compliant until you are. That's a real hardship, being required to actually support the feature set you claim to.
I'm sorry, I develop in Java (in addition to C, C++, Perl, and PHP) and I like to know that if something says it complies with specification X that it actually does.
Also, as a side note, Java is not going anywhere. SAP, Oracle, and IBM have too much of an investment to let Java die. Sun could declare bankruptcy tomorrow and IBM would buy the technology tomorrow, guaranteed.
.technomancer
I'm sorry, but .NET is garbage - too much glitter and not enough of the important stuff like platform-independence.
.NET to develop any serious web applications. While you are correct that it sacrifices platform-independence, you are way off the mark when you call it "garbage." If you are using Microsoft products from end-to-end, .NET is actually an extremely powerful and simple platform.
.NET, connecting to a Microsoft SQL Server backend, hosted on Windows2000 server boxes, with clients all running various Windows boxes, using IE. We test with Mozilla and older versions of Netscape too.
You clearly have never used
We develop web applications using Visual Studio
We've found this setup to be extremely powerful, allowing very rapid development. Sure, it's homogeneous, but so what? It's working great for us, and our customers.
Since we are hosting the actual sites, we get to control the backend platforms. And we've chosen Windows. So, there's no issue about "platform independence." We've chosen a platform that enables us to deliver the best results to the customers, on a very rapid schedule.
Like woodworking? Build your own picture frames.
The problem was too many of Sun's people were pissed off that Microsoft's first JVM was blowing the doors of Sun's and every publication said so. People at Sun were too worried that Java would become too closely associated with Microsoft, and Sun would be forgotten as the creator of Java. You had people running around basking in the glow of their favorable Java press, more worried about losing it, than about how they were going to make money.
Microsoft went so far as to offer to show Sun how they had optimised Java in exchange for permission to continue their work. Sun thought in unacceptable that Microsoft be known as doing Java better than they did, so they pulled the plug on their largest potential market out of pure spite over being outdone.
I'm glad they did, because C# rocks. Sun never gave a damn about their developer community, they only cared about making sure no one else got any credit at all.
When I see a screenful of lisp, I see words and brackets. I have to read in order to parse struture.
When I see a screenful of java, even a brief glance shows me what's going on. I can recognise a for-loop, a while with an Iterator, a method definition, a method call, an assignment. I can see the try and catch blocks. Before I mentally parse any of the words.
Lisp isn't code. Lisp is assembler for the Lisp VM, that somebody forgot to write a code parser on top of.
...that you're blaming poor UI design and slipshod coding on the language.
I am a computer science student and I'm very envolved with the academic activities on my university. I have a scientific initiation* project based on testing mobile agents build in Java. The project is even afforded by a gov. agency.
..."
We are using Sun's JVM and compilers to build the agents and the testers. I was think about using gcj/classpath to build that programs, but that would be really 'reliable' ?
How my project would be intepreted in scientific congress when people see it is not developed under Sun's JVM but on GNU's one ?
I have always fought for freedom and I totally agree with almost all Stalman's words but to say us to use a free replacement for Sun's JVM that isn't even completely done doesn't sound very pleasant for the programmers. In my case, I don't know what would be the academic's or even my advisor's reaction to a sentence like: "This Java program, compiled under GNU's JVM, solves that and that problem this way
Before trying to "push" (don't take me as non-free person) a environment it is better to finish it don't you think ?
* that's how it is called the first project the student have in the academic environment in Brazil
It's a serious question. To paraphrase myself:
I've programmed Java J2EE for years. I am expert at the "best practices", performance tweaks, and real production-quality code, yet Java's utility is almost nonexistent beyond "it's what I [was] paid to write." Here is MY short list of things Java is useful for:
1) HUGE web sites. J2EE is a good solution: strong typing in the language, a security model that is complete from the database backend up to the Struts frontend, and clustering/failover with EJB 2.0.
COROLLARY: Small-medium sites should use LAMP and rely on redundant hardware to handle failover.
2) Applets. Since they run on "most" Unixes + Windows browsers, and despite the load time an applet is much friendlier to users than Flash. But you have to use Java 1.1 to ensure compatibility.
COROLLARY: Cross-platforms GUIs should use Python, Qt, wxWindows, Tcl/Tk, etc.
3) Unusual database applications for which only an ODBC or JDBC driver exists. JDBC is a rather mature standard (should be since it ripped off ODBC) that works pretty well. It's faster to write a few quick Statements and PreparedStatements and run them against a database than to use native tools that "have" 'different' ''ways'' of quoting strings.
COROLLARY: Prefer Perl or PHP if the database is supported.
4) Any application for which speed is not an issue. Yeah, Java can do everything any other language can do, and if this is the one easiest for someone to "think in" then they should use it.
COROLLARY: NEVER use Java to create or manipulate graphics from the command line. No JDK, EVER, has managed to do this despite five years of pleading from the professional programmers. Without a GUI Java goes belly-up on the first "new java.awt.Frame()". (And for you 1.4+ folks who think HeadlessException was a fine solution, it wasn't.)
Java was a great idea in 1995, but since then Java has been pushed as the Second Coming and it just hasn't measured up. The other languages have surpassed Java in every one of its primary marketing points: platform independence, performance, object-orientedness, ease of use.
So what jobs are you doing that make Java the best solution?
Not trying to flame, but genuinely curious.
FYI Blackdown, IBM et al CAN'T fork the Sun JDK unless Sun frees the code. And, as apparently thousands of Slashdotters are unaware, every other JDK except Kaffe+GNU is an independently licensed derivative of Sun's JDK.
The real problem here is that the community in general has forgotten what a business is all about. Even my business. To make money. And when the squeeze comes on the primary lines of income (as it always does), the "charity" gets "changed" in ways the community does not approve of.
It is the same reason I will not produce serious applications in .net. I have used it, it is neat, but it is locked up and problematic. If MS wants to make a change that breaks my code, my clients are in trouble. If you think they will not, go back to VB, VC++ et al. MS always makes changes that breaks things, and then they do force the change on you.
Sun is yet another company that has tried to be a gallant knight in shining armor (all in the name of profit). If Sun kills Java for a few billion, what can we say? They own it. If Sun decides to let it go free, what can MS say? No payment?
If we as a community really want to keep Sun's Java alive (not our Java), then we need to make it worth Sun's while to do so. Sun needs to turn a profit. Without that profit, they can not pay the people who write Java to write. Without a profit, there is no gatekeeper.
If we all really want to keep Java, we need to reach into our pockets and pull out some money. If everyone contributed $100.00US to a fund (say the OSDN) earmarked to purchase Java and set it free (or to pay sun to keep it going), you might get what you need. You need to get 10,000,000 people to each pay their $100.00US to the fund (1 billion dollars US). Now, that is only half what the MS people are paying for whatever it is they are paying for, so we all might need to pay more than $200.00 each.
Of course, you could always try to get a few thousand serious developers to start contributing to the development of Java in the wild.
InnerWeb
Freud might say that Intelligent Design is religion's ID.
GNU, Linux, BSD, Java, etc. are not free. It all depends on what free means.
For commercial application, it could have problem with GNU, because that would limit them the ability to change their app without showing up some of their interlectual properly, that's some high price to pay. It also may limit them to use some other's pattern with GNU software.
Whan talking like an extremist and anarchy like RSM, it's to the extreme that everything you runs must be free for your app to be free.
BUT WHO CARES?
Until recently, most app are not opened, and people still lives, computer stills show up, and businesses still thrive. So things does not have to be totally free like the extremist said.
Then, the hardware also have to be free to RSM. Does that mean I have to be able to fabricate my CPU and what not to run my app? Silly to call it a must. (it's nice though).
So nothing will be completely free.
This is why we need democratic. It allows company to thrive, create application that runs and sell them, and then there are customers who find them benefitial, and finding the company's behavior's about supporting customer and the rapport build up, then they buy their product, although it does have to be free.
As a Java developer myself, I am happy with Sun's so far all these years for what they doing, knowing not all stuffs provided by Sun are free.
You can preach all you can, but you can also get a life.
Perhaps you should become more familiar with what RMS says and realize that the major underlying justification of the free software movement is its ethical basis; the main questions for a social movement (such as the free software movement) address what kind of world we want to live in and how we should treat each other. I can think of no way to answer that question that forgoes an examination of one's ethics.
This is not "blather" as you so discourteously put it, nor is your response insightful (as some moderators have apparently chosen to say). Questions of ethics are some of the most important questions in society. I think your objection to the matter says more about you than about RMS or his way of conveying the importance of software freedom.
Digital Citizen
I'm not sure I agree with that. To give the most obvious example, I currently work on a project that ships on probably 15 different platforms myself, including several popular flavours of UNIX, a couple of flavours of MS Windows, a couple of flavours of Mac, and a few more esoteric extras. (The project is basically a library, BTW.)
We write in C++. Why? Because everyone can bind to C++ (or at least to the C interface we also provide), and because there's a C++ compiler available for all of those platforms. Neither is true of Java.
The fact that Java aims to be WORA doesn't mean that it is, nor does it invalidate the use of standardised languages with compilers on many platforms (of which there are quite a few) as alternatives for cross-platform development.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
I.e., while it certainly mostly runs on non-free platforms, he has not locked himself into them by any reasonable interpetation of that.
Not to mention, I have no idea what you mean by 'non-free'. It's prefectly legal to design your own version of most processors out there, witness AMD, and the specifications are open.
RMS isn't complaining about free software running on non-free machines, he's complaining about free software that only runs on non-free machines, and cannot run on anything else.
Interestingly enough, there is non-free hardware planned, namely, the stuff that impliments DRM, and RMS is fairly close to punching the designers out in the street, ideology-wise.
If corporations are people, aren't stockholders guilty of slavery?
Many of the things that I can do in java would be very hard in any other language.
I use java a lot, but I find the opposite to be true. Many things I do commonly in other languages turn out to be a burdeon in java. For example (OCaml):
let dirs = List.filter Fileutils.isdir dirent_list
Java work-alike of that (assuming a Collection of File objects):
ArrayList dirs=new ArrayList(dirent_list);
for(Iterator i=dirs.iterator(); i.hasNext(); ) {
File f=(File)i.next();
if(!f.isDirectory()) {
i.remove();
}
}
Similarly:
let dirs,files = List.partition Fileutils.isdir dirent_list
Java version:
ArrayList dirs=new ArrayList();
ArrayList files=new ArrayList();
for(Iterator i=dirent_list.iterator(); i.hasNext(); ) {
File f=(File)i.next();
if(f.isDirectory()) {
dirs.add(f);
} else {
files.add(f);
}
}
Another language I use a lot is scheme, which does not have partition. However, it's easy to write:
(define (partition f lin)
(letrec ((loop (lambda (l y n)
(if (null? l)
(list (reverse y) (reverse n))
(if (f (car l))
(loop (cdr l) (cons (car l) y) n)
(loop (cdr l) y (cons (car l) n)))))))
(loop lin '() '())))
Imagine how to do a similar thing in java. Hint: there's no lambda, so there'd have to be an interface defining a method that takes an object and returns a boolean and you'd end up using (at least) anonymous inner classes instead of lambda functions when you invoke it.
One thing I've done to make my java coding easier, though, is to build a framework for writing struts actions in jython. I can turn your average 20 line struts action into a two line jython script.
-- The world is watching America, and America is watching TV.
> Unless we want every corporation to get the
> control over us the RIAA has, we need to draw a
> line in the sand. But most of us don't give a
> damn.
Sun isn't the RIAA.
You seem to be aligning the 'Free' Software movement with the movement against Corporate control of our lives. Is this really valid?
If you want to align this debate with another - then maybe a more appropriate on is debate about unborn children. Most people are not completely pro-choice or pro-life, they recognise there is a middle ground balance between the rights of the child and the rights of the parents. The FSF reminds me of the rabid pro-lifers. The line in the sand you're trying to draw it not realistic or ethical.
I think there is a emerging concensus that the most 'ethical' software license tries to find a balance between protecting the rights of the producers of software to protect and gain the benefits of their work (without being ripped off) and the rights of the consumer to use software in as many ways as possible (including using it in proprietary systems).
The balance of power has shifted too far towards the producers of software but that doesn't mean the other extreme is the best route to follow.
> We're like the drowning person who flails at his
> rescuer. And until someone else steps up to
> carry the torch, RMS is our rescuer. RMS is the
> King.
It's this sort of ideological cult-of-personality stuff just puts people off the FSF.
This all reminds me a bit of the mid-1990's when people were first dabbling in using NT for technical applications (you know, where calculations had to be accurate beyond two places to the right of the decimal...) There was some ballyhoo about Intergraph's Advanced Processor Division (later generations of the Fairchild Clipper) becoming part of Sun. Supposedly, several significant design features of what was originally to have been the C500 were to be folded into the UltraSPARC--most notably a "byte-sex" switch. By being able to run in "little-endian" mode, the next generation of Sun machines woud be able to join the MIPS/SGI, IBM PowerPC and Alpha as alternate platforms for NT.
It took about a year before Howard Sachs and his people were either laid off or assimilated into other Sun projects (the buzz was that it was mostly the former), Sun and Microsoft had re-affirmed their mutual hatred, and any whiff of a prospect of Windows running on a Sun-designed processor was eradicated. Intergraph in the meantime jumped into bed with Redmond (and almist perished) as one of the earliest adoptors of WinTel for technical applications, but at the same time sat on its remaining design patents and nailed Intel for infringement some years later.
How is unethical to want to get paid for your work?
RMS has never said it is unethical to want to get paid for your work. But if it is OK to want to get paid for your work, it does not follow that it is OK to impose restrictions on what people can do with software that you write. I think it's pretty obvious that the one does not follow from the other.
What is the free software movement if not precisely a movement of people who do not want restrictions imposed on how they use their computers or the software on them? The free software movement is a movement of people who want to use software only if that software does not put restrictions on how they use it. These people want to "live [compute] in freedom", to quote RMS from the article. They believe that the restrictions you find in non-free software that are unethical!
RMS's "dogma" does not taint the free software movement, it is the basis of that movement. (That doesn't mean it is the basis of the Open Source Movement, or that everyone who uses Linux agrees with everything RMS says, or many other things. It means the pursuit of free software is essential to the free software movement, so that to remove that would be to eliminate the movement.)
To the extent that you don't care whether the software you use is free of restrictions, you are not a supporter of the free software movement. To the extent that you want software you provide to others to be non-free, you are an enemy of the free software movement.
The ideals of the free software movement and getting paid to write software are entirely compatible, just not necessarily in the way that you might think.
You could say the same thing for GCC.
Yes, GCC varies from the C standard implemented by other C compilers. But whenever that happens, they point it out in the documentation! When Sun's manual describes a Java feature not implemented by alternatives, they naturally don't mention this fact.
It's possible you link to a proprietary library without noticing.
Only if the proprietary library is on your computer. If you actually care about that issue, then it's very easy to prevent. There are several Linux distributions that scrupulously install only "Free" software.
you very rarely (if ever) need to resort to using proprietary libraries (Sun or not).
Wrong! Tell me what open-source alternatives there are for Swing. It's nearly impossible to convince a programmer writing with Sun's Java to build to any other GUI library.
Is not limited to the GPL
r ee Software
o n- CopyleftedFreeSoftware
o py leftedSoftware
If you read the article Stallman claims runing Java on GNU/Linux as running a non-free software on a Free system. Thus claiming that GPL is a free license. His description of free software in the begining of the article, conviniently fails to mention the copyleft philosophy.
So Stallman describes free software and gives an example of a product under a copyleft license and masquerades it as free software. If you read the FSF website they clearly make a distinction between copyleft software, non-copyleft free software and free software.
http://www.fsf.org/philosophy/categories.html#F
"Free software is software that comes with permission for anyone to use, copy, and distribute, either verbatim or with modifications, either gratis or for a fee. In particular, this means that source code must be available. "
http://www.fsf.org/philosophy/categories.html#N
"Non-copylefted free software comes from the author with permission to redistribute and modify, and also to add additional restrictions to it."
http://www.fsf.org/philosophy/categories.html#C
" Copylefted software is free software whose distribution terms do not let redistributors add any additional restrictions when they redistribute or modify the software. This means that every copy of the software, even if it has been modified, must be free software."
Clearly, the FSF makes a distintion between different degrees of freedom. But Stallman in the Article mixes and matches the two differnet
philsophies to create and illusion of a so called java trap. When free software in conjuntion with a system protected by a copyleft license, like the GPL (GNU/Linux), will also work in his example of the trap.
Basically he is claiming that a piece of software is entraped because it is less free than the one it is dependant on.
In the begining of the article he only mentions what the FSF clearly defines as "Free Software".
"Roughly speaking, they are: the freedom to run the program, the freedom to study and change the source, the freedom to redistribute the source and binaries, and the freedom to publish improved versions. (See http://www.gnu.org/philosophy/free-sw.html.) Whether any given program is free software depends solely on the meaning of its license."
Notice the term license. By definition of the GPL it is a copyleft license not free software. This again is FSF's own definiton page.
"In the GNU project, we use ``copyleft'' to protect these freedoms legally for everyone. But non-copylefted free software also exists. We believe there are important reasons why it is better to use copyleft, but if your program is non-copylefted free software, we can still use it."
Here he seems to suggest that copyleft is the way to go. One thing is certainly clear Stallman and the FSF spin the word "free" to mean many things.
Free software is free (no restrictions). copyleft (freedom with restrictions) is also free software? So why isn't Sun's jvm which is free (to mredistribute and monetarily)
but incompatible with the GPL non free, becuase of frame of reference. The GPL is also then not free when placed in context with a license more free.
This is confusing to anyone who isn't well versed with the FSF lingo. Thus my request to Stallman.