For one thing, Ada is specifically designed as a native-code compiled language, and provides facilities suited to (fairly) speed-critical code. I suspect a compiler would have to be extremely clever to achieve the same efficiency from Java code. For this reason alone, I doubt avionics software could sensibly be written in Java.
Ada is really only a kind of suped-up Pascal, but it has certain genuine advantages over C and C++ -- the languages most commonly used as an alternative to Ada for developing safety-critical software (which tends to be embedded) -- that certain big corporations would prefer people didn't know.
These advantages are really very simple. Ada tends to catch a lot of typical errors at compile-time that (for the equivalent errors) would be caught only at run-time in languages such as C and C++ (and Java, for that matter), or that would not be caught at all. Catching these errors, in practice, reduces the debugging cycle drastically. The economic benefits for commercial software development are obvious -- and this is the reason why savvy companies like Boeing use Ada -- but the benefits for the lone hacker are also obvious.
In addition, Ada programs -- especially if use is made of the simple facilities Ada provides for the purpose -- tend to catch (as a controllable exception) many typical errors at run-time that would not be caught by C or C++ (but would cause uncontrolled failure instead).
So long as exceptions are handled sensibly, this makes it possible to program Ada software to defend itself against catasrophic failure in the field (or in the air). The classic 'buffer overrun' vulnerabilities that have plagued various kinds of Internet service software recently -- costing businesses huge amounts of money in some cases -- would certainly never have occurred if the software had been written in Ada (or, for that matter, in almost any language other than C or C++).
Of course it should be noted that, most of the time, the reliability of a piece of (safety-critical) software as delivered will depend on how well it was designed, specified, coded, and tested, not on which language it was programmed in.
It should be emphasised that there are plenty of other languages (e.g. Modula III, Oberon, Eiffel) that offer advantages similar to Ada. I believe, of these, Ada is the only one which is an ISO standard (which it has been since 1983).
Ada is a totally general-purpose language. It can certainly be used for anything that C or C++ can. If you are curious, you may be surprised to learn that if you throw a file ending with ".ads" or ".adb" at any recent gcc it will compile it.
If you are curious about Ada, the best starting point is:
For one thing, Ada is specifically designed as a native-code compiled language, and provides facilities suited to (fairly) speed-critical code. I suspect a compiler would have to be extremely clever to achieve the same efficiency from Java code. For this reason alone, I doubt avionics software could sensibly be written in Java.
Ada is really only a kind of suped-up Pascal, but it has certain genuine advantages over C and C++ -- the languages most commonly used as an alternative to Ada for developing safety-critical software (which tends to be embedded) -- that certain big corporations would prefer people didn't know.
These advantages are really very simple. Ada tends to catch a lot of typical errors at compile-time that (for the equivalent errors) would be caught only at run-time in languages such as C and C++ (and Java, for that matter), or that would not be caught at all. Catching these errors, in practice, reduces the debugging cycle drastically. The economic benefits for commercial software development are obvious -- and this is the reason why savvy companies like Boeing use Ada -- but the benefits for the lone hacker are also obvious.
In addition, Ada programs -- especially if use is made of the simple facilities Ada provides for the purpose -- tend to catch (as a controllable exception) many typical errors at run-time that would not be caught by C or C++ (but would cause uncontrolled failure instead).
So long as exceptions are handled sensibly, this makes it possible to program Ada software to defend itself against catasrophic failure in the field (or in the air). The classic 'buffer overrun' vulnerabilities that have plagued various kinds of Internet service software recently -- costing businesses huge amounts of money in some cases -- would certainly never have occurred if the software had been written in Ada (or, for that matter, in almost any language other than C or C++).
Of course it should be noted that, most of the time, the reliability of a piece of (safety-critical) software as delivered will depend on how well it was designed, specified, coded, and tested, not on which language it was programmed in.
It should be emphasised that there are plenty of other languages (e.g. Modula III, Oberon, Eiffel) that offer advantages similar to Ada. I believe, of these, Ada is the only one which is an ISO standard (which it has been since 1983).
Ada is a totally general-purpose language. It can certainly be used for anything that C or C++ can. If you are curious, you may be surprised to learn that if you throw a file ending with ".ads" or ".adb" at any recent gcc it will compile it.
If you are curious about Ada, the best starting point is:
http://www.adapower.com
Happy hunting!