On the one side: 1) MS has offered a decent VM from the start. 2) MS tried to screw people in adding uncompatible java calls (non-JNI) without labelling them properly. They were trying to break Java.
On the other side: 1) Sun VMs have taken a long time to match MS VMs in perfs. 3) Sun hasn't done much good in client-side support. Java applications are memory-hungry and just slow. Chances are that MS would have done better.
Hence, yes, Java has failed under Windows as a client application framework. Sun is to blame for that.
Microsoft did play hardball, but this was settled a long time ago.
Sun can't blame MS for Java's failures. Client-side Java failed under Linux too! Mozilla doesn't install Java by default!
This would be a lot more interesting if Java had been an open technology, not something controlled by Sun.
Chances are that greed lead the Chinese to stop their exploration. They just didn't see any profit in North America and exploration in general.
And maybe there wasn't much profit in it btw.
The difference in Europe was that people were litterally dying to leave. We can presume that things weren't so bad in China or that people weren't offered the choice to leave.
I doubt the USA were founded on greed btw. Freedom would be more like it. Yes, freedom to prosper! But freedom of religion, freedom all around.
Either the Chinese didn't care much for more freedom, or they had so little of it that they couldn't leave.
Let's think of the Internet. Who's on the it? A lot of people who had no room in the tradionnal setting. People trying to escape the so-called real world. Then, other people came, they tried to tame the Internet, unsuccesfully.
Do you get a web-life (setting up a web-page, reading news on the web and so on) because of greed? No, because of the freedom it gives you. Freedom to explore, to learn, and so on. Yes, you may end up making business on the web, and maybe even making a lot of money, but in a lot of cases, it wasn't you first goal.
Europeans, at least some of them, had a thirst for freedom.
You could say that if you want to foster exploration, the best thing you can do is make people's life miserable, while leaving them a means of escape.
Hey! Life is good in the USA and that explains why most Americans can't draw an accurate map of the world or learn another language! You'd be a lot more of an explorer if you were born in some poor African country with a visa and some money to leave.
So, I create a very power viral agent and I dissiminate it all through the USA killing all of the population. I then come in an own all of the USA.
It is fair, I won a war land. Period.
Far fetched? Well, the overwhelming majority of native Americans were killed by diseases and hungere brought by the Europeans. Native Americans were not killed by bullets one by one.
That is no war my friend.
I could go on and on, but it wasn't a war land, I can assure you. There were some land wars, but a lot of conflicts in North America were just genocides (true for almost all of the natives, for the Acadians as well and so on).
The day when people saw software as a "product" are gone. Except for niche products, software is mostly a service. You pay for the convenience, you pay for the support, and so on.
Chances are that no matter what you are doing, your customers are not paying to own a license, they pay because the want you to meet a need.
People don't want to own a word processor, they want to "word process". People don't want to buy a media player, they want to listen to music. People don't want to buy a browser, they want to browser the web.
*Owning* software is out of fashion. It simply doesn't make sense. It is an obselete idea in a digital world.
Montreal has a large Multimedia City which is basically a whole section of the city where a lot of high tech companies have set foot:
http://www.citemultimedia.com/english/home/home. as p
You find Motorola, Discreet Logic... something like a 100 companies all within 1 km square. It is very, very cheap. You can get a nice appartment in Montreal for 300$US a month (not kidding) and be close enough so you don't have to drive to work.
You also have an e-Commerce center growing fast.
Companies get incredible subsidies to hire staff. The government basically pays almost half your salary if you are a developper.
Montreal is by far the cheapest metropolist in North American and 9th largest city in North America plus people speak French plus the girls are leaner than average (statistically speaking) plus the food is much better than anywhere else in North America.
Downsides? Cold weather, and of course, the fact that the salaries are on the low side.
Then, if they are all compatible with each other, where is the harm???
You have *diversity*. Unlike the M$ world where you don't.
Sure, it is hairy at first... but once you get used to the fact that Linux is all about diversity... having choices... many, many choices... you come to like it. In fact, the monolithic Windows really gets on your nerves once you fully appreciate Linux.
It is simply a hassle to buy a licence. You have to keep it around, not loose it... When you want to play with the software (uninstall it, reinstall it), you've got to find the damn licence...
When I first installed Linux, I was in the "Windows" frame of mind, so I bought OSS, Xig drivers... and so on...
Only to realize, that as I upgraded software, my "payware" wouldn't be upgraded as easily. Worse: at one point I reinstalled RedHat... because it wouldn't boot anymore, and I was very inexperienced... Of course, I *had to* crush my licences... I got them back, but it was a hassle, it was a worry.
In my department, we have Matlab and Maple licences... on a machine that has hardware issues. Now, we need to move the licences... but it is very complicated to do so.
Also, to use payware, you need to go through the loops... Matlab will only allow one running copy at a time... so, if my colleague is connected, I might just have to wait till he is done before getting connected myself... and so on... Of course, you could buy more licences... but throwing money at the problem doesn't really solve anything... you just have a larger investment to worry about.
The fact is that payware is just not as convenient as freeware. Nothing to do with the money in my mind.
That's why I use free software more and more. I'm using free software almost exclusively.
You go live in the most expensive place in the world... how silly can that be?
There places in North America where there are jobs at 8$/hour and where you can actually have a decent enough living for that kind of money.
I can't help but wonder how he pays the rent with 8$/hour over there?
What's the point?
However, clearly, there is a problem with unemployment. Too many people *need* a job. In many ways, we've moved backward in that respect. In the last 20 years, things got worse.
And yes, no matter how many degrees you have, no matter where you live, live is continually getting tougher... unless you are among the few who "surf" the changes.
I think people just like this type of press releases.
People... people... quite simply... in science, breakthrough are very rarely "sudden". Usually, research has been going on for a while and intermediate results are found along the way and published.
That's how research works. You very rarely start from scratch and find the holy grail on day one.
Of course, there are exceptions, but when a surprising discovery comes along, it is usually a long way from being cooked and needs further research.
You've got to love the fact that KDE offers Objective C and Java bindings.
People tend to forget but you don't have have java bindings under Windows!!! (Well, unless you want to lock yourself up with MS broken Java implementation.)
Of course, this is rarely used, but the mere fact that it is available is amazing. I don't know about Objective C and windows though... How does that work?
Actually, numerous benchmarks are available showing that it is not so.
For all practical purposes, Java is as fast as C# on Windows and possibly faster...
They are very similar languages and there is no reason to expect C# to be faster, not if you use it the same way you are using Java, to solve the same problems.
On the other hand, at this point, Java is lot more mature and really cross-platform (Linux, Windows, AIX, Solaris, small devices,...)
One we see C# running on Linux, we might be able to finally claim that it is cross-platform... *and* we'll be able to compare perfs...
Want my guess? C# for Linux will be a lot slower than current, up-to-date Java implementations.
If you want friends and a family, get out there and make friends.
Your coworkers are just that... coworkers.
What will happen if you change job? Will your friends remain your friends? Will you got "friendless" just because you switched job? What happens if you loose your job? Will you loose both your job and your friends?
You work for money, for your carreer... Not for making friends or extending your family.
That's a trap! Your boss might want you to do it... but don't.
Don't forget that some of us rely on Xig drivers
on
id On Linux: Bad News
·
· Score: 1
So forget XFree... It still doesn't support many important cards.
If you want to set a gold standard, then make sure it supports everybody, all of the 3D cards on the market.
There are many reasons... the most obvious one is that multiple inheritance forbids certain things...
Say I've got a class A with method "doIt" and then, a pure virtual class B with method "doIt" and suppose then that I want class C to derive A and "implement" B...
C: public A, public B
that gets complicated... doesn't it? In general you can't inherit from two classes defining the same method... it's a mess...
In Java, it is clean and simple, you don't even think twice about it.
All the large Perl and VBScripts I have seen are considerably more difficult to comprehend and maintain than the equivalent Java code. Ask anyone.
The fact that Perl support some OOP principles doesn't make Perl "OO". Hell, even Matlab is being advertized as being OO... I even have had arguments with people who say C is an OO language.
What you must do is look at the actual code being written. What methodology does it use? How is the resulting code? Java code is always (99%) implemented through OOP and good coding practices are forced upon the programmer. Perl works well for small projects but as soon as it grows, the various deficiencies in the language (which people consider as features because they make things "easy") become apparent and make scaling difficult or even impossible.
SQL is query language supported by Java... but SQL used alone is indeed a procedural tool. It doesn't scale well beyond a certain degree of complexity.
The point is, Perl and VBScript are languages which *seem* easy. That is, they are very easy if you have an easy problem to solve. For difficult problems (the problems I care about), Java is a much better tool.
If I haven't convinced you, this should... order of includes is tricky in C/C++. Really couldn't care less in Java... (imports order is irrelevant)
Other evilness: incompatible includes! Under win32 you cannot include both windows.h and MFC classes... you've got to navigate a tricky road. That would never happen in Java. You can never have incompatible classes unless the bear the same name and are in the same packages... (very unlikely if you use the proper coding convention)
Final is a much cleaner keyword than const. It is much more powerful too.
No, you can't screw up a big project by editing a single file in Java because you don't have macros!
What will happen is that compile will fail on this one file... period. Even if you use the comment trick... Other files you try to compile will clearly point at the bogus class... and you'll never have any problems...
Macros are evil for large projects... It is enough that a remote library somewhere redefine a MACRO for you and you are in MACRO hell...
In fact, you could screw a big project by doing a small redefine somewhere and it could take months for the engineers to find your hack. Macros are just evil.
Java isn't perfect, but it is 100% more secure than C/C++. If you don't know this, you don't know anything.
Java has, at least, a built-in security model. It is extremely safe. A method will fail if the complete stack trace isn't trusted. I have no idea what you are talking about... but it is very difficult to have untrusted code do trusted things... A single untrusted class will make everything untrusted.
One thing I miss in C++ are Java interface. They are extremely simple and from a developper's point of view, extremely lightweight.
For many complex designs, they are far superior to multiple inheritance. Sure, you can find trivial cases where multiple inheritance would fare better, but for complex systems, interfaces are far better.
Everything you mention (Perl, ASP, SQL, *.*) is based on procedural programming. Java is a step above this and relies on OOP. OOP is more difficult and require more planning and sometimes, yes, it does involve writing a lot more code for trivial projects (it can be the other way around for non trivial projects).
When the project you are working on will have 200,000 lines, you might find your Perl scripts are killing you. Meanwhile the Java programmer will come to work everyday smiling.
That's the problem with Java being proprietary. Java will slowly sink along with Sun.
Sad.
Oh! Well, we'll have mono by then!
You can't really take sides. For several reasons:
On the one side:
1) MS has offered a decent VM from the start.
2) MS tried to screw people in adding uncompatible java calls (non-JNI) without labelling them properly. They were trying to break Java.
On the other side:
1) Sun VMs have taken a long time to match MS VMs in perfs.
3) Sun hasn't done much good in client-side support. Java applications are memory-hungry and just slow. Chances are that MS would have done better.
Hence, yes, Java has failed under Windows as a client application framework. Sun is to blame for that.
Microsoft did play hardball, but this was settled a long time ago.
Sun can't blame MS for Java's failures. Client-side Java failed under Linux too! Mozilla doesn't install Java by default!
This would be a lot more interesting if Java had been an open technology, not something controlled by Sun.
Chances are that greed lead the Chinese to stop their exploration. They just didn't see any profit in North America and exploration in general.
And maybe there wasn't much profit in it btw.
The difference in Europe was that people were litterally dying to leave. We can presume that things weren't so bad in China or that people weren't offered the choice to leave.
I doubt the USA were founded on greed btw. Freedom would be more like it. Yes, freedom to prosper! But freedom of religion, freedom all around.
Either the Chinese didn't care much for more freedom, or they had so little of it that they couldn't leave.
Let's think of the Internet. Who's on the it? A lot of people who had no room in the tradionnal setting. People trying to escape the so-called real world. Then, other people came, they tried to tame the Internet, unsuccesfully.
Do you get a web-life (setting up a web-page, reading news on the web and so on) because of greed? No, because of the freedom it gives you. Freedom to explore, to learn, and so on. Yes, you may end up making business on the web, and maybe even making a lot of money, but in a lot of cases, it wasn't you first goal.
Europeans, at least some of them, had a thirst for freedom.
You could say that if you want to foster exploration, the best thing you can do is make people's life miserable, while leaving them a means of escape.
Hey! Life is good in the USA and that explains why most Americans can't draw an accurate map of the world or learn another language! You'd be a lot more of an explorer if you were born in some poor African country with a visa and some money to leave.
So, I create a very power viral agent and I dissiminate it all through the USA killing all of the population. I then come in an own all of the USA.
It is fair, I won a war land. Period.
Far fetched? Well, the overwhelming majority of native Americans were killed by diseases and hungere brought by the Europeans. Native Americans were not killed by bullets one by one.
That is no war my friend.
I could go on and on, but it wasn't a war land, I can assure you. There were some land wars, but a lot of conflicts in North America were just genocides (true for almost all of the natives, for the Acadians as well and so on).
People buy a service, not software.
The day when people saw software as a "product" are gone. Except for niche products, software is mostly a service. You pay for the convenience, you pay for the support, and so on.
Chances are that no matter what you are doing, your customers are not paying to own a license, they pay because the want you to meet a need.
People don't want to own a word processor, they want to "word process". People don't want to buy a media player, they want to listen to music. People don't want to buy a browser, they want to browser the web.
*Owning* software is out of fashion. It simply doesn't make sense. It is an obselete idea in a digital world.
Montreal has a large Multimedia City which is basically a whole section of the city where a lot of high tech companies have set foot:
. as p
http://www.citemultimedia.com/english/home/home
You find Motorola, Discreet Logic... something like a 100 companies all within 1 km square. It is very, very cheap. You can get a nice appartment in Montreal for 300$US a month (not kidding) and be close enough so you don't have to drive to work.
You also have an e-Commerce center growing fast.
Companies get incredible subsidies to hire staff. The government basically pays almost half your salary if you are a developper.
Montreal is by far the cheapest metropolist in North American and 9th largest city in North America plus people speak French plus the girls are leaner than average (statistically speaking) plus the food is much better than anywhere else in North America.
Downsides? Cold weather, and of course, the fact that the salaries are on the low side.
Frankly, ask your father to install ICQ, the latest Mozilla, and an email client beside Outlook.
.NET).
.NET or Java WebStart. That's the path of the future (admittedly half-cooked right now).
They just can't. And that's the power of Microsoft. They lay everything out for these users, and that's it.
Installing software should not be part of most people life. New software should come to you automagically (hence the idea behind
setup.exe are not so easy for my father. He has to find the setup.exe, download it, and then...
1) He doesn't have enough hard disk space. What can he do? He doesn't know.
2) You are assuming he has administrator privileges on his machine. Now comes the virus man! Oh! That's user-friendly.
Frankly, users should not install software. Look at
So Microsoft has no edge right now. setup.exe are not for dummies! Not anymore than RPMs.
And frankly, installing rpms *is not hard*. You don't even need a console to do it.
Then, if they are all compatible with each other, where is the harm???
You have *diversity*. Unlike the M$ world where you don't.
Sure, it is hairy at first... but once you get used to the fact that Linux is all about diversity... having choices... many, many choices... you come to like it. In fact, the monolithic Windows really gets on your nerves once you fully appreciate Linux.
It is simply a hassle to buy a licence. You have to keep it around, not loose it... When you want to play with the software (uninstall it, reinstall it), you've got to find the damn licence...
When I first installed Linux, I was in the "Windows" frame of mind, so I bought OSS, Xig drivers... and so on...
Only to realize, that as I upgraded software, my "payware" wouldn't be upgraded as easily. Worse: at one point I reinstalled RedHat... because it wouldn't boot anymore, and I was very inexperienced... Of course, I *had to* crush my licences... I got them back, but it was a hassle, it was a worry.
In my department, we have Matlab and Maple licences... on a machine that has hardware issues. Now, we need to move the licences... but it is very complicated to do so.
Also, to use payware, you need to go through the loops... Matlab will only allow one running copy at a time... so, if my colleague is connected, I might just have to wait till he is done before getting connected myself... and so on... Of course, you could buy more licences... but throwing money at the problem doesn't really solve anything... you just have a larger investment to worry about.
The fact is that payware is just not as convenient as freeware. Nothing to do with the money in my mind.
That's why I use free software more and more. I'm using free software almost exclusively.
The only exception are games.
You go live in the most expensive place in the world... how silly can that be?
There places in North America where there are jobs at 8$/hour and where you can actually have a decent enough living for that kind of money.
I can't help but wonder how he pays the rent with 8$/hour over there?
What's the point?
However, clearly, there is a problem with unemployment. Too many people *need* a job. In many ways, we've moved backward in that respect. In the last 20 years, things got worse.
And yes, no matter how many degrees you have, no matter where you live, live is continually getting tougher... unless you are among the few who "surf" the changes.
I think people just like this type of press releases.
People... people... quite simply... in science, breakthrough are very rarely "sudden". Usually, research has been going on for a while and intermediate results are found along the way and published.
That's how research works. You very rarely start from scratch and find the holy grail on day one.
Of course, there are exceptions, but when a surprising discovery comes along, it is usually a long way from being cooked and needs further research.
Hard work is needed almost all the time. Period.
You've got to love the fact that KDE offers Objective C and Java bindings.
People tend to forget but you don't have have java bindings under Windows!!! (Well, unless you want to lock yourself up with MS broken Java implementation.)
Of course, this is rarely used, but the mere fact that it is available is amazing. I don't know about Objective C and windows though... How does that work?
Actually, numerous benchmarks are available showing that it is not so.
For all practical purposes, Java is as fast as C# on Windows and possibly faster...
They are very similar languages and there is no reason to expect C# to be faster, not if you use it the same way you are using Java, to solve the same problems.
On the other hand, at this point, Java is lot more mature and really cross-platform (Linux, Windows, AIX, Solaris, small devices,...)
One we see C# running on Linux, we might be able to finally claim that it is cross-platform... *and* we'll be able to compare perfs...
Want my guess? C# for Linux will be a lot slower than current, up-to-date Java implementations.
If you want friends and a family, get out there and make friends.
Your coworkers are just that... coworkers.
What will happen if you change job? Will your friends remain your friends? Will you got "friendless" just because you switched job? What happens if you loose your job? Will you loose both your job and your friends?
You work for money, for your carreer... Not for making friends or extending your family.
That's a trap! Your boss might want you to do it... but don't.
So forget XFree... It still doesn't support many important cards.
If you want to set a gold standard, then make sure it supports everybody, all of the 3D cards on the market.
There are many reasons... the most obvious one is that multiple inheritance forbids certain things...
Say I've got a class A with method "doIt" and then, a pure virtual class B with method "doIt" and suppose then that I want class C to derive A and "implement" B...
C: public A, public B
that gets complicated... doesn't it? In general you can't inherit from two classes defining the same method... it's a mess...
In Java, it is clean and simple, you don't even think twice about it.
Now come on.
#include "me.h"
#include "ma.h"
isn't the same as
#include "ma.h"
#include "me.h"
that's elementary, check out your textbooks!
Multiple inheritance is far more complex, no matter how you put it.
That's true you don't have to type more code... but the complexity under large projects remains...
All the large Perl and VBScripts I have seen are considerably more difficult to comprehend and maintain than the equivalent Java code. Ask anyone.
The fact that Perl support some OOP principles doesn't make Perl "OO". Hell, even Matlab is being advertized as being OO... I even have had arguments with people who say C is an OO language.
What you must do is look at the actual code being written. What methodology does it use? How is the resulting code? Java code is always (99%) implemented through OOP and good coding practices are forced upon the programmer. Perl works well for small projects but as soon as it grows, the various deficiencies in the language (which people consider as features because they make things "easy") become apparent and make scaling difficult or even impossible.
SQL is query language supported by Java... but SQL used alone is indeed a procedural tool. It doesn't scale well beyond a certain degree of complexity.
The point is, Perl and VBScript are languages which *seem* easy. That is, they are very easy if you have an easy problem to solve. For difficult problems (the problems I care about), Java is a much better tool.
If I haven't convinced you, this should... order of includes is tricky in C/C++. Really couldn't care less in Java... (imports order is irrelevant)
Other evilness: incompatible includes! Under win32 you cannot include both windows.h and MFC classes... you've got to navigate a tricky road. That would never happen in Java. You can never have incompatible classes unless the bear the same name and are in the same packages... (very unlikely if you use the proper coding convention)
Final is a much cleaner keyword than const. It is much more powerful too.
No, you can't screw up a big project by editing a single file in Java because you don't have macros!
What will happen is that compile will fail on this one file... period. Even if you use the comment trick... Other files you try to compile will clearly point at the bogus class... and you'll never have any problems...
Macros are evil for large projects... It is enough that a remote library somewhere redefine a MACRO for you and you are in MACRO hell...
In fact, you could screw a big project by doing a small redefine somewhere and it could take months for the engineers to find your hack. Macros are just evil.
Try working on larger projects... you'll see.
Just how low can you get...
So, the only thing you see when you evaluate a language is how many characters you must type to print to the console???
What is wrong with you???
Did you ever get beyond "Hello world"?
Java isn't perfect, but it is 100% more secure than C/C++. If you don't know this, you don't know anything.
Java has, at least, a built-in security model. It is extremely safe. A method will fail if the complete stack trace isn't trusted. I have no idea what you are talking about... but it is very difficult to have untrusted code do trusted things... A single untrusted class will make everything untrusted.
You can't get much better than this!
One thing I miss in C++ are Java interface. They are extremely simple and from a developper's point of view, extremely lightweight.
For many complex designs, they are far superior to multiple inheritance. Sure, you can find trivial cases where multiple inheritance would fare better, but for complex systems, interfaces are far better.
Everything you mention (Perl, ASP, SQL, *.*) is based on procedural programming. Java is a step above this and relies on OOP. OOP is more difficult and require more planning and sometimes, yes, it does involve writing a lot more code for trivial projects (it can be the other way around for non trivial projects).
When the project you are working on will have 200,000 lines, you might find your Perl scripts are killing you. Meanwhile the Java programmer will come to work everyday smiling.
Java is designed to handle complexity.
The truth is, Java scales better as a language.