There aren't many professional-grade Java Desktop apps out there, and those that _are_ out there are generally built for maintainability, not speed (Eclipse, Netbeans). I built a Java web client that blew the pants off its older C++ version. The reason Java apps are generally slower is because the Java culture is about maintainence over performance.
The python culture is about readability and maintainability over performance, and python programs still perform far better than Java ones. Specific example: eric3, which is closer to a full-fledged IDE in terms of features, starts far faster and is far more responsive than jedit. Java is just horribly slow.
GUI responsiveness. Click a menu button and wait literally half a second for the menu to appear. Click an OK button and the dialog hangs around with it pressed for a couple of seconds. And even while this slow it's still taking all the CPU, if I try and run (for example) an mp3 player at the same time the song starts skipping. Startup times are also pathetic (20s for a text editor) but that's excusable
I know people who use, for example, the NetBeans IDE on Linux and Windows on machines of that spec.
I've tried azureus (the best bittorrent client around if it wasn't so slow as to be unusable, yaggui (more for the sake of a comparison with other gift clients since it's less featureful), and jedit (nice, but again unusable for me), possibly some others I've forgotten about.
There are no performance problems at all with the Java 5.0 VM either in terms of general use or the GUI.
People always say this, but my experience is that it's simply not true.
Try a modern JVM - late 1.4.x or, even better, 5.0. The Swing performance has improved dramatically.
I have, last one I tried was iirc 1.5.04. It still sucks to the point of being unusable on an 800mhz system. I'm using linux, maybe the windows JVM performs better.
There are scores of Java bytecode compiled languages, very few of which actually have gotten traction. Jython is one of the more well known (whose creator now works on the CLR & IronPython for.NET), I believe there is also a Java-ized Ruby.
Both of those (IIRC of course) are just interpreters that happen to run in Java. They make the Java API available in the client language, which is useful, but not in the same league as what IronPython does.
Groovy,which has no other outside implementations, is gaining some traction. If you care, there is also Scheme.
There are only two non-Java languages (well, there's a third which claims to have a compiler but tells you to wait if you try and actually get it) which can be fully compiled to Java bytecode, one of them is common lisp and I can't remember the other. Both these work by translating the code into Java rather than compiling it directly. I'm not sure even then we have languages being fully interoperable with each other, doing things like subclassing a class declared in a different language. Wheras.net is designed to do that from the start.
It is true that the CLR was supposed to unite the Microsoft languages, including such evils such as Visual Basic / VBScript, and they put more of a spin on this than say, Sun, which had no other language offerings that they intended to run on the Java JVM. Ironically, this forced some of these languages to look quite similar to C#, which upset nary a programmer used to VB6, as I have heard through the winds.
But languages like python or IIRC Eiffel, which have nothing to do with C#, are able to be made first-class citizens, with every bit as much status as C# in the runtime. That has never been done before, and the ironpython project was in fact started with the intention of proving it to be impossible.
Why use Mono/.NET when you have ruby, perl, php, and python?
Because the great promise of.Net is that you can mix and match all of those in the same program. But I think the main reason is that for some reason people think Java is all "enterprise" and the only choice for large corporations. I blame sun marketing, but if you look through this thread you'll find hundreds of people repeating this..Net gives me a way to use a nice language like Python while still being "enterprise".
But, will a Mono app/code base developed on Linux run just as smoothly on the.NET runtime in Windows?
Yes, that's the whole point, though it only will if it sticks to the standard APIs. There are things which are only supported in Mono, but they are split off into their own namespaces (usually Mono.*). The same is true with Java, if your thing uses sun.* it won't work on non-sun jvms.
That SETI, rather than looking in the wrong places... is looking in the wrong ways? ETs aren't going to let us see them until we know how to look at ourselves.
We know anyone looking at this planet would see us shining like a beacon in the radio spectrum. Or are you trying to make some mystical point?
Apologies if you have, but: try a real high-level language sometime, something like Python (personal favourite) or Ruby. You won't know how much you're missing in Java and C# until you do.
/supporting.net because it has some nice languages as first-class citizens
It's not there in Java. There are lots of interpreters running in Java, which is most of what you list, and some of them let you access the Java API from those languages. What you can't do is access them from each other - there is no way to make an [incr tcl] class and then subclass it in Python, or even as far as I can tell call functions in one non-java language from another. With.net you can do that.
With Java you now have a complete implementation of all language APIs on Windows, Linux, Solaris, HP and so on,
With a horrible license and horrible performance.
not an incomplete port of.NET (Mono) potentially subject to Microsoft patents. Anti-mono people go on about the patent bogeyman even though MS has *never* used a patent aggressively, and there are situations where it would benefit them far more to do so (OOo, Samba). The threat of patents is just so much hot air.
If the Apache Harmony projects succeeds (and it has a lot of backing) there will be a complete open source cross-platform Java implementation.
Vaporware, gimme a break. People have been saying we will have a complete open source cross-platform Java implementation for as long as Java's been around. It's never materialised.
There are already open-source Java versions that are good enough for many applications (gcj, Kaffe).
Look who's an incomplete port now. gcj and Kaffe are good projects and I support them but if you try and run a random app on them it's not even "hmm, this might work, we can hope", it's "let's see where this breaks".
Mono is a waste of time.
Right now I have a working, open source implementation of all of.Net that I need, which installs easily on every platform I've seen in use. Or, I have a horribly-licensed and horrible-to-install (especially on BSD) Java implementation, or a number of attempts at an open source Java which though initially promising seem to be going nowhere and won't run the vast majority of java programs.
That will be news to the many developers who have produced such applications. Go to the Swing Connection on the Sun Java Website and you will see hundreds of applications that are consumer-grade. This includes games, graphics apps, and multi-media apps.
I've tried them. I want to like Java, the idea is good. But Java on the desktop really sucks just because swing is so pathetically slow. I've tried to use things like azureus, jedit, lovely applications if you have the supercomputer needed to run them at a usable level of performance. Remember the average home computer is still slower than 1ghz, something it's easy for leading edge slashdotters to forget. Java for the desktop PC simply isn't consumer-grade.
It's much more cross-platform then.NET is or ever will be even with Mono.
Really? I take it you have a way of seeing into the future.
Technically speaking this is true. However, practically speaking the two choices are VB.NET and C#.
Two is still better than one, and I've already found Boo to be usable. Lots more languages are being worked on.
However, I'd much prefer C# which I think is really the only viable language for.NET. Anyways, I'm not a big fan of either. Like I said before, I'd use Java before I'd use.NET (if it were my choice).
If you really like java as a language, I thought it was shipping with.Net. Personally I detest the language and would use anything over Java, so I'm supporting.Net where I don't get stuck with everyone else's dumb language choice.
And memory stick ? Why do people bitch about memory stick and not SD, or MMC or compact flash ? I own devices that use each of these formats: why is it only SONY's fault that the market is fragmented and non-interoperable ?
Memory sticks are only made by sony, only used by sony devices, and cost about 4x as much for a quarter of the storage. They're a prime example of why proprietary formats are bad. SD/MMC I'm not too happy about but at least the fact that every taiwanese electronics company can make them (without paying sony) drives the price down to a reasonable level, and I can understand that some devices need something smaller than SD.
If some shop has the time to screw with this stuff, they have too many IT staff and are pissing away money for nothing.
Or...they've found out they save more by building their own than it costs to pay the people needed to build them. If it's cheaper to buy dells, of course any business will do that, but there are times when it isn't.
No, I was saying my comment would be interpreted as flamebait.
Point in question: I rent a remote server. I could access it through X11 over the network, Webmin or ssh or any combination of protocols tunneled via ssh. If X11 were to go down, I can still go in and work via ssh on the commandline, and in fact this is what I usually do (it's what most unix and linux admins do). You're just talking about your desktop, not your server. If the gui goes down on Win2k3, what are you going to do?
I'd do the same thing, ssh in and fix it. (On 98 at least you just have to run explorer.exe to get the gui going again, I assume the same is true on 2k3) I know many windows people wouldn't, but that's a difference in the users rather than the OS.
I don't hate Windows (or Linux or OSX - I use all three every day), but I do think the registry is a bullshit braindead idea. Even Microsoft seems to agree
I agree with this 100%. I just find it hilarious that even given all that, gnome went and adopted one.
There is such a thing as 'dialects': variations of a language to suit specific needs, like machine-binary, embedded and real-time Javas. Vanilla Java is all bytecode within a contained runtime environment, it cannot have any direct binary interface with the outside world. The other Java dialects can do things that may be technically impossible or simply forbidden by plain Java.
True, but to make a Java dialect that could do what you need to to program an OS in it you'd basically just be turning it back into C++.
As for Linux having C++ in it, with the number of times I have seen Linus quoted saying he would not put any C++ in the kernel, it seems unlikely that the kernel would contain actual C++.
That's not the quotes I've seen at all, they seem more to be on the lines of "don't tell me not to put c++ in the kernel, what is there is there for a good reason". I may be remembering wrong.
does that mean maps will finally work in Konqueror? I like google maps but it's useless to me unless I can use it in my browser. And it seems to have got worse recently - there was a time when it was almost working, now it just gets stuck in an endless reload loop.
How many 'close to the hardware' aspects of C could not be implemented in machine-binary Java?
It's been a while since I did any Java so I can't remember everything that's wrong with it, but let's see, gotos (they may be an evil but at times they are a necessary one), running without classes where you need the performance, IIRC the arithmetic doesn't reflect the hardware accurately, pointer arithmetic, storing code as data.
Give machine-binary Java inline-ASM and that takes care of the 1% of situations where absolute control is necessary or justifiable.
How many good assembly programmers do you know? What about on a more obscure platform? There is too much code that needs c-level control in a modern OS to do it all in asm, believe it or not there are multiple levels of abstraction needed, that's why e.g. linux has c++ parts, c parts, and inline asm. What are you going to do for the c parts in java?
Or just link with external libraries like we already do in C/Pascal/etc.
Not good for OS fundamentals, and if it's easy to do in Java why can't you do it already?
FlashBlock is better than completely disabling Flash, it allows you to selectively view Flash, but blocks it from loading otherwise.
So why doesn't the browser do that anyway? It's like people respond to "firefox tabs suck" by saying "install tabbrowser extensions". Thanks, but firefox's tabs still suck, why can't they just include that functionality?
Seriously, is their goal to sue every single person in America ? That doesn't seem like a good long-term business model. I'm generally less likely to buy things from companies that have taken legal action against me.
That's ok. At $125,000 per song statutary damages, they can profit quite happily if you never buy another song afterwards.
Or, in most cases, wasn't top of the range when it was bought.
Although it looks a helluva lot better than normal GTK, it still doesn't look as good as true Qt applications, and there's a huge performance penalty.
Ok, but you can't blame people for saying Java is slow. Anything using swing is incredibly unusably slow.
The python culture is about readability and maintainability over performance, and python programs still perform far better than Java ones. Specific example: eric3, which is closer to a full-fledged IDE in terms of features, starts far faster and is far more responsive than jedit. Java is just horribly slow.
The typical home machine these days is still sub-ghz, and Java performs so poorly as to be unusable on such machines.
GUI responsiveness. Click a menu button and wait literally half a second for the menu to appear. Click an OK button and the dialog hangs around with it pressed for a couple of seconds. And even while this slow it's still taking all the CPU, if I try and run (for example) an mp3 player at the same time the song starts skipping. Startup times are also pathetic (20s for a text editor) but that's excusable
I know people who use, for example, the NetBeans IDE on Linux and Windows on machines of that spec.
I've tried azureus (the best bittorrent client around if it wasn't so slow as to be unusable, yaggui (more for the sake of a comparison with other gift clients since it's less featureful), and jedit (nice, but again unusable for me), possibly some others I've forgotten about.
There are no performance problems at all with the Java 5.0 VM either in terms of general use or the GUI.
People always say this, but my experience is that it's simply not true.
I have, last one I tried was iirc 1.5.04. It still sucks to the point of being unusable on an 800mhz system. I'm using linux, maybe the windows JVM performs better.
Both of those (IIRC of course) are just interpreters that happen to run in Java. They make the Java API available in the client language, which is useful, but not in the same league as what IronPython does.
Groovy,which has no other outside implementations, is gaining some traction. If you care, there is also Scheme.
There are only two non-Java languages (well, there's a third which claims to have a compiler but tells you to wait if you try and actually get it) which can be fully compiled to Java bytecode, one of them is common lisp and I can't remember the other. Both these work by translating the code into Java rather than compiling it directly. I'm not sure even then we have languages being fully interoperable with each other, doing things like subclassing a class declared in a different language. Wheras .net is designed to do that from the start.
It is true that the CLR was supposed to unite the Microsoft languages, including such evils such as Visual Basic / VBScript, and they put more of a spin on this than say, Sun, which had no other language offerings that they intended to run on the Java JVM. Ironically, this forced some of these languages to look quite similar to C#, which upset nary a programmer used to VB6, as I have heard through the winds.
But languages like python or IIRC Eiffel, which have nothing to do with C#, are able to be made first-class citizens, with every bit as much status as C# in the runtime. That has never been done before, and the ironpython project was in fact started with the intention of proving it to be impossible.
Because the great promise of .Net is that you can mix and match all of those in the same program. But I think the main reason is that for some reason people think Java is all "enterprise" and the only choice for large corporations. I blame sun marketing, but if you look through this thread you'll find hundreds of people repeating this. .Net gives me a way to use a nice language like Python while still being "enterprise".
Yes, that's the whole point, though it only will if it sticks to the standard APIs. There are things which are only supported in Mono, but they are split off into their own namespaces (usually Mono.*). The same is true with Java, if your thing uses sun.* it won't work on non-sun jvms.
We know anyone looking at this planet would see us shining like a beacon in the radio spectrum. Or are you trying to make some mystical point?
/supporting .net because it has some nice languages as first-class citizens
It's not there in Java. There are lots of interpreters running in Java, which is most of what you list, and some of them let you access the Java API from those languages. What you can't do is access them from each other - there is no way to make an [incr tcl] class and then subclass it in Python, or even as far as I can tell call functions in one non-java language from another. With .net you can do that.
With a horrible license and horrible performance.
not an incomplete port of .NET (Mono) potentially subject to Microsoft patents. Anti-mono people go on about the patent bogeyman even though MS has *never* used a patent aggressively, and there are situations where it would benefit them far more to do so (OOo, Samba). The threat of patents is just so much hot air.
If the Apache Harmony projects succeeds (and it has a lot of backing) there will be a complete open source cross-platform Java implementation.
Vaporware, gimme a break. People have been saying we will have a complete open source cross-platform Java implementation for as long as Java's been around. It's never materialised.
There are already open-source Java versions that are good enough for many applications (gcj, Kaffe).
Look who's an incomplete port now. gcj and Kaffe are good projects and I support them but if you try and run a random app on them it's not even "hmm, this might work, we can hope", it's "let's see where this breaks".
Mono is a waste of time.
Right now I have a working, open source implementation of all of .Net that I need, which installs easily on every platform I've seen in use. Or, I have a horribly-licensed and horrible-to-install (especially on BSD) Java implementation, or a number of attempts at an open source Java which though initially promising seem to be going nowhere and won't run the vast majority of java programs.
I've tried them. I want to like Java, the idea is good. But Java on the desktop really sucks just because swing is so pathetically slow. I've tried to use things like azureus, jedit, lovely applications if you have the supercomputer needed to run them at a usable level of performance. Remember the average home computer is still slower than 1ghz, something it's easy for leading edge slashdotters to forget. Java for the desktop PC simply isn't consumer-grade.
Really? I take it you have a way of seeing into the future.
Technically speaking this is true. However, practically speaking the two choices are VB.NET and C#.
Two is still better than one, and I've already found Boo to be usable. Lots more languages are being worked on.
However, I'd much prefer C# which I think is really the only viable language for .NET. Anyways, I'm not a big fan of either. Like I said before, I'd use Java before I'd use .NET (if it were my choice).
If you really like java as a language, I thought it was shipping with .Net. Personally I detest the language and would use anything over Java, so I'm supporting .Net where I don't get stuck with everyone else's dumb language choice.
Yes, fleeing the sinking ocean liner that is HD-DVD
Memory sticks are only made by sony, only used by sony devices, and cost about 4x as much for a quarter of the storage. They're a prime example of why proprietary formats are bad. SD/MMC I'm not too happy about but at least the fact that every taiwanese electronics company can make them (without paying sony) drives the price down to a reasonable level, and I can understand that some devices need something smaller than SD.
Or...they've found out they save more by building their own than it costs to pay the people needed to build them. If it's cheaper to buy dells, of course any business will do that, but there are times when it isn't.
No, I was saying my comment would be interpreted as flamebait.
Point in question: I rent a remote server. I could access it through X11 over the network, Webmin or ssh or any combination of protocols tunneled via ssh. If X11 were to go down, I can still go in and work via ssh on the commandline, and in fact this is what I usually do (it's what most unix and linux admins do). You're just talking about your desktop, not your server. If the gui goes down on Win2k3, what are you going to do?
I'd do the same thing, ssh in and fix it. (On 98 at least you just have to run explorer.exe to get the gui going again, I assume the same is true on 2k3) I know many windows people wouldn't, but that's a difference in the users rather than the OS.
I don't hate Windows (or Linux or OSX - I use all three every day), but I do think the registry is a bullshit braindead idea. Even Microsoft seems to agree
I agree with this 100%. I just find it hilarious that even given all that, gnome went and adopted one.
True, but to make a Java dialect that could do what you need to to program an OS in it you'd basically just be turning it back into C++.
As for Linux having C++ in it, with the number of times I have seen Linus quoted saying he would not put any C++ in the kernel, it seems unlikely that the kernel would contain actual C++.
That's not the quotes I've seen at all, they seem more to be on the lines of "don't tell me not to put c++ in the kernel, what is there is there for a good reason". I may be remembering wrong.
does that mean maps will finally work in Konqueror? I like google maps but it's useless to me unless I can use it in my browser. And it seems to have got worse recently - there was a time when it was almost working, now it just gets stuck in an endless reload loop.
It's been a while since I did any Java so I can't remember everything that's wrong with it, but let's see, gotos (they may be an evil but at times they are a necessary one), running without classes where you need the performance, IIRC the arithmetic doesn't reflect the hardware accurately, pointer arithmetic, storing code as data.
Give machine-binary Java inline-ASM and that takes care of the 1% of situations where absolute control is necessary or justifiable.
How many good assembly programmers do you know? What about on a more obscure platform? There is too much code that needs c-level control in a modern OS to do it all in asm, believe it or not there are multiple levels of abstraction needed, that's why e.g. linux has c++ parts, c parts, and inline asm. What are you going to do for the c parts in java?
Or just link with external libraries like we already do in C/Pascal/etc.
Not good for OS fundamentals, and if it's easy to do in Java why can't you do it already?
So why doesn't the browser do that anyway? It's like people respond to "firefox tabs suck" by saying "install tabbrowser extensions". Thanks, but firefox's tabs still suck, why can't they just include that functionality?
That's ok. At $125,000 per song statutary damages, they can profit quite happily if you never buy another song afterwards.