On 28. aug. 2014 20:32, mike matrigali wrote:
Are there "compile" level features that developers are looking for in
java7 and above? A lot of my users take much longer to upgrade their
database software, so I do work to backport fixes into older releases.
DERBY-6213 and follow on work that changed code made backports not apply
cleanly any more - which leads to more work and greater possiblity of
not correctly backporting changes. I would like to understand the
likely non-backward compatible changes that this change would bring
about.
Apart from added API capabilities, the majrr changes on the language
level are summarized here:
Enhancements in Java SE 7
* Binary Literals
<http://docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html>
- In Java SE 7, the integral types (|byte|, |short|, |int|, and
|long|) can also be expressed using the binary number system. To
specify a binary literal, add the prefix |0b| or |0B| to the number.
* Underscores in Numeric Literals
<http://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html>
- Any number of underscore characters (|_|) can appear anywhere
between digits in a numerical literal. This feature enables you, for
example, to separate groups of digits in numeric literals, which can
improve the readability of your code.
* Strings in switch Statements
<http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html>
- You can use the |String| class in the expression of a |switch|
statement.
* Type Inference for Generic Instance Creation
<http://docs.oracle.com/javase/7/docs/technotes/guides/language/type-inference-generic-instance-creation.html>
- You can replace the type arguments required to invoke the
constructor of a generic class with an empty set of type parameters
(|<>|) as long as the compiler can infer the type arguments from the
context. This pair of angle brackets is informally called the /diamond/.
* Improved Compiler Warnings and Errors When Using Non-Reifiable
Formal Parameters with Varargs Methods
<http://docs.oracle.com/javase/7/docs/technotes/guides/language/non-reifiable-varargs.html>
- The Java SE 7 complier generates a warning at the declaration site
of a varargs method or constructor with a non-reifiable varargs
formal parameter. Java SE 7 introduces the compiler option
|-Xlint:varargs| and the annotations |@SafeVarargs| and
|@SuppressWarnings({"unchecked", "varargs"})| to supress these warnings.
* The try-with-resources Statement
<http://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html>
- The |try|-with-resources statement is a |try| statement that
declares one or more resources. A /resource/ is an object that must
be closed after the program is finished with it. The
|try|-with-resources statement ensures that each resource is closed
at the end of the statement. Any object that implements the new
|java.lang.AutoCloseable| interface or the |java.io.Closeable|
interface can be used as a resource. The classes
|java.io.InputStream|, |OutputStream|, |Reader|, |Writer|,
|java.sql.Connection|, |Statement|, and |ResultSet| have been
retrofitted to implement the |AutoCloseable| interface and can all
be used as resources in a |try|-with-resources statement.
* Catching Multiple Exception Types and Rethrowing Exceptions with
Improved Type Checking
<http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html>
- A single |catch| block can handle more than one type of exception.
In addition, the compiler performs more precise analysis of rethrown
exceptions than earlier releases of Java SE. This enables you to
specify more specific exception types in the |throws| clause of a
method declaration.
Thanks,
Dag