This is a case of treating the symptom, not the cause.
This is the same thing that may happen to any monoculture, namely that if one is vulnerable to something, all are, and this may ruin a whole crop.
Now you may deal with this either by killing all the bugs with pesticides and treating against disceases with penicillin, but this does not work well since resistance show up.
It would be better to have more diversity so that for any given issue only a part of the total population is vulnerable. Since the defacto world is Windows, it must be pressed upon Microsoft that their programs are more diversified.
Different compilation options for different versions and languages meaning that a russian computer is basically different from a german one, and differnet machine code is needed to exploit this.
Of course it is also possible to just use another operating system but that is for most purposes a theorectial option (like when you _NEED_ 100% Office compatability, or Outlook meetings).
One of the major advantages of using Java is the platform independance it provides. This means that you should be able to choose freely the underlying machine and operating system to run your application on.
Currently that means that if you want to run on a PC you need to run either Windows or Linux (or, perhaps, Solarix x86). If you want to run on a Mac you must run OS X - you cannot run just plain Darwin. You cannot run Darwin on a x86. I cannot run Java on my Linux-based router because it uses a MIPS-CPU, and there is no suitable JVM for my needs.
The list is endless.
Harmony might just be what is needed to get the true potential of Java unleashed.
I think it was because the Linux license was more attractive to the large number of coders who came online at that time. You were guaranteed that everybody benefitted from yours and others work.
The social implications of this are in my eyes very important.
Additionally Linus (IIRC) did a lot of work to get the user submitted patches in the kernel very quickly. This was an instant positive feedback, which also is very important for you to feel part of the developmental process, and to encourage you to do it again.
For some reason the BSD's did not get that synergic effect - perhaps because they had already demonstrated that they would fork and that work had to be replicated in 2-3 source trees.
Apparently each and every program needs to pop up an infobox in the lower right corner when it needs to tell me something, and allow me to click on it to do some relevant action.
If you miss that window, it is gone forever, and with it the opportunity to click on whatever it said.
I'd like a facility that allows the user to see what has happened in that lower right corner, and do whatever could be done at that time. AND enforce that all program should use that interface so that their messages was logged.
I agree on this. If you want other people to work on your project it is very important that it is easy to get the edit-compile-debug cycle up and running. If there is any dependence on other tools, make it simple to get it running (link to RPM's etc).
This includes easy access to source (CVS or a tarball/zipfile), easy access to the build environment (Linux/Windows), as well as a good license. If you choose an inappropriate license, people will avoid your product.
You should also tender to the feedback. It is crucial that casual bypassers get the impression that _you_ care about the project - this means feedback on bugreports, regular releases of new versions, proper documentation, etc. You should strongly consider getting good infrastructure, by putting your project on a suitable server, like sourceforge or savanna (depending on your license).
The eclipse project is probably the best example of a well-tendered user community - people take the time to report bugs and inconveniences because there is a quick response and the Bugzilla system allows the users to keep up with entries which may have a process period of months or years. They know that good suggestions get in the code quickly and they may get that code very quickly due to the aggressive release schema of new code.
In my point of view, you usually either release as open source to ensure that a project outlives some external entity or to get user involvement. In the latter case it is important to consider users as collaborators on a common project, and act accordingly.
For what I have seen Apple have played fair with the Open Source community - all their modifications to Open Source software have been submitted back to the original projects. Their strategy is to build extremely nice looking stuff _on top_ of the Open Source software, which is then closed source.
I think that Apple is very clearly demonstrating that there is a market for taking Open Source software and improving it in a fair and square fashion, and then use it to create commecial products which benefits the users.
I used to work with a Mac, and these days I work with an XP-box. I miss my Mac:)
Applesoft Basic was tokenized for the keywords, but not for linenumbers in programs. This meant that renumbering your program with an increment of one could result in it getting smaller as "9" is only one byte as opposed to "40000".
I originally was very displeased with Java because you needed to type SO MUCH (and correct too) in order to get anything done.
Today I consider that a blessing. Modern IDE's help you with completion, allowing you to have long DESCRIPTIVE variable names, which is easy to rename if the variabel change its behaviour.
I do not think Java is an excellent language (then it would provide lazy evaluation and other functional language stuff), but it is not bad.
I write a lot in Java, and even though that the syntax is the same, it is much harder to read the !-negation than the "== false"-negation.
The reason is that -- in Java -- you very often dereference multiple objects on your way down to the field you need to test, so the negation and the value to negate tend to be far from one another on the line.
I stared a lot on a snippet having exactly that error (an incorrect number of !'s) for much too long. A "== false" would have been much easier to spot.
A large problem for PC application writers, was that just writing characters to the screen was an issue. Either you could go the standard, portable way by writing through the BIOS - which happened to be too slow for many applications - or by using assembly code to maintain the screen buffer directly.
This was also complicated as some of the original PC's would show noise on the screen if the video memory was updated while being converted to an image. Careful programming was needed to ensure that video memory was only updated in intervals where it would be visually safe to do so.
It is hard to imagine how much the original PC with DOS let the programmer down.
IBM cannot release Suns code. They have already written JVM's but they need to rewrite the Java libraries - which is quite a pain - and compatability is quite hard to achive.
You would know, if you tried mixing JVM's and trying to do RMI or similar between them. Keep to a single vendor.
I have now played a bit with the Ubuntu live cd, and found it very similar to Knoppix (but with less applications), and quite nice.
I would like to know why all this effort was put into creating Yet Another Distribution instead of boosting an existing project (like knoppix). Is it a question of being project owners, and being able to set the course?
Thank you for making it clear to me that the QuickLaunch facility is an incorrect metaphor.
Actually the JVM is more like the Linux Kernel, as it is needed for each and every Java-program and the slow start time is the main reason that I believe that small Java-apps have not yet found into the standard programs of Linux.
I think this would change if the JVM "quick launch" feature was an intergrated part of Linux.
I admit to not having written medium-sized projects in Python.
I am pretty sure that writing libraries (which is what small, largely-independent parts basically is) is not enough for a full application.
I have found that the various facilities in a modern IDE helps program development immensely, and that Java has some very high quality IDE's. I do not think that Python has as many - that alone makes Python less suited for large scale developemnt (which is where IDE's really help, since you cannot keep it all in your head).
The VM warmup time is the major culprit here. What is needed under Linux is basically the "quick start" feature which OpenOffice and Mozilla uses under Windows.
I understand that some of this is available in Java 1.5, but this must be drawn to the logical conclusion, which Microsoft made with their java, namely that a Java-program is comparable to a c-program to launch - both for large and small programs.
A very easy way to confuse OS X so much that it will need a reboot, is to use a portable Mac, mount a Windows share, shut the lid on the Mac without unmounting the share, and reopen it on another network.
We just bought a Sun Fire V210 with a dual CPU, and it is a nice machine abeit quite noisy.
I have not been around to benchmark it yet, but for our needs (java+oracle+web) it will do fine,a nd it is in a 1U case which makes it cheaper for us to get hosted.
Mathematicians consider this to be a different field than the one dealing with the Fermat theorem (which primary was interesting because nobody could say whether Fermat was right or wrong - not because the actual theorem as such was particularily interesting)
This is a case of treating the symptom, not the cause.
This is the same thing that may happen to any monoculture, namely that if one is vulnerable to something, all are, and this may ruin a whole crop.
Now you may deal with this either by killing all the bugs with pesticides and treating against disceases with penicillin, but this does not work well since resistance show up.
It would be better to have more diversity so that for any given issue only a part of the total population is vulnerable. Since the defacto world is Windows, it must be pressed upon Microsoft that their programs are more diversified.
Different compilation options for different versions and languages meaning that a russian computer is basically different from a german one, and differnet machine code is needed to exploit this.
Of course it is also possible to just use another operating system but that is for most purposes a theorectial option (like when you _NEED_ 100% Office compatability, or Outlook meetings).
What would you do if Sun was bought by somebody, who chose to shut down Java completely? Never provide another release again?
One of the major advantages of using Java is the platform independance it provides. This means that you should be able to choose freely the underlying machine and operating system to run your application on.
Currently that means that if you want to run on a PC you need to run either Windows or Linux (or, perhaps, Solarix x86). If you want to run on a Mac you must run OS X - you cannot run just plain Darwin. You cannot run Darwin on a x86. I cannot run Java on my Linux-based router because it uses a MIPS-CPU, and there is no suitable JVM for my needs.
The list is endless.
Harmony might just be what is needed to get the true potential of Java unleashed.
I think it was because the Linux license was more attractive to the large number of coders who came online at that time. You were guaranteed that everybody benefitted from yours and others work.
The social implications of this are in my eyes very important.
Additionally Linus (IIRC) did a lot of work to get the user submitted patches in the kernel very quickly. This was an instant positive feedback, which also is very important for you to feel part of the developmental process, and to encourage you to do it again.
For some reason the BSD's did not get that synergic effect - perhaps because they had already demonstrated that they would fork and that work had to be replicated in 2-3 source trees.
Apparently each and every program needs to pop up an infobox in the lower right corner when it needs to tell me something, and allow me to click on it to do some relevant action.
If you miss that window, it is gone forever, and with it the opportunity to click on whatever it said.
I'd like a facility that allows the user to see what has happened in that lower right corner, and do whatever could be done at that time. AND enforce that all program should use that interface so that their messages was logged.
I agree on this. If you want other people to work on your project it is very important that it is easy to get the edit-compile-debug cycle up and running. If there is any dependence on other tools, make it simple to get it running (link to RPM's etc).
This includes easy access to source (CVS or a tarball/zipfile), easy access to the build environment (Linux/Windows), as well as a good license. If you choose an inappropriate license, people will avoid your product.
You should also tender to the feedback. It is crucial that casual bypassers get the impression that _you_ care about the project - this means feedback on bugreports, regular releases of new versions, proper documentation, etc. You should strongly consider getting good infrastructure, by putting your project on a suitable server, like sourceforge or savanna (depending on your license).
The eclipse project is probably the best example of a well-tendered user community - people take the time to report bugs and inconveniences because there is a quick response and the Bugzilla system allows the users to keep up with entries which may have a process period of months or years. They know that good suggestions get in the code quickly and they may get that code very quickly due to the aggressive release schema of new code.
In my point of view, you usually either release as open source to ensure that a project outlives some external entity or to get user involvement. In the latter case it is important to consider users as collaborators on a common project, and act accordingly.
For what I have seen Apple have played fair with the Open Source community - all their modifications to Open Source software have been submitted back to the original projects. Their strategy is to build extremely nice looking stuff _on top_ of the Open Source software, which is then closed source.
:)
I think that Apple is very clearly demonstrating that there is a market for taking Open Source software and improving it in a fair and square fashion, and then use it to create commecial products which benefits the users.
I used to work with a Mac, and these days I work with an XP-box. I miss my Mac
Applesoft Basic was tokenized for the keywords, but not for linenumbers in programs. This meant that renumbering your program with an increment of one could result in it getting smaller as "9" is only one byte as opposed to "40000".
I originally was very displeased with Java because you needed to type SO MUCH (and correct too) in order to get anything done.
Today I consider that a blessing. Modern IDE's help you with completion, allowing you to have long DESCRIPTIVE variable names, which is easy to rename if the variabel change its behaviour.
I do not think Java is an excellent language (then it would provide lazy evaluation and other functional language stuff), but it is not bad.
I write a lot in Java, and even though that the syntax is the same, it is much harder to read the !-negation than the "== false"-negation.
The reason is that -- in Java -- you very often dereference multiple objects on your way down to the field you need to test, so the negation and the value to negate tend to be far from one another on the line.
I stared a lot on a snippet having exactly that error (an incorrect number of !'s) for much too long. A "== false" would have been much easier to spot.
A large problem for PC application writers, was that just writing characters to the screen was an issue. Either you could go the standard, portable way by writing through the BIOS - which happened to be too slow for many applications - or by using assembly code to maintain the screen buffer directly.
This was also complicated as some of the original PC's would show noise on the screen if the video memory was updated while being converted to an image. Careful programming was needed to ensure that video memory was only updated in intervals where it would be visually safe to do so.
It is hard to imagine how much the original PC with DOS let the programmer down.
What /.ers fail to tell you is that prolonged loud music will make you deaf or will impair your hearing in the medium or long term.
Well, that would take care of the original posters problem?
Any particular reason for the co-worker not to show you refactoring instead?
IBM cannot release Suns code. They have already written JVM's but they need to rewrite the Java libraries - which is quite a pain - and compatability is quite hard to achive.
You would know, if you tried mixing JVM's and trying to do RMI or similar between them. Keep to a single vendor.
I have now played a bit with the Ubuntu live cd, and found it very similar to Knoppix (but with less applications), and quite nice.
I would like to know why all this effort was put into creating Yet Another Distribution instead of boosting an existing project (like knoppix). Is it a question of being project owners, and being able to set the course?
Look at PassiveTeX, which renders XSL-FO (a subset though) in TeX.
Coloured edges might indicate that you have enabled ClearType, which is for laptop displays only.
For this to be usable with complex stuff, you need the ability to pipe objects. Textbased stuff does not scale well.
Thank you for making it clear to me that the QuickLaunch facility is an incorrect metaphor.
Actually the JVM is more like the Linux Kernel, as it is needed for each and every Java-program and the slow start time is the main reason that I believe that small Java-apps have not yet found into the standard programs of Linux.
I think this would change if the JVM "quick launch" feature was an intergrated part of Linux.
I admit to not having written medium-sized projects in Python.
I am pretty sure that writing libraries (which is what small, largely-independent parts basically is) is not enough for a full application.
I have found that the various facilities in a modern IDE helps program development immensely, and that Java has some very high quality IDE's. I do not think that Python has as many - that alone makes Python less suited for large scale developemnt (which is where IDE's really help, since you cannot keep it all in your head).
From my experience, you can use Java to build enourmeous applications, and you have the tools (eclipse for one) to do so.
Those who say "Why not use Perl/Python/Bash/Whatever instead of Java" have clearly not tried writing a large application with them.
The VM warmup time is the major culprit here. What is needed under Linux is basically the "quick start" feature which OpenOffice and Mozilla uses under Windows.
I understand that some of this is available in Java 1.5, but this must be drawn to the logical conclusion, which Microsoft made with their java, namely that a Java-program is comparable to a c-program to launch - both for large and small programs.
A very easy way to confuse OS X so much that it will need a reboot, is to use a portable Mac, mount a Windows share, shut the lid on the Mac without unmounting the share, and reopen it on another network.
After a while you just give up, and reboot it...
We just bought a Sun Fire V210 with a dual CPU, and it is a nice machine abeit quite noisy.
I have not been around to benchmark it yet, but for our needs (java+oracle+web) it will do fine,a nd it is in a 1U case which makes it cheaper for us to get hosted.
Mathematicians consider this to be a different field than the one dealing with the Fermat theorem (which primary was interesting because nobody could say whether Fermat was right or wrong - not because the actual theorem as such was particularily interesting)