Interview with James Gosling
mypointofview wrote to us with an interesting interview with James Gosling [?] . It's an interesting interview format, similar to Slashdot's style. Good questions about Java, but also the problems of getting Java and Linux to *ahem* play nicely with each other.
Well, think of it this way. There are two different "distros" of the win32 operating system, NT and 9x. in the linux world there are many more. You would need to support at least Debian, Red-Hat, S.u.S.e, and TurboLinux. and any other homebrewed distros out there. You couldn't really be sure what things were going to be like.
(note that I'm only using the 'distro' term for win32 metaphorically. NT and 9x are different operating systems with different kernels. but this matches more closely the troubles with developing applications. I *think*)
The other, and much more obvious reason is that without windows support, there would be almost no point in trying to do Java at all. After all windows still has 90% of the desktop market. At the time linux was much, much less of an issue. Now that linux has grown, sun will probably put much more effort into getting it to work. (remember, sun doesn't even support the Mac itself)
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
When CPUs double in speed does the amount of GUI redrawing automatically double as well? The vast majority of the time for real apps (that is, exclusing most games, MPEG players, etc) very little is actually being redrawn. If we assume that Java GUIs are at least reasonably close to a constant percentage slower than C/C++ GUIs then Moore's Law helps Java just as much as anything else.
They can't officially call it Java due to trademark law, but they nevertheless use their bastardized, proprietary version as if it were the real thing, with the all-too-well-known Javascript errors, hung browsers, and crashed PC's as the inevitable result. As for me, I've banned Wintel from my house. My SPARCstation has been up and running for 271 days without so much as a hiccup.
"Bring your Penguin into the Sun" -- Linux on SPARC forever
Anyone know when we can expect 1.3 on Linux? Hotspot on Linux?
RateVegas.com - Vegas Reviews
What I find interesting is no one is considering The fundamental problems with java on linux. First the threads issue. As smp becomes more and more important robust threading begins to becomes a very important issue. I read and interesting article on threads in the solaris kernel and realized that Java must someday have the same abilities to do spinlock for example. Thus on one side the java threading apis need to be updated on on the other side it looks like over the long term the Kernel needs to be designed to specially support the demands of the JVM. Anyone who's launched say 5 jvm's at a time knows the current JVM do not scale in the process model. Interestingly the AS400 and Netware JVM designers recognized this and moved the JVM into the kernel. This simple change made for very fast JVM's. At this point the issues of Thread scheduling become important. Different types of programs do require different thread scheduling for optimum performance from Real Time schedulers to round robin. Not only that but one of the biggest problems with writing portable java is that incorrect threading code is very sensitive to the scheduling algorithm. Thus the inability to change scheduling algorithms is one of the biggest blows to WORA and debugging threaded code in general. I've seen a huge number of apps which run fine on one platform freeze on another. Moving on to other JVM resource issues it quickly becomes apparent that although the JVM allows dynamically loaded code it provides no real means to manage the resources used by the dynamically loaded code. It doesn't manage file handles, threads, memory, sockets etc to prevent dynamically loaded code from freezing the JVM. On the client from for Java to provide the best graphical performance possible it must bypass the Widow System layer and run directly on a low level graphics Api's. The overhead of running advanced java gui code and a Native windowing system is simply not a viable long term solution. Eventually java must support the equivalent of a graphics hotspot compiler running directly on the hardware this will probably require new vector/graphics instructions in the bytecode. Suns MAJC processor is but the first move along this route. I used to buy into the Sun line that Java doesn't need and OS but now I realize that the JVM must be as stable as a Unix OS to be successful. This means again that the JVM and OS need to have tightly coupled resource management. Since you will in time need to write OS functionality into the JVM. Now I suspect that Sun has considered these issues since I've seen several reports that Sun will build java into Solaris as time goes on. Also interesting is Apples Mach OS is well suited for future java implementations which is probably why there committed to java over the long term. This may also be one reason why Sun is very interested in the opening of Windows Api's. It's rather interesting that Windows and Linux will become increasingly poor host OS's for the JVM of the future. And as I said before IBM has already moved java into the kernel for some of there OS's. If this is the future of java consider Java not only on Linux but also windows. In each case I don't see strong support for such tight integration between the JVM and the host operating system being possible. Any mention of integration of java into the linux kernel is met with incredibly strong and short sighted resistance. I don't think they realize that the JVM represents the first time that and Operating System has been written using a top down approach. If Sun is thinking this way and there is no reason there not than it becomes clear to me that Java/Linux support will never be a high priority for them since it will eventually require the impossible tight OS/JVM integration. The Linux crowd will never back such integration regardless of licensing issues simply because they reject the top down OS desing of java. Thus I think its rather obvious and saddening why Sun is not working to support the Linux platform. Mike
> Java is a great language for writing distributed apps but distributed apps must include the client, after all thats where the rubber hits the road. I urge sun to recommit to the client end.
The good news is, they are. JDK 1.3 by default uses a new client VM, and my experience shows the client running about twice as fast as the 1.2 version. They're also putting a lot of work into optimizing Swing and improving deployment with locally cached applets and versioning in browsers.
And it now runs in Mozilla as the native applet handler, with some pre-release caveats.
We know that Microsoft quite often creates needles hassles by trying to make things *user-friendly* beyond the level of sanity. They try to create the impression that you can achieve anything you want, if you just keep on pressing Ok.
All of this leads to programs with "Ok" -and "Yes/No" message boxes, deeply inside the nested loops, potentially firing at you a cacaphonious series of nagging "Are you sure?", "There is unknown memory error!", "Are you really sure?".
All of which tends to degenerate in an unstoppable diarrhea of focus-grabbing, noise-producing "You will not ignore me!", "I'm sure you need to know this NOW!"-kind of childish and irritating man-machine conversation with the user.
Now, let's try Sun. Are they any better?
Well, Sun seems even worse; they don't even wait until they get to the end-user. No, they even do this with the developers. Java is nothing more than a belittling, annoying, arrogant, and development tool, that nags you all the time with ridiculous rules that may be useful in some circumstances, but seldom necessary.
For example, try to read from a resultset, somewhere in a jdbc data source. First, you will have to handle all the details of the driver manager, the driver, the versions of everything, specifying all details, or else it will insist on sending diarrhea of error messages in your face. You aren't finished with the previous problem, created purposely by Sun, or the diarrhea starts again: you didn't catch the potential exceptions for your jdbc connection! Now Sun forces you to do a try/catch, because in all other cases nothing will compile. Maybe your connection is perfectly valid. Maybe there will be no error, but still, you will and must write the code to catch this exception, or else, f*ck you!
Look at Solaris. For example, I will never forget that textedit utility. When you close it, by crossing it out, it will nag you with something like:
"Do you want to close and then save or do you want to save and then close?"
Microsoft is already bad, but of one thing I'm sure: if ever, Sun will be several degrees worse!
not the BSD license issue again!
what are you talking about
?
in this company (silicon valley e-comm startup) we used java on the server and VB on the client. The clients are all win as far as we are concerned but we are using NT on the server with java and are considering moving the production boxes to Linux if it holds up.
Do you really think we would considering that move
1- if it wasn't written in java?
2- if java wasn't already fast enough?
3- if we would still be writting the darn thing in C++ for linux?
4- if we did not have confidence in linux and java playing well already together?
To be very honest the only thing that worries us is the quality of the VM on linux. Here is a clear case where switching to linux is Strongly dependent on having good support for java on it. Reread the article and although I do not agree with everything one thing is clear, Linux will gain a lot by having good java support, just easier migration path for guys like us (I know we are not alone thinking about this). Finally, I am not talking spreadsheet thingies, I am talking about a large online transaction system with thousands of clients.
Anonymous but not coward tom
Perl is faster than Java on Unix
...
Any stats. How can I do fast image processing code in perl ? Have any graphic engines written in perl you like to show me ? How about a web server written in perl to compare against the java ones.
Perl has much better text handling functionality(remember what the web is made of ? yeah! text!)
Sure, perl does, perl is a scripting language !!! Scripting languages are made for that type of stuff. Full blown programming languages will always suck at text manglin (Ada, C, C++, Smalltalk, Pascal) compared to scripting languages (perl, awk , etc)
Perl has a much greater base
Nobody is ramming anything down my throat. I use whatever tool fits the job. For what I do , perl doesn't cut it. For what you do it does. Great !
Please *blah* *blah* Sun stats
Whatever. I think there are more J programmers than what you think, but the user base for a language doesn't mean anything. If it did, then you should be using Visual Basic instead of perl.
- sigs are for wimps.
Can someone tell me how to get the current swing working on Linux? I have SuSE 6.1 which has a working java setup but seems to have nothing from the swing set. If the swing classes are downloaded
from Sun, should they work directly, or do they need to be ported by the Blackdown group? I tried the download but it failed somehow, and Sun is very tight about not allowing resumes, so its an
all or nothing operation. I'm new to java, but have read several FAQ's etc. without getting a clear answer to this. Thanks.
Well even though I am a java fan (and professional, I write servers in java for a living) I must admit you got me there. Swing is very complex. I think the problem is that gui's are very complex in nature anyway. I will stay with servers thank you very much.
But the point of this mail is to mention togetherJ the UML modeler. It is all in swing, is REALLY fast on windows (you can't tell it's not native anymore, granted we use 450Mhz intels) and the functionality is very rich. As my VB friend put it "with Jtree, Jpanel, Jthis and Jthat the functionality in swing java is already superior to what you find in windows environments, just give it time to mature". Well it has matured and even though I was doubtful now I realize he was right and java GUI fat apps are richer in functionality and fast enough.
tom
The point about GUI toolkits is well taken. I don't do that kind of programming. But it sure would be nice to have a good awt-less Java engine for our servers.
But maybe this prospect does not appeal to Sun. ;-)
As for glibc versions, they are essentially the same as new OS releases. All your favorite OSes have new releases that break something or other.
However, I don't see why Sun can't just pick the most popular Linux distro (Redhat) and get Java 1.3 SDK working on Redhat.
-AC
Uh? So why do they have a license as close as they could imagine (while still releasing code)? Why don't they make Java a true vendor independant standard?
Besides, talk to me in perfect Spanish before daring to talk about my spelling of your language...
Several years later, Java still runs like crap almost everywhere. When I see a description for a really cool program announced on Freshmeat, I go to download and find it's written in Java, then think, oh damn, it'll run like crap because Java will slow it down, waste memory, be a pain to get running, and probably crash once in a while as well, even if the actual code the author of the program did the best job coding as possible. Hell, snes9x does a better job of fast, stable, cross platform run time executation of non-native machine code, and that machine code wasn't even designed for this like Java byte code. Arg!
Java is most definitely not the holy grail of software. Linux and open source software is. If Sun would have gotten their head out of their asses and release all of the JDK under GPL, Java might have had a fighting chance. Instead, I look on to the great C/C++ coming out of the GIMP, KDE, GNOME, Koffice etc projects making Linux have all the wonderful software programs available that I dreamed about back when Java came out.
Ahh Czar I should have known that one. Zaar..hehe. :)
>How does that differ from Microsoft's grip on
> the world vis-a-vis having a 90% market share on Joe Sixpack's desktop?
Probably not much of a difference. But programming is going to be a big part of the future. We don't need any one entity(which may or may not act responsibly) owning the standard tools.
99% correct, the 1% being that Netscape still enjoys roughly 80% market share. Microsoft flaunting its incompetence, having a browser built into 90% of the world's operating systems but being used by 20% of the people...
Imagine my delight a couple of months back when Netscape, AOL, and Sun crafted a partnership. And Microsoft couldn't even use this effectively in their antitrust lawsuit - they'd have to admit that Sun was suddenly positioned to beat them!
Now add Sun's recent acquisition of Star Division, creators of Star Office, perhaps the first Unix-based home/office productivity package capable of rivaling Microsoft Office, and you have to believe that Bill Gates and his minions are genuinely afraid...
"Bring your Penguin into the Sun" -- Linux on SPARC forever
Yes u are.
The different distos of Linux are all masterminded by Linus himself in order for it to go out there and follow Darwian's theory. 6 of his offsprings, not knowing which one is better, release them and let evolution take its course.
This is also the reason Java doesn't work cleanly across all of them. They migh all look the same on the surface, but their DNA are all slightly different. Evolution tells us that this will prevent cross transfer of viruses and trojan horses waiting at the "Gates." But it also prevents useful parasites(Java) from residing as is on all hosts.
The only virtual machine is the Linux users out there, since that is all virtual and there is only 1 user out there spawning off all these "virtual" users. ANd that real user is again Linus.
Well, the do make a small amount of money for licensing, $250,000 I believe. this isn't that much however, because there are only a few licenses. What Java does, is keep them in the news, and Screw Microsoft.
I'm *glad* sun used the community source license on Java instead of the GPL, why? because if they didn't Microsoft could fork Java to there hearts content without fear of reprisal.
If Microsoft made there own linux distro, no one would use it, but if they forked Java, there would probably be more people using there implementation then Sun's.
Code inoperability is paramount to Java's success. In this case, code control is more important then code freedom.
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
Deja vu all over again -- the same interview was on javalobby earlier today and I just had to bite on the "incompatible Linux distribution" bait.
I assume that the "incompatibilities" he describes were differences in kernels (2.0.x vs. 2.2.x) and libraries (libc/glibc). If that's the case, I would simply suggest writing for the most recent stable version. It is possible to upgrade kernel and libraries, as we all know. Admittedly, upgrading is a drag -- especially on known-to-be-rock-solid systems. Version control is a problem on every platform, though. Let me tell you about Windows and oleaut32.dll one of these days....
While "Java vs. Linux" does not rank quite as high as "BSD vs. Linux" or "KDE vs. GNOME" on the flamewar meter, it is getting just as tired. More importantly, it is counterproductive to both sides. There is no reason to pick one or the other, either -- Linux works well as a development platform for Java. The only drawbacks right now are somewhat sluggish performance with some JVMs (I saw where IBM's alphaworks JVM actually scored pretty well on the Volano benchmark), and the annoying tendency to be 6-12 months behind the latest version (which may not be a problem if you like waiting for the bugs to shake out first).
I'm going to walk into the flamepit now:
The Java vs. C arguments are also silly. I like C, I use C, C is my friend. If I need to do system programming (OS-level, device drivers, etc.) or anything where speed is absolutely, positively the overriding concern, give me C.
But there is also application development. Here, I want short development time, easy maintenance, and a whole lot of functionality already built in. In this case, Java starts looking really good.
Insert tired "right tool for the right job" cliche here.
The "Java will soon take over" hype from 4 years ago has turned into a huge burden for the language. There are just some languages that do what they do so well that there is no need to replace them with anything (Perl, for instance). Java does have the potential, though, to move into areas where there are still some gaps. I think that Java has tremendous potential in distributed applications, for example. This is also an area where I would like to see BSD and Linux start playing larger roles. The combination will work if the two sides can quit flaming each other long enough to get it done.
Thanks for letting me get that off my chest. Back to work for me, now.
Save the whales. Feed the hungry. Free the mallocs.
Higher-order functions treat code as data. Functional languages such as Lisp allow constructs like
a simple way to ask for just the positive numbers from a sequence. In detail, it takes a function which returns true if and only if its argument is positive, passes it to a higher-order function which produces a new function that does the opposite, and passes that as a test function to another higher-order function which returns a sequence of just the elements for which the test fails. Putting control structures like iterating into a HOF that takes another function telling it how to behave is very simple and powerful and quickly becomes second nature, and the alternative, now seems ridiculous to me in any language.(Caveat lector - this code is off the top of my head, and I can't test it at the moment. Yeah, I remember #'remove-if-not, but ANSI deprecated it and given #'complement you don't need it.)
Plus, there are implementions already under the GPL - notably Kaffe. The copyright holders also sell/license a commercial version through the company Transvirtual, and apparently have licensed it to Micros~1 in a deal involving some of their technology (like J/Direct).
I work with C++ guys and I am not impressed by their skills. They tend to spend HOURS discussing second tier problems and features of the language. At the end of the day we wrote the complete server in java in 3 month, they are still debugging a simple httpDLL they wrote to make it bulletproof.
What a joke
it would be nice to see java and linux working well together... java's kinda cool...
I don't have a particular problem with having Sun being a major driving force behind Java but only having one company calling the shots is somewhat dangerous(ie corporate ambitions are sometimes wrong :-) ). IMHO, Java should be ANSI-fied by a "standards committee".
Am I the only one who thinks "pretty close to open source" is like "a little bit pregnant"?
you clown..
Java is a success and a big one, if linux doesn't support it well it is going to hurt.
Can't we get these two kids to play nice together?
I develop in Java full time and have been doing so for over a year now.
The biggest Java lie is Write Once Run Anywhere. While it is true that if you stick to the simplest subsets of Java - i.e., no GUI whatsoever and very little file IO - you can write code which will work on all platforms about 95% of the time.
But as soon as you add the more sophisticated features of Java to your code (especially anything GUI-related) you will lose. Bigtime. Applets are the worst in this respect. To get any applet at all, except the very very simplest applet, to run on all browsers is a nightmare.
The bulk of code that one writes in Java will work on all platforms, but one could do the same thing in C or C++ by having a system-independent set of code which relied on the services of a set of system-dependent object files. I think that with some foresight it would be just as easy to write a program in C or C++ using one of the cross-platform GUI toolkits and get it to work well on all platforms as it would be to write a Java program using AWT which worked on all platforms. And the C/C++ version would run faster, I don't care what *anyone* says about Java performance and how it's getting close to native code. I write and use Java every day and while in certain limited cases (usually CPU bound code that doesn't interact with the system very much) you can get decent performance, in general Java is pretty poor performance-wise.
Sun in fact realized what a nightmare AWT is, so they essentially dropped it and moved onto Swing, where they try to minimize the number of system services they rely upon for GUI stuff. Swing itself unfortunately is kind of big and bloated, and is still just as buggy as the rest of Java, which is to say, very.
I think that Java is a very elegant language in that it's simple, consistent, and easy to program. Unfortunately the ease of programming of Java is generally cancelled out by the difficulty of making Java work and work well on all supported platforms.
My prediction is that Java will end up like Pascal - a great language for teaching programming concepts (especially object-oriented programming concepts) but generally impractical for "real-world" work.
Another alternative available to allow parameterised classes is Ada95. Using the AppletMagic compiler one can make JVM compatible byte code from Ada95 source - Ada95 being an ISO standard Pascal like 3GL with built-in OOP, multi-threading, hierarchical generics (templates), namespaces, exceptions etc. The GNU Ada95 Compiler (GNAT) is expected to include a JBC backend soon - see this. Ada compilers are _so_ strict (trust me on this) that when translating Java language demos into the equivalent Ada95 for compilation with AppletMagic, the authors found some bugs that the Sun Java compiler didn't!
I'm sure it was REAL easy for Sun to get Java working on 95, 98, and NT. I really don't understand what this is all about. I hear stories of people having binary 'issues' on Linux, but I personally have never had one of these problems. Am I special or something?
Why do we need parameterized types to do collection classes? I know type safety is important, but every language features is a help in some ways and a hindrance in others, and I see parameterized types as more of a hindrance (due to complexity) than a help.
... true, Vector works on Objects so there is essentially no type safety. But you know what? In the 15 months or so that I have been writing LOTS of Java code full time I have *not even once* passed the wrong type of object into a Vector, or a Hashtable, etc. It's a very rare circumstance in which you have a vector and don't know what types are being stored in it. And if you have a vector which you store multiple types of objects in, there's always instanceof.
Pre-2.0 Java already had some simple collection classes, like Vector
instanceof takes the place of strong typing in many, many situations in Java, and while it makes code a little slower and a little more fragile, it's a big win when it comes to simplicity of the language and its implementations.
As far as operator overload goes -- I think it's quite simply the shortest path to unreadable, unmaintainable code. I think the very worst feature of C++ is operator overloading. Period.
> How can I do fast image processing code in perl ?
I do not stand on the side of Perl, but ever heard of PDL (Perl Data Language)? How about Gimp module? Oh yes, they're optional modules with core part written in C, but the same goes for Java's Advanced Imaging API.
Now back to our original programming.
If Sun makes the fastest java, this will definitely give MS a run for its money (Microsoft, not the condition). Especially that Sun is temporarily not able to do anything about MS's developing their own style, this could put MS out of our misery.
And with this speedup of Java and of CPU's, I wouldn't be surprised if we got better java wordprocessors by next year.
-
ping -f 255.255.255.255 # if only
Uhh...This should really read Use Java on Solaris - Because most Linux users don't really give a shit about Java...
not this company buddy, not this company.
We are ready to plunck big dollars in the first java guru that knows Linux well.
We are corporate world, no doubt about it and java is our main workhorse, get Linux to work well with java and I can convince my people to switch . Isn't GNOME already taking advantage of java's/corba?
The Hotspot VM is pretty amazing, especially considering how new it is. The speedups are really impressive. On our benchmarks, (middleware, lots of multithreading and network access), we're seeing 3-5x improvements on various benchmarks. The garbage collector is amazing. We used to find that pooling beat the (admittedly crude) JDK 1.1.x garbage collector by 2x; now the situation is exactly the opposite. Code volume stays reasonable -- hotspot doesn't compile everything in sight; it really does seem to focus on the hotspots. The stability is not perfect, but is very good for such an early release.
His replies are full of lies, of corporate lies. I don't need to say where they are, they are pretty obvious =). But anyway... Lack of Linux support due to nightmare of Linux systems? come on! "pretty close to open source?", come on!
Java isn't FreeSoftware for just one reason, they want to make money out of it. That can't be bad, but we must acknowledge that, and we must not believe all those lies about "interoperability"...
I don't love or hate Java. I just fail to see any benefits from it's use and wonder how Sun might act if Java were to become the next C.
./configure may work great in UNIX/Linux try using that to compile a program using the MFC library for a Macintosh. Or try getting DOOM to compile for a palm pilot. it's just not going to happen. Java gives you *much* better code inoperablity right now. I don't know if you've done much work in Java, but it is Very easy to get a program to work on any OS. in my experience Every Java program I've ever written that I tested on another platform/OS/Java implementation has worked. This was without any type of special work on my part in any way (well in one of my programs I had to put in a command line option to not use the GUI stuff to get my app to run on a UNIX box over Telnet, since there *was* no GUI)
well there are two major ones, the first being that it is *a lot* nicer to program for, even much better then C++. If I could code in whatever I wanted, I'm sure it would be Java, it's just *so* much nicer then C, my god... but this is really beside the point we are discussing.
Java is still a little better then C/C++ because the majority of computers run things like Mac OS and windows. While
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
Becoz once they make it pure open source, M$ would take the source and add whatever they want and call it Java2000. And since nobody could sue anybody when it is GPL, M$ would by default take over the whole market. Easier than Eating netscape for breakfast or taking candy from a baby.
It is just as easy for M$Linux to come out and have every corporation/'doze Linux hacker wannabe out there that wants Linux to get it from them. Better to make $60 on a product with $0 R/D than to make $50 on Wind95 in which they spend hundreds of millions in trying to get billions of trained monkey to somehow type the code for it. Soon, you'll be back to worshipping M$.
And oh yes, in addition, the could join the Linux scam of charging for support. "What!! you want to know how to list the document in a folder? Type ls. Thats $100 please."
If you would have read the interview, or known anything about java other then old sterio-types you would know that java can be as fast as C in some aplications. Unless conventional signal processing requires a lot pointer-arithmatic a Java implementation with Hot-Spot would probably have similar performance.
What do you want to spend those clock cycles on: redrawing the GUI or signal processing?
are you saying that C apps don't need to redraw the GUI? Java is only as dependant on a GUI as any other langage (exsept maybe visual basic, which needs it a lot more...)
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
You've obviously never done ANY development on Linux. The sound issue is not an issue (yet). There is one sound API, OSS in common usage, and once we all switch to ALSA, its backwards compatible with OSS. As for your ridiculous Xfree86 problem; I've swapped out Xfree with different versions of itself, and with xig, and I didn't even have to remcompile any applications or libraries. Certainly binary compatibility is good enough for you?
I'm not trying to knock Java, I'm seriously curious. It was designed to be write once, run everywhere. Surely the concept of everywhere must have encompassed things like different X servers or sound systems? Or did Java always envision a narrowing of its market to just a few standard platforms, primarily Windows and Solaris?
Isn't Gosling really saying that Sun doesn't have the time to write all the different JVMs and whatnot required? The bazaar model worked rather well to make Linux cross platform. The developers who knew the most about each platform wrote the code to support it. Like the original poster, I think it would help fulfill the "any/everywhere" promise for Java too.
His comments about the different distros are smoke. The real problem is the license. Nobody wants to pay it. Maybe one of you guys who bought Redhat at 14 and sold at 100? :-)
The alternative is to not get a license, and try to clone it instead.
---
Have a Sloppy day!
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
99% correct, the 1% being that Netscape still enjoys roughly 80% market share. Microsoft flaunting its incompetence, having a browser built into 90% of the world's operating systems but being used by 20% of the people...
:). it's much faster and a lot more stable. When I got windows 98, I used netscape for everything exsept looking at microsoft's own site, then slashdot, then.... (I still keep netscape around, but).
I'm sorry to be rude, but HA! for startes Netscape's market share was NEVER more then 70%, even in the days back before IE1, I belive that netscape's market share is somewhere betwene %30 and %40, and going down every day. dispite the fact that AOL own's netscape, every AOL user uses IE. IE is also a *much* better prodcut (although I can't wait for Moz5.0
don't get me wrong, I hate Microsoft, but Netscape's market share is nowhere near 80%.
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
This is not blasphemy at all. During the original Java hype storm I wasn't impressed at all. I downloaded the Corel Java suite to play with it, and it was an utter piece of crap! Java has always been lame as far as I'm concerned.
Linux, however, impressed me since I read my first full article about it. The article was in boot (now Maximum PC) and the CD included a distro of Debian. I installed it, but had no idea how to do a damn thing with it. Still, though, it was exciting. It was something new and interesting. Anyway, back to the point:
Java is slower than native code, requires more memory, not platform independent as hyped, lowest common denominator functionality, and controlled by Sun (a company more interested in taking Microsoft's place than bringing true broad-based competition to the software market).
Linux is an operating system that can run on slower "legacy" systems, runs on many architectures, free (think Beer and Speech rolled into one), fully functional, scalable, high performance, and Linux has actually lived up to its hype.
So as far as I'm concerned, you're not blaspheming. You're preaching to the choir. We've got a cross-platform open source option that we really didn't have when Java was first released (at least as far as I'm concerned.)
On an unrelated note, I see Windows 2000 going the same route as Java. See the cons above because almost all of them apply to Windows 2000.
And on another unrelated note, wouldn't it be great if in the future all we had to worry about was Linux vs. BSD because MS and Sun's war of attrition ended in a hostile takeover resulting in both companies losing their top spots in the market?
I think it's pretty clear which lines of the interview people are going to have a problem with...
Reading through the interview, it seemed like the usual chat-session fare -- a series of idiotic (You wrote assembler? So, did you ever write a virus?) questions, whose answers should have been obvious before the person even asked the question. And then we get to the Linux question... and Gosling's role as the "Mr Java Poster Child" marketing-boy starts to show through.
Why are the JDK's on Linux so far behind what you can get on Windows or Solaris? Because of 'minor incompatibilities'? Hardly. There are plenty of other cross-platform languages out there that support even more platforms than Java and work quite well on Linux (oh, like Tcl, Perl or Python). As far as I can tell, the problem is just that Sun hasn't done squat to help the Java/Linux efforts.
I mean, up until relatively recently Sun didn't even make their code available to porting efforts -- unless you wanted to shell out for a very pricey license, you had to start from scratch. Which doesn't exactly make it easy to catch up to the ever-moving target that is Java. That changed, finally, so that the Blackdown team is able to work from the Sun source now -- but as near as I can tell, that's the limit of their assistance, and it really seems to be a matter of too little, too late.
Hell, has Sun even contributed any Linux-specific code to Blackdown? If not, I don't even know what Gosling had to base his statement on.
JRaven
Bruce Perens
Bruce Perens.
tough day huh?
marc.fleury@ejboss.org
I am using JDK1.1.7 and it seems to be happy on my Madrake 6 box. I did run into a problem trying to use the RMIRegistry service. I never looked into it so I am not sure if it is Java or Linux that is pissed.
Bad news is that after some time Java evolution did not allow me to compile the source code anymore. I accept that.
You should be able to get older versions of the JDK from java.sun.com, if you want. and you might be able to get the stuff to compile with just a little work.
I'll agree though, that old code should still work, if it dosn't that's a pretty major bug...
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
Wow, to hear these Java dudes you'd think they've invented the cure for cancer.
Let's recap the true merits of Java:
- Java is slow
- Java's graphics are even slower
- Java is not portable
- Java is not open source so its 10,000
bugs have no hope in hell of getting fixed.
- Java is slow
- Java almost put Corel out of business.
- IBM's eSuite is a *failure*
- Java IS OWNED by Sun Microsystems to
ultimately make PROFIT - not to better the
world or make bunny rabbits sing. Just wait
for Sun's creative $$$ licensing if Java's speed
and stability improve.
- Java is slow
Face it: C++ is a complete and total abortion, especially from an OO standpoint. If you look at it from a portability standpoint, it is even worse (one can't even link objects produced by different compiler vendors in many cases). The ANSI spec for C++ is bigger than ADA.
I wonder who the real idiot is...
You are a fucking weirdo...
I think you're extremely mistaken with regards to getting Java to work on multiple platforms.
No it's not just a "drop it in" change. Especially when dealing with a GUI, you have to tweak between platforms.
But don't pull that crap on me that its easier to code a GUI in C and port it to Windows/Mac and UNIX easily. None of these GUI's have a common toolkit. End of story.
Without a GUI, on a server-side app, there really shouldn't be a need to do any tweaking issues.
Java isn't the perfect solution to right once anywhere, but it certainly is the best solution available.
-Stu
C is a solid standard. If you have the source, then you are pretty much fine (except for windowing toolkits). I think SUNs angle for creating java was that it was *cross*platform*binaries. So people could write closed source apps and get them to run on most platforms. Very nice if you are in the closed source world, but if you release your code C is probably a better option - if anything C encourages opensource cross platform work, while Java does not. But Java has its uses - it removes those airheads who believe hype from the C world and is a flytrap for MS standard pollution. Java also requires beefy hardware, so us C programmers get 386 for free. Go Java.
It would because MS won't be able to include it in MS Explorer without releasing the whole thing as free software.
The not having to compile Java vs C is a good point. But I should have also mentioned the other alternatives, like Perl or Python, where that is not a problem. But as far as ./configure not working well with windows..*shrug*. What's there to work with? Windows wasn't *designed* to be a platform where one gets source code to compile. Does windows even come with a compiler? Hell no. The little consumeroids are supposed to purchase binaries constructed with MS tools. It's a fundamental flaw of the OS, not of C or ./configure.
My windows (98) box has been up for:
1days, 6hours, 43minutes and 8seconds (110588235 milliseconds total)
sorry, I just wrote a little uptime program, now I'm infatuated by it
1days, 6hours, 44minutes and 49seconds (110689407 milliseconds total)
wee....
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
Gosling isn't being sincere. Linux got itself in a bit of a pickle??? He's got to be kidding. We let distributions have a few differences between them, the cardinal sin!It doesn't seem to have kept X from running, or Netscape, or anything else. Does he want Linus to rule with an iron fist? Sure, Linux would be real successful if we did that. Thanks Bruce
Bruce Perens.
It doesn't seem to have kept X from running, or Netscape, or anything else. Does he want Linus to rule with an iron fist? Sure, Linux would be real successful if we did that. Thanks
Bruce
Bruce Perens.
I believe they meant "PDP-8", not "PDPA" for Gosling's first computer.
Xlib is a straightforward implementation of a very well-defined protocol isolating clients from servers, which the Solaris JREs can already use. If they care which X server you happen to use, they've done something seriously wrong. And they don't have to port Java 3D or the Media Framework ASAP - those are standard extensions, not part of the core API.
It shouldn't be to hard to just ignore the GUI, I've done Java development over a Telnet session to a to a UNIX box.
I'm not familiar with Sun's community source license, but can you hack out the part that does the AWT from the C source? would you be able to distribute your changes if you didn't charge? (I *think* that the answer would be yes to both those questions, but I'm not sure)
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
why do C++ types, always want to make Java more difficult to use, into essentially another C++.
> 1. Java execution speeds are now approaching
> and in some cases exceeding those of compiled C
> and C++.
It is a sad statement. Any properly implemented language will exceed C and C++ for programming idioms that are natural for that language, but not for C and C++. Evn AWK does so.
> If you don't believe it's possible, you don't
> understand optimization.
The really sad thing is that some people insist that JIT compiled code in general will be able to compete with code compiled with an optimizer that can use as long time as it wants.
Of course, Java compiled to native code by batch compilers should do well.
> 4. Java has more in common with Smalltalk than
> with C or C++. That's why serious object
> developers use Java and not C++.
And C++ has more in common with Simula-67 than with Smalltalk, that is why serious object developers use C++ and not Smalltalk.
There is no "best choice" unless you are so narrow-minded that you believe one object paradigm (or programming paradigm) is superior independtly of the problem.
"serious company"? like HP or maybe SGI? today's reality is such that linux is not where solaris is today, and it will probably take it a year or two to reach that level . Then you'll see Sun supporting Linux and Solaris as the two major OSes on sparc hardware. There's no reason to get rid of Solaris today or even in the future, most would agree that it does the job though it does has some flaws. No one seems to be complaining about the various BSD flavors out there, so Sun can do both Solaris and Linux - whether Solaris should go open source is another question. Now the linux community has *failed* to even bother looking into the two critical VM bugs that's preventing blackdown.org from releasing a full jdk1.2. Sun has given the linux community all the tools and support, now it's the turn of the community to do its job.
Your proposal for versioned standards is intriguing. I imagine something like POSIX for dlls and GUIs.
However,
That a declared extern function disappears from one z-version to the next is disappointing (what is your example? did it start with __?) but I think it really is the programmer's fault unless the function was documented in the libc manual. If it's not in the manual, developer should ask the list whether they intend to make it official one day (and ideally submit a doc patch). I am starting to think that a weak point of open source is the ease with which programmers can get at stuff that was never meant to be part of the API.
To the taxonomy of bugs (you know, syntax errors up through logic errors) should be added a higher level: API bugs. Any program that uses an API service in a way that is not documented to work contains a bug.
Good call! I knew that sermon sounded a little too eager. I didn't notice that the question was one of licensing rather than one of Java on Linux. Sounds like Gosling has a bone to pick with Linux that sounds a bit jealous and bitter. Think it's because sales of Linux are biting into the revenue stream of his corporation?
That's some weird shit, man :)
but what's so hard about typing a(b(x)) or:
c(x){
return a(b(x));
}
or am I missing somthing? (I assume I'm missing somthing)
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
IE has around 74 or 75 percent (and rising) of the browser market, while Netscape has around 23 or 24 percent (and falling).
Sorry if I misunderstood you, but it really seemed like you were saying the opposite was the case.
Cheers,
ZicoKnows@hotmail.com
Sun wants to be in control just like Microsoft. That's the problem. As for Sun being good management, I doubt it. Look at the way Java was handled. I wouldn't call that good management. In fact, look at the companies that were big on the Java bandwagon. Notice how they dropped it like a hot rock when the Linux steamroller started gathering steam? There are two possible reasons for this.
1. They (hey, let's name them: IBM, Corel, HP, etc) want the magic of the current big thing to rub off on them and their stock prices.
2. Java just didn't pan out as all it was supposed to be. Linux looks like it may. The rats are all jumping ship (I think I mangled that metaphore, but who cares?).
Oh, and to those who might be wondering, english is my first language, so I have no excuse. Fire away with the grammar flames.
Remember when Metroworks tried to release Code Warrior for Red-hat? everyone was up in arms, calling Red-Hat the next Microsoft. I don't think doing something like that would endear them much in the minds of the linux community (although I could be wrong). It also seems like a bad Idea. If I were them I would ether try to support Debian, Red-Hat, and S.u.S.e. if I didn't have enough money, I'd just wait for the LSB to do something.
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
I imagine you know the difference and just had a brain cramp when you typed that. Addressing something else you said, though, it's interesting that the "bastard version" (your words) of JavaScript produced by Microsoft supports the actual JavaScript standard (formally known as ECMAscript) better than Netscape, the company that created JavaScript. Cheers,ZicoKnows@hotmail.com
I have a hard time believing that you've used many of the different JVMs out there. I think Java would have much greater acceptance on all platforms if every platform had a JVM that was as stable and had near the performance as Microsoft's JVM for Win32.
Cheers,
ZicoKnows@hotmail.com
Our needs included:
portability - the application must be able to run on Windows, Mac, and Linux (if we get other *nixes as a bonus then that's even better)
consistency - the interface must be as consistent as possible across platforms
gui flexibility - the interface must be as customizable as possible
html/XML support - the language or its libraries/runtime must support HTML content, and at least be pledging future support for XML.
After doing our research, and delving into Sun's commitment to Linux, as well as its seeming support for Open Source we decided that Java was likely our best choice. The Swing components seemed to provide the desired customizability and consistency, Java supported HTML and was on its way to XML support, and the Linux support promised would guarantee us a presence on what we deemed the important platforms.
So now it's a year later. The product is designed, mostly written, and really beginning to take shape. We are trying to put together our package to show to potential underwriters but have been plagued by a serious Java issue:
The Windows and Solaris JDK/JRE packages, while still a bit slow and memory-intensive, provide most of the features we need to produce a stable and slick application which can usefully present our content. What bugs there are appear to be hot items ready for fixing in the next release. However, the Linux JDK/JRE packages are not stable, not well-supported, and not even at the same release level as the Windows and Solaris versions.
Month after month we have watched the progress of JDK development (as supposedly supported by Sun) for Linux crawl forward. We have been programming steadily, working around bugs, redesigning interface features to not rely upon features which are not yet present in Linux. Generally acting as if Java2 for Linux is not coming any time soon.
As we watch we have gotten the feeling that, despite press releases to the contrary, Sun could care less whether the Linux JDK ever gets finished, and doesn't appear to be devoting its resources at all towards the platform. Indeed, it seems as if they would prefer people forgot about Linux and its Java port altogether. Here's an example. java.sun.com is Sun's main website devoted to the Java language. Trying to actually find the Linux port from this page takes the patience of Job. Want some help? I'll locate you a few pages down in the right direction. See if you can find it from here. It doesn't help matters that Sun "reorganizes" their Java site periodically, essentially scrambling the links on the page -- reminiscent of the supermarket technique of seemingly random placement of necessities to make one wander through the store, hopefully buying non-necessities (or, similarly, the legendary placement of keys on the QWERTY keyboard to slow down the typist).
"Bad site design" aside, after looking in more desperation for help we noticed other symptoms of "Sun support gone wrong.":
Cryptic messages on Sun's message board about the availabili ty of Linux Java tools
Rumblings on the Blackdown Java port mailing list about lack of progress, with occasional hints that Blackdown is fixing bugs in Sun's code which are getting folded in for later release. While that's great (they should report bugs and the bugs should be fixed in later releases), this forces us to ask the question, "What form is the press-released 'Sun support' taking?" Evidently it's not in the form of programming resources or even $ to support developers.
Additionally, Blackdown appears to be in the lead as far as releases of the JDK go, with IBM purportedly not close to a Java2 JDK, and the other viable options being "for profit" and likely Closed Source. So, this is the net effect of Sun's much publicised "support for Java on Linux"?
This interview, to me, gives me additional reason to doubt Sun's corporate motives. While there are (even discussed on the Linux/Java developers lists) difficulties in porting Solaris thread code to Linux, and difficulties testing graphical components under the numerous X environments available to the Linux end user, if Sun were truly "supporting" the port of Java to Linux this would not really be an issue. Sun could at least provide a more portable reference implementation if nothing else. Gosling is as aware of this as anyone, but uses this as his "out" ("Sun FUD" if you will).
Similarly he straddles the fence by parroting the Sun party line -- why not truly Open Source Java (e.g., GPL it or release it under one of the BSD licenses?)? Well, it really is Open Source, but we have our own proprietary license because we want to maintain platform independence. But, ironically, the fact that Java is not truly Open Source is one of the reasons (determined from hours of sifting through user and developer mailing lists) why it isn't being ported more quickly to Linux. So, the Sun license is guaranteeing (at least for the moment) that Java is NOT platform independent.
Take this together with some reconsideration of the recent StarOffice purchase, and one begins to wonder whether Linux support is, in Sun's eyes, great PR but bad business.
"Cause there's 40 different shades of black, so many fortresses and ways to attack, so why you complainin'?"
Java is very much an Ivory Tower language that appeals to the same purists who previously were gung-ho over Smalltalk. These are not the sort of people that regularly recompile their kernels.
The difference between theory and practice is that, in theory, there is no difference between theory and practice.
And by the same token, no commercial vendor could use it if they wanted to use JNI....
The shotgun that can blow their foot off can blow your foot off too.
The GPL is no magic bullet.
"You know you want me baby!" - Crow T Robot
actually I believe that java is great and extremely usefull but that applets are basically toys with almost no use whatsoever! Client side applications or server side components on the other hand have a great future IMHO
Sun is proving that they have ran out of vision. While most other companies see Linux coming in a big way, Sun wants to ignore that future because they are not in cotrol. Sun is still dreaming about a Java world. This world may still happen, but not without Linux. Sun, there are two things you can do to speed things up: - Support Linux now, and watch Java take off or - Hand Java over to a serious company, then go away.
What are you talking?
marc> uname -a ./configure ./config.cache /mvw/bin/install -c /mvw/bin/install -c ./config.cache ./config.status ./cdi_cygwin.cpp to cdi.cpp ./cdi_cygwin.h to cdi.h
CYGWIN_NT-4.0 PC_108 20.1 (0.3/1/1) 1998-12-3 20:39:18 i686 unknown
marc>
loading cache
checking for a BSD compatible install... (cached)
checking whether build environment is sane... yes
checking whether make sets ${MAKE}... (cached) yes
checking for working aclocal... found
checking for working autoconf... found
checking for working automake... found
checking for working autoheader... found
checking for working makeinfo... found
checking host system type... i686-pc-cygwin
checking for mawk... (cached) gawk
checking for gcc... (cached) gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for c++... (cached) c++
checking whether the C++ compiler (c++ ) works... yes
checking whether the C++ compiler (c++ ) is a cross-compiler... no
checking whether we are using GNU C++... (cached) yes
checking whether c++ accepts -g... (cached) yes
checking for a BSD compatible install...
checking whether ln -s works... (cached) yes
checking whether byte ordering is bigendian... (cached) no
checking size of long... (cached) 4 updating cache
creating
creating Makefile
creating config.h
linking
linking
marc>
Works like a dream.. allows for an easy portation, like here of the CD Index client to Win32.
Hmmm... Imagine the following interview
What about Windows and Java
JG: Well there are issues.
So I suppose it works fine on Linux
JG: Well it depends on the flavour of Linux
WHERE DOES JAVA WORK?
JG: It works great on SPARC
Oh, I forget you work for Sun right?
Now back to reality. I could believe Java has problems with either Windows or Linux, but not both at the same time. If this is the case, then it is not the platform, but Java!!!
"You can't make a race horse of a pig"
"No," said Samuel, "but you can make very fast pig"
I never found any reason for operator overloading to be dangerous. As pointed out, it's already used for String.
C++ programmers are more sophisticated than Java programmers. This isn't a jibe at Java programmers, because Java programmers are more sophisticated than Visual Basic programmers, and there is still a need for Visual Basic.
Simply put, C++ is a more complex tool that was made to be applied to far more areas than Java was ever intended. Comparing the two can even be silly, but since people are doing it anyway (and Gossling stole all of it... making a language better than C++ from skratch, geeze, how hard can that be considering it didn't need to be C compatible?)
Because C++ offers so much more, people think it's dangerous. And with every right, it is more dangerous. Only if you are skilled and worked with it for many years can you get C++ under control. But once you do, wow, what a tool!
Parameterized types and operator overloading will be parts of Java in the future if it is to succeed and grow. Java already has a crippled MI, they call them interfaces, which are actually a major deficientcy in design. Look at how horrible AWT and the collection classes are.
I have it working and it is as simple as setting up the proper classpath variables and such.
Just get the JDK from blackdown working and then download swing, set up your classpaths and your gold. (Swing is written completly in Java so getting platform implementation is not necessary, ah the beauty of java.)
I've been working with the JAI. I really wish that your statement about the core part being written in C were true, but it really isn't. Too many functions are still in pure Java. The speed is actually pretty decent, but what makes it slow is the memory inefficient way you're forced to code when using the JAI -- it really slows things down when your system runs out of ram, and it starts to page the hard disk or stops to garbage collect. The Java garbage collection mechanism seems really unsuitable for working which large amounts of data -- when you're dealing with large data sets, you really want tight control over how the program uses memory.
The complaints about flavours of Linux are just a rationalisation - the problems are of Sun's own making.
I have no problem writing code that runs on all the Linuxes - but I wrote a moderately large Java application and I had all sorts of compatibility problems between the JVMs. Not to mention JVM crashes and Win95 crashes, memory leaks, bugs in garbage collection etc. Back to C for me.
And it is obvious why the Linux JVM is not getting the support it needs - noone wants to sign away their rights to a *not* open source effort (no, not 'almost open' just not open).
C doesn't guarantee link problems either. But then again neither does Java byte code. Code produced with different compilers (javac, jikes, jvc, ...) often dies on a different VMs. Java 1.0, 1.1, 1.2 have pretty serious compatibility issues.
You can check logs from major portals if you doubt this. Netscape has fallen below 40%.
We all know Perl munges text above all others
. What domain does Java rule?
Of all of my investigations so far, I cannot find a domain where Java rules the roost. I thought database programming, but it looks like C still rules that domain. Internet programming? I'm looking for things Java does that Perl doesn't, but not much luck.
Maybe XML programming? I know Java has a lot of native parsers and tools.
This isn't a flame - I'd like to hear from others.
No one is making you use overloading, but lord knows once you use the STL, Java looks like a retarded tool.
You can certainly in terms of license terms, but you need a lot more than just releasing your source code. After all, proprietary companies release their source code to other companies ... The real point is the spirit, and to my understanding of the SCSL, Sun basically retains control. Just making the licensing terms similar to a free license and adding a clause that closes it down doesn't make you any closer to free software in spirit than a proprietary license. I admit it's something, and there are many questionable free software license clauses and issues, but the issue is still a wide chasm of philosophy between the two. The analogy is not perfect, but I certainly think "close to open source" does not describe the SCSL. I don't think it's even possible to be "close".
Flame me if I'm wrong but I believe Sun began actually supporting both the Mac MRJ team and the Blackdown JRE teams sometime over the last year with actual programmers. Adding one or two programmers however will not transform the porting timetables however. Java 2 support is going slowly with IBM and Apple as well as Linux but it will come.
I still can't get MkLinux to usefully install on my Powerbook 1400 but I'm not flaming everyone here as Apple hating-hippies. I can't help so I wait. Contribute to Blackdown or Japhar, or be patient.
I've been writing code for a living for 10 years or so. For a while now, I've been reading the various Slashdot discussions about Java. The signal-to-noise ratio is really low.
1. Java execution speeds are now approaching and in some cases exceeding those of compiled C and C++. If you don't believe it's possible, you don't understand optimization.
2. Our developers compile on NT or Linux, pick up the binaries and run them on our Solaris servers. Or the OS/390 mainframe upstairs. They love it and it saves them time and effort (and that means money too).
3. The IBM JDK for Linux works fine. There are some minor issues. Who cares? Stop worrying about it! Get on with the coding.
4. Java has more in common with Smalltalk than with C or C++. That's why serious object developers use Java and not C++.
If you want to write professional object software now, on PCs or mainframes, Java is your best choice. Smalltalk second. Then maybe Eiffel or Python if you're not bothered about performance, JPython if you are. C and C++ are not in the picture. Don't even think about Perl.
Now don't get me wrong - I love Open Source, and Linux is one of the best things to happen in personal computing for years and years. I would love to see a genuinely free JDK, and I wish I had the time to do it.
Free or not, Java gives you the chance to write clean, elegant and most importantly *simple* code for object systems that work.
Anyway that's my advocacy spout over with. One more thing though: some Linux people here spread FUD about Java the way MS spreads FUD about Linux. It's sad to see. We should be above that by now.
Apologies for ranting,
__ Em
String str = null; //not important
Object obj1 = (str == null) ? "some default value" : str.toUpperCase();
Object obj2 = (str == null) ? "some default value" : str.toUpperCase();
Run the compiled code. NullPointerException.
Why? When these constructions are parsed by jvc, they stupidly execute both expression paths. The reason you have to do two of them is that Microsoft must have put in a hack to fix the first one during parsing.
I've submitted this bug to Microsoft for each release of jvc, and I keep getting the "there is a workaround" runaround from them...
Eh. The problem is, once you get into operator overloading you do get into some issues with readability of your code. Sun made a design decision when they excluded that from the specification, and I'm not yet sure whether or not it was the right decision.
As I said before, developing for one toolkit just causes others to be left out. I don't have the kde libs, so I can't run kde apps (yet, 'till I install them). So to get java working, I have to install something I dont' want?
-
ping -f 255.255.255.255 # if only
If you don't need 1.2 support from your Java, just get Kaffe (www.kaffe.org). Open Source, Java, runs pretty well.
C++ is processor-portable sourcecode. It is not platform independant, you still have to find out every platform's details and hack those in. That does not compare at all to platform independant and binary-portable code of java.
If you are going to compare anything being better than java, choose perl, or Emacs LISP (which is by the way one of the things Java bytecode is based on from my understanding).
Their license is NOT open source except for this issue (interoperability). It is FAR from it. See below.
First of all, there is an EASY way for Sun to make Java open source and maintain compatibility, because they own the *name*. They can license the code, but only grant licenses to use the *name* java if you are compatible.
Secondly, there are such things as Test Suites. If Sun were even remotely serious about being "open", they would make their test suites freely available. If they did this, too, the compatibility thing would be a non-issue, because every news magazine and hacker would run the compatibility tests on every new JVM released - there would be no way to be incompatible without it being public knowledge *very* fast. As it is now, we pretty much have to take Sun's word for it that a JVM is incompatible (except for Microsoft, who boast about it).
There are at least two other issues apart from the compatibility testing issue where the license falls far short of open source. First is the fact that you are licensed to use the code only for research purposes; you can't even use it internally to your business without that being considered commercial use. Or give a copy to your neighbour. You *certainly* can't include it in your Linux (or xBSD) distribution.
Secondly, there is the matter of what you have to do to escape those restrictions. It's *not* just a question of "keep your version compatible, and pass a test to prove it". You have to get a whole fresh license from Sun, which you have to *pay royalties for*. It's not even just a nominal fee to cover the cost of testing (which is ridiculous anyway - see my earlier point about free test suites) but fully fledged license fees of the same sort as they were charging people for licenses before the SCSL came out.
If Sun were serious about being open, there is a LOT they could do. Don't be fooled by their blurb.
Stuart.
My Swing apps inproved double fold from 1.2.1 to 1.3beta.
There are two changes that lead to this. First, and most obviously, Hotspot is now the default compiler. Secondly, the changelog mentioned that they reimplemented swing. The first design was really bad so they are doing a rewrite of how it works.
I'm not sure on all these details, but I do know that my apps are much nicer with 1.3... I can't wait for a 1.3 final to come out for Linux. That will indeed be a good day.
Civ CTP is awesome! Thanks Loki!
Romans 10:9-10
Also, one difference between the new Collections and the pre-existing collection classes such as Vector and Hashtable is that the older classes were entirely threadsafe, while the newer ones are not. Thus, if you can guarantee that your collection will only be exposed to one thread at a time, you can gain a slight performance benefit by using them.
"UNIX" is never having to say you're sorry.
Sorry, but I have different experiences.
I wrote an applet that displayed chemical data and tried it in various Java environments. This being Netscape 3, Netscape 4, Sun jdk, MS Explorer 4 and Explorer 5, under Windows 95, Windows NT, Solaris, and FreeBSD.
Good news is, that it worked on most of platforms, albeit good only under jdk appletviewer and Netscape 3 as these were the environments I developed on. Even there it was not perfect, small things like the behaviour of the little boxes on the scrollbars was not the same.
I admit it was a delightful experience to see it working on so different platforms.
Bad news is that after some time Java evolution did not allow me to compile the source code anymore. I accept that.
But what really gets me mad is that is not possible to execute the class binaries from an app written in mid 97 two years later. This is a very bad thing.
I think Sun had dreams of being the originator of *the* defacto programming language. What a fantastic thing for a company to have in it's possesion, a world standard. But, C was already a universal standard. With ./configure, it's write once run anywhere(TM) already. Not to mention, Sun wanted to remain in control of the thing. The Zaar of *the* language. I don't love or hate Java. I just fail to see any benefits from it's use and wonder how Sun might act if Java were to become the next C.
What problems can possibly be so bad? Have they heard of GNU Autoconf? And what's wrong with just concentrating on one distribution? I bet RH would cooperate. And us Debian users would find a way to make it work on our systems too.
Every time a faster processor comes out, developers think of a way to saturate it in C long before the clock speed ever helps Java. What do you want to spend those clock cycles on: redrawing the GUI or signal processing?
You assume too much. I've been professionally programming Java since 1996. Of course, it's so easy to write someone off by just saying "feh! Amateurs..." instead of actually arguing the points.
I defend Java's portability because I use it every day. One of my first projects was maintaining an applicaiton on Mac, Linux and Windows.
It was using AWT on Java 1.0.2. Yes, _programming_ in AWT 1.0 was annoying, and I'd much rather use the 1.1 event model, but this application needed to run on all web browsers, from Netscape 2.0 up.
It worked well, in the end. AND I NEVER HAD TO TWEAK IT for Mac or UNIX. Just for the different web browser VM's. Netscape reallllly has bugs in their VMs. BUT, even that wasn't a WHOLE lot of work - maybe a few days.
So, Java is NOT 100% portable. But it *IS* way more portable than anything else out there. Which was my original point.
-Stu
The Java community has got itself into a bit of a pickle. I think they could have avoided it, but it's now going to take time, and it'll be a painful thing for them. They're going to go from taking cheap pot-shots at Linux to understanding that we've been developing mission-critical applications all along. On top of that, they're going to have to realize that they can't just plug their ears singing, "The inter-operability problems with Linux are just horrible.", when everyone else is already developing for Linux without any problems. The road may be a little bumpy.
Tcl/TK and Perl/Tk have my utmost respect.
I think Swing is a little more rich, though.... but sometimes you just don't need that level of richness.
-Stu
can someone explain what 'connection classes' and 'higher order functions' are?
thanks,
me.
So many things to pick apart, so little time. ./configure is beautiful when it works but you are obviously oversimplifying "C" portability. ./configure or no ./configure ,compiling accross different platforms is just a mess.
As an example, we tried compiling the TAO ORB for AIX 4.1.5 last weekend. The compile took almost 2 days, failed many times, we modified makefiles, removed features (templates, etc), UPGRADED THE COMPILER AND RUNTIME LIBRARIES, and what did we get at the end ??? nothing. After so much time wasted, the final step of linking everything together just did not work at all.
Java is not magical, but I do develop faster with it not only because I don't have to worry about damned memory pointer magic, core dumps, fake OO (C++), #ifndef #define #endif blocks, etc, but that it really works in the platforms I use at home and at work ***WITHOUT*** having to recompile (AIX, Solaris, Linux, Win98, WinNT).
Any questions ?
- sigs are for wimps.
The faster the CPU, the faster the computer gets to idle... face it, most people aren't running rendering engines on their desktops. The only time I get my computer running at 100% is when I'm playing Q3Arena (and that's *all* I'm doing).
If Java could overload the () operator (functor-operator in C++), then this wouldn't be a problem.
The work is in the subclass (with appropriate native code) of the java.awt.Toolkit class. So, you could have an X-Windows (there already is one in the Blackdown version) Toolkit: sun.awt.MotifToolkit (or something).
You could get the source code for free from Sun from day one if you sign an NDA, the purpose is non-commercial, and you send all of the fixes to Sun.
One of the major points always missed in these interviews: Java needs parameterized types!
To make a good container class in a statically typed language, you just need them. It's as simple as that. The question I would have asked, then, is why don't we have it? The answer is more complicated than how it would initially seem. The main reason I can see Java lacking parameterized types right now is because there is no support for operator overloading in the language.
Suppose I wanted to make a valarray class and wanted a method that would sum up every element. It could be useful to do this with int, double, and BigInteger. The problem is, to add primitives you have to use +, and to add BigIntegers, you have to use add(). We'd still have to write two versions of the valarray class, one for primitives and one for objects.
Why doesn't Java include operator overloading, then? Well, it already does: Sun hacked the language so String could work with + and +=. Geeze, since that was so useful, why not generalize it? "Because it's dangerous." What arrogance on Sun's part, and what shallow thinking it is when it comes to language design. Ironically, if Java had operator overloading, it wouldn't have any of the problems found with C++'s implementation of it.
Luckily, a paper by Gossling was talking about better supporting numerical programming in Java, and he mentioned operator-overloading is being considered. If only as much thought was put into the language and AWT as it was to the virtual machine.
-Mac
I don't see Java becoming the universal platform Sun wants it to be, simply because of this grasping control they maintain over it. Who owns C? Who owns C++? But Java will always be married to Sun in everyone's mind, and a single company simply cannot muster the kind of critical momentum needed to make a language the "standard." At this point, Perl is way closer to "write once, run anywhere" than Java, and it wasn't even intended to be! (BTW-- who owns Perl? Ok, I guess the point is made :-) ).
None of the above is meant to be an attack on Sun, or any sort of "Java sucks" flamage, but hopefully, a coherent analysis of the situation. I just wish more companies would spend some of the effort they spend imagining all the horrible things that could result from going Open Source trying to imaging benefits they might reap from it...
----
We all take pink lemonade for granted.
There is no K5 cabal.
I am not the real rusty.
...that appeals to the same purists who previously were gung-ho over Smalltalk.
I dunno, most folks who love Smalltalk seem to have a great deal of apathy towards Java.
- Release a development kit under a real Open Source license.
- Accept the patches that will come back to you.
It's really not that hard. I will even commit myself to doing any work to make the JDK compile nicely under Linux, including Makefile changes or general portability clean-ups that may be needed. It's not that hard to write clean code that compiles across all Unixes, let alone all Linuxes. The "henious differences" between different Linux distributions are myths; you write ANSI C and it will work.--
This should really read Use Java on Solaris - Because most Linux users don't really give a shit about Java...
What he means, I think, is that The number one platform for Java is Microsoft's Internet Explorer. As long as IE is the number one browser, most people will be using whatever implementation of Java that MS uses.
The poster before stated that Microsoft and Sun needed to work out there differences before they Java could work as advertised. The problem, however is that Microsoft doesn't want Java to reach that potential. So the longer they stall, the better for them. (the sad fact is, MS's Java runtime is still faster, *and* more compatible than Netscape's...)
Anyway, Ms's and Sun's actual implementation aren't that different, it's the major 'windows binding' that J++ puts in by default that are the real killers. Any competent programmer would test his application on more then one platform, and avoid stuff that doesn't work on all. If they don't then they are not.
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
I would not go so far as to call the man a liar, but let's take a quick look at his responce to once question:
"Zombiehead: James, what's your stance on Java in relation to open source?
It's one of the reasons Linux is successful. Do you see this as a future possibility?
JG: We'd like to deal with the problem of Java not working on Linux. It's a somewhat complex problem.
The inter-operability problems with Linux are just horrible. You have to be excruciatingly careful because all the different flavours of Linux are all slightly different."
The questioner points out the success of linux as proof of the power of Open Source, and asks for the authors stance of the question of Open Sourcing Java.
His answer has *nothing* to do with answering this quesiton, he merely dodges the question by saying that Java has problems with Linux because the differences between distributions. The question was in regards to Java's License, *not* Java on Linux!
All I know is right now I have C, C++, Pascal, Basic, LISP, Perl, and a few other program language compiliers/interpreters that don't seem to have any problems with "interoperability" between distrutions on my Debian, SuSE, and Redhat machines.
Some smells fishy to me.
Your Brain + EEG + LEGO Robots = Brainstorms
Comment removed based on user account deletion
Sun has a vested interest in pummeling Microsoft. It stands to benefit from a variety of other movements in the industry as well.
It does not want to bolster the viability of another *nix!
Why should they support a free OS, and alternative to Solaris, with a free JDK?
Sun, like everyone else, is in business to make money, first and foremost. Turning out a great product is secondary, and the good of all mankind comes in a distant third.
-- What you do today will cost you a day of your life.
(For whatever it's worth, one of the GJ designers, Philip Wadler, works for Bell Labs, a division of Lucent, my employer.)
They presented a paper on the subject at OOPSLA '98, last October. According to the GJ page linked to above, adding generic types to Java is one of the top twenty-five requests for enhancements.
send all spam to theotherwhitemeat@ropine.com
Java took OO and made it idiot proof for the masses. Now only idiots use it!
Perl has much better text handling functionality (remember what the web is made of? yeah! text!)
Perl has a much greater base of people who actually code in it every day without some corporation trying to ram it down people's throats.
Please don't quote me Sun stats for the number of Java programmers out there - those stats are complete BS.
I don't. "Open Source" can be defined by many things, (since the "open source" trademark fell through). As defined by the OSI, open source comprizes many diffrent qualitys. Sun's comunity licens matches some of them, therefor it's 'close' to open source
"Subtle mind control? Why do all these HTML buttons say 'Submit' ?"
ReadThe ReflectionEngine, a cyberpunk style n
I don't understand why a virtual machine wouldn't be happy on any distro as long as its statically linked and stuff...
Any insights?
License: By reading this you are agreeing that you agree with me.
The problem for Java, is that cross-platform capability has a way of limiting what it can do. Unfortunately, IMO, Sun misread the demands of the industry. Sure, there are many shops out there which use both Unix and Win32 systems. But given a type of computer (workstation, server, whatever) - you'll find that they are often all using the same platform within an organization.
But, people say, Java also fills a need for rapid, safe application development. No mucking about with pointers and such. Less mistakes = more productivity. Certainly, that is true, and people are relatively expensive compared to hardware. So the runtime speed / development speed tradeoff is often a good one.
However, Microsoft recognizes this very well. They will certainly market something to fill the gap (aka Cool). They aren't really interested in cross-platform support, so odds are, whatever they implement is going to blow Java out of the water, in both speed and capability, on a Win32 platform.
Whether customers will jump onboard or not remains to be seen.
SEAL