100% Pure Java
Though Java written only to Sun's API is in theory useable for a cross-platform app, there are a few pragmatic issues -- the APIs are very poor and complex, the UI layer (Swing, née AWT) sucks ass, VM idiosyncracies are rampant, and performance may be a problem (though improvements are constantly being made).
Compared to what? I've written Motif, MFC, and MacOS applications, and the Java APIs are truly well designed and a pleasure to use compared to those.
As for VM idiosyncracies, I've written fairly complex server and GUI applications, and only had very minor porting problems. (See http:www.webperfcenter.com for one example.)
As for performance, I've not had a problem either. It is possible to write programs that are too slow in Java, but you can say the same thing about any language. The examples of slow programs I've see in Java have almost always been poor design. Any language would be slow if you tried to stuff 10,000 rows in a table every update, used slow algorithms, or used it where it wasn't an appropriate solution. (example: realtime signal processing.)
The only reason Java development hasn't been stronger on the Macintosh is the dismal job Apple has done on their JVM. Its never worked right, as far as I know. In fact, its the reason I traded my MacII for a washer/dryer set when Java came out, and my first attempts at Java programming on the Mac failed because of too many JVM bugs.
The biggest cause of companies not wanting to hire older programmers is the managers don't rank their staff by the results they produce. Instead, I see managers ranking people by how many hours their butts are in chairs. If the company's goal is to produce a working piece of code that will actually function acceptably in the field, then a team of experience programmers will get you there faster, and are worth the extra money.
The big problem with older, experience programmers is they're less likely to go along with boneheaded management techniques they've seen fail a half dozen times already. This makes them difficult to manage, and therefore less desirable.
Here's what I've found is the average template for project managers:
Severely underestimate the time to completion in order to get the manager job.
Use up 1/3 of the project's time hiring people.
Cut out design time from the project schedule because you're already behind.
When the project is due put all programmer's in a big room with glass walls, and then mandate they stay in their for at least 60 hours a week. Parade upper level management by every week so they can see "how hard you're working".
Ask the programmer's every week if they're "done yet." All the inexperienced programmers say "yes". All the experienced programmer's say "no".
Cut out writing a test suite because there's no time.
Take twice as long as the original estimate to deliver code that will have to be thrown away and redone by a different team.
You may laugh, but I've seen variations on this more than once. The managers in question greatly value youthful enthusiasm and ignorance because they can brag to their management about "how much work they get out of the programmers". Of course, if upper level management was smart they'd only care about results, but hey, if you haven't got any results, I guess bragging about exploiting workers is the next best thing.
You've got to be kidding! GNU's Java compiler is completely worthless. Almost nothing except for tiny trivial bits of code will compile with it. It basically only supports language features in Java 1.0, which might be fine, except it doesn't support alot of the libraries that were also released with Java 1.0. So, its not even compliant with code that was written FIVE YEARS AGO!
The problem with "innovation" in the case of Microsoft, is given they have a virtual monopoly, all they have to do to take over most facets of the computer software industry is "innovate" by adding what software your company makes into windows and give it away free.
So, while no one wants the government regulating the software industry, in Microsoft's case their stranglehold in the desktop market gives them the leverage to take over each segment of the software industry one by one.
What's wrong with giving away software free? Nothing, unless you have the power to make sure most consumers never see or hear about any alternatives.
In my experience the companies that required more than 40 hours a week for normal operation were simply very badly managed. The common things they all had in common:
No project requirements If you don't have any other requirements than to work until its "done", you have no idea when its actually finished. By "lack of requirements" I don't mean the lack of a formal document, I mean the lack of any type of document at all!
No project schedule Since no one ever bothered to estimate how long it would take to implement the features that were supposed to go into the product (whatever those are, since there aren't requirements) the only date you've got is when management wants it finished. This means everyone works overtime for the first four weeks they gave, and 60 hour weeks for the next year until its actually finished.
No project design Since the project is due in 4 weeks there's no time to do any design, so just start coding. By no design, I don't mean the lack of a formal spec, I mean a lack of any type of design at all.
No technique for measuring progress As long as you can't tick off the list of features as they're implemented, or have some objective measure of progress, the only measurement you have is are people working long hours. At one company they actually moved all of the programmers and testers into a large room with glass windows, told them they couldn't leave, and then walked upper level management/customers by to show them how hard we were working!
Unfortunately I've been on a couple of those types of projects, and it always ends the same way:
The project always lasts many times the original deadline.
The programming staff is kept is a continual emergency state.
The code never works very well.
The product either never ships, or works so poorly customers sue for their money back.
I can understand the desire to get software out faster, but the various short cuts taken such as having everyone work long hours doesn't work.
When television first came out the shows consisted of broadcasts of what they already knew: plays and vaudville. It wasn't until creative people figured out how to exploit the new broadcast medium that television came unto its own.
It will be the same way with the web and low or high band access. You should accept the fact that historic organizations like the motion picture industry never actually adapt to radically new technologies. Instead, the old organizations are slowly eclipsed by new ones that have figured out how to work the new medium.
What's going to happen with the web is creative individuals are going to figure out how to use it to deliver content, and that content will be optimized, molded, and written especially for an internet world. Instead of putting so much time and effort into preaching at people who's job is to uphold the status quo, we need to give time, money, and exposure to people and organizations who are dedicated to taking advantage of the net.
One example of how this might work is a site like mp3.com. What I do instead of getting pissed off at the RIAA, is purchase music from individuals who don't go through the traditional power structure. Organizations like the RIAA and MPAA won't change until its too late-- that's their nature. You might as well accept that fact and start supporting the artists and organizations who are doing things right. Michael Czeiszperger Raleigh, NC
Contrary to popular belief, the reason MS is in trouble with the DOJ is *not* for being a monopolist. It is not illegal to be a monopoly! There's nothing wrong with being a monopoly, as long as you obtained it using legal business practices, and don't try to use your first monopoly to create others.
The threatening part of Microsoft is not their OS is on 95% of the computers, but that the monopoly gives them the power to to force their applications software onto those platforms as well, turning the OS monopoly into little monopolies over every other facit of the software market. Why would most people by an office suite, when a pretty good one came "free" on their computer when they bought it? The OS monopoly has given them others powers as well, such as total control over what hardware manufacturers can bundle with the computer. (In the past they required the hardware companies to not ship competing software, and there's no reason to believe as soon as the DOJ goes away they would continue that practice.)
There are many other illegal things MS can continue to do as a single company that would all be controlled simply by breaking them up. The advantages are many:
Each separate company would retain it's own intellectual property. Linux advocacy aside, there is no viable solution that would rob a company of it's intellectual property. There is no way in hell any government is going to throw out hundreds of years of precedent simply because of the open source movement.
Much less oversight of the broken up companies is needed. Any behavior based solution (we promise never to screw anyone over again) would require close up monitoring of the behavior, and they would in the end simply do whatever they wanted and hope for a better deail at the next trial.
Each separate company would act in its own interest, which acts to prevent monopolistic behavior. For example, an operating system company could no longer offer deep discounts to the hardware vendors who also shipped Office, since office would be sold by the applications company. An operating system company could no longer threaten to cut off a hardware vendor who bundled non-MS applications. A separate internet/services/ISP could no longer have a reason to pay all of the ISPs hundreds of dollars every time the ISP converted to using an MS application.
In the end, the cleanest, most effective solution is breaking up MS.
With RealNetwork's server you at least have a choice of what operating system to use. With Microsoft's you of course are limited to NT. Ideally the community needs a streaming media standard and open source servers. Until that happens, having a media server, even a proprietary one that will run on something other than NT is a plus.
The reason Microsoft wants to control media formats is not so much that they want to control the desktop, since they already control that. What they're really after is controlling the *server*. Since they control the data format, only they can create an audio/video server, so sites that want streaming media are going to have to buy a lot of Windows servers to meet the demand of people switching from Real.
This has obvious implications for the Linux community. One way to increase the viability of Linux is to create a standard multimedia format, and create a highly scalable media server for Linux. Unfortunately, the only Microsoft can maintain their unfair advantage is to keep the format propietary, so don't expect a standard anytime soon.
This was why the talk about standards from MS regarding AOL and chat was so funny. They only champion standards when they've lost a market and have nothing to loose.
At least in my opinion Sun doesn't have any alternatives here. Let's say, for instance, that Sun decided to give Java over totally to a standards board. If the time frame is anything like the time frame for C++, it would take 10 years to create a standard, and the standard libary would consist of a couple dozen collection classes. Imagine how long it would take to standardize something as complicated as all of the Java APIs.
While we were waiting for the standard to arrive, everyone would make whatever modification that wanted to the language, the libaries, and the virtual machines. This means software written to the HP Java wouldn't run on the IBM virtual machine, and software written to take advantage of the Oracle JVM wouldn't run on the Sun JVM, creating a huge, splintered, incompatible mess.
The reason why Java is OK on the back-end for web servers is concurrency. After bandwidth, the bottleneck for a big web-based enterprise server is usually the database. The code in between the web server and the database usually just incorporates business logic, which isn't too computationally intensive, so the major requirement for a language is concurrency. You would to put as many requests from multiple users in the pipe to the database so the database can scale.
Java fits in this space nicely because its easy and convenient to multithread, so it scales great. C++ may be faster for a single user, but is more difficult to write scalable code.
Compared to what? I've written Motif, MFC, and MacOS applications, and the Java APIs are truly well designed and a pleasure to use compared to those.
As for VM idiosyncracies, I've written fairly complex server and GUI applications, and only had very minor porting problems. (See http:www.webperfcenter.com for one example.)
As for performance, I've not had a problem either. It is possible to write programs that are too slow in Java, but you can say the same thing about any language. The examples of slow programs I've see in Java have almost always been poor design. Any language would be slow if you tried to stuff 10,000 rows in a table every update, used slow algorithms, or used it where it wasn't an appropriate solution. (example: realtime signal processing.)
The only reason Java development hasn't been stronger on the Macintosh is the dismal job Apple has done on their JVM. Its never worked right, as far as I know. In fact, its the reason I traded my MacII for a washer/dryer set when Java came out, and my first attempts at Java programming on the Mac failed because of too many JVM bugs.
The big problem with older, experience programmers is they're less likely to go along with boneheaded management techniques they've seen fail a half dozen times already. This makes them difficult to manage, and therefore less desirable.
Here's what I've found is the average template for project managers:
- Severely underestimate the time to completion in order to get the manager job.
- Use up 1/3 of the project's time hiring people.
- Cut out design time from the project schedule because you're already behind.
- When the project is due put all programmer's in a big room with glass walls, and then mandate they stay in their for at least 60 hours a week. Parade upper level management by every week so they can see "how hard you're working".
- Ask the programmer's every week if they're "done yet." All the inexperienced programmers say "yes". All the experienced programmer's say "no".
- Cut out writing a test suite because there's no time.
- Take twice as long as the original estimate to deliver code that will have to be thrown away and redone by a different team.
You may laugh, but I've seen variations on this more than once. The managers in question greatly value youthful enthusiasm and ignorance because they can brag to their management about "how much work they get out of the programmers". Of course, if upper level management was smart they'd only care about results, but hey, if you haven't got any results, I guess bragging about exploiting workers is the next best thing.You've got to be kidding! GNU's Java compiler is completely worthless. Almost nothing except for tiny trivial bits of code will compile with it. It basically only supports language features in Java 1.0, which might be fine, except it doesn't support alot of the libraries that were also released with Java 1.0. So, its not even compliant with code that was written FIVE YEARS AGO!
So, while no one wants the government regulating the software industry, in Microsoft's case their stranglehold in the desktop market gives them the leverage to take over each segment of the software industry one by one.
What's wrong with giving away software free? Nothing, unless you have the power to make sure most consumers never see or hear about any alternatives.
If you don't have any other requirements than to work until its "done", you have no idea when its actually finished. By "lack of requirements" I don't mean the lack of a formal document, I mean the lack of any type of document at all!
Since no one ever bothered to estimate how long it would take to implement the features that were supposed to go into the product (whatever those are, since there aren't requirements) the only date you've got is when management wants it finished. This means everyone works overtime for the first four weeks they gave, and 60 hour weeks for the next year until its actually finished.
Since the project is due in 4 weeks there's no time to do any design, so just start coding. By no design, I don't mean the lack of a formal spec, I mean a lack of any type of design at all.
As long as you can't tick off the list of features as they're implemented, or have some objective measure of progress, the only measurement you have is are people working long hours. At one company they actually moved all of the programmers and testers into a large room with glass windows, told them they couldn't leave, and then walked upper level management/customers by to show them how hard we were working!
Unfortunately I've been on a couple of those types of projects, and it always ends the same way:
- The project always lasts many times the original deadline.
- The programming staff is kept is a continual emergency state.
- The code never works very well.
- The product either never ships, or works so poorly customers sue for their money back.
I can understand the desire to get software out faster, but the various short cuts taken such as having everyone work long hours doesn't work.It will be the same way with the web and low or high band access. You should accept the fact that historic organizations like the motion picture industry never actually adapt to radically new technologies. Instead, the old organizations are slowly eclipsed by new ones that have figured out how to work the new medium.
What's going to happen with the web is creative individuals are going to figure out how to use it to deliver content, and that content will be optimized, molded, and written especially for an internet world. Instead of putting so much time and effort into preaching at people who's job is to uphold the status quo, we need to give time, money, and exposure to people and organizations who are dedicated to taking advantage of the net.
One example of how this might work is a site like mp3.com. What I do instead of getting pissed off at the RIAA, is purchase music from individuals who don't go through the traditional power structure. Organizations like the RIAA and MPAA won't change until its too late-- that's their nature. You might as well accept that fact and start supporting the artists and organizations who are doing things right. Michael Czeiszperger Raleigh, NC
The threatening part of Microsoft is not their OS is on 95% of the computers, but that the monopoly gives them the power to to force their applications software onto those platforms as well, turning the OS monopoly into little monopolies over every other facit of the software market. Why would most people by an office suite, when a pretty good one came "free" on their computer when they bought it? The OS monopoly has given them others powers as well, such as total control over what hardware manufacturers can bundle with the computer. (In the past they required the hardware companies to not ship competing software, and there's no reason to believe as soon as the DOJ goes away they would continue that practice.)
There are many other illegal things MS can continue to do as a single company that would all be controlled simply by breaking them up. The advantages are many:
With RealNetwork's server you at least have a choice of what operating system to use. With Microsoft's you of course are limited to NT. Ideally the community needs a streaming media standard and open source servers. Until that happens, having a media server, even a proprietary one that will run on something other than NT is a plus.
This has obvious implications for the Linux community. One way to increase the viability of Linux is to create a standard multimedia format, and create a highly scalable media server for Linux. Unfortunately, the only Microsoft can maintain their unfair advantage is to keep the format propietary, so don't expect a standard anytime soon.
This was why the talk about standards from MS regarding AOL and chat was so funny. They only champion standards when they've lost a market and have nothing to loose.
At least in my opinion Sun doesn't have any alternatives here. Let's say, for instance, that Sun decided to give Java over totally to a standards board. If the time frame is anything like the time frame for C++, it would take 10 years to create a standard, and the standard libary would consist of a couple dozen collection classes. Imagine how long it would take to standardize something as complicated as all of the Java APIs.
While we were waiting for the standard to arrive, everyone would make whatever modification that wanted to the language, the libaries, and the virtual machines. This means software written to the HP Java wouldn't run on the IBM virtual machine, and software written to take advantage of the Oracle JVM wouldn't run on the Sun JVM, creating a huge, splintered, incompatible mess.
The reason why Java is OK on the back-end for web servers is concurrency. After bandwidth, the bottleneck for a big web-based enterprise server is usually the database. The code in between the web server and the database usually just incorporates business logic, which isn't too computationally intensive, so the major requirement for a language is concurrency. You would to put as many requests from multiple users in the pipe to the database so the database can scale.
Java fits in this space nicely because its easy and convenient to multithread, so it scales great. C++ may be faster for a single user, but is more difficult to write scalable code.