# One class file (javac 21 --release 21), four JVMs $ java -cp hub HubExamples (JDK 21) java.version = 21.0.12.1 CHECK ok : record accessor: c.email() CHECK ok : record toString: Customer[id=1, email=ankur@example.com, country=IN] CHECK ok : compact constructor rejects an email without @: Invalid email CHECK ok : area(Square(3)) == 9.0 CHECK ok : area(Triangle(4, 5)) == 10.0 CHECK ok : guard pattern: Circle(101) is a large circle CHECK ok : guard pattern: Circle(1) is a small circle CHECK ok : all 10,000 virtual-thread tasks completed before close() returned CHECK ok : and it took seconds, not the 1,000 s a serial loop needs (exact time is machine dependent, not printed) CHECK ok : Thread.ofVirtual().name(..).start(..) gives a virtual thread CHECK ok : List.getFirst() / getLast() CHECK ok : List.reversed(): [chris, brian, alex] CHECK ok : reversed() is a view, not a copy: it sees the element added afterwards CHECK ok : LinkedHashSet.getFirst() == 3, getLast() == 5 $ java -cp hub HubExamples (JDK 25) java.version = 25.0.4.1 CHECK ok : record accessor: c.email() CHECK ok : record toString: Customer[id=1, email=ankur@example.com, country=IN] CHECK ok : compact constructor rejects an email without @: Invalid email CHECK ok : area(Square(3)) == 9.0 CHECK ok : area(Triangle(4, 5)) == 10.0 CHECK ok : guard pattern: Circle(101) is a large circle CHECK ok : guard pattern: Circle(1) is a small circle CHECK ok : all 10,000 virtual-thread tasks completed before close() returned CHECK ok : and it took seconds, not the 1,000 s a serial loop needs (exact time is machine dependent, not printed) CHECK ok : Thread.ofVirtual().name(..).start(..) gives a virtual thread CHECK ok : List.getFirst() / getLast() CHECK ok : List.reversed(): [chris, brian, alex] CHECK ok : reversed() is a view, not a copy: it sees the element added afterwards CHECK ok : LinkedHashSet.getFirst() == 3, getLast() == 5 $ java -cp hub HubExamples (JDK 26) java.version = 26.0.2.1 CHECK ok : record accessor: c.email() CHECK ok : record toString: Customer[id=1, email=ankur@example.com, country=IN] CHECK ok : compact constructor rejects an email without @: Invalid email CHECK ok : area(Square(3)) == 9.0 CHECK ok : area(Triangle(4, 5)) == 10.0 CHECK ok : guard pattern: Circle(101) is a large circle CHECK ok : guard pattern: Circle(1) is a small circle CHECK ok : all 10,000 virtual-thread tasks completed before close() returned CHECK ok : and it took seconds, not the 1,000 s a serial loop needs (exact time is machine dependent, not printed) CHECK ok : Thread.ofVirtual().name(..).start(..) gives a virtual thread CHECK ok : List.getFirst() / getLast() CHECK ok : List.reversed(): [chris, brian, alex] CHECK ok : reversed() is a view, not a copy: it sees the element added afterwards CHECK ok : LinkedHashSet.getFirst() == 3, getLast() == 5 $ java -cp hub HubExamples (JDK 27) java.version = 27 CHECK ok : record accessor: c.email() CHECK ok : record toString: Customer[id=1, email=ankur@example.com, country=IN] CHECK ok : compact constructor rejects an email without @: Invalid email CHECK ok : area(Square(3)) == 9.0 CHECK ok : area(Triangle(4, 5)) == 10.0 CHECK ok : guard pattern: Circle(101) is a large circle CHECK ok : guard pattern: Circle(1) is a small circle CHECK ok : all 10,000 virtual-thread tasks completed before close() returned CHECK ok : and it took seconds, not the 1,000 s a serial loop needs (exact time is machine dependent, not printed) CHECK ok : Thread.ofVirtual().name(..).start(..) gives a virtual thread CHECK ok : List.getFirst() / getLast() CHECK ok : List.reversed(): [chris, brian, alex] CHECK ok : reversed() is a view, not a copy: it sees the element added afterwards CHECK ok : LinkedHashSet.getFirst() == 3, getLast() == 5