Still, most commercial applications, games, utilities, OS's, etc are still written in C++ (or a combination of C and C++).
No, they aren't. C/C++ is still used for the widest range of applications, but in terms of numbers of commercial applications right now, Java dominates.
Sure, its possible to create artificial benchmarks that prove otherwise, but in te real world where performance counts, people use C++.
I'm afraid that is increasingly not the case anymore. For example, Boeing have requested that all new development is in Java, even for real-time mission-critical high-performance work. The reason they give is that Java is simply a more productive language to work with. You may not agree with them, but this is what is happening.
What about his groundbreaking work on Black Holes? (Hawkings Radiation, anyone?)
Much of what Stephen Hawking does is to take other's ideas and sort them out mathematically. He has not originated that much alone. I am afraid that his fame comes more from a combination of his personality and disability.
I would nominate Roger Penrose as far more worthy of the Einstein comparison. He is a scientist of broad knowledge and great imagination who truly has come up with original ideas. He is one of the few modern physicists who seem to be able to go beyond the fun of playing around with fashionable maths (such as the dead-end that is String Theory).
The best you can say is that the current theorm is that birds evovled from reptiles is our best guess from what we can see from discovered fossils. (and I'm sure that you can add more conditions there.) But is its not proof.
Of course it is possible to be pedantic to the level where you accept nothing whatsoever as proof, but if that is the case you get nowhere. By any reasonable standard of proof, birds have evolved from reptiles (via dinosaurs). To express doubt about that is simply to arbitrarily dismiss evidence.
Look at the different world religons and sects and sub-sects. They are simple view points which are changeable.
Sure - tell that to those who fight to the death over religions.
How do you view this fossil? Depends if your view point is from evolution or panspermia (orgin of life from other planets).
Sorry? Evolution has nothing whatsoever to do with panspermia.
And this is from someone who says that the current theory of evolution is proven and to say otherwise is a lie.
It is proven - but if there was evidence to the otherwise (such as if there was a bird fossil conclusively dated earlier than the earliest reptile fossil), that proof would have to be abandoned.
I would be prepared to change my mind in this case. Is there a level of evidence at which you would be prepared to change yours? I ask this honestly - I would have respect for someone who was identified as a Creationist who would be prepared to admit (like a good scientists) that they were may be wrong.
I remember in a junior high science class being asked the following true/false question: Did birds evolve from reptiles? This was a straight forward, black-and-white question that left no room for doubt whatsoever, and it was indicative of the public education I received. When I questioned the teacher about this question, her response was basically "it has been conclusively proven".
Well, it has! To say otherwise would be to lie; hardly appropriate for a teacher. The correct question would have been.. "If you find a bird fossil older than the youngest reptile fossil would you change your mind?". This is the real test of a scientist, not trying to get her to proclaim false doubts.
One man I know believes the the rapid expansion of the universe is indicated by the phrase "God stretched out the heavens(spaces) and established the earth(matter)". He believes that the Big Bang did happen much like scientists do today, but that it was part of the creation process.
But then he is going to be a flawed scientist, as he is always trying to put his particular interpretation on things, and has a dogma that is going to be hard to shift by evidence.
Besides, everyone is "religious". What is religion but the basis upon which you build your world view?
That is not the definition of religion at all, merely word-play. Science and rationalism are not faiths, no matter how much many would like to label them as such. They are simply points of view, and changeable.
Most evolutionists are humanists or athiests. There is no God, therefore everything must be explained by measurable, reproducable evidence -- therefore evolution.
No, this doesn't follow. A lack of belief in a God does not mean that anyone thinks that everything is explainable. No-one with a good understanding of science and philosophy would claim this - it is a false dichotomy.
This is just as much a religion as anything else.
Sorry, but I think this is just more meaningless word-play. Of course it isn't.
Just as creationists should keep an open mind about evidence (I love to read about new scientific discoveries even if they seem to contradict the Bible)
I find this hard to believe. Just by stating that you are a creationist surely means you already have assumptions. The test of having an open mind is - are you prepared to accept that a sufficient amount of evidence will cause you to stop being a creationist?
Not my experience a lot of our SAN management devices and software use java. One version of the SAN fibre switches will only work with JRE 1.3 while the others will only work with 1.4. Navisphere only works with 1.4 and the EMC NAS will only work with Windows (even tried changing user-agent on linux/firefox to IE windows)
Only working with 1.4 is acceptable, if it works with 1.5 as well, but working with 1.3 only and not later versions of the VM is simply bad coding, suggesting that the developer is using clearly labelled non-portable parts of the JRE (com.sun.* and sun.* classes).
I have no idea what you are talking about, but the idea that anyone would hide skeletons of giants, when such evidence would win the finders huge international fame (just look at the fuss over the 'Hobbit' discovery) is rabid nonsense.
In my experience with Java, you're lucky to get a "Hello world" command line app to run the same from system to system, much less anything more complicated than that.
Oh come on! I just can't take this statement seriously. There may some extreme situations (high performance networking) where platform-specific issues appear, but for the majority of Java code, the platform makes no difference at all. I have written hundreds of thousands of Java code. Usually boring stuff - database front-end applications, but also numerical stuff and image processing applications and I have never once had a platform-specific problem.
Oh, the language does well enough despite the multitude of JVMs and display options available, but each platform has irritating little quirks that must be accounted for in order for your program to run correctly. It really IS "Write once, test everywhere."
No, it really isn't.
The typical Java developer situation (as determined by developer surveys) is that development is done under Windows, and then the binaries are given to the client for deployment on a range of platforms - mostly Linux/Unix. Testing on multiple platforms is rarely needed, as things just work. There may be some highly specific issues (such as network socket handling on Windows), but if large applications like the Tomcat Application server (highly network intensive and multi-threaded) can provide the same binaries for Windows, Linux and other Unix systems,
Admittedly that's just because the in-house programmers were lazy, but it all adds up to a not-very pleasant experience with Java.
Sounds more like a not-very pleasant experience with programmers! Sorry, but most Java developers really don't have these problems. Writing Java code that won't work on a later version is very hard (although I have seen it done). The guidelines for keeping Java portable are very clear, and most developers stick with them.
Apart from the fact that the browser and java VM crash after about 5 hours of online play, easily avoided by restarting every other break or so.
Java application servers routinely run non-stop for weeks.
Inflation actually solves several problems, at the expense of predicting an infinite number of unobservable phenomina (whole parallel universes with differing physical laws)
No it doesn't. It simply says that any given region of the universe at the time of the big bang will expand hugely more with inflation than without inflation. In terms of unobservable universes beyond the limit of what we can see, inflation makes no difference at all. All you need is for the universe to be big enough and for expansion to be the same everywhere and continue long enough. These hidden regions are a consequence of Big Bang theory with or without inflation.
Who knew that the "write once, run anywhere" promised to us by Java, would be beaten to the punch by an Open Source project?
Wow! So this means that these Dashboard widgets can run on my mobile phone? On Windows? On IBM z-Series mainframes? Can you write databases using these widgets? Application servers? Distributed network applications? Numerical applications?
Excellent! Then I'll abandon the hundreds of thousands of lines of portable Java code I have written and translate it into HTML and JavaScript after reading your informative post.
Oops! Hold on! Let's take a look at the article:
"KDE's runtime will be limited in that it will not be able to run widgets properly that use AppleScript or Cocoa in some way. Likewise, it's possible that Mac OS X users may also have to face not being able to run some widgets that depend on KDE somehow."
As a result, young people are told that nothing in their religion's official interpretation of Holy Writ is open to question. In school they are told the same thing about the current geological, paleontological and cosmological dogma.
They are? When? Where? Any decent scientific education always shows that scientific view change. I would be interested to see a report of any school scientific teaching that states that any current theory is unquestionable dogma.
Likewise many educators assume that students who doubt and question current scientific beliefs will never become scientists, and undermine others who might.
No. Educators assume that students who question scientific belief on religious grounds are unlikely to become scientists. They are right.
Healthy skepticism, not jaded cynicism, should be encouraged everywhere if there is to be true advancement in any field. Science and religion are not mutually exclusive, and neither are knowledge and wisdom.
These two statements are mutually contradictory, and explain why Science and religion are often mutually exclusive. Science is about skepticism. Some religion is often about discouraging skepticism and encouraging a lack of research into certain areas (such as evolution).
*Evolution... Evolution... Evolution... if I just repeat it enough times, maybe I could start believing it. Now repeat after me... Evolution... Evolution... Evolution...
* I mean macro evolution of course.
Seeing as macro evolution is nothing but 'micro evolution' repeated enough times, this might just work!
This guy has been on Coast to Coast AM a couple times to speak about gigantism in people. He has a pretty extensive website. From the intro:
When a website contains a phrase like this:
"I have invested over 30 years researching the vast history of giants. It has, for the most part, been kept from the public. Proof of giants' existence - their skeletal remains - has been quickly secreted away in obscure museums, when not destroyed."
You know it is not worth reading. Yet more pseudoscience combined with conspiracy theories...... how boring.
At the very least, it would be necessary to identify or develop a suitable library in C++ just to get started, and if this is for academic research purposes or an industrial proof of concept, rather than really trying to develop a fast-as-possible application, then that would be wasted effort.
There have been very straightforward libraries for C++ and Fortran that have been around and very well known for years - PVM for example. There is no need to switch to Java to get good distribution of code, so I do think things are equal...
Lest I give the wrong impression again, this isn't meant as any sort of slight against the modeller you cited; we're just looking at entirely different scales when we talk about a "CAD program", and thus entirely different performance requirements.
I know what you mean. I have perhaps a better example below.
A lot of things are said about the performance of programming languages based entirely on inappropriate consideration of unrepresentative benchmarks, so it would be good if you've found something that provides a more realistic basis for comparison.
This is hard, as it is very rare to find exactly the same substantial piece of code written twice in two languages in a way suitable for comparison. The only way I have managed to test speed is by small benchmarks - iterative numerical solutions, text processing algorithms etc. When I have done this I have simply found no difference between Java and C.
Perhaps the best indication I can find that Java really has gained C performance is that it is now being used for commercial games with 3D output - even though much of the rendering is usually done by hardware, much of the work involved a substantial amount of numerical computation, and Java is up to it.
Perhaps a better indication of Java used for engineering work is "Electric VLSI"
- this a substantial package, involving nearly a quarter of a million lines of code. One of the criteria of the port to Java (it used to be in C) was that there would not be a speed penalty as a result. There wasn't. I think this is a good indication that Java is definitely suitable for the kind of things you are doing.
Out of interest, did you actually read any of those articles you cited?
Yes.
The first, for example, is using Java to develop a distributed computation network.
Indeed. I have written such stuff myself. There are tools for it in C,C++ and Fortran. I don't believe Java's facilities in this area are not sufficient for a move to the language if it were significantly slower than the alternatives.
I don't see how that supports your argument; on the contrary, it's the classic "hardware is cheap" approach necessarily employed by those using inefficient programming tools.
This is a very condescending attitude to those doing the development - you honestly think that they are deliberately doing work with inefficient programming tools? Do you really think they would use a language for general purpose simulation if there was a significant speed penalty? (Having been through the process myself, I can just imagine the comments from review bodies when the applied for grants if this were true).
How about finding some real, production applications (not recent, unfinished developments or academic experiments) that use Java for the same sort of job that things like C++
There aren't many of these, because until recently (a few years ago), Java performance was just not good enough for this sort of thing (even the strongest Java supporters will admit this), and the numerics/simulation industry is one of the slowest about accepting new technologies (as shown by the huge amount of Fortran still being written).
However, this may interest you - some numerical benchmarks commonly used with C and Fortran - Java is right there close to the top in many of them:
My point is that it isn't the language per se which is at fault. It is the programmer.
My point is that it is the language that is at fault.
Firstly, all programmers make mistakes - they are inevitable. So, a programming language designed for general-purpose use (rather than as a replacement for assembler for low-level work) should be safe enough for general purpose use by fallible programmers. C and C++ never have been.
Secondly, C and C++ have specific features that encourage, or at the very least ignore, mistakes. These include the interchangeability of pointers and arrays. It is easy for a developer to assume that an array in C is a high-level data structure (as it is in other languages), whereas it is simply an index into raw memory.
In most languages the following is an error and can be usually be checked at compile or run time:
int x [100]; x [102] = y;
in C or C++ it is an entirely valid thing to do.
This, in my view, is a fault, and indicates bad language design for general purpose use.
People repeatedly demonstrate that Java is as fast as C. They do this for the same reason that members of religious groups keep having to tell themselves that their prefered creator of the universe is better than anyone else's: because the moment they stop reminding themselves they'll realise it's in direct contradiction to reality.
I think it is the other way around. Some C programmers maintain a stubborn faith that their way of working is essential for high performance in the face of increasing evidence to the contrary.
"10:00-10:50 Introducing the Sun Java Real-Time System - Greg Bollella, Sun Microsystems"
"The Real-Time Specification for Java defines a set of library calls and semantics which, when implemented within a general-purpose Java virtual machine, allow developers to control & predict the temporal behavior of an application."
"The Sun Java Real-Time System (Java RTS) is based on the HotSpot Java Virtual Machine and supports Java Platform Standard Edition on multiprocessor architectures."
The Standard Edition is exactly the same Java environment most developers used. In fact, Sun demonstrated a real-time Java application running alongside non-real-time applications on the same VM.
I guess my point is this: hard real-time Java is not the Java with which 99.9% of so-called Java developers are familiar.
This depends entirely on the implementation. Some real-time Java isn't the familiar Java (especially when cut down for embedded systems), and some is. You can't generalise.
Choosing Java over C or Ada for a hard real-time system will not enable you to hire lesser programmers, nor will it significantly increase your pool of eligible employees. No matter which language you use, to do hard real-time systems correctly and effiently you must hire only top-tier programmers. Top-tier programmers can make use of any relevant language. Hire any lesser programmers and they will screw up, regardless of language choice.
Yes, but using Java will give you definite advantages - a well-known and trusted threading model and effective garbage collection.
is very different to mine, where things like 3D modelling, photorealistic rendering, and large scale simulations are bread and butter. Does anyone write CAD programs or supercomputer-based weather modellers using Java?
"From a simulation perspective, Java may be regarded in one of two lights. The first is as yet another general purpose programming language in which computer simulation models may be developed."
and
"Distributed Simulation with Java"
It took just a few seconds with Google to find these... there must be many, many more.
The reason I mentioned Tomcat is that such application servers are used because the are so effective at running garbage collected applications multi-threaded without one program impacting the other, or locking up the system.
At the end of the day, GC is a useful tool for many programming jobs, but it's only a tool, not a silver bullet. It's no substitute for a good programmer who knows what he's doing.
You write well on this matter, but I think the evidence really is to the contrary. Hundreds of millions (if not more) lines of code have now been written in languages that use garbage collection. Some of these languages are high-performance and some are used for real-time work, and they all work fine.
Garbage collection is now routinely used even for multi-threaded languages (perhaps the best example is high-performance Java application servers like Tomcat).
So I am afraid I do think it is a silver bullet, and manual memory management will soon look like part of history except for the most specialised uses.
Are you saying that Boeing has written their own JVM ?
I have no idea. There is a JCP standard for real-time Java, and TimeSys Corp. have produced the reference implementation, which I believe is used by Boeing, NASA and Siemens.
Java's license currently says that it can't be used for certain systems, including nuclear power plants and avionics, so it can't be in airplanes.
Wrong. The license on Sun's implementation of Java says this. There is nothing to stop others writing their own compatible implementation which they do certify for this use.
Guess what? They have!
No one cares what some web application is written in, and since it can't be used in anything where someone's life might be in danger (Sun's license won't let you), I fail to see that being really all that interesting.
They don't use Sun's VMs for this, so your point is irrelevant.
Java is a language, not a product. Not all implementations certified as 'Java' come from Sun.
Still, most commercial applications, games, utilities, OS's, etc are still written in C++ (or a combination of C and C++).
No, they aren't. C/C++ is still used for the widest range of applications, but in terms of numbers of commercial applications right now, Java dominates.
Sure, its possible to create artificial benchmarks that prove otherwise, but in te real world where performance counts, people use C++.
I'm afraid that is increasingly not the case anymore. For example, Boeing have requested that all new development is in Java, even for real-time mission-critical high-performance work. The reason they give is that Java is simply a more productive language to work with. You may not agree with them, but this is what is happening.
What about his groundbreaking work on Black Holes? (Hawkings Radiation, anyone?)
Much of what Stephen Hawking does is to take other's ideas and sort them out mathematically. He has not originated that much alone. I am afraid that his fame comes more from a combination of his personality and disability.
I would nominate Roger Penrose as far more worthy of the Einstein comparison. He is a scientist of broad knowledge and great imagination who truly has come up with original ideas. He is one of the few modern physicists who seem to be able to go beyond the fun of playing around with fashionable maths (such as the dead-end that is String Theory).
"I have written hundreds of thousands of Java code.... I have never once had a platform-specific problem."
:)
I wonder why I'm skeptical of both these claims
Apart from me having missed out the word 'lines' (hundreds of thousands of 'lines' of java code), I have no idea.
Why? How much Java code have you written? What problems have you had? Why is it so amusing?
The best you can say is that the current theorm is that birds evovled from reptiles is our best guess from what we can see from discovered fossils. (and I'm sure that you can add more conditions there.) But is its not proof.
Of course it is possible to be pedantic to the level where you accept nothing whatsoever as proof, but if that is the case you get nowhere. By any reasonable standard of proof, birds have evolved from reptiles (via dinosaurs). To express doubt about that is simply to arbitrarily dismiss evidence.
Look at the different world religons and sects and sub-sects. They are simple view points which are changeable.
Sure - tell that to those who fight to the death over religions.
How do you view this fossil?
Depends if your view point is from evolution or panspermia (orgin of life from other planets).
Sorry? Evolution has nothing whatsoever to do with panspermia.
And this is from someone who says that the current theory of evolution is proven and to say otherwise is a lie.
It is proven - but if there was evidence to the otherwise (such as if there was a bird fossil conclusively dated earlier than the earliest reptile fossil), that proof would have to be abandoned.
I would be prepared to change my mind in this case. Is there a level of evidence at which you would be prepared to change yours? I ask this honestly - I would have respect for someone who was identified as a Creationist who would be prepared to admit (like a good scientists) that they were may be wrong.
I remember in a junior high science class being asked the following true/false question: Did birds evolve from reptiles? This was a straight forward, black-and-white question that left no room for doubt whatsoever, and it was indicative of the public education I received. When I questioned the teacher about this question, her response was basically "it has been conclusively proven".
Well, it has! To say otherwise would be to lie; hardly appropriate for a teacher. The correct question would have been.. "If you find a bird fossil older than the youngest reptile fossil would you change your mind?". This is the real test of a scientist, not trying to get her to proclaim false doubts.
One man I know believes the the rapid expansion of the universe is indicated by the phrase "God stretched out the heavens(spaces) and established the earth(matter)". He believes that the Big Bang did happen much like scientists do today, but that it was part of the creation process.
But then he is going to be a flawed scientist, as he is always trying to put his particular interpretation on things, and has a dogma that is going to be hard to shift by evidence.
Besides, everyone is "religious". What is religion but the basis upon which you build your world view?
That is not the definition of religion at all, merely word-play. Science and rationalism are not faiths, no matter how much many would like to label them as such. They are simply points of view, and changeable.
Most evolutionists are humanists or athiests. There is no God, therefore everything must be explained by measurable, reproducable evidence -- therefore evolution.
No, this doesn't follow. A lack of belief in a God does not mean that anyone thinks that everything is explainable. No-one with a good understanding of science and philosophy would claim this - it is a false dichotomy.
This is just as much a religion as anything else.
Sorry, but I think this is just more meaningless word-play. Of course it isn't.
Just as creationists should keep an open mind about evidence (I love to read about new scientific discoveries even if they seem to contradict the Bible)
I find this hard to believe. Just by stating that you are a creationist surely means you already have assumptions. The test of having an open mind is - are you prepared to accept that a sufficient amount of evidence will cause you to stop being a creationist?
Not my experience a lot of our SAN management devices and software use java. One version of the SAN fibre switches will only work with JRE 1.3 while the others will only work with 1.4. Navisphere only works with 1.4 and the EMC NAS will only work with Windows (even tried changing user-agent on linux/firefox to IE windows)
Only working with 1.4 is acceptable, if it works with 1.5 as well, but working with 1.3 only and not later versions of the VM is simply bad coding, suggesting that the developer is using clearly labelled non-portable parts of the JRE (com.sun.* and sun.* classes).
Keep on worshipping at that altar of Boas.
I have no idea what you are talking about, but the idea that anyone would hide skeletons of giants, when such evidence would win the finders huge international fame (just look at the fuss over the 'Hobbit' discovery) is rabid nonsense.
In my experience with Java, you're lucky to get a "Hello world" command line app to run the same from system to system, much less anything more complicated than that.
Oh come on! I just can't take this statement seriously. There may some extreme situations (high performance networking) where platform-specific issues appear, but for the majority of Java code, the platform makes no difference at all. I have written hundreds of thousands of Java code. Usually boring stuff - database front-end applications, but also numerical stuff and image processing applications and I have never once had a platform-specific problem.
Oh, the language does well enough despite the multitude of JVMs and display options available, but each platform has irritating little quirks that must be accounted for in order for your program to run correctly. It really IS "Write once, test everywhere."
No, it really isn't.
The typical Java developer situation (as determined by developer surveys) is that development is done under Windows, and then the binaries are given to the client for deployment on a range of platforms - mostly Linux/Unix. Testing on multiple platforms is rarely needed, as things just work. There may be some highly specific issues (such as network socket handling on Windows), but if large applications like the Tomcat Application server (highly network intensive and multi-threaded) can provide the same binaries for Windows, Linux and other Unix systems,
Admittedly that's just because the in-house programmers were lazy, but it all adds up to a not-very pleasant experience with Java.
Sounds more like a not-very pleasant experience with programmers! Sorry, but most Java developers really don't have these problems. Writing Java code that won't work on a later version is very hard (although I have seen it done). The guidelines for keeping Java portable are very clear, and most developers stick with them.
Apart from the fact that the browser and java VM crash after about 5 hours of online play, easily avoided by restarting every other break or so.
Java application servers routinely run non-stop for weeks.
Inflation actually solves several problems, at the expense of predicting an infinite number of unobservable phenomina (whole parallel universes with differing physical laws)
No it doesn't. It simply says that any given region of the universe at the time of the big bang will expand hugely more with inflation than without inflation. In terms of unobservable universes beyond the limit of what we can see, inflation makes no difference at all. All you need is for the universe to be big enough and for expansion to be the same everywhere and continue long enough. These hidden regions are a consequence of Big Bang theory with or without inflation.
Who knew that the "write once, run anywhere" promised to us by Java, would be beaten to the punch by an Open Source project?
Wow! So this means that these Dashboard widgets can run on my mobile phone? On Windows? On IBM z-Series mainframes? Can you write databases using these widgets? Application servers? Distributed network applications? Numerical applications?
Excellent! Then I'll abandon the hundreds of thousands of lines of portable Java code I have written and translate it into HTML and JavaScript after reading your informative post.
Oops! Hold on! Let's take a look at the article:
"KDE's runtime will be limited in that it will not be able to run widgets properly that use AppleScript or Cocoa in some way. Likewise, it's possible that Mac OS X users may also have to face not being able to run some widgets that depend on KDE somehow."
Oh well, back to Java....
As a result, young people are told that nothing in their religion's official interpretation of Holy Writ is open to question. In school they are told the same thing about the current geological, paleontological and cosmological dogma.
They are? When? Where? Any decent scientific education always shows that scientific view change. I would be interested to see a report of any school scientific teaching that states that any current theory is unquestionable dogma.
Likewise many educators assume that students who doubt and question current scientific beliefs will never become scientists, and undermine others who might.
No. Educators assume that students who question scientific belief on religious grounds are unlikely to become scientists. They are right.
Healthy skepticism, not jaded cynicism, should be encouraged everywhere if there is to be true advancement in any field. Science and religion are not mutually exclusive, and neither are knowledge and wisdom.
These two statements are mutually contradictory, and explain why Science and religion are often mutually exclusive. Science is about skepticism. Some religion is often about discouraging skepticism and encouraging a lack of research into certain areas (such as evolution).
Mammals shrink on islands and smaller ecosystems. See pygmy elephants in islands in India. It's reptiles that increase in size.
No. Some animals of both types get smaller and Some animals of both types get larger. It is nothing to do with whether they are mammals or reptiles.
*Evolution ... Evolution ... Evolution ... if I just repeat it enough times, maybe I could start believing it. Now repeat after me ... Evolution ... Evolution ... Evolution ...
* I mean macro evolution of course.
Seeing as macro evolution is nothing but 'micro evolution' repeated enough times, this might just work!
This guy has been on Coast to Coast AM a couple times to speak about gigantism in people. He has a pretty extensive website. From the intro:
When a website contains a phrase like this:
"I have invested over 30 years researching the vast history of giants. It has, for the most part, been kept from the public. Proof of giants' existence - their skeletal remains - has been quickly secreted away in obscure museums, when not destroyed."
You know it is not worth reading. Yet more pseudoscience combined with conspiracy theories...... how boring.
At the very least, it would be necessary to identify or develop a suitable library in C++ just to get started, and if this is for academic research purposes or an industrial proof of concept, rather than really trying to develop a fast-as-possible application, then that would be wasted effort.
There have been very straightforward libraries for C++ and Fortran that have been around and very well known for years - PVM for example. There is no need to switch to Java to get good distribution of code, so I do think things are equal...
Lest I give the wrong impression again, this isn't meant as any sort of slight against the modeller you cited; we're just looking at entirely different scales when we talk about a "CAD program", and thus entirely different performance requirements.
I know what you mean. I have perhaps a better example below.
A lot of things are said about the performance of programming languages based entirely on inappropriate consideration of unrepresentative benchmarks, so it would be good if you've found something that provides a more realistic basis for comparison.
This is hard, as it is very rare to find exactly the same substantial piece of code written twice in two languages in a way suitable for comparison. The only way I have managed to test speed is by small benchmarks - iterative numerical solutions, text processing algorithms etc. When I have done this I have simply found no difference between Java and C.
Perhaps the best indication I can find that Java really has gained C performance is that it is now being used for commercial games with 3D output - even though much of the rendering is usually done by hardware, much of the work involved a substantial amount of numerical computation, and Java is up to it.
Perhaps a better indication of Java used for engineering work is "Electric VLSI"
http://www.staticfreesoft.com/
- this a substantial package, involving nearly a quarter of a million lines of code. One of the criteria of the port to Java (it used to be in C) was that there would not be a speed penalty as a result. There wasn't. I think this is a good indication that Java is definitely suitable for the kind of things you are doing.
Out of interest, did you actually read any of those articles you cited?
Yes.
The first, for example, is using Java to develop a distributed computation network.
Indeed. I have written such stuff myself. There are tools for it in C,C++ and Fortran. I don't believe Java's facilities in this area are not sufficient for a move to the language if it were significantly slower than the alternatives.
I don't see how that supports your argument; on the contrary, it's the classic "hardware is cheap" approach necessarily employed by those using inefficient programming tools.
This is a very condescending attitude to those doing the development - you honestly think that they are deliberately doing work with inefficient programming tools? Do you really think they would use a language for general purpose simulation if there was a significant speed penalty? (Having been through the process myself, I can just imagine the comments from review bodies when the applied for grants if this were true).
How about finding some real, production applications (not recent, unfinished developments or academic experiments) that use Java for the same sort of job that things like C++
Here is a well-known molecule CAD system in Java:
http://willware.net:8080/ncad.html
Here is a high-performance simulation system:
http://jist.ece.cornell.edu/
Here is a Java Numerics Library:
http://www.vni.com/products/imsl/jmsl/jmsl.html
There aren't many of these, because until recently (a few years ago), Java performance was just not good enough for this sort of thing (even the strongest Java supporters will admit this), and the numerics/simulation industry is one of the slowest about accepting new technologies (as shown by the huge amount of Fortran still being written).
However, this may interest you - some numerical benchmarks commonly used with C and Fortran - Java is right there close to the top in many of them:
http://www.vni.com/products/imsl/jmsl/jmsl.html
My point is that it isn't the language per se which is at fault. It is the programmer.
My point is that it is the language that is at fault.
Firstly, all programmers make mistakes - they are inevitable. So, a programming language designed for general-purpose use (rather than as a replacement for assembler for low-level work) should be safe enough for general purpose use by fallible programmers. C and C++ never have been.
Secondly, C and C++ have specific features that encourage, or at the very least ignore, mistakes. These include the interchangeability of pointers and arrays. It is easy for a developer to assume that an array in C is a high-level data structure (as it is in other languages), whereas it is simply an index into raw memory.
In most languages the following is an error and can be usually be checked at compile or run time:
int x [100]; x [102] = y;
in C or C++ it is an entirely valid thing to do.
This, in my view, is a fault, and indicates bad language design for general purpose use.
People repeatedly demonstrate that Java is as fast as C. They do this for the same reason that members of religious groups keep having to tell themselves that their prefered creator of the universe is better than anyone else's: because the moment they stop reminding themselves they'll realise it's in direct contradiction to reality.
I think it is the other way around. Some C programmers maintain a stubborn faith that their way of working is essential for high performance in the face of increasing evidence to the contrary.
The problem is bad coders. Instead of the application giving root, now it just gives the attacker access to your data.
This does not explain how Java or C# are supposed to have security issues in themselves as against C or C++.
However, I think that everyone needs to be perfectly crystal clear that the Java environment to which most Java developers are accustomed is not.
Sorry, but you are wrong. It certainly can be the standard Java environment:
http://www.esconline.com/boston/workshops/
"10:00-10:50 Introducing the Sun Java Real-Time System - Greg Bollella, Sun Microsystems"
"The Real-Time Specification for Java defines a set of library calls and semantics which, when implemented within a general-purpose Java virtual machine, allow developers to control & predict the temporal behavior of an application."
"The Sun Java Real-Time System (Java RTS) is based on the HotSpot Java Virtual Machine and supports Java Platform Standard Edition on multiprocessor architectures."
The Standard Edition is exactly the same Java environment most developers used. In fact, Sun demonstrated a real-time Java application running alongside non-real-time applications on the same VM.
I guess my point is this: hard real-time Java is not the Java with which 99.9% of so-called Java developers are familiar.
This depends entirely on the implementation. Some real-time Java isn't the familiar Java (especially when cut down for embedded systems), and some is. You can't generalise.
Choosing Java over C or Ada for a hard real-time system will not enable you to hire lesser programmers, nor will it significantly increase your pool of eligible employees. No matter which language you use, to do hard real-time systems correctly and effiently you must hire only top-tier programmers. Top-tier programmers can make use of any relevant language. Hire any lesser programmers and they will screw up, regardless of language choice.
Yes, but using Java will give you definite advantages - a well-known and trusted threading model and effective garbage collection.
is very different to mine, where things like 3D modelling, photorealistic rendering, and large scale simulations are bread and butter. Does anyone write CAD programs or supercomputer-based weather modellers using Java?
Yes, they do.
http://www.ssec.wisc.edu/~billh/cacm2005.html
"Java distributed components for numerical visualization in VisAD"
http://www.brunel.ac.uk/~csstsjt/ssg/ssghome.html
Using JAVA to develop simulation models [Keynote]
"From a simulation perspective, Java may be regarded in one of two lights. The first is as yet another general purpose programming language in which computer simulation models may be developed."
and
"Distributed Simulation with Java"
It took just a few seconds with Google to find these... there must be many, many more.
The reason I mentioned Tomcat is that such application servers are used because the are so effective at running garbage collected applications multi-threaded without one program impacting the other, or locking up the system.
At the end of the day, GC is a useful tool for many programming jobs, but it's only a tool, not a silver bullet. It's no substitute for a good programmer who knows what he's doing.
You write well on this matter, but I think the evidence really is to the contrary. Hundreds of millions (if not more) lines of code have now been written in languages that use garbage collection. Some of these languages are high-performance and some are used for real-time work, and they all work fine.
Garbage collection is now routinely used even for multi-threaded languages (perhaps the best example is high-performance Java application servers like Tomcat).
So I am afraid I do think it is a silver bullet, and manual memory management will soon look like part of history except for the most specialised uses.
Are you saying that Boeing has written their own JVM ?
I have no idea. There is a JCP standard for real-time Java, and TimeSys Corp. have produced the reference implementation, which I believe is used by Boeing, NASA and Siemens.
Development for what? Their internal accounting systems?
n ned/scaneagle.html
Er no. All kinds of interesting things... like this:
http://www.boeing.com/defense-space/military/unma
The software for this is in Java.
Java's license currently says that it can't be used for certain systems, including nuclear power plants and avionics, so it can't be in airplanes.
Wrong. The license on Sun's implementation of Java says this. There is nothing to stop others writing their own compatible implementation which they do certify for this use.
Guess what? They have!
No one cares what some web application is written in, and since it can't be used in anything where someone's life might be in danger (Sun's license won't let you), I fail to see that being really all that interesting.
They don't use Sun's VMs for this, so your point is irrelevant.
Java is a language, not a product. Not all implementations certified as 'Java' come from Sun.
The US Military isn't exactly world reknowned for making the best decisions when it comes to computing.
Fine. Let's ignore them then. How about Boeing, who have decided that Java is now their preferred language for all development, replacing Ada?