Design by Contract™, assertions
| Eiffel | C++ | Java | Smalltalk |
| Design by Contract: language and environment support assertions | Nothing comparable (only an "assert" instruction) | Nothing comparable (only an "assert" instruction). Various non-standard assertion proposals. | Nothing comparable |
Static typing
| Eiffel | C++ | Java | Smalltalk |
| Statically typed | Statically typed; however the language supports C-style "casts" which really amount to invitations to violate type rules | Typed, mostly statically but dynamic typing is required for generic container structures. | Dynamically typed |
Proprietary status, vendor interoperability
| Eiffel | C++ | Java | Smalltalk |
| Open, multi-vendor, standardized | Open, multi-vendor (ANSI standard) | Multi-vendor, licensed from Sun | Multi-vendor, fairly wide variation between vendors |
Compilation technology
| ISE Eiffel | C++ | Java | Smalltalk |
| Combination of interpretation and compilation in same environment | Usually compiled | Usually mix of interpretation and "on-the-fly" compilation | Historically interpreter-based, currently mix of interpretation and compilation |
Efficiency of generated code
| Eiffel | C++ | Java | Smalltalk |
| Generates fast executables. | Generates fast executables. | Widely reported performance problems. | Executables require a "Smalltalk image". |
Automatic documentation
| ISE Eiffel | C++ | Java | Smalltalk |
| Documentation extracted automatically ("short", "flat-short" and other formats) without extra programmer effort. | No standard mechanism. | JavaDoc: add special comments. | No standard mechanism. |
The HTML format is particularly important as a way to publish a system architecture on an Intranet or Internet page and allow team collaboration on an ongoing design. The risk is just too big, if you treat documentation as a product developed and maintained separately, that it will be incomplete or incorrect, especially as the software evolves (how do you guarantee that the documentation gets updated accordingly?). The designers of Java have acknowledged that the JavaDoc idea was imitated from Eiffel. JavaDoc goes in the right direction but requires you to add special comments, and does not have the benefit of the Design by Contract mechanisms. Other languages do not give you any standard facilities to produce documentation automatically as a derivative from the code. This is a major obstacle to obtaining some of the benefits of O-O development. | |||
Run-time fees
| ISE Eiffel | C++ | Java | Smalltalk |
| No run-time fees. | No run-time fees. | No run-time fees for introductory versions, but 6-figure fees for embedded use. | No run-time fees (reversing previous policies of major vendor). |
Exception handling
| Eiffel | C++ | Java | Smalltalk |
| Exception handling | Exception handling | Exception handling | Exception handling |
Multiple inheritance
| Eiffel | C++ | Java | Smalltalk |
| Multiple inheritance, widely used | Multiple inheritance (but use discouraged by many books and compiler vendors because of various problems). | Single inheritance (but multiple interface facility) | Single inheritance |
Readability, clarity, ease of use
| Eiffel | C++ | Java | Smalltalk |
| Clear, simple, readable syntax. | Complex syntax | C++-like syntax. | Opinions differ. We feel it's pretty bizarre (right-association for operators, etc.) |
Standardization of library style
| Eiffel | C++ | Java | Smalltalk |
| Libraries use standardized vocabulary | Wide variation - Libraries evolved before vocabulary was a recognized issue. | ? | Emphasis on consistency |
Automatic memory management
| Eiffel | C++ | Java | Smalltalk |
| Garbage Collection/ Automatic memory management | No garbage collection in common commercial implementations. | Garbage collection | Garbage collection |
Scope in the software lifecycle
| ISE Eiffel | C++ | Java | Smalltalk |
| Seamless Visual Development Environment | Addresses implementation only | Focus on implementation | Mostly focused on implementation |
Mathematical software
| ISE Eiffel | C++ | Java | Smalltalk |
| Libraries available | Libraries available | Libraries available or under development | Libraries available |
Openness and interoperability with legacy software
How object-oriented?
| Eiffel | C++ | Java | Smalltalk |
| Purely OO | Hybrid | Some proponents say it's pure-O-O; to us it looks pretty much like a C extension. | Purely OO |
Age and track record
| ISE Eiffel | C++ | Java | Smalltalk |
| Since 1985. Many reference sites, successful projects in the 800,000-line range. | Approximately 12 years old, many projects (but hard to know how many are truly O-O). | Since 1995, initially geared towards programming small appliances and Internet applets, then scaled up. | Approximately 20 years old. |

