Guidelines for Choosing a Computer Language:|
Support for the Visionary Organization
Appendix P: JAVA
Java has come upon the language scene with a lot of hype. There is nothing about it that is revolutionary except that it has been targeted specifically for use on the World Wide Web (WWW). However, Java has combined familiar concepts with concepts that have been pioneered by other languages, and the result is an attractive language package. Although it provides the capability to run mini-applications, called applets, on Web browsers, Java is by no means specific just to the WWW domain. It can also be used to run general-purpose stand-alone applications. [Naughton 96] [Rodley 96]Language Criteria
In this section, Java is rated with respect to the language characteristics used in Table 2 in the main document [Naughton 96] [Rodley 96]. The ratings range from 0 to 10, where 0 means the language provides no support for the characteristic, and 10 means it provides extensive support. The ratings given below are those provided in Table 2. The reader must bear in mind that the support for a good characteristic in a language does not necessarily mean that it is always used, or used appropriately. Unskilled programmers can write bad code in any language, but a good language facilitates the production of good code by skilled programmers.
Clarity of source code – the extent to which inherent language features support source code that is readable and understandable and that clearly reflects the underlying logical structure of the program.
Java is strictly object oriented, so its form is very well defined. The code suffers somewhat from the cryptic C syntax forms. Rating: 8
Complexity management (architecture support) – the extent to which inherent language features support the management of system complexity, in terms of addressing issues of data, algorithm, interface, and architectural complexity.
With its object orientation, Java provides for the encapsulation of classes and objects. However, Java does not provide any additional support for managing very large software components, such as subsystems. Rating: 7
Concurrency support – the extent to which inherent language features support the construction of code with multiple threads of control (also known as parallel processing).
Java provides built-in features for handling threads. Rating: 7
Distributed system support – the extent to which inherent language features support the construction of code to be distributed across multiple platforms on a network.
Java provides built-in support for distributing components over the WWW. Rating: 7
Maintainability – the extent to which inherent language features support the construction of code that can be readily modified to satisfy new requirements or to correct deficiencies.
Many features of Java support maintainability, such as those which support code clarity, encapsulation, and object orientation. Object-oriented capabilities can have both good and bad effects on maintainability, but, if used properly, object-oriented programming will improve maintainability. Rating: 9
Mixed language support – the extent to which inherent language features support interfacing to other languages.
Java provides for interfacing with other languages by providing wrappers around the code from the other languages. Rating: 5
Object-oriented programming support – the extent to which inherent language features support the construction of object-oriented code.
Java provides complete support for object-oriented programming, and it provides no support for any other style of programming. Rating 10
Portability – the extent to which inherent language features support the transfer of a program from one hardware and/or software platform to another.
Java was built for complete portability. Its compiler produces source code in a platform-independent bytecode. The bytecode is then translated at runtime into native machine code for the given platform. Rating: 9
Real-time support – the extent to which inherent language features support the construction of real-time systems.
Java was not developed for real-time systems. The use of interpreted code trades speed for platform independence. Rating: 0
Reliability – the extent to which inherent language features support the construction of components that can be expected to perform their intended functions in a satisfactory manner throughout the expected lifetime of the product.
Java requires the specification of information, the omission of which can make a program unreliable, such as type specifications. Rating: 8
Reusability – the extent to which inherent language features support the adaptation of code for use in another application.
Java supports reusability with language features supporting code clarity (making code understandable), encapsulation (making code adaptable), maintainability, and portability. Rating: 8
Safety – the extent to which inherent language features support the construction of safety-critical systems, yielding systems that are fault-tolerant, fail-safe, or robust in the face of systemic failures.
Java was not developed for safety-critical systems, and its capabilities in that area are unproven. Rating: 4
Standardization – the extent to which the language definition has been formally standardized (by recognized bodies such as ANSI and ISO) and the extent to which it can be reasonably expected that this standard will be followed in a language translator.
Java is in the process of ISO standardization. Nevertheless, it is currently a very effective de facto standard, and it is reasonable to expect implementations to follow the standard. Rating: 8
Support for modern engineering methods – the extent to which inherent language features support the expression of source code that enforces good software engineering principles.
Java was developed explicitly to support many software engineering principles, including its support for reliability, maintainability, and portability. Rating: 9
|< Previous Page||Search||Contents||Tables||Next Page >|