Java-Clone Announced
1. Everything we're doing in conjunction with M$ is Open Source.
2. All the extensions we're implementing are cross-platform - they don't just run under Windows as the WSJ article implied (okay, COM integration is a problem if you've got no COM on your platform to integrate with I'll give you that). If developers use Delegates they'll work on Linux (or whatever) and J/Direct is just another JNI-style interface anyway. We're looking at providing some Win32 compatiblity libraries for commonly used J/Direct Win32 library calls.
3. M$ have *not* invested in us - we approached them to about making Kaffe run both Sun and M$ Java and they paid for the work to happen - but we insisted that the result would be put in the Open Source Kaffe version so users had the choice to use, or not to use, the extensions.
Note that I have no connection Microsoft, Transvirtual, and don't even use Java very much. What follows is largely my own speculation.
First, let's go back to Visual J++. Let's ask ourselves what exactly were Microsoft's proprietary extensions to Java? First, they added stuff to the standard library to access native libaries, and second -- and this is the kicker -- they added some keywords to make writing COM objects much, much easier.
Now, let's hop back a bit, and look at MS's other language offerings. There are basically two of them: Visual Basic and Visual C++. It's really easy to use COM objects from VB; this is basically what COM is for. But if you want to write a COM server to componentize a program, then Visual Basic is entirely the wrong choice. It's just not fast, robust or powerful enough.
Which leaves Visual C++. However, MS has discovered that poor design has consequences that can't be patched over completely. It's sheer screaming agony to write those easy-to-use-from VB COM objects w/ Visual C++ -- all the wizards and templates in the universe can't change the fact that we are working with basically broken tools (COM and MFC and Win32 APIs, oh my). This difficulty is Bad News for MS; the more pain it takes to use Windows, the more likely people will look to alternatives.
This is where Java comes in. It has more OO nature. It has full garbage collection. It has no pointers. It is strongly typed. It looks familiar to C++ programmers. It has the hype machine of the century. And it's a different language, so you have a chance to leave all that old cruft behind.
Of course, there's that pesky VM and "write-once, run anywhere" promise, but if you can make it easy -- as seductive -- to call COM objects, then you are just as tied to the platform, because COM is Windows-specific.
Hence the changes in J++. (It also explains why they were so easy to turn off; they weren't out to encourage platform-dependence by making syntax changes, but with an easy hook into Windows. It cost them nothing to look like a good citizen by providing a single check-box off switch.)
Unfortunately, MS misjudged both the popular sentiment and how much Scott McNealy hates them, and they lost both popular support and part of the lawsuit. But not the important piece of the lawsuit -- they still have the right to use clean-roomed versions of Java.
This is where Transvirtual comes in. They have a GPL'd, clean-room implementation of the JVM. MS can pay them to implement the modifications to Java they desperately need -- VC++ is a dead end and they know it, and they need a replacement for it bad.
I'm betting that these changes will almost certainly be GPL'd. Why? This is because GPL'ing the changes to the Transvirtual's JVM is just good business sense.
It doesn't matter to MS if the COM hooks are public or not -- the lure to use Windows only is all the COM objects available for it, not the syntax.
GPLing the changes will buy you instant and total protection from charges of being closed and proprietary, because the GPL is the most anti-closed license there is. Plus, a JVM that is libre-free and MS-sanctioned JVM will most likely kill the market for competing JVMs on Win32.
And I suppose that the "visual" programmers who want OO design wouldn't want to use Visual C++? Does all this interest in "visual" design tools signify an increased lazyness in coders?
Or is it more about moving past the basics onto more advanced applications without having to focus on remember the code for a specific UI? Most VB apps I've seen are hardly advanced applications, so I'd have to go with the earlier.
----------------------
News about the "Open Source" Kaffe distribution
can always be found at:
http://www.kaffe.org/
and also at:
http://www.transvirtual.com/
And mailing lists? ...
------------------
Kaffe is still under development. IMO, they should not be calling themselves 1.x, but that was a marketing decision by TVT. It is reasonably stable and should most things. When was the last time you tried it?
It's unfortunate that the Linux community appears to be sinking more effort into porting and tuning Sun's proprietary Java implementation rather than working to get a free one.
Ok, folks, here are some facts on Kaffe:
There are two versions, the Open Edition and the Transvirtual edition. The open edition is GPL'd and other has a proprietary license. The code base of the two projects are totally separate. Transvirtual donated most of the code to the open edition, and continues to provide many updates. There are a few proprietary features that aren't availabe in the open edition (such as a DOS (?!?) AWT), but not many. People who contribute to the Kaffe open edition are not automatically contributing to the proprietary version. Only if you voluntarily decide to let Transvirtual use will it be included in the proprietary version.
Obviously I'd rather not see a proprietary version at all, but I think Tim Wilkenson has done a pretty good job of trying to find a model that lets him make money and contribute to the free software community as well. Originally, Kaffe was under a BSD license, and some people ripped him off by not releasing their changes as free software. He was planning on taking Kaffe proprietary as a result, but decided to release it as GPL instead. In this case, the GPL protects both the commerical interests of Transvirtual and the free software community.
So Kaffe will remain available as a free software product. If Microsoft hires TVT to write some Windows specific changes to it, these may or may not be released as free software, but this will not affect the main body of the Kaffe open edition code.
Hmmm... Looks like they have an open source, free version and a closed-source commercial version.
This is, of course, fine. They can release their code under two licenses. If they don't hold the copyright on all of the GPL code they are using the the commercial version, however, they've got a problem...
--
Yeppers.. But there is also a 'commercial' version that Microsoft is 'embracing and extending' to use NON portable things. Read up on the web page regarding the 'free' Open Source version, and the 'Open Source for Cash' version.
-- I'm the root of all that's evil, but you can call me cookie..
Agreed here. But once there is 'MsKaffe' and 'Kaffe', it can only be bad things.. More then one version of simular products can lead to confusion and mistrust..
;-P
MsKaffe has a major security hole, suddenly, every time that Kaffe is mentioned, it's linked, even though it may have NOTHING to do with it..
That's what worries me..
Yes, it is their right. Many people have rights legally, but I don't think that they are right. They HAVE the right, but I don't think they ARE right..
-- I'm the root of all that's evil, but you can call me cookie..
Yes, but the information regarding Kaffe DIDN'T take into consideration that Microsoft bought up a good hunk of Transvirtual. They are now in a position to use Kaffe, NOT release the source, and 'choke and kill' Kaffe.. Heck, they may starty to pollute the Kaffe source, as they 'own' the major developers..
I think the developers hearts are in the right place, but I think Microsoft is going to screw them in the long run, and hopefully not Kaffe in the proccess..
Heck, this COULD be the case that blows the GPL out of the water, if the developers and Microsot ever come to heads..
-- I'm the root of all that's evil, but you can call me cookie..
Ahem.
The entire point is that this is the most moronic piece of software ever conceived.
The whole point of Java was, as Sun so blatantly hyped, that Java programs were "write once, run everywhere." That doesn't just mean, "write once, run on 95/98/2k/NT/CE." I personally liked the idea of writing a program and being able to run it (and have other people run it) on Windows, MacOS, Solaris, Linux, BSD, BeOS, etc. etc. ad nauseum.
Yeah, this'll be cool for those wanting Windows apps that run both on their desktop and on their CE-based PDA, but it undermines one of the founding principles of Java.
And our backlash has nothing to do with a "if it's not Linux, it's CRAP!" Java is from Sun. Sun has little to do with Linux. Grow up.
Stating on Slashdot that I like cheese since 1997.
Kaffe is open sourced under the GPL. Which is interesting, since that means (to the best of my understanding)
that TransVirtual could not use its own code to make a Windows version of Kaffe unless it releases that
Windows version as an open source project.
Don't forget that the owner of the code can release it under multiple licences.. i.e. "You may use this code under the terms of the GNU GPL, but if you are not prepared to accept those terms, then you may instead elect to use the code under this alternative licence".
The reason this can't happen with Linux is that there are so many authors, all of whom would have to agree to the alternative licence.
--
Kaffe is a GPL'd jvm (yes it IS a java virtual machine, not "cloning some aspects of java", its just a clean room implementation) that has been available on tons of different platforms from the beginning. Transvirtuals web page even says so. This doesn't make anything java related run on windows alone or any platform alone for that matter. Journalists just obviously don't know the meaning of research anymore....
I don't know about Microsoft's involvement, but it has been clear for a long time that Microsoft resents Sun's dominance in the Java world. I'm sure they'd be happy to have a non-Sun-controlled JVM. Whether or not they care enough having a non-Sun-controlled JVM to fund a GPLed development, I don't know.
Sun's control of Java was predicated on the idea that nobody else was smart enough to write their own. They should have known better. Someone else did, and now Sun has no way of keeping MS from putting in their own incompatible extensions.
About Transvirtual's being a tightly-held MS-funded startup, well, maybe now, but they've been releasing free software for two years or so. I suspect that the article is seriously garbled on this aspect.
Thanks
Bruce
Bruce Perens.
If Transvirtual is the copyright holder on Kaffe, then they can do as they please. Currently released copies cannot be recalled. If Transvirtual (by their own will, or by the will of their purported hypothetical masters from Redmond) decide to change the copyright on the next version, that is their right.
This is not M$ stealing and subverting code. At worst, it is M$ buying a copyright and perverting subsequent versions.
--
Infuriate left and right
On the Register
For the life of me, I can't understand this argument. I keep hearing that MS is going to pollute Java by "tricking" programmers into using MS-only extensions.
How stupid do you think programmers are? As long as you have two bits of knowledge (1. COM is an MS-only technology. 2. WFC (Windows Foundation Classes) are Windows-only), you can pretty much tell which parts are cross-platform and which aren't. Heck, the whole java.* vs. com.ms.* package naming should be a huge hint all by itself.
And Apple is doing pretty much the same thing on the Mac. Apple's JDirect2 (they called their propriatary native interface JDirect a few months before MS released J/Direct) lets you write apps that are closely tied to the Mac OS (and soon, Mac OS X) in Java. It would take a supreme idjit to not notice that they were using classes in the com.macos.* package rather than one of the java.* or javax.* packages.
There is _nothing_ wrong with companies wanting to tie Java to their native platform. This is a tremendous boon for programers, since writing in Java is a lot more productive than writing in C or C++ (and anyone who disagrees with me on this one better have some solid research backing them up. I've yet to see a single paper which disagrees with me. Saying that you personally can write 100,000 LOC a day in C++ doesn't count.). Sun's licence ALLOWS this. All that Sun wants is the ability to write 100% Pure Java apps as well as platform-specific ones. That's why Sun sued MS.
Now, if Kaffe already supports standards like RMI and serialization and reflection, then they're pretty close to the standard. Sun gets what it wants, even if MS doesn't pay any licencing fees to Sun. If it doesn't, Kaffe is going to be irrelevant, since all of the effort on server-side Java depends on those technologies. Everyone and their grandmother is putting EJB support into their databases and application servers. DB vendors are allowing stored procedures in Java.
There's money in enterprise software, a heck of a lot more than there is in consumer software, where nearly half of it is stolen, anyway. MS has virtually no presence in this market. If MS wants a piece of that pie, they're going to be supporting Sun's Java, one way or another.
-jon
Remember Amalek.
Why is it such a bad thing to have pointers?
You answer your own question:
I understand how, when used wrong or poorly, they can lead to Bad Things
but in general I have found them very powerful elements of programming.
Do you consider all programmers as good as or better than you? If not, see above.
Half the programmers out there are below average.
(And that's assuming a uniform distribution. Some would probably say "more than half".)
-- Alastair
"Java that will run only on Windows"
.kaf (or whatever) files too.
.java extension just to sow chaos and confusion, as part of their usual "purloin and pervert" (uh, "embrace and extend") tactics.)
An oxymoron. There's no such thing. If it only runs on Windows, then at best it's a "Java-like language". I wonder if the next "Explorer.Worm" targets
(Although MS will probably stick with the
-- Alastair
The Kaffe that's already out there under GPL is available to anyone and will continue so. New versions don't have to be GPL'd, however.
Given the above concerns about Microsoft and Transvirtual, it may be time to fork the tree (or be ready to) and proceed with Open Kaffe (GNU Kaffe? some other name?) independantly of whatever MS/TV do.
-- Alastair
I read the update. It makes things seem even worse, not better.
Without the clarification, we could at least hope that the MS crap would remain confined to the TV's proprietary JVM, and the open one would remain pretty much conformant to 100% Pure Java.
Now we see that the open version is being seduced to the "purloin and pervert" (embrace+extend) side of the force.
2. All the extensions we're implementing are cross-platform - they don't just run under Windows as the WSJ article implied (okay, COM integration is a problem if you've got no COM on your platform to integrate with I'll give you that). That's hardly cross-platform, then, is it? If developers use Delegates I don't recall those being part of standard Java they'll work on Linux (or whatever) and J/Direct is just another JNI-style interface anyway. Which we need....why? We're looking at providing some Win32 compatiblity libraries for commonly used J/Direct Win32 library calls.
Oh, joy, more Win32 crAPIs. And they'll work just how on end-swapped or 64-bit word machines?
The GPL'd Kaffe tree is about to become hopelessly contaminated. Somebody fork it now, please!
-- Alastair
There is a lot more to advocacy than blindly disclaiming everything that Microsoft produce as bad.
Disclaimer:
Scrutty is an avowed hater of Microsoft OS's. He uses Linux every single day both at work and at play. He is in awe of Java as both an OO language and a platform and develops Java Apps on linux. He wishes that Sun would put their cross platform / linux supporting money where their corporate mouth is and produce a kick-ass JIT microthreaded Java 2 JDK for linux.
-- Oh Well
A few reasons why someone might want to program in Java, even without bytecode portability:
;) ).
1. Enforced object-oriented style (this can be good or bad, depending on your personal philosophy).
2. Forced exception handling in many cases (again -- personal preference).
3. Simplicity and speed of development
4. Fairly consistent API for GUI design (compared to platform-specific windowing APIs).
5. No memory management worries (Forget Kevin Mitnick, most programmers need to worry more about freeing their mallocs.
This is not a "Java is better" case, just a few answers to the question.
Save the whales. Feed the hungry. Free the mallocs.
I'd love to flame your position on C++.
:)
But I just spent the last week cleaning up memory leaks from a programmer who is new to C++.
So I can't.
Save the whales. Feed the hungry. Free the mallocs.
I program in J++ and I chose J++ for the following reasons:
1. It's an object-oriented language which is better for writing visual user interfaces.
2. Java does not have segmentation faults and bus errors which can bring a Win95 machine to it's knees (No comment on MS's crappy VM that crashes...but anyway)
3. I knew Java.
4. I THOUGHT that J++ was going to be _almost_ platform independent implementation of Java. I read many articles on J++ and did not understand that all of the generated code contained these STUPID function pointers...I mean delegates that MS demanded. None of the articles that I read pointed out how the generated forms (like Java Frames) work.
5. The Windoze window manager and ODBC (i.e. WFC) is called directly as opposed to being called through an additional layer, thus it (should be) is faster than going through java.awt.* AND there may also be a MS JIT compiler.
What I've realized since I've first started using it is that:
1. It would be almost impossible for me to port my applications anywhere, even with the many precautions that I've taken to keep MS specific code segregated in classes from platform independent Java only classes.
2. Because of the unnecessary inclusion by MS of their delegate class, all of the generated code for forms is completely unusable save a conversion utility (which does not exist) that could turn delegates into inner classes.
3. Programs run pretty fast after being compiled as compared to normal Windows apps.
4. If I had to port any of these programs to Pure Java, I would have to rewrite the lowest level database class and all of the user interface classes (what MS calls forms).
Why not C++?
C++ programs cannot be developed as quickly and take much more care. They run faster, but that is not what I needed--I needed rapid development.
Why not Visual Basic? Gimme a break! You call that a language?
The point of J++ and any other Windows dependent Java clone is to make the cost of moving from Windows too great for people to switch to another OS.
"They've never had an original idea. Copy, copy, copy, copy..."
Microsoft has always been a step behind in technical inovation. However, they have always been a step ahead in marketing to the masses. The average non-technical guy thinks of Bill Gates as a technical wizard, but people in the IS community would probably tend to think of him as a great business man instead.
Generally most of the features that make Winodows what it is were not orginated by Microsoft. They were innovations by others who failed to captialize upon it, or were bought out, or were squeezed out of the market by MS. DOS itself was bought by Gates, he didn't orignate it.
That aside, copying is not evil. Consider the following quote:
Linux is an example of that concept. Take and Idea and improve it.
Bewildering.
Kaffe has been around for a while. It is the JVM distributed with RedHat, but if I am not mistaken it does not contain the full suite of Java classes. It is limited to Personal Java 1.1. I don't get the "introducing a product called Kaffe", since it was introduced a while back.
I am using Blackdown and playing with the TYA JIT. So far, it's worked out fine for me.