Yes i remember shapeshifter well... It wasn't so much emulating, as virtualizing. The macs of the day and the amigas shared the same processors, the amiga had custom chips for video/sound which macs often didnt, and they used different firmware. Shapeshifter really just loaded up the mac firmware inside of a virtualization environment. Speed was often the same or slightly faster than a real mac using the same CPU, although you could get amigas with the 68060 chip which wasn't available for the mac (having moved to PPC) so m68k based apps were sometimes faster on the amiga than any real mac. Video was the biggest issue, since the native amiga chipset was completely unlike anything a mac would use, but an amiga with a video card would easily cure that.
I had kernel panics on my macbook with 2gb ram due to parallels, they always occurred when plugging or unplugging an ethernet cable (only occasionally, since i usually connect via wireless)
It's more of a unix port... I would imagine mac vmware is far more closely based on the linux version than the windows one. That said, it is still in beta, and it has features which parallels doesnt (64bit support, dual cpu support), as well as much better support for running linux guest images (parallels seems to cater exclusively to windows guests)
And doesnt.net work in much the same way as java, in that non native code is executed under a runtime... All that proves, is that java has a better runtime than.net, it has no bearing on java's performance relative to compiled code. Write a similar app in C, compile it with a half decent optimizing compiler and see how it performs.
And why would you not write a graphics intensive application in java? Because java has too much overhead to make such an app perform as well as one written in C? Isnt that exactly what i've been saying?
I used to download demo versions, and get them from cover disks etc... I found that the demo was usually better than the full game, for instance:
The lion king - platform game, the first level was good, the rest were crap, the demo was the first level.
There was a tank game i played too, the demo threw you in at the deep end and you had a good fight with some fancy weapons... the actual game forced you to play for hours with really crappy vehicles and weapons before you got the same good stuff you had in the demo.
Banshee - a scrolling shoot em up, had really good music in the demo, the actual game had no music and some pretty half assed sound effects instead. The demo was the first (good) level, the other levels were lacking.
Does it still hang when it's reading or writing to a floppy? I remember 9x was really bad, and 2000 not much better... Not used floppies for quite some time tho.
Incidentally, if there are issues with an IDE device timing out it will stall the channel and/or the controller, so any other disk operations will have to wait for it. Thus, any other OS will exhibit similar behaviour if it's waiting for some other IO to occur on the same controller. This doesnt really happen with SCSI, or if you have IDE devices on other controllers.
In a truly free market governed by competition yes... Microsoft don't need to compete, people will buy their software because they have to, not out of choice. People will shun more powerful hardware if it cannot run windows and windows-only apps, resulting in that hardware failing or falling into a niche. So the reality is quite the opposite of what you describe, hardware manufacturers have to make their hardware compatible with windows or it won't be chosen by consumers.
If it takes an hour and ten seconds, then you cant say it performs the same as something that takes an hour. And thats a best case, every single java app i've ever seen has been hugely slower than compiled C code.
Debian have a nice set of benchmarks comparing java to gcc 4.1.2 (which generally generates slower code than gcc 3.4)
simple mathematics would dictate that even assuming the java interpreter generated the same code as the native program (which is unlikely because the java runtime is very general purpose so it will keep track of things you dont necessarily need), the extra overhead of the translation will incur a performance hit.
How can java possibly outperform native code, when the java code is itself being translated into native code in order to be executed?
If a given java program is outperforming a program written in C, then either that C program is written in a horrendously inefficient way, or the compiler is generating very poor code.
As for webapps, this has more to do with the given runtime (java, php, asp) being preloaded, whereas a native program has to be executed each time when used as a CGI, thus stripping away a lot of the performance gains. Most webapp components are small and execute relatively quickly in order to return a page in an expedient manner. A C compiled program that was running permanently, instead of executed per request would be a lot faster (after all, most web servers themselves not to mention most interpreted language runtimes are written like this)
And CPU cache... A java program will always have more overhead than a program performing the same task without interpretation or a virtual machine. The interpreter and the virtual machine themselves use resources, thus increasing the amount of cache being used by something other than your actual code. There will be a point where an efficient loop written in C and compiled using a decent compiler, will fit in the cache, while a loop in java doing the same thing wont.
But all else being equal, OEMs will increasingly offer linux simply because it decreases their unit cost. If the end user doesnt care what OS they run, and the apps they use dont force them to care, they will often buy the cheapest thats on offer. Similarly, windows is prevelant at best buy because most of the apps their users want to run require it. If that changed, you'd see very little windows on the shelves.
Compiling isnt hard, and someone will always provide precompiled binaries for any system you'd care to mention anyway. The problem is that, proprietary developers dont like giving out their source code, because they feel it would be easier to hack the original source than to disassemble the binaries.
Java does still lag behind native code, not to mention the considerably higher memory usage. All the GUI based java apps i've used feel sluggish too...
If you truly feel java is as quick as native code, show me a video encoder or encryption program written in java.
Aside from anything else...
Java doesnt (yet?) make use of SSE features in modern x86 cpus (similarly it doesnt use altivec on ppc) Your cpu cache will be full of the JVM, thus having far less space for your actual code The garbage collection and bounds checking, while it serves its purpose of protecting poor developers from writing insecure code, also causes a performance hit.
If you give people the ability to write os dependant code, then they will, either intentionally or not. You may intend your program to only be run on unix, and thus write it for such. Other people may never imagine anyone would try to run their program on anything other than windows, and even teach other people those windows-specific things. Look what microsoft tried to do with java. Ofcourse even despite all this, there are still quite a few java programs that only run on windows for whatever reason.
Yes, the x86 architecture is a heap of shit. Unfortunately, it is the dominant processor for desktop computers and lowend servers by far. If your going to make something architecture independant, then it will run a lot slower (see java) and there is already such an environment (see java). So why bother making something architecture independant? 99% of potential users will be running x86 anyway, and being locked in to the x86 architecture isn't as bad as being locked into windows (the x86 market is competitive)
That said, there was a similar project to this a while ago called x86abi, it's site was www.x86abi.org but i've no idea what progress has been made.
I assume the idea is that, for the vast majority of people all of their apps will end up running under lina.. Thus, when it comes to an OS choice, they have windows (costs money) OSX (costs money) or linux (Free). Assuming all the apps run equally well under any OS, people will often choose the cheapest.
I still fail to see why the microwave needs to know the time, or be turned on all the time... I already have a wall mounted clock in the kitchen, i don't need another one on the front of the microwave. And as for "start cooking at 10pm" functions, is it really hard to change that to "wait for x minutes and then start cooking" ? Is it really so hard for people to work out how many minutes there are between now and the time they want to start cooking?
But the radio manufacturers dont want you turning the volume down for the commercials, they want you to actually listen to the commercials. So they're not gonna make it easy for you to turn the radio off during them!
It's just a block device, IE it's a big string of data... What's to stop you putting another filesystem on it? UDF may be the most common filesystem, but any unix OS will quite happily read a DVD which contains it's normal format (ufs, ext2 etc).. It's only windows that has ridiculous restrictions on which of the supported filesystems can be used on which of the supported media types.
Plenty of things flew before airplanes... You have balloons, birds, insects etc... it was fairly obvious to try and replicate existing behaviour with a machine... People have been trying to fly for centuries.
I still wonder, why are the email messages from ebay/paypal/banks/etc not PGP signed? If these companies used trusted public keys, which you download from their website or receive when you sign up.. Any phishing mail would be immediately visible as a scam, and easily deleted. Upstream filters could easily do this too.
Ehm... 0845 is never the same as local, do BT even have a local rate anymore anyway? On the cheapest BT plan, daytime calls could be charged at the same rate as 0845, but i do believe theyre actually 1p/min cheaper... Anywhere else (more expensive BT plans, voip phones, mobiles) 0845 is always more expensive than regular 01/02 landline calls. And what with the prevelence of mobiles nowadays, the idea of "local" is pretty meaningless.
They used a proprietary web mail product, which suffered from a 0day attack.
Obviously this is not desireable, but it can happen to any software... The real reason they turned it off, is because due to the webmail system being proprietary, they can't fix this problem so it will only get compromised repeatedly.
Also, most of the webmail systems i've seen don't hold any data or authentication details themselves, they just hook over an imap server, so by hacking the webmail system you can only compromise the users who actually use it.
0845 is _NOT_ local rate... It is LO-CALL rate, which is a revenue sharing service. It is charged at the same cost local rate calls used to be in the early 90s, and it is always charged by the minute regardless of your phone service plan. Also, inclusive minutes usually don't count for calls to 0845 numbers. BT charge a flat rate of 5p for a 1 hour national landline call at evenings and weekends on their lowest call plan, a 1 hour evening or weekend call to an 0845 number would cost 120p evenings and 60p weekends. BT's higher calling plans (options 2 and 3) charge you nothing for the first 60 minutes to a national number at evenings or weekends (again 0845 arent included) and in the case of option 3, also during the day.
What's worse is, a share of the call revenue goes to the company operating the number (which is why BT can't offer free calls to 0845) which gives these companies an incentive to keep you on hold. In essence, 0845 really is premium rate. It may be a lower per-minute cost than 09 premium rate numbers, but it works in just the same way.
Yes i remember shapeshifter well...
It wasn't so much emulating, as virtualizing. The macs of the day and the amigas shared the same processors, the amiga had custom chips for video/sound which macs often didnt, and they used different firmware. Shapeshifter really just loaded up the mac firmware inside of a virtualization environment. Speed was often the same or slightly faster than a real mac using the same CPU, although you could get amigas with the 68060 chip which wasn't available for the mac (having moved to PPC) so m68k based apps were sometimes faster on the amiga than any real mac.
Video was the biggest issue, since the native amiga chipset was completely unlike anything a mac would use, but an amiga with a video card would easily cure that.
I had kernel panics on my macbook with 2gb ram due to parallels, they always occurred when plugging or unplugging an ethernet cable (only occasionally, since i usually connect via wireless)
It's more of a unix port...
I would imagine mac vmware is far more closely based on the linux version than the windows one.
That said, it is still in beta, and it has features which parallels doesnt (64bit support, dual cpu support), as well as much better support for running linux guest images (parallels seems to cater exclusively to windows guests)
And doesnt .net work in much the same way as java, in that non native code is executed under a runtime... All that proves, is that java has a better runtime than .net, it has no bearing on java's performance relative to compiled code.
Write a similar app in C, compile it with a half decent optimizing compiler and see how it performs.
And why would you not write a graphics intensive application in java? Because java has too much overhead to make such an app perform as well as one written in C? Isnt that exactly what i've been saying?
I used to download demo versions, and get them from cover disks etc...
I found that the demo was usually better than the full game, for instance:
The lion king - platform game, the first level was good, the rest were crap, the demo was the first level.
There was a tank game i played too, the demo threw you in at the deep end and you had a good fight with some fancy weapons... the actual game forced you to play for hours with really crappy vehicles and weapons before you got the same good stuff you had in the demo.
Banshee - a scrolling shoot em up, had really good music in the demo, the actual game had no music and some pretty half assed sound effects instead. The demo was the first (good) level, the other levels were lacking.
Does it still hang when it's reading or writing to a floppy? I remember 9x was really bad, and 2000 not much better... Not used floppies for quite some time tho.
Incidentally, if there are issues with an IDE device timing out it will stall the channel and/or the controller, so any other disk operations will have to wait for it. Thus, any other OS will exhibit similar behaviour if it's waiting for some other IO to occur on the same controller.
This doesnt really happen with SCSI, or if you have IDE devices on other controllers.
In a truly free market governed by competition yes...
Microsoft don't need to compete, people will buy their software because they have to, not out of choice. People will shun more powerful hardware if it cannot run windows and windows-only apps, resulting in that hardware failing or falling into a niche.
So the reality is quite the opposite of what you describe, hardware manufacturers have to make their hardware compatible with windows or it won't be chosen by consumers.
If it takes an hour and ten seconds, then you cant say it performs the same as something that takes an hour. And thats a best case, every single java app i've ever seen has been hugely slower than compiled C code.
h p?test=all&lang=gcc&lang2=javak .php?test=all&lang=gcc&lang2=java
Debian have a nice set of benchmarks comparing java to gcc 4.1.2 (which generally generates slower code than gcc 3.4)
http://shootout.alioth.debian.org/gp4/benchmark.p
http://shootout.alioth.debian.org/debian/benchmar
Also, show me a graphical java app that doesnt have a sluggish interface.
It's being translated as it's being run, as opposed to code that is already native, thus you have:
java = executiontime + translationtime
native = executiontime
simple mathematics would dictate that even assuming the java interpreter generated the same code as the native program (which is unlikely because the java runtime is very general purpose so it will keep track of things you dont necessarily need), the extra overhead of the translation will incur a performance hit.
How can java possibly outperform native code, when the java code is itself being translated into native code in order to be executed?
If a given java program is outperforming a program written in C, then either that C program is written in a horrendously inefficient way, or the compiler is generating very poor code.
As for webapps, this has more to do with the given runtime (java, php, asp) being preloaded, whereas a native program has to be executed each time when used as a CGI, thus stripping away a lot of the performance gains. Most webapp components are small and execute relatively quickly in order to return a page in an expedient manner.
A C compiled program that was running permanently, instead of executed per request would be a lot faster (after all, most web servers themselves not to mention most interpreted language runtimes are written like this)
And CPU cache... A java program will always have more overhead than a program performing the same task without interpretation or a virtual machine. The interpreter and the virtual machine themselves use resources, thus increasing the amount of cache being used by something other than your actual code.
There will be a point where an efficient loop written in C and compiled using a decent compiler, will fit in the cache, while a loop in java doing the same thing wont.
But all else being equal, OEMs will increasingly offer linux simply because it decreases their unit cost.
If the end user doesnt care what OS they run, and the apps they use dont force them to care, they will often buy the cheapest thats on offer.
Similarly, windows is prevelant at best buy because most of the apps their users want to run require it. If that changed, you'd see very little windows on the shelves.
Compiling isnt hard, and someone will always provide precompiled binaries for any system you'd care to mention anyway.
The problem is that, proprietary developers dont like giving out their source code, because they feel it would be easier to hack the original source than to disassemble the binaries.
Java does still lag behind native code, not to mention the considerably higher memory usage.
All the GUI based java apps i've used feel sluggish too...
If you truly feel java is as quick as native code, show me a video encoder or encryption program written in java.
Aside from anything else...
Java doesnt (yet?) make use of SSE features in modern x86 cpus (similarly it doesnt use altivec on ppc)
Your cpu cache will be full of the JVM, thus having far less space for your actual code
The garbage collection and bounds checking, while it serves its purpose of protecting poor developers from writing insecure code, also causes a performance hit.
If you give people the ability to write os dependant code, then they will, either intentionally or not.
You may intend your program to only be run on unix, and thus write it for such.
Other people may never imagine anyone would try to run their program on anything other than windows, and even teach other people those windows-specific things. Look what microsoft tried to do with java.
Ofcourse even despite all this, there are still quite a few java programs that only run on windows for whatever reason.
Yes, the x86 architecture is a heap of shit.
Unfortunately, it is the dominant processor for desktop computers and lowend servers by far.
If your going to make something architecture independant, then it will run a lot slower (see java) and there is already such an environment (see java). So why bother making something architecture independant? 99% of potential users will be running x86 anyway, and being locked in to the x86 architecture isn't as bad as being locked into windows (the x86 market is competitive)
That said, there was a similar project to this a while ago called x86abi, it's site was www.x86abi.org but i've no idea what progress has been made.
I assume the idea is that, for the vast majority of people all of their apps will end up running under lina..
Thus, when it comes to an OS choice, they have windows (costs money) OSX (costs money) or linux (Free). Assuming all the apps run equally well under any OS, people will often choose the cheapest.
I still fail to see why the microwave needs to know the time, or be turned on all the time...
I already have a wall mounted clock in the kitchen, i don't need another one on the front of the microwave. And as for "start cooking at 10pm" functions, is it really hard to change that to "wait for x minutes and then start cooking" ? Is it really so hard for people to work out how many minutes there are between now and the time they want to start cooking?
But the radio manufacturers dont want you turning the volume down for the commercials, they want you to actually listen to the commercials. So they're not gonna make it easy for you to turn the radio off during them!
It's just a block device, IE it's a big string of data...
What's to stop you putting another filesystem on it?
UDF may be the most common filesystem, but any unix OS will quite happily read a DVD which contains it's normal format (ufs, ext2 etc)..
It's only windows that has ridiculous restrictions on which of the supported filesystems can be used on which of the supported media types.
Plenty of things flew before airplanes...
You have balloons, birds, insects etc... it was fairly obvious to try and replicate existing behaviour with a machine... People have been trying to fly for centuries.
I still wonder, why are the email messages from ebay/paypal/banks/etc not PGP signed?
If these companies used trusted public keys, which you download from their website or receive when you sign up..
Any phishing mail would be immediately visible as a scam, and easily deleted. Upstream filters could easily do this too.
Ehm...
0845 is never the same as local, do BT even have a local rate anymore anyway?
On the cheapest BT plan, daytime calls could be charged at the same rate as 0845, but i do believe theyre actually 1p/min cheaper... Anywhere else (more expensive BT plans, voip phones, mobiles) 0845 is always more expensive than regular 01/02 landline calls.
And what with the prevelence of mobiles nowadays, the idea of "local" is pretty meaningless.
Avoid uk2 like the plague...
They are a buch of cowboys, and they make many horrendously stupid security mistakes.
They used a proprietary web mail product, which suffered from a 0day attack.
Obviously this is not desireable, but it can happen to any software... The real reason they turned it off, is because due to the webmail system being proprietary, they can't fix this problem so it will only get compromised repeatedly.
Also, most of the webmail systems i've seen don't hold any data or authentication details themselves, they just hook over an imap server, so by hacking the webmail system you can only compromise the users who actually use it.
0845 is _NOT_ local rate...
It is LO-CALL rate, which is a revenue sharing service. It is charged at the same cost local rate calls used to be in the early 90s, and it is always charged by the minute regardless of your phone service plan. Also, inclusive minutes usually don't count for calls to 0845 numbers.
BT charge a flat rate of 5p for a 1 hour national landline call at evenings and weekends on their lowest call plan, a 1 hour evening or weekend call to an 0845 number would cost 120p evenings and 60p weekends. BT's higher calling plans (options 2 and 3) charge you nothing for the first 60 minutes to a national number at evenings or weekends (again 0845 arent included) and in the case of option 3, also during the day.
What's worse is, a share of the call revenue goes to the company operating the number (which is why BT can't offer free calls to 0845) which gives these companies an incentive to keep you on hold.
In essence, 0845 really is premium rate. It may be a lower per-minute cost than 09 premium rate numbers, but it works in just the same way.