Javaを提供しているベンダー 5 Java SEの動向 Eclipse Temurin Red Hat Build of OpenJDK Sap Machine OracleJDK Oracle OpenJDK Azul Zulu Liberica JDK Microsoft Build of OpenJDK Amazon Corretto Mandrel GraalVM CE GraalVM EE Eclipse OpenJ9 IBM OpenJ9 OpenJDK OpenJ9 GraalVM
Project Amber 14 Java SEの動向 改善ポイント Project Amber: https://openjdk.org/projects/amber/ Object o; System.out.println(switch (o) { case String s && s.length() >= 5 -> s.toUpperCase(); case String s -> " %s ".formatted(s); case Integer i -> "%,d".formatted(i); default -> o.toString(); } Pattern Matching for switch (Second Preview) public abstract sealed class Shape permits Circle, Rectangle, Square {...} Sealed Classes record Foo(int x, int y) {} Records if (x instanceof Integer i) { // ここで i を使用できる } Pattern Matching for instanceof var str = """ You can write two line string. """; Text Blocks int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9; }; Switch Expressions var a = "Foo"; Local-Variable Type Inference
Project Panama 23 Java SEの動向 改善ポイント Project Panama: https://openjdk.org/projects/panama/ static final VectorSpecies SPECIES = FloatVector.SPECIES_256; void vectorComputation(float[] a, float[] b, float[] c) { for (int i = 0; i < a.length; i += SPECIES.length()) { VectorMask m = SPECIES.indexInRange(i, a.length); FloatVector va = FloatVector.fromArray(SPECIES, a, i, m); FloatVector vb = FloatVector.fromArray(SPECIES, b, i, m); FloatVector vc = va.mul(va). add(vb.mul(vb)). neg(); vc.intoArray(c, i, m); } } Vector API try (MemorySegment segment = MemorySegment.allocateNative(100)) { for (int i = 0 ; i < 25 ; i++) { MemoryAccess.setIntAtOffset(i * 4, i); } } Foreign Function & Memory API (Second Incubator)
39 Red Hat is the world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you