Александър Куртаков
REPL (Read-Eval-Print-Loop)
package java9;
public interface ISmth {
default void defaultMethod() {
privateTest();
}
private void privateTest() {
System.out.println("Hello from private interface method");
}
}
private static void printReader(BufferedReader reader) throws IOException {
try (BufferedReader reader1 = reader) {
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
private static void printReader(BufferedReader reader) throws IOException {
try (reader) {
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
Java 8
Java 9
Diamond Operator for Anonymous Classes
"_" illegal identifier name
SafeVarargs on Private Methods
ProcessHandle procHandle = ProcessHandle.current();
ProcessHandle.Info procInfo = procHandle.info();
System.out.println("PID: " + procHandle.getPid());
System.out.print("Start Parameters: ");
for (String arg : procInfo.arguments().get()) {
System.out.print(arg + " ");
}
System.out.println();
System.out.println("Path: " + procInfo.command().orElse("-"));
System.out.println("Start: " + procInfo.startInstant().get());
System.out.println("Runtime: " + procInfo.totalCpuDuration().get().toMillis() + "ms");
System.out.println("User: " + procInfo.user().get());
List<String> list = List.of("a", "b", "c");
Set<String> set = Set.of("a", "b", "c");
Map<String, String> map = Map.of("1", "a", "2", "b", "3", "c");
InputStream
// Всички байтове наведнъж
byte[] result = new ByteArrayInputStream(buf).readAllBytes();
// Директен трансфер от вход към изход
new ByteArrayInputStream(buf).transferTo(System.out);
MultiResolutionImage и HiDPI поддръжка
или
META-INF/
META-INF/MANIFEST.MF
module-info.class
org/
org/my/
org/my/module1/
org/my/module1/ModuleA.class
jmod describe java.activation.jmod
java.activation@9-ea
requires mandated java.base
requires transitive java.datatransfer
requires java.logging
exports javax.activation
contains com.sun.activation.registries
operating-system-name Linux
operating-system-architecture amd64
operating-system-version 2.6
Java модули | OSGi | |
---|---|---|
Изолация | промяна на public семантика | ClassLoader |
Експортиране | пакет | пакет |
Импортиране | модул | пакет, модул(bundle) |
Сървиси | ServiceLoader | OSGi DS |
JDK internals
Unresolvable APIs
Премахнати APIs
Няма ги rt.jar/tools.jar
Reflection
Javac -target/source не поддържа <6
Използване на "_" за идентификатор
Garbage collection опции
JDeps
Автоматични тестове
Компилиране
Създаване на модули
(jdeps --generate-module-info)
module moduleA {
exports org.my.module1;
requires module1;
}
Classpath -> Modulepath