Java Reference
In-Depth Information
A.2. Dealing with Multiple Dialects
Adding new keywords to the language runs the risk of breaking existing
code, especially if the word is an identifier as common as "assert" or
"enum." [1] The choice to add a new keyword creates some interesting
and important compatibility issues. Taking assertions as an example, you
can choose whether or not assert is recognized in your code by selecting
a source version of 1.4 or higher. This allows you to keep your old use
of "assert" in one class, while using the language assertions in another-
provided the different uses are independent. When asserts were intro-
duced in the 1.4 release, the default source version was left at 1.3 so by
default nothing changed and you had to explicitly tell the compiler when
you were ready to use the new language feature. In the 5.0 release the
presumption is that everyone will want to use at least some of the new
features, so they are enabled by defaultif you don't want them you must
either specify the appropriate source version or use an older version of
the compiler.
[1] The keyword strictfp was added to the language in the 1.2 release but caused almost no problems
because nearly nobody had ever used it as an identifier.
These side-by-side dialects can create problems. With only one dialect
you could use the same compiler, and the same compiler options, on all
your source code. With two or more dialects you might have some source
files that require assert or enum and others that reject it. You will have
to compile your source carefully to handle such a situation. At this point,
there are three dialects: with assert and enum (5.0), with assert but not
enum (1.4), and without either (1.3 and earlier).
The obvious solution is to use a single dialect for all your source. But you
will not always have that kind of control. If you are using source pro-
duced by another group they may have moved on while you cannot, or
vice versa.
This is deeper than you might hope. Suppose you have two source files,
Newer.java which uses the assert keyword and Older.java which uses "as-
sert" as a method name. If the newer class depends on the older and
 
 
Search WWH ::




Custom Search